
CI/CD는 소프트웨어 개발의 중요한 개념으로, 지속적인 통합과 지속적인 배포를 의미한다. 이 두개념을 통해 소프트웨어 개발,테스트,배포의 자동화된 파이프라인을 구축하여 개발 효율성을 높이고, 코드 품질을 향상시킬수 있다.
CI/CD 사용했을 때의 장점
# Argo CD 네임스페이스 생성
kubectl create namespace argocd
# Argo CD 설치
kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml
#설치된 리소스가 잘 실행 중인지 확인
kubectl get pods -n argocd
Argo CD 서버에 접근할 수 있도록 서비스 파일(argocd-server.yaml)을 작성하여 NodePort 방식으로 노출합니다.
apiVersion: v1
kind: Service
metadata:
annotations:
kubectl.kubernetes.io/last-applied-configuration: |
{"apiVersion":"v1","kind":"Service","metadata":{"annotations":{},"creationTimestamp":"2024-10-06T09:30:16Z","labels":{"app.kubernetes.io/component":"server","app.kubernetes.io/name":"argocd-server","app.kubernetes.io/part-of":"arg>
creationTimestamp: "2024-10-06T09:30:16Z"
labels:
app.kubernetes.io/component: server
app.kubernetes.io/name: argocd-server
app.kubernetes.io/part-of: argocd
name: argocd-server
namespace: argocd
resourceVersion: "1112038"
uid: 647a69fa-71f5-40dd-a715-f3334f396fbf
spec:
clusterIP: 10.108.21.147
clusterIPs:
- 10.108.21.147
externalTrafficPolicy: Cluster
internalTrafficPolicy: Cluster
ipFamilies:
- IPv4
ipFamilyPolicy: SingleStack
ports:
- name: http
nodePort: 30080
port: 80
protocol: TCP
targetPort: 8080
- name: https
nodePort: 30443
port: 443
protocol: TCP
targetPort: 8080
selector:
app.kubernetes.io/name: argocd-server
sessionAffinity: None
type: NodePort
status:
loadBalancer: {}
# 적용
kubectl apply -f argocd-server.yaml
http://<클러스터-노드-IP>:30080
아이디: admin
# 초기 비밀번호 확인
kubectl get secret argocd-initial-admin-secret -n argocd -o jsonpath="{.data.password}" | base64 --decode


new app 누르고
application name 설정 저는 cloudapp
프로젝트는 기존에 만든것 없으니 default
SYNC POLICY는 저는 자동 동기화를 원하니 AUTOMATIC
하고 깃허브 url 작성하고 클러스터 네임스페이스 모두 작성하면 됩니다.그러고 만들면 깃허브에 올라가있는 설정 파일데로 저절로 연결 됩니다.



이제 로컬에서 설정파일을 변경하고 깃허브에 푸시만 해도 저절로 Argo CD가 gitops 방식으로 이를 인식해서 자동을 동기화 해서 적용시켜주게 됩니다.
다음에는 이내용을 애플리케이션 cicd 파이프라인을 구축해서 cloudapp 깃허브에 푸쉬하게 되면 저절로 도커 허브 레지스트리에 푸시가 되고 쿠버네티스 deployment.yml 파일에서도 최신 이미지를 사용해서 다시 배포되게 하는 자동화를 구상해보겠습니다. 즉 쉽게 말해서 앱 개발을 완료해서 깃허브에 푸시만해도 쿠버네티스 배포까지 최신이미지로 재배포 되는 과정을 자동화 해보겠습니다.