EKS Helm Deploy
By Bys on June 5, 2021
Helm 설정
Instasll Helm
curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/master/scripts/get-helm-3
chmod 700 get_helm.sh
./get_helm.sh
Helm Repo
Helm repository는 다양한 chart의 repository 이다. 현재 Helm 3에서 지원하는 repository url은 아래와 같으며 helm repo add 명령어를 통해 추가한다.
helm repo add stable https://charts.helm.sh/stable
#helm repo ls
해당 URL로 접속해보면 Improve this page. 링크가 존재하고 클릭하면 github 사이트로 이동한다.
chart 하위에 여러 app들이 존재하며 만약 nginx-ingress를 배포하고자 하면 아래와 같이 커맨드를 수행한다.
helm upgrade -i nginx-ingress stable/nginx-ingress -n ingress
helm upgrade -i "name" stable/nginx-ingress -n "namespace"
만약 제공 되는 values.yaml 중 변경하고 싶은 값이 있다면 아래와 같이 수행한다.
- helm fetch 를 통해 tgz을 내려받고 압축을 풀어 chart를 내려받은 후 values.yaml 값을 수정하여 배포
helm fetch stable/nginx-ingress tar -xzvf nginx-ingress-1.41.3.tgz
- helm upgrade -i 를 통해 수행하며 –set 옵션을 통해 values.yaml을 오버라이딩 한다.
#sample helm upgrade -i nginx-ingress stable/nginx-ingress -n ingress \ --set image.pullPolicy=Always \ --set serviceAccount.enabled=false
Helm Chart Create
helm create “name” 을 통해서 default chart를 생성할 수 있다.
아래와 같이 command를 실행하면 현재 폴더에 helm 폴더가 생기고 하위에 templates, Chart.yaml, Values.yaml 이 생성된다.
templates 하위에는 deployment.yaml, service.yaml, serviceaccount.yaml ingress.yaml 등이 기본적으로 생성되며 모두 values.yaml에 설정한 값을 이용하여 배포된다.
Helm Chart
helm create helm
#helm create "name"
Helm Deploy
위에서 생성한 chart를 이용하여 values.yaml 값을 적정하게 설정한 후 아래와 같이 커맨드를 수행하면 배포가 진행된다.
#Command
helm upgrade -i test ./helm/ -f ./helm/values.yaml -n test
#Output
: << "END"
Release "test" does not exist. Installing it now.
NAME: test
LAST DEPLOYED: Fri Jul 16 17:24:50 2021
NAMESPACE: test
STATUS: deployed
REVISION: 1
NOTES:
1. Get the application URL by running these commands:
export POD_NAME=$(kubectl get pods --namespace test -l "app.kubernetes.io/name=helm,app.kubernetes.io/instance=test" -o jsonpath="{.items[0].metadata.name}")
export CONTAINER_PORT=$(kubectl get pod --namespace test $POD_NAME -o jsonpath="{.spec.containers[0].ports[0].containerPort}")
echo "Visit http://127.0.0.1:8080 to use your application"
kubectl --namespace test port-forward $POD_NAME 8080:$CONTAINER_PORT
END
helm upgrade -i --debug ${APP_NAME} ./helm/ -f ./helm/${HELM_VALUES_FILE} -n ${APPLICATION_NS}
helm ls -A
#helm ls -n namespace
Helm Delete
helm을 통해 배포한 app은 아래와 같은 커맨드로 resource 삭제가 가능하다.
helm uninstall test -n test
aws
eks
helm
deploy
]