Amazon S3에서 Helm v3 차트 리포지토리 설정 - 권장 가이드

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

Amazon S3에서 Helm v3 차트 리포지토리 설정

작성자: Abhishek Sharma(AWS)

환경: PoC 또는 파일럿

기술: DevOps; 컨테이너 및 마이크로서비스; 현대화

워크로드: 기타 모든 워크로드

AWS 서비스: Amazon S3

요약

이 패턴은 Amazon Web Services(AWS) 클라우드 기반 Amazon Simple Storage Service(S3)로 통합하여 Helm v3 리포지토리를 효과적으로 관리하도록 도와줍니다. 이 패턴을 사용하려면 Kubernete와 Kubernete 패키지 관리자인 Helm에 대해 잘 알고 있어야 합니다. Helm 리포지토리를 사용하여 차트를 저장하고 차트 버전을 관리하면 정전 중 평균 복원 시간(MTTR)을 개선할 수 있습니다. 

이 패턴은 Helm 리포지토리 CodeCommit 생성에 AWS를 사용하며, S3 버킷을 Helm 차트 리포지토리로 사용하므로 조직 전체의 개발자가 차트를 중앙에서 관리하고 액세스할 수 있습니다.

사전 조건 및 제한 사항

사전 조건 

  • 활성 상태의 AWS 계정

  • Python 버전 2.7.12 이상

  • pip

  • 서브넷과 Amazon Elastic Compute Cloud(Amazon EC2) 인스턴스를 갖춘 Virtual Private Cloud(VPC) 

  • EC2 인스턴스에 Git를 설치합니다.

  • S3 버킷을 생성하기 위한 AWS Identity and Access Management(IAM) 액세스

  • 클라이언트 머신에서 Amazon S3에 대한 IAM(프로그래밍 방식 또는 역할) 액세스

  • AWS CodeCommit 리포지토리

  • AWS Command Line Interface(AWS CLI)

제품 버전

  • Helm v3

  • Python 버전 2.7.12 이상

아키텍처

대상 기술 스택 

  • Amazon S3

  • AWS CodeCommit

  • Helm

  • Kubectl

  • Python 및 pip

  • Git

  • helm-s3 플러그인

대상 아키텍처 

헬름 리포지토리 CodeCommit, 헬름, Git, helm-s3가 있는 EC2 인스턴스, 아마존 S3의 헬름 차트

자동화 및 규모 조정

  • Helm을 기존의 지속적 통합/지속적 전달(CI/CD) 자동화 도구(이 패턴의 적용 범위 제외)에 통합하여 차트 Helm의 패키징 및 버전 제어를 자동화할 수 있습니다.

  • GitVersion 또는 Jenkins 빌드 번호를 사용하여 차트의 버전 관리를 자동화할 수 있습니다.

도구

  • Helm-Helm은 Kubernetes용 패키지 관리자로, Kubernetes 클러스터에서 애플리케이션을 설치하고 관리할 때 유용합니다.

  • Amazon S3 – Amazon Simple Storage Service(S3)는 인터넷에 대한 스토리지입니다. Amazon S3를 사용하면 인터넷을 통해 언제 어디서든 원하는 양의 데이터를 저장하고 검색할 수 있습니다.

  • helm-s3 플러그인-helm-s3 플러그인은 Amazon S3와의 상호 작용을 지원합니다. Helm v2 또는 Helm v3와 함께 사용할 수 있습니다.

모범 사례

< 작성자: 참고 사항 삭제: 사용자가 이 패턴을 보다 효과적으로 구현하는 데 도움이 될 수 있는 지침 및 권장 사항 목록을 제공하십시오. >

에픽

작업설명필요한 기술

Helm v3 클라이언트를 설치합니다.

Helm 클라이언트를 로컬 시스템에 다운로드하고 설치하려면 sudo curl https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 | bash 명령을 실행합니다.

클라우드 관리자, 엔지니어 DevOps

Helm 설치를 검사합니다.

Helm 클라이언트를 검증하려면 helm version --short 명령을 실행합니다.

클라우드 관리자, DevOps 엔지니어
작업설명필요한 기술

차트 Helm을 위한 S3 버킷을 생성합니다.

고유한 S3 버킷을 생성합니다. 버킷에서 이름이 stable/myapp인 폴더를 생성합니다. 이 패턴의 예시는 s3://my-helm-charts/stable/myapp를 대상 차트 리포지토리로 사용합니다.

클라우드 관리자, DevOps 엔지니어

Amazon S3용 helm-s3 플러그인을 설치합니다.

helm-s3 플러그인을 클라이언트 컴퓨터에 설치하려면 helm plugin install https://github.com/hypnoglow/helm-s3.git 명령을 실행합니다.

클라우드 관리자, DevOps 엔지니어

Amazon S3 Helm 리포지토리를 초기화합니다.

Helm 리포지토리로 대상 폴더를 초기화하려면 helm s3 init s3://my-helm-charts/stable/myapp 명령을 사용합니다. 

이 명령은 대상에 index.yaml 파일을 생성하여 해당 위치에 저장된 모든 차트 정보를 추적합니다.

클라우드 관리자, DevOps 엔지니어

새로 생성된 Helm 리포지토리를 확인합니다.

index.yaml 파일이 생성되었는지 확인하려면 aws s3 ls s3://my-helm-charts/stable/myapp/ 명령을 실행합니다.

클라우드 관리자, DevOps 엔지니어

Amazon S3 리포지토리를 클라이언트 시스템의 Helm에 추가합니다.

대상 리포지토리 별칭을 Helm 클라이언트 시스템에 추가하려면 helm repo add stable-myapp s3://my-helm-charts/stable/myapp/ 명령을 사용하세요.

클라우드 관리자, DevOps 엔지니어
작업설명필요한 기술

차트 Helm을 복제하세요.

리포지토리에 로컬 헬름 차트가 없는 경우, 다음 명령어를 실행하여 CodeCommit GitHub 리포지토리에서 로컬 헬름 차트를 복제하세요. git clone <url_of_your_helm_source_code>.git

클라우드 관리자, 엔지니어 DevOps

로컬 차트 Helm을 패키징합니다.

생성 또는 복제한 차트를 패키징하려면 helm package ./my-app 명령을 사용합니다. 

예를 들어 이 패턴은 my-app 차트를 사용합니다. 이 명령은 my-app 차트 폴더의 모든 내용을 아카이브 파일로 패키징하며, 아카이브 파일은 Chart.yaml 파일에 언급된 버전 번호를 사용하여 이름이 지정됩니다.

클라우드 관리자, DevOps 엔지니어

Amazon S3 Helm 리포지토리에 로컬 패키지를 저장합니다.

Amazon S3에서 Helm 리포지토리에 로컬 패키지를 업로드하려면 helm s3 push ./my-app-0.1.0.tgz stable-myapp 명령을 실행합니다.

명령에서 my-app는 차트 폴더 이름이며, 0.1.0Chart.yaml에서 언급한 차트 버전이고, stable-myapp은 대상 리포지토리 별칭입니다.

클라우드 관리자, DevOps 엔지니어

차트 Helm을 검색하십시오.

차트가 로컬과 Amazon S3 Helm 리포지토리에 모두 표시되는지 확인하려면 helm search repo stable-myapp 명령을 실행합니다.

클라우드 관리자, DevOps 엔지니어
작업설명필요한 기술

차트를 수정하고 패키징합니다.

values.yaml에서 replicaCount 값을 1로 설정한 다음 차트를 패키징합니다. 이번에는 버전을 Chart.yaml에서 0.1.1로 변경합니다. 버전 제어는 CI/CD 파이프라인에서 Jenkins 빌드 번호와 같은 GitVersion 도구를 사용하여 자동화하는 것이 이상적입니다. 버전 번호 자동화는 이 패턴의 범위를 벗어납니다. 이 패키지를 설치하려면 helm package ./my-app/ 명령을 실행합니다.

클라우드 관리자, 엔지니어 DevOps

Amazon S3의 Helm 리포지토리에 새 버전을 푸시합니다.

새 패키지 버전 0.1.1을 Amazon S3의 my-helm-chartsHelm 리포지토리로 푸시하려면 다음 명령을 실행합니다. helm s3 push ./my-app-0.1.1.tgz stable-myapp

클라우드 관리자, 엔지니어 DevOps

차트 Helm을 확인합니다.

업데이트된 차트가 로컬과 Amazon S3 Helm 리포지토리에 모두 나타나는지 확인하려면 다음 명령을 실행합니다.

helm repo update

helm search repo stable-myapp

클라우드 관리자, DevOps 엔지니어
작업설명필요한 기술

my-app 차트의 모든 버전을 검색합니다.

사용 가능한 차트 버전을 모두 보려면 --versions 플래그를 사용하여 helm search repo my-app --versions 명령을 실행하세요. 

플래그가 없는 경우 Helm은 기본적으로 가장 최근에 업로드된 차트 버전을 표시합니다.

DevOps 엔지니어

Amazon S3 Helm 리포지토리에서 차트를 설치합니다.

자동 설치는 이 패턴의 범위를 벗어나지만 수동으로 설치할 수 있습니다. 이전 작업의 검색 결과에는 my-app 차트의 여러 버전이 표시됩니다. Amazon S3 Helm 리포지토리에서 새 버전(0.1.1)을 설치하려면 helm upgrade --install my-app-release stable-myapp/my-app --version 0.1.1 --namespace dev 명령을 사용하세요.

DevOps 엔지니어
작업설명필요한 기술

특정 개정에 대한 세부 정보를 검토합니다.

자동 롤백은 이 패턴의 범위를 벗어나지만 수동으로 이전 버전으로 롤백할 수 있습니다. 작동하는 버전으로 전환하거나 롤백하기 전에 그리고 수정 버전을 설치하기 전에 추가 검증 레이어를 추가하려면 helm get values --revision=2 my-app-release 명령을 사용하여 각 수정 버전에 전달된 값을 확인하세요.

DevOps 엔지니어

이전 버전으로 롤백합니다.

자동 롤백은 이 패턴의 범위를 벗어납니다. 이전 수정 버전으로 수동 롤백하려면 helm rollback my-app-release 1 명령을 사용하세요. 

이 예제는 개정 번호 1로 롤백하는 것입니다.

DevOps 엔지니어

관련 리소스