[k8s] ArgoCD를 활용한 쿠버네티스 배포
Posted by Albert 104Day 22Hour 13Min 51Sec ago [2025-04-23]
1. github에 k8s관련 배포파일 push
deployment.yml
apiVersion: apps/v1
kind: Deployment
metadata:
name: deploy-test01
spec:
replicas: 3
selector:
matchLabels:
app.kubernetes.io/name: web-deploy
template:
metadata:
labels:
app.kubernetes.io/name: web-deploy
spec:
containers:
- name: nginx
image: nginx:1.24
service.yml
apiVersion: v1
kind: Service
metadata:
name: web-service
spec:
selector:
app.kubernetes.io/name: web-deploy
type: ClusterIP
ports:
- protocol: TCP
port: 80
해당 쌤플 github주소 https://github.com/visionboy/argocd-test
2. argocd 페이지에 접속하여 repository 설정
Settings-> CONNECT REPO 버튼클릭
3. Application 생성
Application -> NEW APP 버튼 클릭 -> 관련 내용 입력 -> CREATE버튼클릭-> SYNC버튼클릭-> SYNCRONIZE 버튼클릭 -> 완료
Application Name: nginx-test
Project Name: default
SYNC POLICY: Manual
SYNC OPTIONS: AUTO-CREATE NAMESPACE
Repository URL: https://github.com/visionboy/argocd-test (클릭시 생성된 기본값선택)
Revision: HEAD
Path: . (파일들이 github root경로에 있으므로 . 만 찍어줌)
Cluster URL: https://kubernetes.default.svc (클릭시 생성된 기본값선택)
Namespace: nginx-argocd-test
등록완료되면 Status가 그림처럼 Healthy, Synced 로 나온다
4. 쿠버네티스 서버상 확인(정상적으로 nginx-argocd-test 네임스페이스, pod, service 모두 정상 생성됨)
albert@k8s-master:~/work/ch11/ex02$ kubectl get namespace
NAME STATUS AGE
calico-apiserver Active 6d2h
calico-system Active 6d2h
default Active 6d2h
kube-node-lease Active 6d2h
kube-public Active 6d2h
kube-system Active 6d2h
myargocd Active 79m
mymetallb Active 2d
mynginx Active 2d1h
nginx-argocd-test Active 30m
tigera-operator Active 6d2h
albert@k8s-master:~/work/ch11/ex02$ kubectl get all --namespace nginx-argocd-test
NAME READY STATUS RESTARTS AGE
pod/deploy-test01-54c55bbc54-cg8v6 1/1 Running 0 25m
pod/deploy-test01-54c55bbc54-ckgrm 1/1 Running 0 25m
pod/deploy-test01-54c55bbc54-v7jrf 1/1 Running 0 27m
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/web-service ClusterIP 10.106.173.218 <none> 80/TCP 32m
NAME READY UP-TO-DATE AVAILABLE AGE
deployment.apps/deploy-test01 3/3 3 3 32m
NAME DESIRED CURRENT READY AGE
replicaset.apps/deploy-test01-54c55bbc54 3 3 3 32m
5. nginx-test Application 클릭하여 상세 항목 확인 및 replica 변경테스트
deploy-test01 클릭 -> EDIT버튼클릭 -> 내용중 replicas 항목을 3->1 로 변경 -> SAVE
6. pod 재확인
(기존에 3개의 pod가 실행 되었는데 변경후 1개만 확인된다. argocd관리자 화면에서 직접 변경가능하다. 하지만 status 항목이 OutOfSync상태로 뜬다
이는 github에 있는 내용과 차이가 난다는 뜻이므로 위의 SYNC버튼을 클릭하면 다시 githug에 등록된내용으로 동기화함)
albert@k8s-master:~/work/ch11/ex02$ kubectl get all --namespace nginx-argocd-test
NAME READY STATUS RESTARTS AGE
pod/deploy-test01-54c55bbc54-cg8v6 1/1 Running 0 36m
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/web-service ClusterIP 10.106.173.218 <none> 80/TCP 42m
NAME READY UP-TO-DATE AVAILABLE AGE
deployment.apps/deploy-test01 1/1 1 1 42m
NAME DESIRED CURRENT READY AGE
replicaset.apps/deploy-test01-54c55bbc54 1 1 1 42m
끝