Skip to content

Latest commit

 

History

History

migraiton

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 
 
 
 
 
 
 

1. 개요

  • 멀티 클러스터를 관리하는 ArgoCD를 마이그레이션하는 방법을 정리

2. AS-IS kind클러스터와 ArgoCD 생성

  • AS-IS kind클러스터와 A,B,C kind클러스터 3대가 생성
  • AS-IS kind 클러스터에는 ArgoCD helm chart가 릴리즈 되어 있음
1. cd terraform
2. terrafprm apply

3. ArgoCD에 A,B,C kind 클러스터 등록

  • 2번과정에서 terraform으로 kind cluster가 생성되어야 있어야 합니다.
1. cd argocd_clusters

2. pip install chevron

3. python create_kubernetes_secrets

# helm values 생성하는 스크립트(전제조건, A,B,C kind kubeconfig가 생성되어 있어야 함)
4. kubernetes secrest를 apply
KUBECONFIG=../terraform/as-is-config kubectl apply -f kind-cluster-a-secrets.yaml
KUBECONFIG=../terraform/as-is-config kubectl apply -f kind-cluster-b-secrets.yaml
KUBECONFIG=../terraform/as-is-config kubectl apply -f kind-cluster-c-secrets.yaml

4. ArgoCD Project 생성

1. cd argocd_projects

2. kubernetes apply
KUBECONFIG=../terraform/as-is-config kubectl apply -f ./cluster_A/
KUBECONFIG=../terraform/as-is-config kubectl apply -f ./cluster_B/
KUBECONFIG=../terraform/as-is-config kubectl apply -f ./cluster_C/

5. Argocd Application 생성

1. cd argocd_applications

2. kubernetes apply
KUBECONFIG=../terraform/as-is-config kubectl apply -f ./cluster_A/
KUBECONFIG=../terraform/as-is-config kubectl apply -f ./cluster_B/
KUBECONFIG=../terraform/as-is-config kubectl apply -f ./cluster_C/

6. 마이그레이션

(옵션1) 6.1 수동

  1. AS-IS와 같은 설정으로 TO-BE ArgoCD 생성
  2. AS-IS ArgoCD Cluster를 그대로 TO-BE ArgoCD에 생성
  3. AS-IS ArgoCD Project를 그대로 TO-BE ArgoCD에 생성
  4. AS-IS ArgoCD Application을 그대로 TO-BE ArgoCD에 생성
  • AS-IS ArgoCD Default project를 제외하고 ArgoCD application 추출
KUBECONFIG=./as-is-config kubectl get applications -n argocd -o yaml | yq e 'del(.items[].metadata.resourceVersion, .items[].metadata.uid, .items[].metadata.creationTimestamp, .items[].metadata.annotations, .items[].metadata.generation, .items[].status) | .items |= map(select(.spec.project != "default"))' > as-is-application.yaml
  • TO-BE ArgoCD에 배포
KUBECONFIG=./to-be-config kubectl apply -f as-is-application.yaml

(옵션2) ArgoCD export, import기능 사용

argocd admin export > export.yaml
argocd admin import ...