Devops 직군뿐 아니라, 최근에는 Helm이 널리 이용되고 있다. 그래서 자주 사용하는 Helm Command에 대해서 정리해보고자 한다.
아직은 많이 많이 부족하고 배우는 단계라서 단순한 것만 사용하고 있으니, 참고만 하도록 한다.
아래 Helm 공식 Docs를 통해서 더 많은 명렁어를 확인할 수 있고, 직접 사용해보면서 업무에 필요한 명렁어를 습득하면 된다.
Command Tip
1. 현재 배포되어 있는 Helm release 와 배포 이력 찾기
helm list를 통해 현재 배포하고 있는 helm release를 알 수 있다. 1개가 될 수도 있고, 2개 이상이 될 수도 있다.
그리고 간략하게 REVISION과 배포 시간 그리고 CHART에 대한 정보를 알 수 있다.
# helm list
NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION
kubecost kubecost 7 2022-12-15 10:25:04.58492 +0900 KST deployed cost-analyzer-1.99.0 1.99.0
kubecost-networkpolicy kubecost 2 2022-12-09 16:53:31.28885 +0900 KST deployed networkpolicy-0.1.0 1.16.0
2. Helm Chart 배포 이력 확인하기
가장 많이 입력해보는 명령어이다. 문득 어느순간에 보면 나도 모르는 사이에 Ing, svc가 변경되는 일이 발생할 수 있다.
이때 helm history를 통해 배포 이력이 있는지 확인할 수 있고, 배포 때 어떤 Chart를 사용했는지 알 수 있다.
History를 통해 업무 시간 외 또는 주말간 배포가 일어나지 않았는지 대략적인 이상행위를 파악할 수 있다.
# helm history RELEASE
REVISION UPDATED STATUS CHART APP VERSION DESCRIPTION
1 Wed Jul 6 16:13:26 2022 superseded cost-analyzer-1.94.3 1.94.3 Install complete
2 Tue Aug 16 18:40:36 2022 superseded cost-analyzer-1.95.1 1.95.1 Upgrade complete
3 Wed Aug 17 09:19:12 2022 superseded cost-analyzer-1.95.1 1.95.1 Upgrade complete
4 Wed Aug 17 09:53:26 2022 superseded cost-analyzer-1.95.1 1.95.1 Upgrade complete
5 Wed Aug 17 10:05:45 2022 superseded cost-analyzer-1.96.0 1.96.0 Upgrade complete
6 Thu Nov 24 15:36:32 2022 superseded cost-analyzer-1.98.0 1.98.0 Upgrade complete
7 Thu Dec 15 10:25:04 2022 deployed cost-analyzer-1.99.0 1.99.0 Upgrade complete
3. 배포 된 Helm Chart의 Values 확인하기
helm은 chart와 values로 구성되어 있다. 그리고 배포 된 values를 확인하고 싶을 때가 있으며 get values로 확인 할 수 있다.
#helm get values kubecost
USER-SUPPLIED VALUES:
affinity: {}
awsstore:
createServiceAccount: false
useAwsStore: false
clusterController:
enabled: false
image: gcr.io/kubecost1/cluster-controller:v0.1.0
imagePullPolicy: Always
'''
4. 배포 된 Helm Chart의 전체 요소 확인하기
get all RELEASE를 통해 Chart 배포로 인해 변경되는 모든 요소를 볼 수 있다. 어떤 Pod, Deploy, Serviceaccount에서 변경이 일어났는지 확인할 수 있다.
# helm get all kubecost
# 기본적인 배포 환경과 Values
NAME: kubecost
LAST DEPLOYED: Thu Dec 15 10:25:04 2022
NAMESPACE: kubecost
STATUS: deployed
REVISION: 7
TEST SUITE: None
USER-SUPPLIED VALUES:
'''
# Helm으로 인해 생성되는 모든 요소
HOOKS:
MANIFEST:
# Source: cost-analyzer/charts/grafana/templates/podsecuritypolicy.yaml
apiVersion: policy/v1beta1
kind: PodSecurityPolicy
metadata:
name: kubecost-grafana
'''
# Source: cost-analyzer/charts/grafana/templates/serviceaccount.yaml
apiVersion: v1
kind: ServiceAccount
'''
5. Helm Chart 배포 전/후 변경사항 비교하기
helm diff revision은 RELEASE의 ORIGIN 과 COMPARE revision을 비교해서 알려준다.
기본값은 --output diff라서 helm chart가 짧을 경우는 보기가 쉽지만 긴 경우에는 알아보기가 어렵다.
그래서 --output으로 간략하게 어떤 곳에서 변화가 있는지 먼저 확인을 한 다음에 --output diff로 재실행해서 검색하는것을 추천한다.
# helm diff revision RELEASE REVISION ORIGIN REVISION_COMPARE --output simple
kubecost, attached-disk-metrics-dashboard, ConfigMap (v1) to be changed.
kubecost, cluster-metrics-dashboard, ConfigMap (v1) to be changed.
kubecost, cluster-utilization-dashboard, ConfigMap (v1) to be changed.
'''
또는 output=template로 해서 대략적으로 변경되는 사항을 알 수 있다. simple와 거의 유사한 output이 나온다.
# helm diff revision RELEASE REVISION ORIGIN REVISION_COMPARE --output template
[{
"api": "v1",
"kind": "ConfigMap",
"namespace": "kubecost",
"name": "attached-disk-metrics-dashboard",
"change": "MODIFY"
},{
"api": "v1",
"kind": "ConfigMap",
"namespace": "kubecost",
"name": "cluster-metrics-dashboard",
"change": "MODIFY"
},{
"api": "v1",
"kind": "ConfigMap",
"namespace": "kubecost",
"name": "cluster-utilization-dashboard",
"change": "MODIFY"
물론 이외에도 엄청나게 다양한 방법이 존재한다. 하나 하나씩.. 배워가면서 해야될것 같다.
아직도 배울것이 많고 할때마다 신기한것이 많은 세상이다.
'기술 이모저모 > [K8s] Kubernetes' 카테고리의 다른 글
[k8s] kubenetes coreDNS 개념정리 (0) | 2023.01.29 |
---|---|
[k8s] EKS AWS VPC CNI 정리 (0) | 2023.01.29 |
[k8s] Helm이란? Helm 구성과 필수개념 (0) | 2023.01.01 |
[k8s] Kubernetes Init Containers 개념 (0) | 2022.10.25 |
[k8s] Kubernetes DaemonSet vs StaticPod 개념[2/2] (0) | 2022.10.22 |