1.4.1.3 Helm Chart Repository로 사용하기
OCIR은 OCI(Open Container Initiative) Registry로 Helm v3.8.0에서 GA(General Availability)가 되어 공식적으로 지원하고 있습니다. 그 이상의 버전을 설치하여 사용합니다.
Helm CLI 환경 준비
-
helm cli를 사용할 Cloud Shell 또는 작업환경에 접속합니다.
-
helm cli 3.9.4 설치
작업환경에 helm cli가 설치되지 않은 경우, 편의상 현재 Cloud Shell에 기본 설치된 버전과 동일한 버전을 설치해 사용합니다.
wget https://get.helm.sh/helm-v3.9.4-linux-amd64.tar.gz tar -zxvf helm-v3.9.4-linux-amd64.tar.gz linux-amd64/helm mv linux-amd64/helm ~/.local/bin/
-
.bashrc의 PATH에 등록
PATH=$HOME/.local/bin:$HOME/bin:$PATH
Helm Chart 생성후 등록하기
샘플 차트 만들기
Helm Chart Template Guide 예제를 따라 만든 샘플 차트를 OCIR 등록 해봅니다.
-
테스트를 위해 차트를 만듭니다.
$ helm create mychart Creating mychart
-
차트 작성
생성된 차트는 nginx를 배포하는 샘플 차트입니다. 실제 차트 작성을 위해서는 앱에 맞게 수정하겠지만, 지금은 배포 테스트로 수정없이 그냥 사용합니다.
-
차트 패키징
helm package
명령으로 패키징합니다.$ cd mychart $ helm package . Successfully packaged chart and saved it to: /home/kildong/helm/mychart/mychart-0.1.0.tgz $ ls charts Chart.yaml mychart-0.1.0.tgz templates values.yaml
OCIR 로그인 및 Helm Chart Push
OCIR에 docker cli로 로그인 할때와 동일하게 사용자와 Auth Token을 사용해 로그인합니다. 이전 내용을 참고합니다.
-
앞서 생성한 Auth Token을 통해 Cloud Shell 또는 접속 환경에서 helm cli로 로그인 합니다.
- OCIR 주소:
<region-key>.ocir.io
- region-key: 예, yny
- region-identifier: 예, ap-chuncheon-1
- 전체 Region별 OCIR 주소: Availability by Region
- Username:
<tenancy-namespace>/<username>
형식- Username: OCI 콘솔에서 유저 Profile에서 보이는 유저명을 사용합니다.
- OCI 유저:
<tenancy-namespace>/<username>
- OCI 유저:
- tenancy-namespace: 앞서 Repository 생성시 확인한 tenancy-namespace 또는 Cloud Shell에서
oci os ns get
으로 확인 가능
- Password: 앞서 생성한 로그인할 유저의 Auth Token
$ oci os ns get { "data": "cnxxxxxxxxgq" } $ helm registry login -u cnxxxxxxxxgq/kildong@example.com yny.ocir.io Password: Login Succeeded
- OCIR 주소:
-
Helm Chart Push
- OCIR에 생성한 Repository로 Push 하기 위해 아래 형식 Push 하면 됩니다. 그러면 repo-prefix/ 을 포함하여 repository 가 생성됩니다.
<region-key>.ocir.io/<tenancy-namespace>/<repo-prefix>
- 하위 compartment로 push하는 경우 사전에 repository를 만들어야 합니다. 예) helm/mychart repository를 push 전에 만들것
- mychart 예시
$ helm push ./mychart-0.1.0.tgz oci://yny.ocir.io/cn8wdnkejjgq/helm Pushed: yny.ocir.io/cn8wdnkejjgq/helm/mychart:0.1.0 Digest: sha256:b32e3d61d4615569065c9852d9eb0c497056a36fda2cb1646467be6c84412aa1
- OCIR에 생성한 Repository로 Push 하기 위해 아래 형식 Push 하면 됩니다. 그러면 repo-prefix/ 을 포함하여 repository 가 생성됩니다.
-
OCIR 확인
Helm Chart를 OKE 클러스터에 배포하기
-
Cloud Shell 또는 작업 환경에 접속합니다.
-
등록한 Chart로 배포합니다.
helm install mychart oci://yny.ocir.io/${tenancy_namespace}/helm/mychart --version 0.1.0
-
배포 예시
$ helm install mychart oci://yny.ocir.io/cnxxxxxxxxgq/helm/mychart --version 0.1.0 --set service.type=LoadBalancer NAME: mychart LAST DEPLOYED: Wed May 17 09:53:49 2023 NAMESPACE: default STATUS: deployed REVISION: 1 NOTES: 1. Get the application URL by running these commands: NOTE: It may take a few minutes for the LoadBalancer IP to be available. You can watch the status of by running 'kubectl get --namespace default svc -w mychart' export SERVICE_IP=$(kubectl get svc --namespace default mychart --template "{{ range (index .status.loadBalancer.ingress 0) }}{{.}}{{ end }}") echo http://$SERVICE_IP:80 $ helm list NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION mychart default 1 2023-05-17 09:53:49.337838208 +0000 UTC deployed mychart-0.1.0 1.16.0 $ kubectl get all NAME READY STATUS RESTARTS AGE pod/mychart-8bc9498f-kgswz 1/1 Running 0 30s NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE service/mychart LoadBalancer 10.96.9.117 138.2.xxx.x 80:32765/TCP 35s NAME READY UP-TO-DATE AVAILABLE AGE deployment.apps/mychart 1/1 1 1 30s NAME DESIRED CURRENT READY AGE replicaset.apps/mychart-8bc9498f 1 1 1 30s
-
배포 앱 접속 확인
이 글은 개인으로서, 개인의 시간을 할애하여 작성된 글입니다. 글의 내용에 오류가 있을 수 있으며, 글 속의 의견은 개인적인 의견입니다.