패키지 관리자 Helm

<review> 인증–> 토큰, x.509 인증서–> CA 인증서 (K8s 설치 시 인증서가 작성됨)–> CA는 token, x.509 인증서로 감pod와 사람은 kube-apiServer 인증을 받아야 하는 패드= default라는 SA 계정 부여 (시크릿으로 자동 생성) –> SA-> 토큰-> (Mount) 패드인-SA-일반 사용자: 외부 (AWS/GCPIAM) LDAP 등

Role ->RoleBinding ———–AccountClusterRole———–ClusterRoleBinding————-Account==> 1명의 사용자는 여러 롤 바인딩에 접속 가능

ClusterRole – 사전 정의된 클러스터 롤(4개): 클러스터-admin: admin: edit: view

<Helm 패키지 관리자> – 쿠바네티스의 별도 리소스 –> 굳이 헬름이 없어도 된다(그래도 편함) – 애플리케이션 배포를 위해 수많은 YAML 파일을 작성하는 http://helm.sh/docs/intro/install/LearnhowtoinstallandgetrunningwithHelm.helm.sh –> 기본적으로 kubeconfig를 사용하기 때문에 kubeconfig 설정을 하면 바로 사용할 수 있다(쉘 스크립트를 잡고 설치하기만 하면 된다!)

[Helm 주요 용어] – 차트(Chart): Helm 패키지(tar 형태–> tar 내에 yaml 파일) – 저장소(Repository): Helm 차트가 저장된 저장소(실제로 많이, 많이 변경됨) – 릴리스(Release): 차트가 클러스터에 배포된 인스턴스 단위

[Helm 차트 구조] – 쿠바네티스 리소스를 모은 패키지 – TarGzip으로 아카이브 및 압축되어 있으며 아카이브 내에는 표준화된 구조를 갖는다.

[Helm 필수 구조] mychart: 디렉토리, 차트 패키지의 최상위 디렉토리(패키지 이름) – Chart.yaml: 반드시 포함(패키지 설명), 차트에 대한 설명 포함(버전, 설명, 작성자 등의 정보) – templates: 디렉토리, 템플릿 파일을 위치, 실제 API 서버에 제공하는 YAML, 매니페스토 저장 제공) – values.yaml: 변수와 변수의 기본값을 정의, temlates 디렉토리의 YAML 객체 파일에 해당되어야 한다고 제공한다.

–> 변수를 참조해야 재사용이 가능 –>.Values.primary.hostAliases: values.yaml을 변수로 참조

[Helm 차트 정보 확인]-helmshowchart [CHART] : 차트 정보 (버전, 홈페이지, 키워드, 소스 주소 등) -helmshowreadme [CHART] : 차트 설명 (사용법, 파라미터 등) -helmshow values [CHART] : 차트 설정 파라미터 -helmshowall [CHART] : Chart, Readme, Values ==> Helm 허브 저장소의 차트명은 [이름 있음]

[Helm 차트 설치] – helminstall [NAME] [CHART] [FLAGS] : NAME – 릴리스명 : CHART – 차트명 : FLAGS – 옵션

+ 서비스 포트 지정 후 업그레이드 시 오류 helmupgrademydb-custombitnami/mysql–setservice.port=13306–setauth.rootPassword=”본인 비밀번호”+

[Helm 명령] – 차트 저장소 추가 : helmrepoadd [NAME] <URL : 저장소 이름 – URL : 저장소 주소 – 차트 저장소 검색 : helmsearchrepo [CHART] – Helm 허브가 아닌 추가된 저장소 – 차트 저장소 최신 목록 업데이트 : helmrepoupdate – 차트 저장소 삭제 : helmremove [CHART] – 차트 설치 : helmistall [GS] [CHART]

–> 설치하면 namespace, 상태, 배포된 시간 등을 알 수 있다.- 릴리스 리스트 : helist

  • 쿠바네티스 자원 배포 확인
  • 릴리스 상태 확인 –> install 할 때 나온 것과 같이 나오는
  • 릴리스 삭제 및 확인
  • 차트 root 비밀번호 구성 수정 배포

–>따로 yml 파일로 지정함

–>–values/-f: 덮어쓰기 YAML 파일지정–>–set: 덮어쓰기 값 지정(name=value)–>helminstallmydb-custombitnami/mysql–valuescustom.yml도 가능

–> 확인!

  • 릴리스 업그레이드 및 롤백

–>포트변경처에 아까 custom.yml파일에 포트 지정을 저렇게 해줘서–>helminstallmydb-custombitnami/mysql-fcustom.yml 해줌

–>포트변경완료!

  • 릴리스 롤백

실제 서비스 리소스를 확인하면 원래의 포트 번호로 변경되었음을 확인할 수 있다.

–> mydb-custom 릴리스 히스토리 확인!

[DB 배포!]

install 한다!

<Prometheus 모니터링>-kubectltop 명령으로는 metrics-server를 이용하여 CPU 및 메모리 사용량 체크-쿠바네티스에서 기본적으로 사용할 수 있는 모니터링 툴=HeasterHeapster: 메트릭을 kubelet으로 수집-> 메트릭을 시계열 데이터베이스인 influxDB에 저장-> 관리, Grafana를 이용하여 시각화가 가능

[Prometheus 구성 요소] – Prometheus 서버: 시계열 데이터 취득으로 저장 – Pushgateway: Job 리소스와 같은 생명 주기가 짧은 자원의 메트릭 수집 – 클라이언트 라이브러리: 메트릭 수집 – Exporters: HAProxy, StatsD, Graphite와 같은 서비스의 메트릭 전송(Prometheus에 가져오기) – Alertmanager: 알람 전송 – Graphite와 같은 서비스의 메트릭 측정 대상:

https://prometheus-community.github.io/helm-chartsPrometheus community Helm chartsprometheus-community.github.io

[helm을 이용한 Prometheus 설치]

–>Promethus Operator용 네임스페이스 작성

–> 차트 저장소 추가

–>모든 리소스가 생성되면 웹 브라우저에서 쿠바네티 스크래스터 노드 IP와 monitor-grafana 서비스 포트 연결 –>실습을 위해 웹 브라우저로 돌린 것이지만 실제로는 k8s 내부에서 사용돼야 하기 때문에 절대 웹 브라우저에서 실행해서는 안 된다. 보안상의 불편함

[Elastic Stack 로깅]

https://goharb or.io/Our mission is to be the trusted cloud native repository for Kubernetesgoharbor.iobitnami/harbor.

error: Content is protected !!