ArgoCD触ってみた

ArgoCD について

ArgoCD は Kubernetes のための宣言型の GitOpsCD ツールです。

上記で GitOps と述べてる通り、ArgoCD は Git リポジトリで管理されているマニフェスト(Helm chart など)の状態を監視して デプロイを行います。

ArgoCD の構築

GKE でクラスター構築後に namespace と ArgoCD の install yml を apply します。

※GKE クラスター machine-type は g2-small でも大丈夫です。

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

インストール後に外部 IP アクセスの公開設定を行います。

kubectl patch svc argocd-server -n argocd -p '{"spec": {"type": "LoadBalancer"}}'

ここで ArgoCD の画面にアクセスできるか確認しましょう。

GKE であれば、「Kubernetes Engine」→「Services と Ingress」から argocd-server のエンドポイントを確認できるので、そちらをクリック。

CLI であれば、service の EXTERNAL_IP を確認。

kubectl get svc -n argocd

ブラウザからアクセスして管理画面が確認できたら、実際にログインしてみましょう。

初期アカウントの情報は下記になります。

username: admin

password: 下記コマンドを叩いて表示された値

  kubectl -n argocd get secret argocd-initial-admin-secret -o jsonpath="{.data.password}" | base64 -d

ログインできない場合、パスワードを初期化してください。

kubectl patch secret argocd-secret  -p '{"data": {"admin.password": null, "admin.passwordMtime": null}}'

次に ArgoCD に Git リポジトリの登録を行います。

私の場合プライベートリポジトリでの登録を行いため、argocd repo add から登録したいと思います。

パブリックリポジトリであれば、歯車マークを選択し、「Repositories」⇨「CONNECT REPO USING HTTPS」から追加できます。

下記コマンドを叩いてリポジトリ登録を行います。

 argocd login --insecure localhost:8080
 argocd repo add git@github.com:${USER}/${REPOSITORY_NAME}.git --ssh-private-key-path ~/.ssh/${PRIVKEY_KEY}

次にアプリ作成を行います。

「NEW APP」から名前は任意で、「SOURCE」の「Repository URL」を追加したリポジトリに設定(manifest のリポジトリ)

「Revision」は監視対象のブランチ今回は master ブランチ

「Namespace」は default

今回マニフェストファイルを Helm で管理していたので、Helm の「VALUES FILES」を該当のファイルに設定。

これで「CREATE」を押すとアプリが作成されます。

最後にアプリページから「SYNC」→「SYNCHRONIZE」ボタンを押すとデプロイが開始され、アプリケーションが GKE に展開します。

この後は「アプリケーションのファイル更新」⇨「イメージリポジトリの更新」⇨「ArgoCD の監視対象の manifest 更新(image tag) 」⇨「ArgoCD が Sync」という流れになります。

これで GitOps を用いた CD 基盤を構築することができました。