6분의 HELM 소개

Kubernetes 애플리케이션 관리 단순화
사진은 pexels가 촬영했다.일반 도메인 이름 형식

After completing a 4-month period on a client’s project that included a complete migration from “raw” K8S-yaml-files to Helm Charts, I figured I need to put the things I’ve learned in writing for others to read, and for me to better learn.
This post is the little brother of my , make sure you read it first if you're not yet familiar with basic K8s concepts.


TL;박사


당신은 간단한 도구helm install https://dev.to/prodopsio/an-8-minute-introduction-to-kubernetes-1oi/mysql로 당신의 K8S 집단에 의존항과 전문 소프트웨어를 설치할 수 있습니다. 이런 설치는 수백 가지가 있지만, 당신의 제품/서비스로 설치할 수도 있습니다!

헬름은 무엇입니까?

  • "조타수 또는 조타수는 선박, 범선, 잠수함, 기타 유형의 해사선박 또는 우주선을 조종하는 사람을 가리킨다."Wikipedia
  • "Kubernetes의 패키지 관리자, Helm은 Kubernetes를 위해 구축된 소프트웨어를 검색, 공유, 사용하는 가장 좋은 방법입니다."Helm.sh
  • 우리는 왜 그것을 필요로 합니까?


    이 신기한 설치 프로그램이 어떻게 나의 쿠버네트의 생활을 더욱 좋아지게 하는지 이해하기 위해서 나는 여러 번 자신에게 질문을 했다.
    좋습니다. Helm은 타사 제품과 자신의 제품을 포함하여 응용 프로그램의 생명 주기를 획득, 배치, 관리할 수 있습니다.
    POD, 복사본 집합, 서비스, RBAC 설정 등을 설명하는 YAML 파일(또는 긴 파일)의 무작위 그룹을 유지할 필요가 없습니다.helm을 사용하면 패키지는 하나의 구조와 약정을 가지고 YAML 층templates과 다른 변경 템플릿의 층values을 정의합니다.값이 템플릿에 주입되어 구성을 분리하고 변경할 수 있는 위치를 정의합니다.이 세트는 키잡이라고 불린다.
    본질적으로 사용자가 만든 구조화된 프로그램 패키지는 Kubernetes 집단에서 실행하는 데 필요한 모든 것을 포함합니다.응용 프로그램에 필요한 의존 항목을 포함합니다.

    Helm은 CLI이고 Tiller는 백엔드입니다.


    실제로 Helm은 백엔드 서버인 Tiller와 상호 작용하는 CLI 도구입니다.Tiller는 일반적으로 명령 보내기helm init를 통해 설치되며 별도의 지시가 없는 경우kube-system 네임스페이스에 있습니다.이것은 Helm이 요구하는 해상도를 배치하는 것을 책임진다.
    차트를 설치하면 Tiller가 버전을 만들고 변경 사항을 추적합니다.이렇게 하면 Helm는 설치에 참여할 뿐만 아니라 실제 배치 도구로 도표 버전과 수정 버전을 사용하여 집단의 응용 프로그램의 생명 주기를 관리한다.

    투구 개념도


    Helm은 응용 프로그램 배치, 실행 및 확장에 필요한 모든 K8s 구성 요소를 차트로 패키지화합니다.그것도 의존 관계, 업데이트, 유지보수 설정을 정의하는 곳이다.
    관례에 따라 도표 루트 디렉터리에는 Chart.yaml 라는 파일만 있을 수 있다.
    선택적으로 (helmcreate를 사용하면 기본적으로) 더 많은 구성 요소를 포함할 수 있습니다. 나중에 이 구성 요소를 자세히 설명하겠습니다. 그러나 우선, 전형적인 도표 구조는 다음과 같습니다.
        ├── Chart.yaml
        ├── templates
        │   ├── service.yaml
        │   └── replicaset.yaml
        ├── charts
        │   ├── nginx-ingress-1.1.2.tgz
        ├── requirements.lock
        ├── requirements.yaml
        └── values.yaml
    
    이 도표 (웹 UI라고 함) 에는 ServiceReplicaSet 의 템플릿이 있습니다. 헬름을 설치할 때 목록 밑에 있는 values.yaml 파일을 사용하여 이 템플릿을 만듭니다.
    또한 웹 UI 차트는 Nginx를 실행해야 하므로 Nginx는 subchart 디렉토리에 charts 로 표시됩니다.requirements.yaml는 Nginx가 나열된 실제 요구 사항을 설명하는 파일입니다.자물쇠 파일도 패키지의 일부입니다. helm 의존항을 사용하여 명령을 업데이트할 때 필요할 때 만듭니다.Chart.yaml는 가방에 대한 설명으로 가방에 유일하게 필요한 파일입니다. apiVersion, name, version.tar.gz 세 가지 필수 항목만 있습니다.다음은 예입니다.
    차트right here에서 옵션과 항목의 전체 목록을 찾을 수 있습니다.
        apiVersion: v1
        name: drone
        version: 1.0.0
    

    거푸집


    템플릿은 차트에서 선택할 수 있는 하위 디렉토리입니다.
    K8s 구성 요소(예를 들어 서비스, 복사 집합, 배치 등)를 조합하여 Go-Template 형식으로 변환하고 나중에 값과 일치합니다.
    템플릿 예제 섹션을 살펴보겠습니다.
        apiVersion: apps/v1
        kind: DaemonSet
        metadata:
          name: {{ .Values.name }}
          labels:
            app: {{ .Values.name }}
            somelabel: {{ .Values.labels.somelabelkey }}
    

    가치관


    값은 값에 설명되어 있습니다.yaml 파일은 템플릿과 일치하는 값을 포함하는 yaml 구조여야 합니다.위의 템플릿을 고려하여 일치 값 파일은 다음과 같습니다.
        name: web-ui
        labels:
          somelabelkey: somelabelvalue
    

    하위 차트


    하위 차트는 종속성이라고도 하며 현재 차트의 필수 차트입니다.
    백엔드에 Redis 캐시가 필요하면 프로그램을 패키지화하는 또 다른 방식으로 볼 수 있습니다.
    하위 차트를 사용하는 또 다른 방법은 템플릿을 사용하여 표준 차트를 가져오고 값을 제공하는 여러 상위 차트의 하위 차트로 사용할 수 있는 상속 메커니즘으로 간주하는 것입니다.

    Helm 개념 라이브러리


    창고는 키맵을 소지하고 유지하는 곳이다.본질적으로, 이것은 코드로 저장된 템플릿과 설정 값입니다. (때로는 add 파일로 포장됩니다.)
    기본적으로stable/redis를 설치할 때,helm은 Helm/Charts repo on GitHub에 접촉하여 안정적인 트리 아래에서 검색합니다.
    이repo에 방문하면 부화기 하위 디렉터리를 발견할 수 있습니다. 그곳에서 생산 준비 (안정적) 로 표시되지 않은 부화도를 얻을 수 있고 설치할 수 있습니다.이것은 결코 네가 그것들을 사용할 수 없다는 것을 의미하지 않는다.개발 집단에 그것들을 도입하고 사용하려고 시도하다.Helm 커뮤니티 관리가 엄격한sem-ver 버전 제어 안내서는 최소한의 변경이라도 새로운 도표 버전을 만들 수 있습니다.만약 원격 도표의 특정 버전이 어떤 방식으로 작동한다면, 그것은 영원히 당신에게 갑자기 나타나지 않을 것이라고 확신할 수 있다.
    서로 다른 환매를 사용하는 좋은 예는 Elastic의 Elastic Search 도표이다. 이 도표는 과거에 회사가 Helm/Charts 환매에서 유지보수했다.
    Elastic은 Helm repo로 제품을 이전하기로 결정했습니다. 최신 공식 차트를 얻기 위해 다음 방법helm repo add elastic을 통해 Helm로 제품을 이전할 수 있습니다.helm install --name elasticsearch elastic/elasticsearch https://helm.elastic.co
    다음:github.com/helm/charts

    투구 개념 | 발표


    게시를 K8S 클러스터에 설치된 응용 프로그램을 추적하는 메커니즘으로 간주할 수 있습니다.응용 프로그램이 Helm에서 설치되면 버전이 생성됩니다.Redis와 같은 다른 제품 설치를 만들고 그룹에서 두 가지 다른 버전을 만들고 추적할 수 있습니다.
    helmls를 사용하여 발표를 추적할 수 있습니다. 모든 버전에'수정판'이 있습니다. 이것은helm발표 버전 제어 용어입니다.특정 버전이 업데이트되는 경우(예: Redis 버전에 더 많은 메모리를 추가하는 경우) 개정이 추가됩니다.Helm 은 특정 버전으로 롤백하여 실제로 배포 및 프로덕션 상태 프로세서의 관리자가 되도록 합니다.

    TLS


    Tiller와 Helm은 의사소통 방식이 필요합니다.기본적으로 이 연결은 안전하지 않습니다. 이 연결은 단점 중 하나가 파괴되거나 손상된 구성 요소에 접근할 수 있다면 데이터를 읽고 분석할 수 있다는 것을 의미합니다.시스템 간 통신이 안전하지 않은 실제 공격면을 토론하는 것 외에 우리는 자동으로 생성된 인증서를 사용하여 안전한 TLS 연결을 쉽게 만들 수 있다.이를 위해 here’s a script that takes you through the process 어디서든 실시할 수 있다.

    공헌


    너는 (나처럼) 다음 공식 도표에서 새로운 능력이나 특성 요구를 만났다는 것을 발견할 수 있을 것이다. 이것은 버그일 가능성이 높다. (부화기 도표에서는 불가능하다.)헬름과 그 도표는 수백 명의 공헌자를 가진 개원 프로젝트이기 때문에 매우 활발하다.필요한 차트를 변경하고 기여를 포함하는 PR을 엽니다. 모든 요구가 제출되고 충족되면 팀은 며칠 안에 변경을 승인합니다.
    비록 이 과정의 요구는 매우 높지만 변화는 곧 심사, 비준 또는 비준을 받지 못할 것이다.Read more about contributing부터 프로젝트까지;만약 당신이 작은 변경만 한다면, 문서의 대부분 내용은 이것과 무관하다. 왜냐하면 이것은 새로운 도표의 요구를 개술했기 때문이다.

    그렇습니다.


    나는 지금까지 헬름이 왜 이렇게 강력한 시스템인지 이해할 수 있기를 바란다.이것은 단지 소개일 뿐이기 때문에 그것을 배우고 느끼려면 그것을 둘러싸고 긴장된 일을 할 필요가 없다.타사 제품을 배포하고 차트를 구축합니다.
    저는 Omer라고 합니다. ProdOps의 엔지니어입니다. 이것은 글로벌 컨설팅 회사입니다. Devops 문화를 이용하여 신뢰할 수 있고 안전하며 간단한 방식으로 소프트웨어를 제공합니다.아래 댓글에서 당신의 생각을 알려주거나 트위터에 직접 연락해 주세요.만약 네가 박수치기를 좋아한다면, 그것은 내가 미래의 창작에 전념하는 것을 도울 수 있다.

    좋은 웹페이지 즐겨찾기