[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





LIST

Copyright © 2014 visionboy.me All Right Reserved.