Configurar um repositório de chart do Helm v3 no Amazon S3 - Recomendações da AWS

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á.

Configurar um repositório de chart do Helm v3 no Amazon S3

Criado por Abhishek Sharma (AWS)

Ambiente: PoC ou piloto

Tecnologias: DevOps; Contêineres e microsserviços; Modernização

Workload: todas as outras workloads

Serviços da AWS: Amazon S3

Resumo

Esse padrão ajuda você a gerenciar os gráficos do Helm v3 de forma eficiente ao integrar o repositório do Helm v3 ao Amazon Simple Storage Service (Amazon S3) na nuvem da Amazon web Services (AWS). Para usar esse padrão, você precisa estar familiarizado com o Kubernetes e com o Helm, que é um gerenciador de pacotes do Kubernetes. Usar repositórios Helm para armazenar gráficos e controlar versões de gráficos pode melhorar o tempo médio de restauração (MTTR) durante interrupções. 

Esse padrão usa o AWS CodeCommit para a criação do repositório Helm e usa um bucket S3 como repositório de gráficos 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

Pré-requisitos

  • Uma conta AWS ativa

  • Python, versão 2.7.12 ou superior.

  • pip

  • Uma nuvem privada virtual (VPC) com sub-redes e uma instância do Amazon Elastic Compute Cloud (Amazon EC2) 

  • Instalação do Git na instância do EC2

  • 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

  • CodeCommit Repositório AWS

  • AWS Command Line Interface (AWS CLI)

Versões do produto

  • Helm v3

  • Python, versão 2.7.12 ou superior.

Arquitetura

Pilha de tecnologias de destino

  • Amazon S3

  • AWS CodeCommit

  • Helm

  • Kubectl

  • Python e pip

  • Git

  • plugin helm-s3

Arquitetura de destino

Repositório Helm em CodeCommit, instância EC2 com Helm, Git e helm-s3, gráficos Helm no Amazon S3.

Automação e escala

  • Você pode incorporar o Helm à sua ferramenta de automação de integração contínua/entrega contínua (CI/CD) existente para automatizar o empacotamento e o controle de versão dos charts 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

  • Helm: o Helm é um gerenciador de pacotes Helm para o Kubernetes ajuda a instalar e gerenciar aplicações em seu cluster do Kubernetes.

  • Amazon S3: 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.

  • plugin helm-s3 – O plug-in helm-s3 suporta interação com o Amazon S3. Ele pode ser usado com o Helm v2 ou o Helm v3.

Práticas recomendadas

< O autor remove estas notas: fornece uma lista de diretrizes e recomendações que podem ajudar os usuários a implementar esse padrão de maneira mais eficaz.>

Épicos

TarefaDescriçãoHabilidades necessárias

Instalar o cliente do Helm v3

Para baixar e instalar o cliente do Helm no sistema local, execute o seguinte comando: sudo curl https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 | bash

Administrador de nuvem, DevOps engenheiro

Valide a instalação do Helm.

Para validar o cliente do Helm, execute o seguinte comando: helm version --short

Administrador de nuvem, DevOps engenheiro
TarefaDescriçãoHabilidades necessárias

Crie um bucket do S3 para charts do Helm.

Crie um bucket exclusivo do S3. No bucket, crie uma pasta denominada stable/myapp. O exemplo desse padrão usa s3://my-helm-charts/stable/myapp como repositório do gráfico de destino.

Administrador de nuvem, DevOps engenheiro

Instale o plug-in do Helm-s3 para o Amazon S3.

Para instalar o plug-in helm-s3 na máquina cliente, use o comando a seguir: helm plugin install https://github.com/hypnoglow/helm-s3.git

Administrador de nuvem, 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: helm s3 init s3://my-helm-charts/stable/myapp 

O comando cria um arquivo index.yaml no destino para rastrear todas as informações do gráfico armazenadas nesse local.

Administrador de nuvem, DevOps engenheiro

Verifique o repositório Helm recém-criado.

Para verificar se o index.yaml arquivo foi criado, execute o seguinte comando: aws s3 ls s3://my-helm-charts/stable/myapp/

Administrador de nuvem, DevOps engenheiro

Adicione o repositório Amazon S3 ao Helm na máquina cliente.

Para adicionar o alias do repositório de destino à máquina cliente Helm, use o seguinte comando: helm repo add stable-myapp s3://my-helm-charts/stable/myapp/

Administrador de nuvem, DevOps engenheiro
TarefaDescriçãoHabilidades necessárias

Clone seus charts do Helm.

Se nenhum gráfico local do Helm estiver presente em seu CodeCommit repositório, clone-o do seu GitHub repositório executando o seguinte comando: git clone <url_of_your_helm_source_code>.git

Administrador de nuvem, DevOps engenheiro

Embalar o chart do Helm local.

Para embalar o gráfico que você criou ou clonou, use o seguinte comando: helm package ./my-app  

Como exemplo, esse padrão usa o my-app gráfico. O comando empacota todo o conteúdo da pasta do gráfico my-app em um arquivo, que é nomeado usando o número da versão mencionado no arquivo Chart.yaml.

Administrador de nuvem, DevOps engenheiro

Armazene o pacote local no repositório do Helm no Amazon S3.

Para fazer o upload do pacote local para o repositório do Helm no Amazon S3, execute o seguinte comando: helm s3 push ./my-app-0.1.0.tgz stable-myapp

No comando, my-app é o nome da pasta do gráfico, 0.1.0 é a versão do gráfico mencionada em Chart.yaml e stable-myapp é o alias do repositório de destino.

Administrador de nuvem, DevOps engenheiro

Pesquise pelo chart do Helm.

Para confirmar se o gráfico aparece localmente e no repositório Amazon S3 Helm, execute o seguinte comando: helm search repo stable-myapp

Administrador de nuvem, DevOps engenheiro
TarefaDescriçãoHabilidades necessárias

Modificar e embalar o gráfico.

Emvalues.yaml, defina o replicaCount valor como e1, em seguida, empacote o gráfico, desta vez alterando a versão Chart.yaml para0.1.1. O controle de versão é obtido idealmente por meio da automação usando ferramentas como os números GitVersion de compilação do Jenkins em um pipeline de CI/CD. A automação do número da versão está fora do escopo desse padrão. Para embalar o gráfico, execute o seguinte comando: helm package ./my-app/

Administrador de nuvem, DevOps engenheiro

Envie a nova versão para o repositório do Helm no Amazon S3.

Para enviar o novo pacote, versão 0.1.1, para o repositório my-helm-chartsHelm no Amazon S3, execute o seguinte comando: helm s3 push ./my-app-0.1.1.tgz stable-myapp

Administrador de nuvem, DevOps engenheiro

Verifique o chart do Helm atualizado.

Para confirmar se o gráfico atualizado aparece localmente e no repositório Amazon S3 Helm, execute os seguintes comandos.

helm repo update

helm search repo stable-myapp

Administrador de nuvem, DevOps engenheiro
TarefaDescriçãoHabilidades necessárias

Pesquise todas as versões do gráfico my-app.

Para ver todas as versões disponíveis de um gráfico, execute o seguinte comando com o --versions sinalizador: helm search repo my-app --versions 

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.

A instalação automatizada está fora do escopo desse padrão, mas você pode instalar manualmente. Os resultados da pesquisa da tarefa anterior mostram as várias versões do gráfico my-app. Para instalar a nova versão (0.1.1) do repositório do Helm no Amazon S3, use o comando a seguir: helm upgrade --install my-app-release stable-myapp/my-app --version 0.1.1 --namespace dev

DevOps Engenheiro
TarefaDescriçãoHabilidades necessárias

Revise os detalhes de uma revisão específica.

A reversão automatizada está fora do escopo desse padrão, mas você pode reverter para uma versão anterior manualmente. Antes de alternar 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: helm get values --revision=2 my-app-release

DevOps Engenheiro

Reverter para uma versão anterior.

A reversão automatizada está fora do escopo desse padrão. Para reverter manualmente para uma revisão anterior, use o seguinte comando: helm rollback my-app-release 1 

Este exemplo está revertendo para a revisão número 1.

DevOps Engenheiro

Recursos relacionados