on
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 基盤を構築することができました。