기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
Amazon EKS와 Amazon S3의 차트 Helm 리포지토리를 사용하여 Kubernetes 리소스 및 패키지 배포
작성자: Sagar Panigrahi(AWS)
환경: PoC 또는 파일럿 | 기술: 컨테이너 및 마이크로서비스, DevOps | 서비스: Amazon EKS |
요약
이 패턴은 복잡성과 관계없이 Kubernetes 애플리케이션을 효율적으로 관리하는 데 도움이 됩니다. 이 패턴은 Helm을 기존의 지속적 통합 및 지속적 전달(CI/CD) 파이프라인에 통합하여 Kubernetes 클러스터에 애플리케이션을 배포합니다. Helm은 Kubernetes 애플리케이션을 관리하는데 도움이 되는 Kubernetes 패키지 관리자입니다. 차트 Helm은 복잡한 Kubernetes 애플리케이션을 정의, 설치 및 업그레이드하는 데 도움이 됩니다. 차트를 버전화하여 Helm 리포지토리에 저장할 수 있어 정전 시 평균 복원 시간(MTTR)을 개선할 수 있습니다.
이 패턴은 Kubernetes 클러스터에 대해 Amazon Elastic Kubernetes Service(Amazon EKS)를 사용합니다. Amazon Simple Storage Service(S3)를 차트 Helm 리포지토리로 사용하므로, 조직 전체의 개발자가 차트를 중앙에서 관리하고 액세스할 수 있습니다.
사전 조건 및 제한 사항
사전 조건
Virtual Private Cloud(VPC)가 있는 활성 Amazon Web Services(AWS) 계정
Amazon EKS 클러스터
Amazon EKS 클러스터 내에 설정되고 워크로드를 처리할 준비가 된 작업자 노드
클라이언트 머신의 대상 클러스터에 대해 Amazon EKS kubeconfig 파일을 구성하기 위한 Kubectl
S3 버킷을 생성하기 위한 AWS Identity and Access Management(IAM) 액세스
클라이언트 머신에서 Amazon S3에 대한 IAM(프로그래밍 방식 또는 역할) 액세스
소스 코드 관리 및 CI/CD 파이프라인
제한 사항
현재 사용자 지정 리소스 정의(CRD)의 업그레이드, 삭제 또는 관리는 지원되지 않습니다.
CRD를 참조하는 리소스를 사용하는 경우 CRD를 별도로(차트 외부에) 설치해야 합니다.
제품 버전
Helm v3.6.3
아키텍처
대상 기술 스택
Amazon EKS
Amazon VPC
Amazon S3
소스 코드 관리
Helm
Kubectl
대상 아키텍처
![클라이언트 헬름과 Kubectl은 아마존 EKS 클러스터용 아마존 S3에 헬름 차트 리포지토리를 배포합니다.](images/pattern-img/d3f993e6-4d96-4cb9-a075-c4debe431fd7/images/2f09f7bb-440a-4c4b-b29f-08d136d1ada4.png)
자동화 및 규모 조정
AWS를 사용하여 인프라 생성을 자동화할 CloudFormation 수 있습니다. 자세한 내용은 Amazon EKS CloudFormation 설명서에서 AWS를 사용하여 Amazon EKS 리소스 생성을 참조하십시오.
Helm을 기존 CI/CD 자동화 도구에 통합하여 차트 Helm의 패키징 및 버전 관리를 자동화할 예정입니다(이 패턴의 범위를 벗어남).
GitVersion 또는 Jenkins 빌드 번호를 사용하여 차트 버전 관리를 자동화할 수 있습니다.
도구
도구
Amazon EKS – Amazon Elastic Kubernetes Service(Amazon EKS)는 자체 Kubernetes 컨트롤 플레인을 구축하거나 유지 관리할 필요 없이 AWS에서 Kubernetes를 실행하기 위한 관리형 서비스입니다. Kubernetes는 컨테이너화된 애플리케이션의 배포, 조정 및 관리 자동화를 위한 오픈 소스 시스템입니다.
Helm
- Helm은 Kubernetes 클러스터에 애플리케이션을 설치하고 관리하는 데 도움이 되는 Kubernetes용 패키지 관리자입니다. Amazon S3 – Amazon Simple Storage Service(S3)는 인터넷에 대한 스토리지입니다. Amazon S3를 사용하면 인터넷을 통해 언제 어디서든 원하는 양의 데이터를 저장하고 검색할 수 있습니다.
Kubectl
- Kubectl은 Kubernetes 클러스터에 대해 명령을 실행하기 위한 명령줄 유틸리티입니다.
코드
예제 코드가 첨부되어 있습니다.
에픽
작업 | 설명 | 필요한 기술 |
---|---|---|
Helm 클라이언트를 설치합니다. | 로컬 시스템에 Helm 클라이언트를 다운로드하고 설치하려면 다음 명령을 사용하십시오.
| DevOps 엔지니어 |
Helm 설치를 검사합니다. | Helm이 Amazon EKS 클러스터 내의 Kubernetes API 서버와 통신할 수 있는지 확인하려면 | DevOps 엔지니어 |
작업 | 설명 | 필요한 기술 |
---|---|---|
NGINX용 차트 Helm을 만드십시오. | 클라이언트 머신에 이름이 | DevOps 엔지니어 |
차트의 구조를 검토하십시오. | 차트의 구조를 검토하려면 | DevOps 엔지니어 |
차트에서 서비스 계정 생성을 비활성화합니다. |
| DevOps 엔지니어 |
수정된 차트에 구문 오류가 있는지 검증(린트)합니다. | 대상 클러스터에 차트를 설치하기 전에 차트에 구문 오류가 있는지 확인하려면 | DevOps 엔지니어 |
차트를 설치하여 Kubernetes 리소스를 배포합니다. | 다음 명령을 사용하여 차트 Helm 설치 관리자를 실행합니다.
선택적 | DevOps 엔지니어 |
Amazon EKS 클러스터에서 리소스를 검토하십시오. |
| DevOps 엔지니어 |
작업 | 설명 | 필요한 기술 |
---|---|---|
릴리스를 수정하고 업그레이드하십시오. |
| DevOps 엔지니어 |
Helm 릴리스 기록을 검토하십시오. | Helm을 사용하여 설치한 특정 릴리스의 모든 수정 버전을 나열하려면 다음 명령을 실행하십시오.
| DevOps 엔지니어 |
특정 개정에 대한 세부 정보를 검토합니다. | 작동 버전으로 전환하거나 롤백하기 전에 그리고 수정 버전을 설치하기 전에 추가 검증 단계를 수행하려면 다음 명령을 사용하여 각 수정 버전에 전달된 값을 확인하십시오.
| DevOps 엔지니어 |
이전 버전으로 롤백합니다. | 이전 버전으로 롤백하려면 다음 명령을 사용합니다.
이 예제는 개정 번호 1로 롤백하는 것입니다. | DevOps 엔지니어 |
작업 | 설명 | 필요한 기술 |
---|---|---|
차트 Helm을 위한 S3 버킷을 생성합니다. | 고유한 S3 버킷을 생성합니다. 버킷에서 이름이 | 클라우드 관리자 |
Amazon S3용 Helm 플러그인을 설치합니다. | Helm-s3 플러그인을 클라이언트 머신에 설치하려면 다음 명령을 사용합니다.
참고: Helm V3 지원은 플러그인 버전 0.9.0 이상에서 사용할 수 있습니다. | DevOps 엔지니어 |
Amazon S3 Helm 리포지토리를 초기화합니다. | 대상 폴더를 Helm 리포지토리로 초기화하려면 다음 명령을 사용합니다.
이 명령은 대상에 | DevOps 엔지니어 |
Amazon S3 리포지토리를 Helm에 추가합니다. | 클라이언트 머신에서 리포지토리를 추가하려면 다음 명령을 사용합니다.
이 명령은 Helm 클라이언트 컴퓨터의 대상 리포지토리에 별칭을 추가합니다. | DevOps 엔지니어 |
리포지토리 목록을 검토하십시오. | Helm 클라이언트 컴퓨터의 리포지토리 목록을 보려면 | DevOps 엔지니어 |
작업 | 설명 | 필요한 기술 |
---|---|---|
차트를 패키징합니다. | 생성한 | DevOps 엔지니어 |
Amazon S3 Helm 리포지토리에 패키지를 저장합니다. | Amazon S3의 Helm 리포지토리에 패키지를 업로드하려면 올바른
| DevOps 엔지니어 |
차트 Helm을 검색하십시오. | 차트를 로컬에서 표시하고 Amazon S3의 Helm 리포지토리에서 모두 표시되는지 확인하려면 다음 명령을 실행합니다.
| DevOps 엔지니어 |
작업 | 설명 | 필요한 기술 |
---|---|---|
차트를 수정하고 패키징합니다. |
버전 관리는 CI/CD 파이프라인의 Jenkins 빌드 번호와 같은 GitVersion 도구를 사용한 자동화를 통해 업데이트되는 것이 이상적입니다. 버전 번호 자동화는 이 패턴의 범위를 벗어납니다. | DevOps 엔지니어 |
Amazon S3의 Helm 리포지토리에 새 버전을 푸시합니다. | 0.1.1 버전의 새 패키지를 Amazon S3의
| DevOps 엔지니어 |
작업 | 설명 | 필요한 기술 |
---|---|---|
my-nginx 차트의 모든 버전을 검색하십시오. | 사용 가능한 차트 버전을 모두 보려면
플래그가 없는 경우 Helm은 기본적으로 가장 최근에 업로드된 차트 버전을 표시합니다. | DevOps 엔지니어 |
Amazon S3 Helm 리포지토리에서 차트를 설치하십시오. | 이전 작업의 검색 결과에는
| DevOps 엔지니어 |
관련 리소스
첨부
이 문서와 관련된 추가 콘텐츠에 액세스하려면 attachment.zip 파일의 압축을 풉니다.