kubernetes 어플리케이션 관리를 위한 오픈소스 패키지 매니저 kubernetes 에서 어플리케이션 배포를 위한 YAML 파일의 복잡성을 줄이는데 사용 Helm 을 사용하면 관리자는 쉽게 어플리케이션 설치, 업그레이드, 롤백 및 구성을 할 수 있음 Chart 라고 불리는 패키지를 사용하여 kubernetes 어플리케이션을 설치함 Chart 는 kubernetes 오브젝트, 구성 파일 및 기타 필요한 파일을 포함하는 패키지 임
% helm repo add jenkins https://charts.jenkins.io // helm repo add <이름> <URL> // 이름 : 저장소에 대한 고유한 이름 // URL : 저장소 주소이며 이 주소를 통해 helm CLI가 차트를 검색하고 설치함 % helm repo update
3. Chart 설치
% helm install jk jenkins/jenkins // helm install <Release_name> <Chart> <Flags> // Release_name : ckxm dlstmxjstm dlfma // Chart : 설치할 차트 이름 <repository>/<chart> 형식으로 지정할 수 있으며 <repository> 가 생략되면 기본 helm 저장소에서 차트를 가져옴 // Flags : helm 설치시 사용되는 옵션 --set 과 같이 차트 값 설정 가능
4. 터미널 출력 NOTES의 안내대로 암호 획득 후 포트포워딩 통해 서비스를 노출 시키고
$ helm install jk jenkins/jenkins
NAME: jk
LAST DEPLOYED: Wed Apr 20 03:02:16 2022
NAMESPACE: default
STATUS: deployed
REVISION: 1
NOTES:
1. Get your 'admin' user password by running:
kubectl exec --namespace default -it svc/jk-jenkins -c jenkins -- /bin/cat /run/secrets/chart-admin-password && echo
2. Get the Jenkins URL to visit by running these commands in the same shell:
echo http://127.0.0.1:8080
kubectl --namespace default port-forward svc/jk-jenkins 8080:8080
3. Login with the password from step 1 and the username: admin
...
접속확인
% kubectl get all // Jenkins 는 스테이트풀셋 위에 돌아가므로 PV, PVC 도 존재함
% helm uninstall <release_name> <flags> // Jenkins 종료 혹은 삭제 // Release_name : 삭제할 차트 인스턴스의 이름 // flags : helm 차트 삭제 시 사용되는 옵션 옵션에서 주로 -n 또는 --namespace 옵션을 사용함 특정 네임스페이스에 설치된 helm 차트만 삭제할 수 있음
쿠버네티스 - 그외 기본 오브젝트 1. Namespace (논리적 리소스 구분) - 쿠버네티스 클러스터 내에서 가상의 클러스터를 만드는데 사용된다. 쿠버네티스의 독립된 환경에서 리소스의 추돌을 방지하고 권한과 접근 제어를 구성할 수 있다.
2. ConfigMap/Secret (설정) - 쿠버네티스에서 어플리케이션을 구성하는 데 사용되는 구성 데이터를 저장하기 위한 리소스 이다. ConfigMap은 키-값 쌍으로 구성된 설정 데이터를 저장하며, Secret은 ConfigMap과 비슷하지만 민감한 데이터를 저장하는 데 사용됨 (민감 데이터 - DB의 비밀번호, API 토큰, SSL 인증서)
3. ServiceAccount (권한 설정) - 쿠버네티스에서 어플리케이션이 API 서버와 상호 작용할 때 사용하는 인증정보 제공. 각 Pod에는 기본적으로 하나의 ServiceAccount가 자동으로 생성되며, 이를 사용 하여 Pod 내에서 API 서버와 상호 작용 할 수 있음
4. Role/ClusterRole (권한 설정 - get, list, watch, create) - Role과 ClusterRole은 쿠버네티스에서 사용자 또는 ServiceAccount가 실행할 수 있는 작업과 리소스에 대한 권한을 정의하는 데 사용함. Role은 Namespace 내에서 리소스에 대한 권한을 지정하며, ClusterRole은 전체 클러스터에서 리소스에 대한 권한을 지정함
// 디렉토리 구조 hello-world / Chart.yaml // 차트에 대한 설명이 포함된 기본 파일 values.yaml // 차트의 기본값이 포함된 파일 templates / // Kubernetes 리소스가 템플릿으로 정의되는 디렉토리 charts / // 하위 차트를 포함할 수 있는 선택적 디렉토리 .helmignore // 패키징 시 무시할 패턴을 정의할 수 있는 곳 (개념상 .gitignore 와 유사)