今回はArgoCD CoreというArgoCDの新たなディストリビューションを動かしてみました。
ArgoCD Coreとは
ArgoCD Coreは ArgoCDの ver 2.1で導入された、ArgoCD distributionになります。ArgoCDはデフォルトだとSSO / RBAC / ユーザー管理などの機能を搭載しており、1つのArgoCDインスタンスを複数のチームが利用できる、マルチテナントをサポートしています。
一方でArgoCDを利用するユーザーの中には、マルチテナントをサポートする機能が不要であり、ArgoCDの提供するGitOps的な機能だけを使いたい人も大勢います。そういったユーザー向けに登場したのがArgoCD Coreです。
ArgoCD Coreでは、デフォルトのArgoCDディストリビューションから一部機能を削減し、管理者にとってよりシンプルに利用できるようになっています。特徴は以下の通りです。
- ArgoCDにアクセスする際、アカウント・パスワード情報を入力しなくてよい
- ArgoCDにアクセスするためにAPIを外部に公開する必要はない
ArgoCD Coreを動かす
ここからArgoCD Coreを動かします。環境は以下の通り。
- Kubernetes distribution:
Amazon EKS
- Kubernetes version:
ver 1.21
- ArgoCD CLI version:
ver 2.1.6
インストールはいつもの通り、namespaceの作成とArgoCD関連リソースのデプロイを行います。
$ kubectl create namespace argocd $ kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/v2.1.7/manifests/core-install.yaml
デプロイ後は以下の通り。デフォルトと比べると、Dex ServerやArgoCD Serverが無かったり、一部コンポーネントが削減されている様子が見えます。
$ kubectl get pods -n argocd NAME READY STATUS RESTARTS AGE argocd-application-controller-0 1/1 Running 0 60s argocd-redis-5b6967fdfc-2prrf 1/1 Running 0 60s argocd-repo-server-7598bf5999-brjvv 1/1 Running 0 60s $ kubectl get svc -n argocd NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE argocd-metrics ClusterIP 10.100.41.200 <none> 8082/TCP 80s argocd-redis ClusterIP 10.100.80.99 <none> 6379/TCP 80s argocd-repo-server ClusterIP 10.100.204.189 <none> 8081/TCP,8084/TCP 80s $ kubectl get cm -n argocd NAME DATA AGE argocd-cm 0 90s argocd-cmd-params-cm 0 90s argocd-gpg-keys-cm 0 90s argocd-rbac-cm 0 90s argocd-ssh-known-hosts-cm 1 90s argocd-tls-certs-cm 0 90s kube-root-ca.crt 1 2m18s $ kubectl get secret -n argocd NAME TYPE DATA AGE argocd-application-controller-token-7sk75 kubernetes.io/service-account-token 3 99s argocd-redis-token-9rggh kubernetes.io/service-account-token 3 99s argocd-secret Opaque 0 98s default-token-zsthn kubernetes.io/service-account-token 3 2m26s
ここからArgoCD Coreを操作してみます。ArgoCDを操作するためにまずはログインをします。ArgoCD CoreではAPIを公開せずとも argocd login –core
と実行するだけでログインが完了できるので、初期セットアップの手間がかなり省けます。
$ argocd login --core Context 'kubernetes' updated
ArgoCD Coreを操作するには argocd
CLIを利用しますが、Coreを利用する場合は作業前に操作するNamespaceを argocd
に変更する必要があります。変更しないと argocd-cm
を見つけられず、 argocd
CLIが実行できないようです。
# Namespace変更前 $ argocd version FATA[0000] configmap "argocd-cm" not found $ argocd app list FATA[0000] configmap "argocd-cm" not found # 変更後 $ kubectl config set-context --current --namespace=argocd Context "testuser@eks-cluster.ap-northeast-1.eksctl.io" modified. $ argocd version argocd: v2.1.6+a346cf9 BuildDate: 2021-10-28T19:59:40Z GitCommit: a346cf933e10d872eae26bff8e58c5e7ac40db25 GitTreeState: clean GoVersion: go1.16.5 Compiler: gc Platform: linux/amd64 argocd-server: v2.1.6+a346cf9 BuildDate: 2021-10-28T19:59:40Z GitCommit: a346cf933e10d872eae26bff8e58c5e7ac40db25 GitTreeState: clean GoVersion: go1.16.5 Compiler: gc Platform: linux/amd64 Ksonnet Version: unable to determine ksonnet version: exec: "ks": executable file not found in $PATH Kustomize Version: could not get kustomize version: exec: "kustomize": executable file not found in $PATH Helm Version: v3.4.2+g23dd3af Kubectl Version: v0.21.0 Jsonnet Version: v0.17.0 $ argocd app list NAME CLUSTER NAMESPACE PROJECT STATUS HEALTH SYNCPOLICY CONDITIONS REPO PATH TARGET
ArgoCD UIへアクセスをする場合は argocd admin dashboard
を実行するとポートフォワーディングされ、 http://localhost:8080
へアクセスすることでUIが表示されます。
$ argocd admin dashboard Argo CD UI is available at http://localhost:8080
UIは以下の通りです。ぱっと見は通常のArgoCDとほぼ変わらないように見えますが、ログインはしておらずunknown userとして認識されます。
Projectも利用できますが、マルチテナント向けの機能なので、いずれなくなるんじゃないかと思ってます。
もちろんUIからアプリケーションを登録・デプロイすることもできます。
感想
今回はArgoCD Coreを動かしてみました。軽く触った感じでは、これまでArgoCDを使う上でちょっと煩わしい部分を省きつつ、ArgoCDで実現したいGitOpsの機能を使うこともできるように感じたので、これからArgoCDを試す場合や小規模なチーム・プロジェクトなどで使う分には十分ではないかと感じました。気になる方は使い始めてみるのもよいかもしれません。