

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# Implante recursos e pacotes do Kubernetes usando o Amazon EKS e um repositório de charts do Helm no Amazon S3
<a name="deploy-kubernetes-resources-and-packages-using-amazon-eks-and-a-helm-chart-repository-in-amazon-s3"></a>

*Sagar Panigrahi, Amazon Web Services*

## Resumo
<a name="deploy-kubernetes-resources-and-packages-using-amazon-eks-and-a-helm-chart-repository-in-amazon-s3-summary"></a>

Esse padrão ajuda você a gerenciar aplicativos Kubernetes com eficiência, independentemente de sua complexidade. O padrão integra o Helm aos pipelines existentes de integração e entrega contínuas (CI/CD) para implantar aplicativos em um cluster do Kubernetes. Helm é um gerenciador de pacotes Kubernetes que ajuda a gerenciar aplicativos Kubernetes. Os charts do Helm ajudam a definir, instalar e atualizar aplicativos Kubernetes complexos. Os gráficos (charts) podem ser versionados e armazenados nos repositórios do Helm, o que melhora o tempo médio de restauração (MTTR) durante interrupções. 

Esse padrão usa o Amazon Elastic Kubernetes Service (Amazon EKS) para o cluster do Kubernetes. Ele usa o Amazon Simple Storage Service (Amazon S3) como um repositório de charts do Helm, para que os gráficos possam ser gerenciados e acessados centralmente por desenvolvedores em toda a organização.

## Pré-requisitos e limitações
<a name="deploy-kubernetes-resources-and-packages-using-amazon-eks-and-a-helm-chart-repository-in-amazon-s3-prereqs"></a>

**Pré-requisitos **
+ Uma conta ativa da Amazon Web Services (AWS) com uma nuvem privada virtual (VPC)
+ Um cluster do Amazon EKS 
+ Nós de trabalho configurados dentro do cluster do Amazon EKS e prontos para receber workloads
+ Kubectl para configurar o arquivo kubeconfig do Amazon EKS para o cluster de destino na máquina cliente
+ Acesso ao AWS Identity and Access Management (IAM) para criar o bucket S3
+ Acesso por IAM (programático ou por perfil) ao Amazon S3 a partir da máquina cliente
+ Gerenciamento de código-fonte e um CI/CD pipeline

**Limitações**
+ No momento, não há suporte para atualizar, excluir ou gerenciar definições de recursos personalizados ()CRDs.
+ Se você estiver usando um recurso que se refere a um CRD, o CRD deverá ser instalado separadamente (fora do gráfico).

**Versões do produto**
+ Helm v3.6.3

## Arquitetura
<a name="deploy-kubernetes-resources-and-packages-using-amazon-eks-and-a-helm-chart-repository-in-amazon-s3-architecture"></a>

**Pilha de tecnologias de destino**
+ Amazon EKS
+ Amazon VPC
+ Amazon S3
+ Gerenciamento de código-fonte
+ Helm
+ Kubectl

**Arquitetura de destino**

![\[O cliente do Helm e o Kubectl implantam um repositório de chart do Helm no Amazon S3 para clusters do Amazon EKS.\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/images/pattern-img/d3f993e6-4d96-4cb9-a075-c4debe431fd7/images/2f09f7bb-440a-4c4b-b29f-08d136d1ada4.png)


 

**Automação e escala**
+ A AWS CloudFormation pode ser usada para automatizar a criação da infraestrutura. Para obter mais informações, consulte [Criação de recursos do Amazon EKS com a AWS CloudFormation](https://docs.aws.amazon.com/eks/latest/userguide/creating-resources-with-cloudformation.html) na documentação do Amazon EKS.
+ O Helm deve ser incorporado à sua ferramenta de CI/CD automação existente para automatizar o empacotamento e o controle de versões dos gráficos do Helm (fora do escopo desse padrão).
+ GitVersion ou os números de compilação do Jenkins podem ser usados para automatizar o controle de versão dos gráficos.

## Ferramentas
<a name="deploy-kubernetes-resources-and-packages-using-amazon-eks-and-a-helm-chart-repository-in-amazon-s3-tools"></a>

**Ferramentas**
+ [Amazon EKS](https://docs.aws.amazon.com/eks/latest/userguide/what-is-eks.html): o Amazon Elastic Kubernetes Service (Amazon EKS) é um serviço gerenciado para executar o Kubernetes na AWS sem a necessidade de criar ou manter seu próprio ambiente de gerenciamento do Kubernetes. O Kubernetes é um sistema de código aberto para automatizar a implantação, a escalabilidade e o gerenciamento de aplicações em contêineres.
+ [Helm](https://helm.sh/docs/): é um gerenciador de pacotes Helm para o Kubernetes que ajuda a instalar e gerenciar aplicações em seu cluster do Kubernetes.
+ [Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/gsg/GetStartedWithS3.html): o Amazon Simple Storage Service (Amazon S3) serve como armazenamento para a internet. Você pode utilizar o Amazon S3 para armazenar e recuperar qualquer volume de dados, a qualquer momento, de qualquer lugar na web.
+ [Kubectl](https://kubernetes.io/docs/reference/kubectl/overview/): o Kubectl é um utilitário de linha de comando para executar comandos em clusters do Kubernetes.

**Código **

O código de exemplo está anexado.

## Épicos
<a name="deploy-kubernetes-resources-and-packages-using-amazon-eks-and-a-helm-chart-repository-in-amazon-s3-epics"></a>

### Configurar e inicializar o Helm
<a name="configure-and-initialize-helm"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Instale o cliente Helm. | Para baixar e instalar o cliente do Helm em seu sistema local, use o comando a seguir. <pre>sudo curl https://raw.githubusercontent.com/helm/helm/master/scripts/get-helm-3 | bash</pre> | DevOps engenheiro | 
| Valide a instalação do Helm. | Para validar se o Helm é capaz de se comunicar com o servidor da API Kubernetes dentro do cluster do Amazon EKS, execute `helm version`. | DevOps engenheiro | 

### Crie e instale um chart do Helm no cluster do Amazon EKS
<a name="create-and-install-a-helm-chart-in-the-amazon-eks-cluster"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Crie um chart do Helm para o NGINX. | Para criar um chart do Helm nomeado `my-nginx` na máquina cliente, execute `helm create my-nginx`. | DevOps engenheiro | 
| Analise a estrutura do gráfico. | Para revisar a estrutura do gráfico, execute o comando de árvore `tree my-nginx/`. | DevOps engenheiro | 
| Desative a criação de contas de serviço no gráfico. | Em `values.yaml`, abaixo da seção `serviceAccount`, defina a chave `create` como `false`. Essa opção está desativada porque não há necessidade de criar uma conta de serviço para esse padrão. | DevOps engenheiro | 
| Valide (lint) o gráfico modificado em busca de erros sintáticos. | Para validar o gráfico em busca de qualquer erro sintático antes de instalá-lo no cluster de destino, execute `helm lint my-nginx/`. | DevOps engenheiro | 
| Instale o gráfico para implantar recursos do Kubernetes. | Para executar a instalação do chart do Helm, use o comando a seguir. <pre>helm install --name my-nginx-release --debug my-nginx/ --namespace helm-space </pre>O sinalizador opcional `debug` gera todas as mensagens de depuração durante a instalação. O sinalizador `namespace` especifica o namespace no qual a parte de recursos desse gráfico será criada. | DevOps engenheiro | 
| Revise os recursos no cluster do Amazon EKS. | Para revisar os recursos que foram criados como parte do chart do Helm no namespace `helm-space`, use o comando a seguir. <pre>kubectl get all -n helm-space</pre> | DevOps engenheiro | 

### Reverta para uma versão anterior de um aplicativo do Kubernetes
<a name="roll-back-to-a-previous-version-of-a-kubernetes-application"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Modifique e atualize a versão. | Para modificar o gráfico, em `values.yaml`, altere o valor de `replicaCount` para `2`. Em seguida, atualize a versão já instalada executando o seguinte comando.<pre>helm upgrade my-nginx-release my-nginx/ --namespace helm-space</pre> | DevOps engenheiro | 
| Analise o histórico de versões do Helm. | Para listar todas as revisões de uma versão específica que foram instaladas usando o Helm, execute o comando a seguir. <pre>helm history my-nginx-release</pre> | DevOps engenheiro | 
| Revise os detalhes de uma revisão específica. | Antes de mudar ou reverter para uma versão funcional e para obter uma camada adicional de validação antes de instalar uma revisão, veja quais valores foram passados para cada uma das revisões usando o comando a seguir.<pre>helm get --revision=2 my-nginx-release</pre> | DevOps engenheiro | 
| Reverta para uma versão anterior. | Para reverter para uma revisão anterior, use o comando a seguir. <pre>helm rollback my-nginx-release 1 </pre>Este exemplo está revertendo para a revisão número 1. | DevOps engenheiro | 

### Inicializar um bucket do S3 como um repositório do Helm
<a name="initialize-an-s3-bucket-as-a-helm-repository"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Crie um bucket do S3 para charts do Helm. | Crie um bucket exclusivo do S3. No bucket, crie uma pasta denominada `charts`. O exemplo desse padrão usa `s3://my-helm-charts/charts` como repositório do gráfico de destino. | Administrador de nuvem | 
| Instale o plug-in do Helm para o Amazon S3. | Para instalar o plug-in helm-s3 na máquina cliente, use o comando a seguir. <pre>helm plugin install https://github.com/hypnoglow/helm-s3.git --version 0.10.0</pre>Observação: o suporte ao Helm V3 está disponível com a versão 0.9.0 e superior do plugin. | DevOps engenheiro | 
| Inicialize o repositório do Helm no Amazon S3.  | Para inicializar a pasta de destino como um repositório do Helm, use o comando a seguir. <pre>helm S3 init s3://my-helm-charts/charts </pre>O comando cria um arquivo `index.yaml` no destino para rastrear todas as informações do gráfico armazenadas nesse local. | DevOps engenheiro | 
| Adicione o repositório do Amazon S3 ao Helm. | Para adicionar o repositório na máquina cliente, use o comando a seguir.<pre>helm repo add my-helm-charts s3://my-helm-charts/charts </pre>Esse comando adiciona um alias ao repositório de destino na máquina cliente do Helm. | DevOps engenheiro | 
| Revise a lista de repositórios. | Para ver a lista de repositórios na máquina cliente do Helm, execute `helm repo list`. | DevOps engenheiro | 

### Empacote e armazene gráficos no repositório do Helm no Amazon S3
<a name="package-and-store-charts-in-the-amazon-s3-helm-repository"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Embalar o gráfico. | Para empacotar o gráfico `my-nginx` que você criou, execute `helm package ./my-nginx/`. O comando empacota todo o conteúdo da pasta do gráfico `my-nginx` em um arquivo, que é nomeado usando o número da versão mencionado no arquivo `Chart.yaml`. | DevOps engenheiro | 
| Armazene o pacote no repositório do Helm no Amazon S3. | Para fazer o upload do pacote para o repositório do Helm no Amazon S3, execute o comando a seguir, usando o nome correto do arquivo `.tgz`.<pre>helm s3 push ./my-nginx-0.1.0.tgz my-helm-charts</pre> | DevOps engenheiro | 
| Pesquise pelo chart do Helm. | Para confirmar se o gráfico aparece localmente e no repositório do Helm no Amazon S3, execute o comando a seguir.<pre>helm search repo my-nginx</pre> | DevOps engenheiro | 

### Modificar, criar versões e empacotar um gráfico
<a name="modify-version-and-package-a-chart"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Modificar e embalar o gráfico. | Em`values.yaml`, defina o valor `replicaCount` como `1`. Em seguida, empacote o gráfico executando `helm package ./my-nginx/`, desta vez alterando a versão de `Chart.yaml` para `0.1.1`. O controle de versão é idealmente atualizado por meio da automação usando ferramentas como GitVersion os números de compilação do Jenkins em um pipeline. CI/CD A automação do número da versão está fora do escopo desse padrão. | DevOps engenheiro | 
| Envie a nova versão para o repositório do Helm no Amazon S3. | Para enviar o novo pacote com a versão 0.1.1 para o repositório `my-helm-charts` do Helm no Amazon S3, execute o comando a seguir.<pre>helm s3 push ./my-nginx-0.1.1.tgz my-helm-charts</pre> | DevOps engenheiro | 

### Pesquise e instale um gráfico do repositório do Helm no Amazon S3
<a name="search-for-and-install-a-chart-from-the-amazon-s3-helm-repository"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Pesquise todas as versões do gráfico my-nginx. | Para ver todas as versões disponíveis de um gráfico, execute o comando a seguir com o sinalizador `--versions`.<pre>helm search repo my-nginx --versions</pre>Sem o sinalizador, o Helm, por padrão, exibe a versão mais recente carregada de um gráfico. | DevOps engenheiro | 
| Instale um gráfico do repositório do Helm no Amazon S3. | Os resultados da pesquisa da tarefa anterior mostram as várias versões do gráfico `my-nginx`. Para instalar a nova versão (0.1.1) do repositório do Helm no Amazon S3, use o comando a seguir.<pre>helm upgrade my-nginx-release my-helm-charts/my-nginx --version 0.1.1 --namespace helm-space</pre> | DevOps engenheiro | 

## Recursos relacionados
<a name="deploy-kubernetes-resources-and-packages-using-amazon-eks-and-a-helm-chart-repository-in-amazon-s3-resources"></a>
+ [Documentação do HELM](https://helm.sh/docs/)
+ [Plug-in helm-s3 (licença MIT)](https://github.com/hypnoglow/helm-s3.git)
+ [Binário do cliente do HELM](https://raw.githubusercontent.com/helm/helm/master/scripts/get-helm-3)
+ [Documentação do Amazon EKS](https://docs.aws.amazon.com/eks/latest/userguide/getting-started.html)

## Anexos
<a name="attachments-d3f993e6-4d96-4cb9-a075-c4debe431fd7"></a>

Para acessar o conteúdo adicional associado a este documento, descompacte o seguinte arquivo: [ attachment.zip](samples/p-attach/d3f993e6-4d96-4cb9-a075-c4debe431fd7/attachments/attachment.zip)