< Notes >
ArgoCD의 클러스터 연결은 아래 2가지 방식을 지원합니다.
1. 명령어(CLI)
2. 시크릿(Declarative)
ArgoCD 클러스터에 외부 EKS 클러스터를 연동하여 애플리케이션을 배포해보겠습니다.
실습에 나오는 설정 정보들은 보안을 위해서 임의로 작성하였습니다.
1. 명령어
1.1 AWS 인증 및 EKS 클러스터 추가
- ArgoCD가 동작하는 쿠버네티스
마스터 노드
에 접속합니다 aws
명령어가 없을 시apt-get install awscli
로 설치합니다.
# aws 인증
aws configure #
aws_access_key_id: <AWS_ACCESS_KEY_ID>
aws_secret_access_key: <AWS_SECRET_ACCESS_KEY>
region: ap-northeast-2
# eks 클러스터 추가
aws eks --region ap-northeast-2 update-kubeconfig --name myeks
1.2 추가된 EKS 클러스터의 Context 조회
- 위에서 추가한 EKS 클러스터의
Context
를 조회합니다.
# 쿠버네티스 Context 조회
kubectl config get-contexts
kubectl config get-contexts | grep aws
arn:aws:eks:ap-northeast-2:352861245660:cluster/myeks
1.3 ArgoCD 클러스터 추가
- argocd에 로그인하고 조회한 Context를 입력하여 클러스터를 추가합니다.
# argocd 명령어가 없을 시 설치
curl -sSL -o argocd-linux-amd64 https://github.com/argoproj/argo-cd/releases/latest/download/argocd-linux-amd64
sudo install -m 555 argocd-linux-amd64 /usr/local/bin/argocd
rm argocd-linux-amd64
# argocd 로그인
argocd login <argocd server>
argocd login localhost:30080 # 예시
# 클러스터 추가
argocd add cluster <Context>
arn:aws:eks:ap-northeast-2:352861245660:cluster/myeks
2. 시크릿
2.1 연결정보 조회 및 시크릿 파일 작성
- EKS 클러스터를 추가하거나 EKS 노드에 접속합니다 (
1. AWS 인증 및 EKS 클러스터 추가
방법 참고 ) - 클러스터 연결 정보를 조회하여 아래 시크릿을 완성합니다.
- server ,caData :
~/.kube/config
경로의 설정 파일 조회합니다. - bearerToken :
kubectl get secret -n kube-system argocd-manager-token-mdfwc -o jsonpath='{.data.token}' | base64 -d ; echo
명령어를 통하여 서비스 어카운트 토큰 조회합니다.
- server ,caData :
apiVersion: v1
kind: Secret
metadata:
name: mycluster-secret
labels:
argocd.argoproj.io/secret-type: cluster
type: Opaque
stringData:
name: "mycluster.com"
server: "https://mycluster.com"
config: |
{
"awsAuthConfig": {
"clusterName": "my-eks-cluster-name",
"roleARN": "arn:aws:iam::<AWS_ACCOUNT_ID>:role/<IAM_ROLE_NAME>"
},
"tlsClientConfig": {
"insecure": false,
"caData": "<base64 encoded certificate>"
}
}
2. 3 시크릿 생성 및 확인
- ArgoCD가 동작하는 클러스터에 접속하여 시크릿을 생성하고 확인합니다.
kubectl apply -f <위에서 작성한 클러스터 시크릿 파일>
kubectl get secret -n <argocd 네임스페이스>
# 예시
kubectl apply -f cluster-eks-myeks
kubectl get secret -n argocd
3. EKS 클러스터로 애플리케이션 배포
연결한 EKS 클러스터로 애플리케이션을 배포하고 확인합니다.
3.1 애플리케이션 작성
- 배포할 Sample 애플리케이션 yaml 파일을 작성합니다.
server
필드에 연결한 eks의 서버 정보를 작성합니다.
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: eks-app-test
namespace: deploy
finalizers:
- resources-finalizer.argocd.argoproj.io
spec:
project: default
source:
repoURL: https://github.com/argoproj/argocd-example-apps.git
targetRevision: "master"
path: guestbook
destination:
namespace: default
server: "https://B3946C7C80ACEGHC1E82B43D3AC1CF6EE.gr7.ap-northeast-2.eks.amazonaws.com"
syncPolicy:
automated:
prune: true
selfHeal: true
syncOptions:
- CreateNamespace=true
3.2 애플리케이션 배포 및 확인
- 위에서 작성한 애플리케이션을 배포하고 확인합니다.
# app 배포
kubectl apply -f eks-app-test
# EKS 클러스터애서 확인
kubectl get pod -n default
- ArgoCD UI
Ref
https://argo-cd.readthedocs.io/en/stable/operator-manual/declarative-setup/#eks
'CICD' 카테고리의 다른 글
docker build 시, 빌드 명령어 결과 출력하기(--progress=plain) (0) | 2024.03.18 |
---|---|
ArgoCD Image Updater를 활용한 Harbor RegistryOps 구축 가이드 (0) | 2023.12.12 |
사설 이미지 저장소(Harbor)에 컨테이너 이미지 푸시 (0) | 2023.09.02 |