Kubernetes와 함께 Helm 사용하기

Kubernetes는 강력한 편성 시스템이지만 배치 과정을 설정하기 어렵다.특정한 응용 프로그램은pod, 서비스, 배치, 복사본 집합 등 여러 개의 독립된 자원을 관리하는 데 도움을 줄 수 있습니다.그러나 각 항목은 YAML 목록 파일에 설명되어 있어야 합니다.
간단한 응용 프로그램에 있어서 이것은 문제가 되지 않지만 생산 과정에서 이 과정을 간소화하는 것이 가장 좋다. 검색, 사용과 공유는 이미 실현된 설정, 이런 설정을 배치하고 설정 템플릿을 만든 다음에 조금도 힘들이지 않고 배치하는 것이다.다시 말하면, 우리는 확장 버전의 패키지 관리자, 예를 들어 Ubuntu의 APT나 Python의 PIP를 사용해서 Kubernetes 집단과 함께 일해야 한다.다행히도 우리는 햄이 가방 매니저로 있다.

헬름은 무엇입니까?


Helm는 Kubernetes의 소스 패키지 관리자로 개발자와 운영자가 응용 프로그램과 서비스를 쉽게 패키지, 설정, 배치할 수 있도록 한다.그것의 영감은 맥OS의 자체 제작 소프트웨어에서 나온 것으로 현재는 클라우드 컴퓨팅 기금회의 일부분이다.
본문에서 우리는 Helm 3을 탐구할 것이다.x는 본문을 작성할 때의 최신 판본이다.

수십 개의 다른 저장소에서 Helm Hub for PostgreSQL 검색
Helm는 소프트웨어 및 종속성 설치, 소프트웨어 업그레이드, 소프트웨어 배포 구성, 저장소에서 패키지 가져오기, 저장소 관리 등을 수행할 수 있습니다.
Helm의 주요 특징은 다음과 같습니다.
  • 역할 기반 액세스 제어(RBAC)
  • 구성된 Golang 템플릿
  • 을 텍스트 형식으로 사용할 수 있습니다.
  • 객체로 구성된 Lua 스크립트
  • 버전 제어 시스템 배포
  • 템플릿을 사용하면 템플릿을 직접 변경하지 않고 몇 개의 변수 값을 변경해서 배치를 설정할 수 있습니다.Helm 패키지는 차트라고 불리며, 몇 개의 YAML 프로필과 템플릿으로 구성되어 있으며, 이 파일과 템플릿은 Kubernetes 목록 파일로 표시됩니다.
    기본 패키지 (차트) 구조:

  • 도표yaml-도표 정보를 포함하는 yaml 파일

  • 라이센스(옵션) - 차트 라이센스가 포함된 일반 텍스트 파일

  • 자술한 문서.md(옵션) - 읽기 가능 자술 파일

  • 가치관yaml - 이 차트의 기본 설정값

  • 가치관구조json(선택 사항) - 구조를 값에 강요하는 json 모드입니다.yaml 파일

  • 도표/- 도표 관련성 정의chart.yaml의 관련성 부분

  • CRD/사용자 정의 리소스 정의

  • templates/- 값과 조합하면 유효한 Kubernetes 목록 파일의 템플릿 디렉터리가 생성됩니다
  • 템플릿은 광범위한 기능을 제공합니다.상하문에 있는 변수를 사용하여 서로 다른 함수 (예를 들어 "quote", sha256sum) 를 적용하고, 순환과 조건 사례를 사용하며, 다른 파일을 가져올 수 있습니다. (다른 템플릿이나 일부 파일을 가져올 수도 있습니다.)

    헬름의 능력은 무엇입니까?

  • 명령줄 인터페이스(CLI)를 통해 Helm을 조작할 때 helm search 명령을 사용하면 저장소의 키워드를 통해 패키지를 검색할 수 있습니다.
  • chart.yamlvalues.yamlREADME.md어떤 가방을 검사할 수 있습니다.그리고 helm create <chart-name> 명령을 사용하여 자신의 도표를 만듭니다.이 명령은 지정된 이름을 가진 폴더를 생성합니다. 여기서 언급된 구조를 찾을 수 있습니다.
  • Helm은 이 두 폴더를 설치하거나 .tgz archives. 패키지 폴더에서 만들려면 .tgz 명령을 사용합니다.이것은 helm package <path to folder> 파일에 정의된 메타데이터의 이름과 버전을 사용하여 작업 디렉터리에 <package_name> 패키지를 만들 것입니다.
  • Helm 내장은 HTTP 서버에서 패키지를 설치할 수 있도록 지원합니다.Helm 서버에 호스팅된 저장소 인덱스를 읽습니다. 이 인덱스는 사용할 수 있는 도표 패키지와 위치를 설명합니다.이것이 바로 기본적으로 안정적인 저장소의 작업 방식이다.
  • 또한 chart.yaml 를 사용하여 시스템에서 저장소를 만들 수 있습니다.이것은 최종적으로 귀하가 자신의 회사 저장소를 만들거나 정부의 안정적인 저장소에 기여할 수 있습니다.
  • 명령을 호출할 수 있습니다. 이 명령은 helm serve 에 표시된 필요한 도표가 helm dependencies update <package name> 에 존재하는지 확인하고 받아들일 수 있는 버전입니다.또한 의존 관계의 최신 도표를 만족시키고 낡은 의존 관계를 정리할 것이다.
  • 그래프와 저장소를 제외하고 당신이 알아야 할 또 다른 중요한 개념은 Release입니다. 이것은 Kubernetes 집단에서 실행되는 그래프의 실례입니다.하나의 도표는 통상적으로 여러 번 같은 집단에 설치할 수 있다.설치할 때마다 새 버전이 생성됩니다.따라서 같은 그룹에 여러 개의 PostgreSQL이 있을 수 있으며, 그 중에서 각 버전은 자신의 버전 이름을 가지고 있다.이미지의 여러 Docker 컨테이너로 볼 수 있습니다.
  • 그것은 어떻게 일합니까?



    자료 출처: 개발상.ibm.일반 도메인 이름 형식
    Helm 클라이언트는 차트를 설치, 업데이트 및 작성하고 Kubernetes API로 컴파일하여 전송하는 데 사용됩니다.이전 버전에는 Kubernetes가 있는 집단에서 실행되는 프로그램을 Tiller라고 하는 클라이언트-서버 구조가 있었다.이 소프트웨어는 배포의 라이프 사이클을 책임집니다.그러나 이런 방법은 일부 안전 문제를 초래했다. 이것은 모든 기능을 현재 클라이언트가 처리하는 이유 중의 하나이다.
    클라이언트만 설치해야 하기 때문에 Helm 3을 설치하는 것은 이전 버전보다 훨씬 쉽다.Windows, macOS 및 Linux에 적용됩니다.바이너리 버전, 자체 제작 또는 설정된 설치 스크립트를 통해 프로그램을 설치할 수 있습니다.

    예를 들겠습니다.


    헬멧 설치부터 시작합시다.
    bash master $ curl https://raw.githubusercontent.com/helm/helm/master/scripts/get-helm-3 | bash
    
    % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current                                 Dload  Upload   Total   Spent    Left  Speed100  6794  100  6794    0     0  25961      0 --:--:-- --:--:-- --:--:-- 25931Error: could not find tillerHelm v3.1.2 is available. Changing from version .Downloading https://get.helm.sh/helm-v3.1.2-linux-amd64.tar.gzPreparing to install helm into /usr/local/binhelm installed into /usr/local/bin/helm
    
    2. 모든 장치가 제대로 설치되어 있는지 확인합니다.
    master $ helm version --short
    V3.1.2+gd878d4d
    
    3. 기본적으로 Helm은 저장소에 연결되어 있지 않습니다.가장 흔히 볼 수 있는 안정적인 연결에 연결을 추가합시다.chart.yaml를 사용하여 사용 가능한 모든 저장소를 확인할 수 있습니다.
    master $ helm repo add stable 
    
    https://kubernetes-charts.storage.googleapis.com/
    "stable" has been added to your repositories
    
    4. 저장소를 추가하면 Helm을 업데이트해야 합니다.현재의 현지 투구 상태는 당신의 고향 환경에 보존되어 있습니다.
    master $ helm repo update
    
    Hang tight while we grab the latest from your chart repositories...
    ...Successfully got an update from the "stable" chart repository
    Update Complete. ⎈ Happy Helming!⎈
    
    

    The Helm command defaults to discovering the host already set in ~/.kube/config. There is a way to change or override the host, but that's beyond the scope of this scenario.


    master $ helm env
    
    HELM_BIN="helm"
    HELM_DEBUG="false"
    HELM_KUBECONTEXT=""
    HELM_NAMESPACE="default"
    HELM_PLUGINS="/root/.local/share/helm/plugins"
    HELM_REGISTRY_CONFIG="/root/.config/helm/registry.json"
    HELM_REPOSITORY_CACHE="/root/.cache/helm/repository"
    HELM_REPOSITORY_CONFIG="/root/.config/helm/repositories.yaml"
    
    5. Helm Hub에서 WordPress 검색하기
    master $ helm search hub wordpress
    
    URL                                                     CHART VERSION   APP VERSION     DESCRIPTION https://hub.helm.sh/charts/presslabs/wordpress-...      v0.8.4          v0.8.4          Presslabs WordPress Operator Helm Chart
    https://hub.helm.sh/charts/presslabs/wordpress-...      v0.8.3          v0.8.3          A Helm chart for deploying a WordPress site on ...
    https://hub.helm.sh/charts/bitnami/wordpress            9.0.3           5.3.2           Web publishing platform for building blogs and ...
    
    저장소를 검색할 수도 있습니다. (현재는 안정적인 것만 있습니다.)
    master $ helm search repo wordpress
    
    NAME                    CHART VERSION   APP VERSION     DESCRIPTION
    stable/wordpress        9.0.2           5.3.2           DEPRECATED Web publishing platform for building...
    
    앞에서 말한 바와 같이, 당신은 도표를 볼 수 있습니다.예를 들어 우리는 charts/ 에서 Wordpress 도표의 정보를 얻는다.또한 helm repo listchart.yaml 을 확인할 수 있습니다.
    master $ helm show chart stable/wordpress
    
    apiVersion: v1
    appVersion: 5.3.2
    dependencies:
    - condition: mariadb.enabled
      name: mariadb
      repository: https://kubernetes-charts.storage.googleapis.com/
      tags:
      - wordpress-database
      version: 7.x.xdeprecated: truedescription: DEPRECATED Web publishing platform for building blogs and websites.
    home: http://www.wordpress.com/
    icon: https://bitnami.com/assets/stacks/wordpress/img/wordpress-stack-220x234.png
    keywords:- wordpress- cms
    - blog
    - http- web- application
    - php
    name: wordpress
    sources:
    - https://github.com/bitnami/bitnami-docker-wordpress
    version: 9.0.2
    
    WordPress를 위한 이름 공간을 만들고 테스트 그림을 설치합니다.
    master $ kubectl create namespace wordpress
    
    namespace/wordpress created
    
    master $ helm install test-wordpress stable/wordpress --namespace wordpress
    
    이 명령의 출력은 너무 커서 혼란스러워 보인다.
    변수를 설정할 수도 있습니다(예:
    helm install test-wordpress \
      --set wordpressUsername=admin \
      --set wordpressPassword=password \
      --set mariadb.mariadbRootPassword=secretpassword \
        stable/wordpress
    
    8. 이제 모든 내용을 정확하게 배치할 수 있도록 하겠습니다.

    보시다시피 모든 것이 정확하게 배치되었습니다.

    결론


    Helm은 유행하는 소스 패키지 관리자로 사용자에게 Kubernetes 집단을 관리하는 유연한 방식을 제공한다.자체 패키지를 만들거나 자체 또는 외부 저장소의 공용 패키지를 사용할 수 있습니다.모든 가방은 매우 유연하다. 대부분의 경우, 당신이 필요로 하는 것은 정확한 상수를 정의하고, 그 중에서 템플릿을 컴파일해서 당신의 요구를 만족시킬 뿐이다.자체 차트를 작성하려면 Go 템플릿 및/또는 Lua 스크립트의 강력한 기능을 사용할 수 있습니다.업데이트할 때마다 역사 단원이 만들어집니다. 언제든지 이 단원으로 굴러갈 수 있습니다.헬렘이 있으면 쿠베르니테스의 모든 힘을 갖게 될 거야.마지막으로 Helm은 역할 기반 액세스를 사용할 수 있으므로 팀에서 클러스터를 관리할 수 있습니다.
    이것은 우리로 하여금 이 짧은 문장의 마지막에 가서 Helm의 기본 지식과 특성을 설명하게 할 것이다.우리는 네가 그것을 좋아하고 이용할 수 있기를 바란다.

    좋은 웹페이지 즐겨찾기