📒 헬름 설치 참조
1 . linux-amd64 링크 주소 복사 후 설치
wget https://get.helm.sh/helm-v3.11.1-linux-amd64.tar.gz
# wget으로 복사한 링크 설치
tar xf helm-v3.11.1-linux-amd64.tar.gz
# 압축해제
sudo install linux-amd64/helm /usr/local/bin
# 적절한 디렉터리로 이동
# cp로 해도 상관 x
helm version
# 설치확인
헬름 차트 = 패키지
차트의 버전 = 패키지의 버전
헬름 차트를 설치하고 저장하기 위해서는 헬름 저장소(repository)가 필요하다
helm repo add bitnami https://charts.bitnami.com/bitnami
# repo설치, 이름은 bitnami가 아닌 원하는 이름도 지정 가능
helm repo remove repo이름
# repo 제거
helm repo list
# 설치한 repo보기
helm search repo bitnami
# bitnami라는 repo가 가지고 있는 차트(패키지) 목록 보기
helm repo update
# 패키지의 목록 업데이트
helm install mydb bitnami/mysql
# helm install release명 차트이름
# 지정한 release명으로 원하는 차트(패키지) 설치
helm list
# 설치한 차트 목록 보기
helm status mydb
# helm status 릴리스명
# 설치한 차트의 상태보기
helm uninstall mydb
# helm uninstall 릴리스명
# 차트 삭제
📒 헬름 사이트는 간혹 명령어에서 영문과 한국어 번역이 다른 경우가 있기 때문에 명령어 오류가 난다면 영문으로 보도록 하자.
helm search hub
1 . 소스코드 변경으로 커스터마이즈
helm show values bitnami/mysql > mysql-param.yaml
# bitanami에 있는 mysql차트에서 values파일을 원하는 param파일로 리디렉션
vi mysql-param.yaml
# param파일에 접속
-> 위와 같이 service의 type을 수정
helm install mydb1 bitnami/mysql -f mysql-param.yaml
kubectl get svc
bitnami 차트 소스코드 : bitnami가 가진 모든 차트의 소스코드
2 . 원하는 값만 커스터마이즈
vi my-param.yaml # 원하는 yaml형식 파일 생성 후 접속
primary:
service:
type: LoadBalancer
# 원하는 값만 커스터마이즈
helm install mydb bitnami/mysql -f my-param.yaml
kubectl get svc
-> 기본값인 clusterip에서 커스터마이즈한 값인 LoadBalancer로 바뀐 것을 확인
3 . 버전관리 및 롤백
helm upgrade mydb bitnami/mysql -f my-param.yaml
helm history mydb
kubectl get svc
helm rollback mydb 1
kubectl get svc
helm repo add dashboard https://kubernetes.github.io/dashboard
helm repo update
#dashboard repo가 가지는 차트 목록 업데이트
helm search repo dashboard
#dashboard의 차트 목록 검색
helm show values dashboard/kubernetes-dashboard > my.yaml
vi my.yaml # 새로운 yaml파일 접속 및 아래와 같이 수정
-> 서비스의 타입을 로드밸런서로 지정했으므로 외부에 노출이된다.
-> 외부용ip를 통해서 외부에서 접속이 가능하다.
helm install mydash dashboard/kubernetes-dashboard -n kube-system -f my.yaml
# 커스텀한 파일을 -f 옵션으로 껴넣어서 mydash 차트를 설치
helm ls -n kube-system # 생성한 차트 확인
kubectl get svc -n kube-system # 커스텀한 서비스 타입이 적용되어있는지 확인
kubectl get sa -n kube-system
-> mydash 차트를 생성하면서 자동을 생성된 서비스 계정을 확인
kubectl create token -n kube-system mydash-kubernetes-dashboard
브라우저에 로드밸런서의 외부용 ip https://192.168.56.200 입력 후 생성한 토큰으로 로그인
kind: ClusterRoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
name: kubernetes-dashboard
namespace: kube-system
subjects:
- kind: ServiceAccount
name: mydash-kubernetes-dashboard
namespace: kube-system
apiGroup: ""
roleRef:
kind: ClusterRole
name: cluster-admin # 기본으로 존재하는 4가지 클러스터롤 중 가장 강력한 권한을 가진 클러스터롤
apiGroup: "rbac.authorization.k8s.io"
-> 클러스터롤 바인딩으로 서비스계정에 가장 강력한 권한을 가진 클러스터롤을 바인딩 했더니 쿠버네티스-대시보드 브라우저가 정상적으로 작동되는것을 확인
-> 이번 실습은 실습용으로 외부에서 확인하기 위해 로드밸런서로 외부에 노출시킨것이지, 사실 쿠버네티스-대시보드와 같은 모니터링 시스템은 외부로 절대 노출시키면 안된다.
📗 프로메테우스는 쿠버네티스로 인해 유명해졌고, 쿠버네티스의 모니터링에 거의 표준적으로 사용되지만, 쿠버네티스 이외에도 프로메테우스가 모니터링 할 수 있는 서비스들은 많다.
helm repo add prometheus-community https://prometheus-community.github.io/helm-charts
https://github.com/prometheus-community/helm-charts
grafana:
service:
type: LoadBalancer # 외부에 노출시키기 위한 용도
-> 원하는 타입만 커스터마이즈한 yaml파일 생성
-> 실습용으로 외부에 노출시켜 확인하기 위해 로드밸런서를 선택했지만 실무에서는 이러한 모니터링 시스템을 절대 노출시키면 안된다
helm install prometheus prometheus-community/kube-prometheus-stack -n monitor -f prometheus-grafana.yaml
-> 커스터마이즈 한 yaml파일을 껴넣어서 차트 설치
kubectl get svc -n monitor
# 커스텀한 서비스의 타입이 적용되었는지 확인
# 로드밸런서의 외부용 ip확인
브라우저에 로드밸런서 외부용 ip http://192.168.56.201 입력 후 grafana에 접속
id / pw : admin / prom-operator
# id/pw 입력 후 로그인
ELK Stack
- Elasticsearch
- 검색엔진
- Logstash
- 로그 수집기
- 비교적 무겁다 -> Fluentd로 대체
- Kibana
- 데이터 시각화
EFK Stack
- Elasticsearch
- Fluentd
- 로그 수집기 (+ 가공 ,필터 기능)
- FluentBit (Fluentd의 가공, 필터기능을 줄여 경량화)
- Kibana
Elastic Stack (가장 선호함)
- Elasticsearch
- Beats
- 로그 수집기
- Fluentd에서 더 경량화 한 것
- Kibana
📕 EFK실습