MicroK8sにArgoCDをインストールするでArgoCDをインストールしましたが、これまでGUIだけ使っていたので、以下のURLを参考にCLIで操作してみます。
https://argoproj.github.io/argo-cd/getting_started/
- ArgoCD CLIをMacOSにインストールする
- CLIでログインする
- コマンドを実行する
ArgoCD CLIをMacOSにインストールする
以下のコマンドでArgoCD CLIをインストールします。
brew tap argoproj/tap brew install argoproj/tap/argocd
CLIでログインする
argued loginコマンドを利用してCLIでログインします。
ログイン先のURLは、ArgoCDの公開Serviceを指定します。今回は、MicroK8sにArgoCDをインストールするで公開argocd-server ServiceをNodePortに設定したので、[MicroK8sのURL]:[argocd-server Serviceの公開Port]を指定します。パスワードは、argocd-serverのPod名になります。
公式サイトでは、ServiceタイプをLoadBalancerに変更したポートフォワードに設定しています。
$ argocd login 192.168.64.2:30001 WARNING: server certificate had error: x509: cannot validate certificate for 192.168.64.2 because it doesn't contain any IP SANs. Proceed insecurely (y/n)? y Username: admin Password: 'admin' logged in successfully Context '192.168.64.2:30001' updated
コマンドを実行する
操作を確認します。
まずは登録したApplicationを以下のコマンドで確認してみます。
$ argocd app get test Name: test Project: default Server: https://kubernetes.default.svc Namespace: default URL: https://192.168.64.2:30001/applications/test Repo: https://github.com/username/argocd Target: master Path: test SyncWindow: Sync Allowed Sync Policy: Automated Sync Status: Synced to master (ab089cb) Health Status: Healthy GROUP KIND NAMESPACE NAME STATUS HEALTH HOOK MESSAGE Service default test Synced Healthy service/test unchanged apps Deployment default test Synced Healthy deployment.apps/test configured
ArgoCDのApplicationをCLIで作成します。以下のコマンドは、自身のargocd GitHubレポジトリにおけるtestフォルダ内マニフェストファイルから、MicroK8s上のdefault namespaceにデプロイします。
$ argocd app create cli-test --repo https://github.com/username/argocd --path test --dest-namespace default --dest-server https://kubernetes.default.svc application 'cli-test' created $ argocd app get cli-test Name: cli-test Project: default Server: https://kubernetes.default.svc Namespace: default URL: https://192.168.64.2:30001/applications/cli-test Repo: https://github.com/username/argocd.git Target: Path: test SyncWindow: Sync Allowed Sync Policy: <none> Sync Status: OutOfSync from (ab089cb) Health Status: Healthy CONDITION MESSAGE LAST TRANSITION SharedResourceWarning Deployment/test is part of a different application: test 2020-06-17 22:53:41 +0900 JST SharedResourceWarning Service/test is part of a different application: test 2020-06-17 22:53:43 +0900 JST GROUP KIND NAMESPACE NAME STATUS HEALTH HOOK MESSAGE Service default test OutOfSync Healthy apps Deployment default test OutOfSync Healthy
GUIで見ても作成されていることがわかります。

手動でGitHubと同期する場合は$ argocd app sync [Application名]
を実行します。上記で作成したApplicationの同期を行う場合は、以下のコマンドを実行します。
$ argocd app sync cli-test TIMESTAMP GROUP KIND NAMESPACE NAME STATUS HEALTH HOOK MESSAGE 2020-06-17T23:12:24+09:00 Service default test OutOfSync Missing 2020-06-17T23:12:24+09:00 apps Deployment default test OutOfSync Missing 2020-06-17T23:12:25+09:00 Service default test Synced Healthy 2020-06-17T23:12:25+09:00 Service default test Synced Healthy service/test created 2020-06-17T23:12:25+09:00 apps Deployment default test OutOfSync Missing deployment.apps/test created 2020-06-17T23:12:25+09:00 apps Deployment default test Synced Progressing deployment.apps/test created Name: cli-test Project: default Server: https://kubernetes.default.svc Namespace: default URL: https://192.168.64.2:30001/applications/cli-test Repo: https://github.com/username/argocd Target: Path: test SyncWindow: Sync Allowed Sync Policy: <none> Sync Status: Synced to (ab089cb) Health Status: Healthy Operation: Sync Sync Revision: ab089cb2e0c000d50cc90451811afc0aa2205ff4 Phase: Succeeded Start: 2020-06-17 23:12:24 +0900 JST Finished: 2020-06-17 23:12:25 +0900 JST Duration: 1s Message: successfully synced (all tasks run) GROUP KIND NAMESPACE NAME STATUS HEALTH HOOK MESSAGE Service default test Synced Healthy service/test created apps Deployment default test Synced Healthy deployment.apps/test created
syncコマンド実行後、マニフェストファイルからコンテナアプリケーションがデプロイされていることがわかります。
$ microk8s kubectl get pods NAME READY STATUS RESTARTS AGE registry 1/1 Running 5 5d test-579889db56-plzgx 1/1 Running 0 6s
今日は以上です。CLIが利用できるので、より一層幅が広がりそうです。