なになれ

IT系のことを記録していきます

GitOpsを実現するツールArgo CDを試した

Kubernetesにおけるデプロイ方法はGitOpsがデファクトスタンダードになったと思います。
GitOpsを実現するツールの中で、今回はArgo CDの使い方を紹介します。

argoproj.github.io

内容

セットアップ

Argo CDをインストールします。

$ kubectl create namespace argocd
$ kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml

Argo CDのCLIツールをインストールします。

$ brew install argocd

ポートフォワーディングでArgo CDのWebアプリケーションに接続できるようにします。

$ kubectl port-forward svc/argocd-server -n argocd 8080:443

デフォルトユーザのパスワードを変更する

デフォルトユーザはadminになります。
下記のコマンドで取得できるpod名がadminの デフォルトパスワードになります。

$ kubectl get pods -n argocd -l app.kubernetes.io/name=argocd-server -o name | cut -d'/' -f 2

パスワードを変更します。

$ argocd login 127.0.0.1:8080
$ argocd account update-password

使い方

Argo CDのWebアプリケーションを使います。

$ open https://localhost:8080

ユーザ名admin、先ほど変更したパスワードでログインします。

プライベートリポジトリを扱うには、リポジトリの設定を行います。

Repositoriesを選択します。

f:id:hi1280:20201107184457p:plain:w600

CONNECT REPO USING SSH または CONNECT REPO USING HTTPSリポジトリを登録します。

f:id:hi1280:20201107184537p:plain:w600

正常に登録完了するとCONNECTION STATUSがSuccessfulとなり、リポジトリが表示されます。
f:id:hi1280:20201107184718p:plain:w600

New APPボタンでデプロイするアプリケーションを作成します。

f:id:hi1280:20201107184831p:plain:w600

KustomizeやHelmを認識して、各ツール独自の設定内容を変更することができます。
f:id:hi1280:20201107185233p:plain:w600

アプリケーションを作成後にSyncボタンを押すとリポジトリにあるマニフェストの内容でデプロイが行われます。
f:id:hi1280:20201107193351p:plain:w600

手動でSyncを実行しなくても定期的にリポジトリの内容がポーリングされて、Syncが行われます。

同じArgo ProjectのツールであるArgo Rolloutsを利用すると、Argo CDのUIからResumeボタンを使ってカナリアデプロイのStepを進めることができます。

まとめ

今回試してみてArgo CDを利用すると、ある程度簡単かつ、スマートなデプロイフローになると思いました。
また、Web UIでデプロイ状況が可視化できるのが便利です。