Kubernetes 이야기

argocd (활용 - helm chart 및 Kustomize 배포) 본문

Kubernetes/devops

argocd (활용 - helm chart 및 Kustomize 배포)

kmaster 2022. 5. 18. 10:58
반응형

Kubernetes에 앱을 배포하는 경우 CI과정이 필요한 경우를 제외하면 Helm Chart로 배포하는 경우가 많다. 이번에는 ArgoCD에 Helm Chart 배포 및 Kustomize 배포하는 방법을 살펴보자.

 

Helm Chart 배포

 

먼저 새로운 앱을 생성해보자.

 

1) Source 부분에서 Helm 을 선택하자.

 

2) Repository URL 에 "https://charts.bitnami.com/bitnami" 를 등록한다. 그러면 아래 Chart에 Bitnami Repo에 등록되어 있는 Chart 목록이 자동으로 보이게 된다.

 

3) 마지막으로 배포할 Target Namespace와 Helm Chart의 Values값을 수정한다.

 

생성 시에는 OutOfSync 가 발생하기 때문에 상단에 Sync 버튼을 클릭하여 배포해보자. 배포가 완료되면 test namespace에 아래와 같은 resource들이 생성되어 있다.

# k get all -n test
NAME                                       READY   STATUS    RESTARTS   AGE
pod/helm-example-apache-747c7d8784-qlgmb   1/1     Running   0          113s

NAME                          TYPE           CLUSTER-IP     EXTERNAL-IP   PORT(S)                      AGE
service/helm-example-apache   LoadBalancer   10.96.93.189   <pending>     80:32451/TCP,443:31248/TCP   113s

NAME                                  READY   UP-TO-DATE   AVAILABLE   AGE
deployment.apps/helm-example-apache   1/1     1            1           113s

NAME                                             DESIRED   CURRENT   READY   AGE
replicaset.apps/helm-example-apache-747c7d8784   1         1         1       113s

 

 

마지막으로 Helm Chart의 Value 중 ingress 부분을 아래와 같이 수정 후 재배포 해보자.

 

 

ingress의 기본값은 false이기 때문에 아래와 같이 값을 변경한다.

 

[Save] 버튼을 클릭하면 다시 OutOfSync 상태가 된다. 다시 Sync를 클릭한 후 브라우저를 통해 호출해 보자.

배포된 manifest 정보는 App Detail 정보를 클릭하면 조회할 수 있다.

 

Kustomize 배포

Kustomize는 Kubernetes를 위한 구성 관리 도구이다. Kustomize는 Kubernetes 매니페스트를 리팩토링하는 개념을 작동하는 선언적 템플릿 엔진이다. 이미 작성된 Kubernetes 매니페스트를 Kustomization 파일이라는 간단한 yaml 파일에서 선택적 속성을 재정의할 수 있다. 다른 Kustomization 파일 및 Kubernetes 매니페스트를 재정의할 수 있는 오버레이 파일을 사용할 수도 있다.

Kustomize는 Kubectl v1.14부터 기본적으로 사용할 수 있으며 다른 서비스로 확장 및 통합하기 위한 독립 실행형 바이너리로도 사용할 수 있다.

 

Kustomize의 상세한 내용은 아래를 참고한다.

https://kubernetes.io/ko/docs/tasks/manage-kubernetes-objects/kustomization/

 

Kustomize를 이용한 쿠버네티스 오브젝트의 선언형 관리

Kustomize는 kustomization 파일을 통해 쿠버네티스 오브젝트를 사용자가 원하는 대로 변경하는(customize) 독립형 도구이다. 1.14 이후로, kubectl도 kustomization 파일을 사용한 쿠버네티스 오브젝트의 관리를

kubernetes.io

 

예제

 

이번 예제는 https://github.com/kmaster8/argocd-example-apps/tree/master/kustomize-guestbook 를 배포하는 것으로 해 보자.

 

[New APP] 버튼을 클릭하여 정보를 입력한다. 마지막 하단에 Kustomization.yaml 파일을 읽고 다른 값으로 재정의하도록 정보가 나타난다.

 

 

  • NAME PREFIX : Kustomize 앱의 리소스에 추가되는 접두사
  • NAME SUFFIX : Kustomize 앱의 리소스에 추가되는 접미사
  • IMAGES : Kustomize 이미지 재정의 목록

생성을 완료한 후 Sync 버튼을 클릭하여 배포해 보자. 배포된 앱은 아래와 같다.

# k get all -n test
NAME                                          READY   STATUS    RESTARTS   AGE
pod/kustomize-guestbook-ui-65f8795578-vpkzw   1/1     Running   0          18m

NAME                             TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)   AGE
service/kustomize-guestbook-ui   ClusterIP   10.96.115.216   <none>        80/TCP    18m

NAME                                     READY   UP-TO-DATE   AVAILABLE   AGE
deployment.apps/kustomize-guestbook-ui   1/1     1            1           18m

NAME                                                DESIRED   CURRENT   READY   AGE
replicaset.apps/kustomize-guestbook-ui-65f8795578   1         1         1       18m

 

Name Prefix를 아래와 같이 수정하고 다시 Sync를 해보자.

# k get all -n test
NAME                                        READY   STATUS    RESTARTS   AGE
pod/kmaster-guestbook-ui-65f8795578-vlfz5   1/1     Running   0          117s

NAME                           TYPE        CLUSTER-IP     EXTERNAL-IP   PORT(S)   AGE
service/kmaster-guestbook-ui   ClusterIP   10.96.23.239   <none>        80/TCP    117s

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

NAME                                              DESIRED   CURRENT   READY   AGE
replicaset.apps/kmaster-guestbook-ui-65f8795578   1         1         1       117s

 

다시, Name Suffix를 추가하고 Sync를 해보자.

 

여기에서 리소스 상태, 수정 버전, 배포 시기, 동기화 상태 등과 같은 유용한 세부 정보를 많이 볼 수 있다. 또한 박스마다 3개의 점이 있어 리소스를 선택적으로 동기화/삭제/관리하는 데 사용할 수 있다. 또는 리소스 유형에 해당하는 경우 로그를 볼 수 있다.

반응형

'Kubernetes > devops' 카테고리의 다른 글

Ketpn (설치)  (0) 2022.07.28
argo CD Image Updater  (0) 2022.05.20
argocd (활용 - Git 연동)  (0) 2022.05.17
argocd와 keycloak을 사용하여 SSO 구축하기  (0) 2022.05.14
argocd (설치)  (0) 2022.05.13
Comments