일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- nginx ingress
- Model Serving
- mlops
- CANARY
- MLflow
- keda
- Pulumi
- Kubernetes 인증
- seldon core
- serving
- 카오스 엔지니어링
- Continuous Deployment
- gitops
- xdp
- Kopf
- 오퍼레이터
- operator
- argocd
- tekton
- kubernetes operator
- knative
- opentelemetry
- blue/green
- CI/CD
- eBPF
- Kubeflow
- opensearch
- Kubernetes
- Litmus
- Argo
- Today
- Total
Kubernetes 이야기
argocd (활용 - helm chart 및 Kustomize 배포) 본문
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 (1) | 2022.05.20 |
argocd (활용 - Git 연동) (0) | 2022.05.17 |
argocd와 keycloak을 사용하여 SSO 구축하기 (0) | 2022.05.14 |
argocd (설치) (0) | 2022.05.13 |