투구 소개

컨테이너로 마이그레이션할 방법을 찾고 있거나 이미 컨테이너를 사용하여 애플리케이션을 실행하고 있다면 Kubernetes에 대해 들어보셨을 것입니다. Kubernetes는 장애 조치, 롤링 업데이트, 분산 노드 간의 네트워킹 등과 같은 모든 종류의 멋진 엔터프라이즈 수준 기능을 허용하는 오케스트레이션 소프트웨어입니다. 이 글을 쓰는 시점에서 Kubernetes 채택률은 86%입니다. Kubernetes에서 애플리케이션을 오케스트레이션하는 데 필요한 모든 리소스는 YAML 파일을 사용하여 구성할 수 있습니다. Helm은 이러한 응용 프로그램 구성 파일의 템플릿, 배포 및 배포 처리 기능을 제공하는 소프트웨어입니다.

투구 템플릿



대부분의 경우 Kubernetes 구성을 나타내는 YAML 파일은 애플리케이션을 배포하는 데 필요한 서로 다른 환경 간에 서로 다른 값을 가져야 합니다. Helm은 Kubernetes 구성 파일을 기본값 또는 사용자 지정 값 세트를 기반으로 전체 출력 YAML을 생성하는 데 사용할 수 있는 템플릿으로 정의하는 기능을 제공합니다. 예를 들어 다음 배포가 있다고 가정합니다.

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment
  labels:
    app: nginx
spec:
  replicas: 3
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:1.14.2
        ports:
        - containerPort: 80

값을 변경해야 하는 가장 일반적인 경우는 이미지 태그를 변경하는 것입니다. 이 예에서는 개발 또는 테스트 환경에서 많은 복제본이 필요하지 않은 경우를 대비하여 복제본 수를 동적으로 만들 것입니다. 배포를 다음과 같이 변경하겠습니다.

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment
  labels:
    app: nginx
spec:
  replicas: {{ .Values.replicas }}
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:{{ .Values.dockerTag }}
        ports:
        - containerPort: 80

Helm 패키징 및 배포



Helm은 Kubernetes 구성 YAML 파일을 Chart라는 항목으로 패키징, 버전 지정 및 배포하는 기능을 제공합니다. Helm 차트는 Kubernetes에서 애플리케이션을 오케스트레이션하는 데 필요한 모든 템플릿과 기본값으로 구성됩니다. maven 또는 docker 리포지토리와 유사하게 리포지토리에서 차트를 푸시하거나 리포지토리에서 가져올 수 있습니다. helm package 명령은 helm 차트 저장소로 푸시할 수 있는 아카이브 파일을 생성합니다. 그런 다음 해당 차트를 풀다운하여 애플리케이션을 배포하는 데 사용할 수 있습니다. 이러한 차트는 또한 애플리케이션의 Kubernetes 구성에서 변경 사항이 있을 때 차트의 새 버전으로 배포할 수 있도록 버전을 지정할 수 있습니다.

투구 배포 관리



helm 명령을 통해 Kubernetes 인스턴스에서 차트를 설치, 업그레이드, 롤백 또는 삭제할 수 있습니다. 설치 메타데이터는 helm에 의해 내부적으로 처리되며 차트의 각 업그레이드는 새로운 "릴리스"로 처리됩니다. 즉, helm 명령을 실행하여 Kubernetes 구성을 이전 상태로 되돌리기만 하면 릴리스를 롤백할 수 있습니다. 이는 구성 값을 변경하여 애플리케이션을 업데이트하지만 실제 차트 내용은 변경되지 않은 경우에 특히 유용합니다.

결론



Kubernetes로 컨테이너화된 애플리케이션을 오케스트레이션하는 경우 템플릿, 배포 배포 및 관리와 같은 기능이 빠르게 필요할 것입니다. Helm은 이러한 기능을 쉽게 제공하며 쉽게 따라할 수 있는 예제와 함께 문서화되어 있습니다. Helm의 기능과 기능에 대한 훨씬 더 자세한 정보와 문서가 있습니다https://helm.sh/docs/.

좋은 웹페이지 즐겨찾기