본문 바로가기
Kubernetes/활용

Helm 헬름 활용(2)

by lumination 2024. 2. 19.

개요

1.헬름을 이용해서 Nginx 설치하기

2. startup probe, liveness probe, readiness probe 알아보기


helm repo add bitnami https://charts.bitnami.com/bitnami 

 

helm repo ls
NAME       URL
github-ksh https://sunghyun-kim-nhn.github.io/k8s-study-helm
bitnami    https://charts.bitnami.com/bitnami

 

helm search repo nginx
NAME                             CHART VERSION APP VERSION DESCRIPTION
bitnami/nginx                    15.11.0       1.25.4      NGINX Open Source is a web server that can be a...
bitnami/nginx-ingress-controller 10.4.0        1.9.6       NGINX Ingress Controller is an Ingress controll...
bitnami/nginx-intel              2.1.15        0.4.9       DEPRECATED NGINX Open Source for Intel is a lig...

 

helm pull nginx

nginx 헬름 차트가 받아진다.

-rw-r--r--@  1 nhn  staff   231B  2 17 01:25 Chart.lock
-rw-r--r--@  1 nhn  staff   1.0K  2 17 01:25 Chart.yaml
-rw-r--r--@  1 nhn  staff    69K  2 17 01:25 README.md
drwxr-xr-x@  3 nhn  staff    96B  2 19 17:35 charts
drwxr-xr-x@ 17 nhn  staff   544B  2 19 17:35 templates
-rw-r--r--@  1 nhn  staff   3.3K  2 17 01:25 values.schema.json
-rw-r--r--@  1 nhn  staff    41K  2 17 01:25 values.yaml
 nhn@AL01600616  ~/kube-study/nginx  ls templates
NOTES.txt                   extra-list.yaml             ingress.yaml                prometheusrules.yaml        servicemonitor.yaml
_helpers.tpl                health-ingress.yaml         networkpolicy.yaml          server-block-configmap.yaml svc.yaml
deployment.yaml             hpa.yaml                    pdb.yaml                    serviceaccount.yaml         tls-secrets.yaml

 

kubectl create ns nginx

kubectl ns nginx

 

helm install nginx -f my-values.yaml .

현재 위치의 헬름 차트를 이용해서 설치한다.

k get pod -n nginx -o wide
NAME                    READY   STATUS    RESTARTS   AGE
nginx-6478d87dc-8tqlg   1/1     Running   0          8m14s   10.10.180.240   worker-node1   <none>           <none>
nginx-6478d87dc-tw7r2   1/1     Running   0          8m14s   10.10.180.239   worker-node1   <none>           <none>

 nhn@AL01600616  ~/kube-study/nginx  helm ls
WARNING: Kubernetes configuration file is group-readable. This is insecure. Location: /Users/nhn/.kube/config
WARNING: Kubernetes configuration file is world-readable. This is insecure. Location: /Users/nhn/.kube/config
NAME 	NAMESPACE	REVISION	UPDATED                             	STATUS  	CHART        	APP VERSION
nginx	nginx    	1       	2024-02-19 17:43:27.287431 +0900 KST	deployed	nginx-15.11.0	1.25.4

 

k get all

k get all
NAME                        READY   STATUS    RESTARTS   AGE
pod/nginx-6478d87dc-8tqlg   1/1     Running   0          8m51s
pod/nginx-6478d87dc-tw7r2   1/1     Running   0          8m51s

NAME            TYPE           CLUSTER-IP       EXTERNAL-IP   PORT(S)        AGE
service/nginx   LoadBalancer   10.105.188.107   <pending>     80:31752/TCP   8m51s

NAME                    READY   UP-TO-DATE   AVAILABLE   AGE
deployment.apps/nginx   2/2     2            2           8m51s

NAME                              DESIRED   CURRENT   READY   AGE
replicaset.apps/nginx-6478d87dc   2         2         2       8m51s

 

k get deploy,svc,configmap

k get deploy,svc,configmap
NAME                    READY   UP-TO-DATE   AVAILABLE   AGE
deployment.apps/nginx   2/2     2            2           9m55s

NAME            TYPE           CLUSTER-IP       EXTERNAL-IP   PORT(S)        AGE
service/nginx   LoadBalancer   10.105.188.107   <pending>     80:31752/TCP   9m55s

NAME                         DATA   AGE
configmap/kube-root-ca.crt   1      10m

 

 

## NGINX containers' startup probe.

  • startupProbe는 컨테이너가 처음 시작될 때만 실행되는 프로브입니다. 즉, 컨테이너가 처음 시작될 때만 실행되고 그 이후에는 실행되지 않습니다.
  • 이 프로브는 애플리케이션이 초기화되는 동안 컨테이너의 상태를 확인하는 데 사용됩니다. 예를 들어, 애플리케이션이 데이터베이스 스키마를 초기화하는 동안에는 startupProbe가 사용될 수 있습니다.

## ref: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#container-probes
## @param startupProbe.enabled Enable startupProbe
## @param startupProbe.initialDelaySeconds Initial delay seconds for startupProbe
## @param startupProbe.periodSeconds Period seconds for startupProbe
## @param startupProbe.timeoutSeconds Timeout seconds for startupProbe
## @param startupProbe.failureThreshold Failure threshold for startupProbe
## @param startupProbe.successThreshold Success threshold for startupProbe
##
startupProbe:
  enabled: false
  initialDelaySeconds: 30
  timeoutSeconds: 5
  periodSeconds: 10
  failureThreshold: 6
  successThreshold: 1


## NGINX containers' liveness probe.

  • livenessProbe는 컨테이너가 현재 실행 중인지 확인하는 데 사용됩니다. 즉, 컨테이너가 계속 실행 중인지 여부를 확인하여 필요에 따라 다시 시작하거나 컨테이너를 복구할 수 있도록 도와줍니다.
  • 이 프로브는 컨테이너가 정상적으로 작동하고 있는지 주기적으로 확인하고, 컨테이너가 죽었을 때 이를 감지하여 Kubernetes가 해당 컨테이너를 재시작하도록 유도합니다.

## ref: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#container-probes
## @param livenessProbe.enabled Enable livenessProbe
## @param livenessProbe.initialDelaySeconds Initial delay seconds for livenessProbe
## @param livenessProbe.periodSeconds Period seconds for livenessProbe
## @param livenessProbe.timeoutSeconds Timeout seconds for livenessProbe
## @param livenessProbe.failureThreshold Failure threshold for livenessProbe
## @param livenessProbe.successThreshold Success threshold for livenessProbe
##
livenessProbe:
  enabled: true
  initialDelaySeconds: 30
  timeoutSeconds: 5
  periodSeconds: 10
  failureThreshold: 6
  successThreshold: 1


## NGINX containers' readiness probe.

  • readinessProbe는 컨테이너가 요청을 처리할 수 있는 상태인지를 확인하는 데 사용됩니다. 즉, 컨테이너가 준비되었는지를 확인하고, 서비스 트래픽을 전달할 준비가 되었는지를 결정합니다.
  • 이 프로브는 컨테이너가 시작되고 서비스가 정상적으로 제공될 수 있을 때까지 기다릴 수 있도록 합니다. 만약 컨테이너가 아직 준비되지 않았다면 해당 컨테이너에 트래픽을 전달하지 않습니다.

## ref: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#container-probes
## @param readinessProbe.enabled Enable readinessProbe
## @param readinessProbe.initialDelaySeconds Initial delay seconds for readinessProbe
## @param readinessProbe.periodSeconds Period seconds for readinessProbe
## @param readinessProbe.timeoutSeconds Timeout seconds for readinessProbe
## @param readinessProbe.failureThreshold Failure threshold for readinessProbe
## @param readinessProbe.successThreshold Success threshold for readinessProbe
##
readinessProbe:
  enabled: true
  initialDelaySeconds: 5
  timeoutSeconds: 3
  periodSeconds: 5
  failureThreshold: 3
  successThreshold: 1


- startupProbe는 초기화 중에만 실행되고, 
- livenessProbe는 컨테이너의 실행 여부를 주기적으로 확인하며, 
- readinessProbe는 컨테이너가 서비스 요청을 처리할 준비가 되었는지를 확인합니다. 
이들은 모두 애플리케이션을 관리하고 안정적으로 실행하는 데 중요한 도구입니다.