ArgoCDのCLIを使ってみる

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が利用できるので、より一層幅が広がりそうです。