일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 29 | 30 |
- argo rollout
- 카오스 엔지니어링
- Argo
- serving
- Continuous Deployment
- Kopf
- keda
- opensearch
- CI/CD
- gitea
- kubernetes operator
- Kubeflow
- knative
- gitops
- opentelemetry
- mlops
- Kubernetes 인증
- Model Serving
- CANARY
- Kubernetes
- seldon core
- tekton
- operator
- nginx ingress
- Litmus
- MLflow
- argocd
- Pulumi
- 오퍼레이터
- blue/green
- 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/
예제
이번 예제는 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 |