[Day 25] Oops!Helm - 容器化實作

想容器化的原因

想要容器化原因跟[Day 19] Oops!gRPC - Protoc 容器化實作的原因一樣,主要是想幫同伴們減去安裝的成本,以及之後在CI/CD的時候可以直接透過build好的image操作,避免使用helm時遇到的版本差異問題。

先建立映像檔

需要的套件:gcloud + helm3

helm3.dockerfile


FROM google/cloud-sdk:latest

RUN apt-get update && apt-get install vim wget -y

RUN wget -q -O helm3.tar.gz https://get.helm.sh/helm-v3.2.3-linux-amd64.tar.gz

RUN tar -zxvf helm3.tar.gz && mv linux-amd64/helm /usr/local/bin/helm

docker build

docker build --no-cache --pull --force-rm -t rain123473/helm:v3.2.3 -f helm3.dockerfile .

推到你的倉庫

docker push rain123473/helm:v3.2.3

CI/CD use helm to upgrade your helm repo

kind: pipeline
type: docker
name: helm_ops

steps:
- name: helm_upgrade_site
  when:
    branch: master
  image: rain123473/helm:v3.2.3
  commands:
  - gcloud auth activate-service-account --key-file ${your_key}
  - gcloud container clusters get-credentials ${your_cluster info}
  - helm upgrade 

Docker Run Helm command

docker run -v $(pwd):/go/src/app -w /go/src/app rain123473/helm:latest sh -c $command

example: 透過容器使用Helm幫你建立helm release reop files

docker run -v $(pwd):/go/src/app -w /go/src/app rain123473/helm:latest sh -c 'helm create ithome-2020'

今日小結

我們將helm容器化這樣能使用這個映像檔進行版本控制,也方便夥伴們使用helm