Kubernetes Tools/ArgoCD

[Ep.23] [Argo CD ๋ณด์•ˆ & ํ™•์žฅ #3] Argo CD์˜ ๋ฐฑ์—… ๋ฐ ๋ณต๊ตฌ ์ „๋žต

ygtoken 2025. 3. 17. 13:10
728x90

๐Ÿ”น ์™œ Argo CD์˜ ๋ฐฑ์—…๊ณผ ๋ณต๊ตฌ๊ฐ€ ์ค‘์š”ํ•œ๊ฐ€?

Argo CD๋Š” Kubernetes ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๋ฐฐํฌ ๋ฐ ๊ด€๋ฆฌ๋ฅผ ๋‹ด๋‹นํ•˜๋Š” ์ค‘์š”ํ•œ ์„œ๋น„์Šค์ž…๋‹ˆ๋‹ค.
๋งŒ์•ฝ Argo CD์˜ ์„ค์ •์ด๋‚˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ •๋ณด๊ฐ€ ์†์‹ค๋˜๊ฑฐ๋‚˜ ์†์ƒ๋˜๋ฉด ๋ฐฐํฌ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ค‘๋‹จ๋  ์ˆ˜ ์žˆ์œผ๋ฉฐ,
์ด๋ฅผ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ์ •๊ธฐ์ ์ธ ๋ฐฑ์—… ๋ฐ ์‹ ์†ํ•œ ๋ณต๊ตฌ ์ „๋žต์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

 

โœ… Argo CD์—์„œ ๋ฐฑ์—…ํ•ด์•ผ ํ•  ์ฃผ์š” ๋ฐ์ดํ„ฐ
โœ” Argo CD ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ฐ์ดํ„ฐ (Application CRD)
โœ” Argo CD ํ”„๋กœ์ ํŠธ ๋ฐ RBAC ์„ค์ •
โœ” Redis ์บ์‹œ (์„ธ์…˜ ๋ฐ์ดํ„ฐ)
โœ” Argo CD Secret ๋ฐ ConfigMap (์„ค์ • ์ •๋ณด)
โœ” PostgreSQL(HA ํ™˜๊ฒฝ์—์„œ ์‚ฌ์šฉ ์‹œ)


๐Ÿ”น Argo CD ๋ฐฑ์—… ์ „๋žต

Argo CD์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐฑ์—…ํ•˜๋Š” ๋ฐฉ๋ฒ•์—๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ „๋žต์ด ์žˆ์Šต๋‹ˆ๋‹ค.

๋ฐฑ์—… ๋ฐฉ๋ฒ• ์„ค๋ช…
kubectl์„ ์‚ฌ์šฉํ•œ CRD ๋ฐฑ์—… Argo CD ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ฐ ํ”„๋กœ์ ํŠธ๋ฅผ ์ง์ ‘ ๋ฐฑ์—…
etcd ์Šค๋ƒ…์ƒท(ํด๋Ÿฌ์Šคํ„ฐ ๋ ˆ๋ฒจ ๋ฐฑ์—…) Kubernetes etcd ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐฑ์—…ํ•˜์—ฌ ๋ณต๊ตฌ
PostgreSQL ๋ฐฑ์—…(HA ํ™˜๊ฒฝ) Argo CD๊ฐ€ PostgreSQL์„ ์‚ฌ์šฉํ•  ๊ฒฝ์šฐ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋ฐฑ์—…
Velero๋ฅผ ํ™œ์šฉํ•œ Kubernetes ๋ฆฌ์†Œ์Šค ๋ฐฑ์—… Kubernetes ์ „์ฒด ์ƒํƒœ๋ฅผ ๋ฐฑ์—…ํ•˜๋Š” ์†”๋ฃจ์…˜ ํ™œ์šฉ

๐Ÿ”น 1. kubectl์„ ์‚ฌ์šฉํ•œ Argo CD CRD ๋ฐฑ์—…

Argo CD์˜ ์ฃผ์š” ๋ฆฌ์†Œ์Šค๋Š” Kubernetes CRD(Custom Resource Definition)๋กœ ์ €์žฅ๋ฉ๋‹ˆ๋‹ค.
์ด๋ฅผ kubectl์„ ์ด์šฉํ•˜์—ฌ ๋ฐฑ์—…ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

โœ… 1๏ธโƒฃ Argo CD ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ฐ ํ”„๋กœ์ ํŠธ ๋ฐฑ์—…

kubectl get applications -n argocd -o yaml > argocd-apps-backup.yaml
kubectl get appprojects -n argocd -o yaml > argocd-projects-backup.yaml

 

โœ… 2๏ธโƒฃ Argo CD RBAC ์„ค์ • ๋ฐฑ์—…

kubectl get configmap argocd-rbac-cm -n argocd -o yaml > argocd-rbac-backup.yaml

 

โœ… 3๏ธโƒฃ Argo CD Secret ๋ฐ ์„ค์ • ํŒŒ์ผ ๋ฐฑ์—…

kubectl get secret -n argocd -o yaml > argocd-secrets-backup.yaml
kubectl get configmap -n argocd -o yaml > argocd-configmaps-backup.yaml

 

โœ… 4๏ธโƒฃ ๋ฐฑ์—… ํŒŒ์ผ์„ Git ์ €์žฅ์†Œ ๋˜๋Š” S3์— ์—…๋กœ๋“œ

tar -czvf argocd-backup-$(date +%Y%m%d).tar.gz argocd-*-backup.yaml
aws s3 cp argocd-backup-$(date +%Y%m%d).tar.gz s3://my-argocd-backups/

๐Ÿ”น 2. Argo CD CRD ๋ฐฑ์—… ๋ณต๊ตฌ

๋ฐฑ์—…ํ•œ CRD๋ฅผ ๋ณต๊ตฌํ•˜๋ ค๋ฉด kubectl apply -f ๋ช…๋ น์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

 

โœ… 1๏ธโƒฃ Argo CD ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ณต์›

kubectl apply -f argocd-apps-backup.yaml

 

โœ… 2๏ธโƒฃ Argo CD ํ”„๋กœ์ ํŠธ ๋ฐ RBAC ์„ค์ • ๋ณต์›

kubectl apply -f argocd-projects-backup.yaml
kubectl apply -f argocd-rbac-backup.yaml

 

โœ… 3๏ธโƒฃ Argo CD Secret ๋ฐ ์„ค์ • ๋ณต์›

kubectl apply -f argocd-secrets-backup.yaml
kubectl apply -f argocd-configmaps-backup.yaml

 

โœ… 4๏ธโƒฃ Argo CD ์„œ๋ฒ„ ์žฌ์‹œ์ž‘ (ํ•„์š” ์‹œ)

kubectl rollout restart deployment argocd-server -n argocd

๐Ÿ”น 3. etcd ์Šค๋ƒ…์ƒท์„ ์‚ฌ์šฉํ•œ ๋ฐฑ์—… ๋ฐ ๋ณต๊ตฌ (ํด๋Ÿฌ์Šคํ„ฐ ์ „์ฒด ๋ณต๊ตฌ์šฉ)

etcd๋Š” Kubernetes ํด๋Ÿฌ์Šคํ„ฐ์˜ ์ƒํƒœ๋ฅผ ์ €์žฅํ•˜๋Š” ํ•ต์‹ฌ ๊ตฌ์„ฑ ์š”์†Œ์ž…๋‹ˆ๋‹ค.
๋”ฐ๋ผ์„œ etcd๋ฅผ ๋ฐฑ์—…ํ•˜๋ฉด Argo CD๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ์ „์ฒด ํด๋Ÿฌ์Šคํ„ฐ์˜ ์ƒํƒœ๋ฅผ ๋ณต๊ตฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

โœ… 1๏ธโƒฃ etcd ๋ฐฑ์—… ์ƒ์„ฑ

ETCDCTL_API=3 etcdctl snapshot save /backup/etcd-snapshot.db \
  --endpoints=https://127.0.0.1:2379 \
  --cacert=/etc/kubernetes/pki/etcd/ca.crt \
  --cert=/etc/kubernetes/pki/etcd/server.crt \
  --key=/etc/kubernetes/pki/etcd/server.key

 

โœ… 2๏ธโƒฃ etcd ์Šค๋ƒ…์ƒท ๋ณต๊ตฌ

ETCDCTL_API=3 etcdctl snapshot restore /backup/etcd-snapshot.db \
  --data-dir=/var/lib/etcd

 

โœ… 3๏ธโƒฃ etcd ์žฌ์‹œ์ž‘

systemctl restart etcd

 

โœ… 4๏ธโƒฃ Kubernetes ๋…ธ๋“œ ์ „์ฒด ์žฌ์‹œ์ž‘ (ํ•„์š” ์‹œ)

systemctl restart kubelet

๐Ÿ”น 4. PostgreSQL์„ ์‚ฌ์šฉํ•œ ๋ฐฑ์—… ๋ฐ ๋ณต๊ตฌ (HA ๋ชจ๋“œ ์ ์šฉ ์‹œ)

๊ณ ๊ฐ€์šฉ์„ฑ(HA) ๋ชจ๋“œ์—์„œ๋Š” Argo CD์˜ ๋ฐ์ดํ„ฐ๋ฅผ PostgreSQL์— ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.
์ด ๊ฒฝ์šฐ PostgreSQL์„ ๋ฐฑ์—…ํ•˜๊ณ  ํ•„์š” ์‹œ ๋ณต๊ตฌํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

 

โœ… 1๏ธโƒฃ PostgreSQL ๋ฐฑ์—… ์ƒ์„ฑ

PGPASSWORD="mypassword" pg_dump -h postgres.example.com -U argocd -d argocd > argocd-db-backup.sql

 

โœ… 2๏ธโƒฃ PostgreSQL ๋ฐฑ์—… ํŒŒ์ผ์„ S3์— ์—…๋กœ๋“œ

aws s3 cp argocd-db-backup.sql s3://my-argocd-backups/

 

โœ… 3๏ธโƒฃ PostgreSQL ๋ฐฑ์—… ๋ณต๊ตฌ

PGPASSWORD="mypassword" psql -h postgres.example.com -U argocd -d argocd < argocd-db-backup.sql

๐Ÿ”น 5. Velero๋ฅผ ์‚ฌ์šฉํ•œ ์ „์ฒด Kubernetes ๋ฆฌ์†Œ์Šค ๋ฐฑ์—…

Velero๋Š” Kubernetes ํด๋Ÿฌ์Šคํ„ฐ ์ „์ฒด๋ฅผ ๋ฐฑ์—… ๋ฐ ๋ณต๊ตฌํ•  ์ˆ˜ ์žˆ๋Š” ์˜คํ”ˆ์†Œ์Šค ๋„๊ตฌ์ž…๋‹ˆ๋‹ค.

 

โœ… 1๏ธโƒฃ Velero ์„ค์น˜

velero install --provider aws --bucket my-argocd-backups --backup-location-config region=us-east-1

 

โœ… 2๏ธโƒฃ Argo CD ๋„ค์ž„์ŠคํŽ˜์ด์Šค ๋ฐฑ์—…

velero backup create argocd-backup --include-namespaces argocd

 

โœ… 3๏ธโƒฃ Argo CD ๋ฐฑ์—… ๋ณต๊ตฌ

velero restore create --from-backup argocd-backup

๐Ÿ”น Argo CD ๋ฐฑ์—… ๋ฐ ๋ณต๊ตฌ CLI ๋ช…๋ น์–ด ์ •๋ฆฌ

 

๋ช…๋ น์–ด ์„ค๋ช…
kubectl get applications -n argocd -o yaml Argo CD ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ฐฑ์—…
kubectl apply -f argocd-apps-backup.yaml Argo CD ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ณต๊ตฌ
ETCDCTL_API=3 etcdctl snapshot save backup.db etcd ๋ฐ์ดํ„ฐ ๋ฐฑ์—…
ETCDCTL_API=3 etcdctl snapshot restore backup.db etcd ๋ฐ์ดํ„ฐ ๋ณต๊ตฌ
pg_dump -h postgres.example.com -U argocd -d argocd > backup.sql PostgreSQL ๋ฐฑ์—…
psql -h postgres.example.com -U argocd -d argocd < backup.sql PostgreSQL ๋ณต๊ตฌ
velero backup create argocd-backup --include-namespaces argocd Velero๋ฅผ ์ด์šฉํ•œ ์ „์ฒด ๋ฐฑ์—…
velero restore create --from-backup argocd-backup Velero๋ฅผ ์ด์šฉํ•œ ์ „์ฒด ๋ณต๊ตฌ

๐Ÿ”น ๊ฒฐ๋ก : ์ด๋ฒˆ ๊ธ€์—์„œ ๋ฐฐ์šด ํ•ต์‹ฌ ๋‚ด์šฉ ์ •๋ฆฌ

๐ŸŸข Argo CD์˜ ๋ฐฑ์—…์€ GitOps ํ™˜๊ฒฝ์—์„œ ์ค‘์š”ํ•œ ์šด์˜ ์š”์†Œ์ด๋ฉฐ, ์ •๊ธฐ์ ์œผ๋กœ ์ˆ˜ํ–‰ํ•ด์•ผ ํ•จ
๐ŸŸข kubectl์„ ์‚ฌ์šฉํ•˜์—ฌ CRD(์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ฐ ์„ค์ • ๋ฐ์ดํ„ฐ)๋ฅผ ๊ฐ„๋‹จํžˆ ๋ฐฑ์—… ๊ฐ€๋Šฅ
๐ŸŸข etcd ๋ฐฑ์—…์„ ํ™œ์šฉํ•˜๋ฉด ํด๋Ÿฌ์Šคํ„ฐ ์ „์ฒด๋ฅผ ๋ณต๊ตฌํ•  ์ˆ˜ ์žˆ์Œ
๐ŸŸข HA ๋ชจ๋“œ์—์„œ PostgreSQL์„ ์‚ฌ์šฉํ•˜๋ฉด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋ฐฑ์—…์ด ํ•„์ˆ˜์ ์ž„
๐ŸŸข Velero๋ฅผ ํ™œ์šฉํ•˜๋ฉด Kubernetes ์ „์ฒด ์ƒํƒœ๋ฅผ ๋ฐฑ์—… ๋ฐ ๋ณต๊ตฌํ•  ์ˆ˜ ์žˆ์Œ

728x90