25/11/07 CI/CD 4

344th·2025년 12월 11일

AWS AI

목록 보기
45/48

ArgoCD

argoCD 전용 네임스페이스 생성

**$ kubectl create namespace argocd**
namespace/argocd created

argoCD 설치 yaml 파일 적용

$ kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml

외부 yml 파일 불러와서 구동

설치를 위한 loadbalancer 서비스 실행

$ kubectl patch svc argocd-server -n argocd -p '{"spec": {"type": "LoadBalancer"}}'

접속할 주소 확인

$ kubectl get svc -n argocd argocd-server

접속 시 사용자 패스워드 확인

$ kubectl -n argocd get secret argocd-initial-admin-secret -o jsonpath="{.data.password}" | base64 -d; echo

서비스 확인 후 external-ip로 브라우저에서 접속하기

username: admin

테스트

NEW APP 클릭

kube-control1에서 kubectl get all 실행

vagrant@kube-control1:~$ **kubectl get all**
NAME                                READY   STATUS    RESTARTS   AGE
pod/guestbook-ui-6cb57c694d-n9c29   1/1     Running   0          94s
pod/myapp-sts-vol-0                 1/1     Running   0          3d20h
pod/myapp-sts-vol-1                 1/1     Running   0          3d20h

NAME                         TYPE        CLUSTER-IP    EXTERNAL-IP   PORT(S)    AGE
service/guestbook-ui         ClusterIP   10.233.8.68   <none>        80/TCP     94s
service/kubernetes           ClusterIP   10.233.0.1    <none>        443/TCP    10d
service/myapp-svc-headless   ClusterIP   None          <none>        8080/TCP   3d22h

NAME                           READY   UP-TO-DATE   AVAILABLE   AGE
deployment.apps/guestbook-ui   1/1     1            1           94s

NAME                                      DESIRED   CURRENT   READY   AGE
replicaset.apps/guestbook-ui-6cb57c694d   1         1         1       94s

NAME                             READY   AGE
statefulset.apps/myapp-sts-vol   2/2     3d20h

새 레포 생성

디렉터리 정리

vagrant@kube-control1:~$ mkdir nginx
vagrant@kube-control1:~$ cd nginx/
vagrant@kube-control1:~/nginx$ git init

yml 파일 작성

$ vim nginx-deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx
spec:
  replicas: 2
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
        - name: nginx
          image: asdfkco/nginx-oss:latest
          ports:
            - containerPort: 80
$ vim nginx-service.yaml
apiVersion: v1
kind: Service
metadata:
  name: nginx-svc
spec:
  selector:
    app: nginx
  ports:
    - protocol: TCP 
      port: 80
      targetPort: 80
  type: LoadBalancer

원격 레포 연결 후 push

새로운 앱 생성

**$ kubectl get all -n nginx**
NAME                         READY   STATUS    RESTARTS   AGE
pod/nginx-7b464d6475-9spwn   1/1     Running   0          50m
pod/nginx-7b464d6475-mx6mc   1/1     Running   0          50m

NAME                TYPE           CLUSTER-IP     EXTERNAL-IP      PORT(S)        AGE
service/nginx-svc   LoadBalancer   10.233.30.52   192.168.56.202   80:32216/TCP   50m

NAME                    READY   UP-TO-DATE   AVAILABLE   AGE
deployment.apps/nginx   2/2     2            2           50m

NAME                               DESIRED   CURRENT   READY   AGE
replicaset.apps/nginx-7b464d6475   2         2         2       50m

**$ kubectl get application -A**
NAMESPACE   NAME        SYNC STATUS   HEALTH STATUS
argocd      guestbook   Synced        Healthy
argocd      nginx       Synced        Healthy
**$ kubectl get deployments.apps -n nginx**
NAME    READY   UP-TO-DATE   AVAILABLE   AGE
nginx   2/2     2            2           46m

192.168.56.202

github repo의 변화 사항 감지 후 menifest 자동 배포

이미지 버전 변경

**$ vim nginx-deployment.yaml**
...
image: asdfkco/nginx-oss:nginxstore
...

원격 저장소에 푸쉬

변화를 감지해서 다시 디플로이

profile
새싹 개발자

0개의 댓글