はじめに
Amazon EKSでArgoCDを利用する方法をまとめます。
Mac環境を想定しています。
実行環境の準備
-
AWS CLIの設定
AWS CloudFormationを動かすためのAWS CLIの設定を参考にしてください。 -
EKSクラスタの構築
Macでeksctlを利用してAmazon EKSのクラスターを構築するを参考にしてください。 -
EKSのコンテキストの設定
MacにてAmazon EKSの設定をするを参考にしてください。 -
Helmの設定
Amazon EKSでHelmを利用するを参考にしてください。
環境設定
-
ArgoCD CLIのインストール
brew install argocd
-
ArgoCDのチャートをHelmでインストールする
※事前にKubernetesクラスターのコンテキストの設定をします。# argo チャートリポジトリを追加する helm repo add argo https://argoproj.github.io/argo-helm # リポジトリを更新する helm repo update # ArgoCD のチャートをインストールする # Install CRDs if you are using Helm2. helm install argocd argo/argo-cd \ -n argocd \ --set installCRDs=false \ --create-namespace # ArgoCD がインストールされたことを確認する helm list -n argocd
-
ArgoCD 初期パスワードを確認する
kubectl -n argocd get secret argocd-initial-admin-secret -o jsonpath="{.data.password}" | base64 -d && echo
-
ArgoCD を起動する
kubectl port-forward service/argocd-server -n argocd 8080:443
-
ArgoCD 初期パスワードを変更する
※デフォルトのアカウント名はadmin
になります。
※ArgoCDを起動した状態でないとパスワードの変更はできません。# ログインする argocd login \ --username admin \ --password "$(kubectl -n argocd get secret argocd-initial-admin-secret -o jsonpath='{.data.password}' | base64 -d && echo)" \ --insecure localhost:8080 # パスワードを変更する argocd account update-password \ --account admin \ --current-password "$(kubectl -n argocd get secret argocd-initial-admin-secret -o jsonpath='{.data.password}' | base64 -d && echo)" \ --new-password "${新しいパスワード}" --insecure
-
ArgoCD 初期パスワードが格納されていたSecretを削除する
kubectl -n argocd delete secret argocd-initial-admin-secret
-
ArgoCD にアクセスする
open "https://localhost:8080"
[サンプル] guestbook-goのマニフェスト
guestbook-goを構築する。
-
guestbook-go.yaml
を作成するguestbook-go.yamlapiVersion: argoproj.io/v1alpha1 kind: Application metadata: name: guestbook namespace: argocd finalizers: - resources-finalizer.argocd.argoproj.io spec: project: default source: repoURL: https://github.com/kubernetes/examples.git path: guestbook-go destination: server: 'https://kubernetes.default.svc' namespace: guestbook syncPolicy: syncOptions: - CreateNamespace=true automated: prune: true selfHeal: true
-
クラスターに適用する
kubectl apply -f guestbook-go.yaml
-
guestbook にアクセスする
※ELBが構築されるまで、数分アクセスできないことがあります。open "http://$(kubectl get svc -n guestbook guestbook | awk '{ print $4 }' | tail -1):$(kubectl get svc -n guestbook guestbook | awk '{ print $5 }' | tail -1 | cut -d ':' -f 1)"
クリーンアップ
-
クラスターから削除する
kubectl delete -f guestbook-go.yaml
-
ArgoCDをHelmで削除する
helm delete argo -n argocd
-
Namespaceを削除する
kubectl delete ns argocd