TECHSTEP

ITインフラ関連の記事を公開してます。

ArgoCDの軽量ディストリビューション ArgoCD Coreを動かしてみる

今回は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を動かします。環境は以下の通り。

インストールはいつもの通り、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として認識されます。

f:id:FY0323:20211218195851p:plain

Projectも利用できますが、マルチテナント向けの機能なので、いずれなくなるんじゃないかと思ってます。

f:id:FY0323:20211218195906p:plain

f:id:FY0323:20211218195920p:plain

もちろんUIからアプリケーションを登録・デプロイすることもできます。

f:id:FY0323:20211218195929p:plain

感想

今回はArgoCD Coreを動かしてみました。軽く触った感じでは、これまでArgoCDを使う上でちょっと煩わしい部分を省きつつ、ArgoCDで実現したいGitOpsの機能を使うこともできるように感じたので、これからArgoCDを試す場合や小規模なチーム・プロジェクトなどで使う分には十分ではないかと感じました。気になる方は使い始めてみるのもよいかもしれません。

参考リンク