ArgoCD(GKE)でデプロイしてみる


概要

継続的デリバリ(CD)ツールのArgoCDをデプロイしてみます。
前回ArgoCDをGKEにインストールしてみるの続きです。

公式入門ガイドをなぞりつつサンプルアプリをデプロイしていきます。
(入門ガイド:https://argoproj.github.io/argo-cd/getting_started/#5-register-a-cluster-to-deploy-apps-to-optional)

今回環境を再構築してるのでIPアドレス全般・クラスタ名とか少し違います。

ハンズオン

1. デプロイ先のクラスタを作成

$  gcloud container clusters create target-cluster --zone us-ceral1-a

2. デプロイ先クラスタを登録

クラスタ一覧を表示

$ kubectl config get-contexts -o name

デプロイ先クラスタを登録

$ argocd cluster add {TARGET_CLUSTER}
INFO[0000] ServiceAccount "argocd-manager" created in namespace "kube-system"
INFO[0000] ClusterRole "argocd-manager-role" created
INFO[0001] ClusterRoleBinding "argocd-manager-role-binding" created
FATA[0021] Failed to establish connection to 34.85.17.205:443: dial tcp 34.85.17.205:443: operation was canceled

接続エラーが発生。なんの確証もなかったがCLIでログインしていなかったことを思い出したのでCLIでログイン。証明書の警告が出るがYESを選択。

$ argocd login 34.84.102.51
WARNING: server certificate had error: x509: cannot validate certificate for 34.84.102.51 because it doesn't contain any IP SANs. Proceed insecurely (y/n)? y
Username: admin
Password:
'admin' logged in successfully
Context '34.84.102.51' updated

再度クラスタを登録すると成功。

$ argocd cluster add {TARGET_CLUSTER}
INFO[0000] ServiceAccount "argocd-manager" already exists in namespace "kube-system"
INFO[0001] ClusterRole "argocd-manager-role" updated
INFO[0001] ClusterRoleBindin![destination.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/367760/7a8c65ea-d1b8-7420-4f0e-0aee5e15153e.png)
g "argocd-manager-role-binding" updated
Cluster 'https://35.202.58.143' added

3. アプリを作成する

UIログイン後、左上の「New App」ボタンをクリックしてアプリを作成。
Githubのリポジトリ含め値はすべて公式のものを使用します。

Destinationは今回外部のクラスタを使用しているのでそのエンドポイントを設定。

「CREATE」ボタンをクリックして設定を完了します。
アプリを作成した直後はStatusは「OutOfSync」になっています。

4. アプリをデプロイ(Sync)する

アプリの「SYNC」をクリックするとサイドパネルが出てくるので「SYNCHRONIZE」をクリック。

ステータスの表示がSyncedに変われば成功。

図で表示できてわかりやすい。

おわりに

アプリのデプロイ(Sync)はCLIからでも出来るようですがアプリ全体の状態を把握しようと思うと図の方が断然わかりやすいですね。大規模な環境になってくるとよりそう感じられると思います。今回まででArgoCDのインストール・デプロイと一通りやってみましたが、図の表示など基本的な機能は他のCDツールでもあるので、軽く触った程度の使用では他のツールとの比較は難しいと感じました。