🤖
ArgoCDに外部クラスタを登録する方法
構成
- EKS 1.25
- クラスタは2台
- ArgoCDクラスタ
- 対象クラスタ
- 2台とも同一サブネット上に所属
手順
対象EKSクラスタのcontextを取得
aws eks update-kubeconfig --region ap-northeast-1 --name vamdemic-clsuter
Name部分を控える
kubectl config get-contexts
ArgoCDに登録
argocd cluster add arn:aws:eks:ap-northeast-1:123456789012:cluster/vamdemic-cluster
標準出力
WARNING: This will create a service account `argocd-manager` on the cluster referenced by context `arn:aws:eks:ap-northeast-1:123456789012:cluster/terema-dev-service-cluster` with full cluster level privileges. Do you want to continue [y/N]? y
INFO[0001] ServiceAccount "argocd-manager" already exists in namespace "kube-system"
INFO[0001] ClusterRole "argocd-manager-role" updated
INFO[0001] ClusterRoleBinding "argocd-manager-role-binding" updated
Cluster 'https://XXXXXXXXXXXXXXXXXXXXXXXXXXXXX.gr7.ap-northeast-1.eks.amazonaws.com' added
このメッセージが出る場合、対象クラスタへの通信が届いていない。
セキュリティグループでArgoCDがのっているクラスタからのアクセスを許可すると解決できるかもしれないです。
これちなみに、同一サブネット上に対象クラスタがある場合は、サブネット内のプライベート通信での接続になるはずなので、EKSClusterのAPIエンドポイントの公開設定も確認したほうがいいかもしれません。
FATA[0032] rpc error: code = Unknown desc = Get "https://XXXXXXXXXXXXXXXXXXXXXXXXX.gr7.ap-northeast-1.eks.amazonaws.com/version?timeout=32s": dial tcp 10.0.87.65:443: i/o timeout
うまく追加できるとこのような感じで、UIからClusterがセットされているのが確認できる。
ちなみに、対象ClusterにApplicationリソースをデプロイしていない状態だと、Successfullと出ず、Unknownと出ますが、接続自体は成功しているはずなので、なにか適当なApplicationリソースを作って試してみるといいかもしれません。
それでもダメな場合
登録先にリソース作成をするのだけど、失敗時のゴミリソースになっているかもしれないので、クリアしてみると変わるかもしれないです。
kubectl -n kube-system delete ClusterRoleBinding argocd-manager-role-binding
kubectl -n kube-system delete clusterrole argocd-manager-role
kubectl -n kube-system delete serviceaccounts argocd-manager
セキュリティグループでハマったら
EKSには、デフォルトでセットされるセキュリティグループと追加でアタッチできるセキュリティグループがあります。
結論、ソースセキュリティグループを指定する形でルールを作る場合、「追加となるセキュリティグループにデフォルトでセットされているセキュリティグループを許可する設定を入れる」とすると、できました。
なので、EKS的にはデフォルトでセットされているセキュリティグループが主であり、EC2やLambdaにロールアタッチするのはこの設定が対応していると思えばOKみたいです。
Discussion