Como começar a escrever gráficos de leme para seus aplicativos Kubernetes
O Helm é um gerenciador de pacotes para cargas de trabalho do Kubernetes. A criação de um gráfico Helm para seu aplicativo simplifica implantações reproduzíveis em um cluster Kubernetes. Os usuários podem instalar o gráfico inteiro com um comando, em vez de aplicar manualmente manifestos de componentes individuais com o Kubectl.
Neste artigo, mostraremos como começar a usar o Helm escrevendo um gráfico para um aplicativo simples. Um “gráfico” é conceitualmente semelhante a um “pacote” de manifestos do Kubernetes que o Helm permite gerenciar como uma única entidade.
O que é um gráfico de leme?
Os gráficos Helm aplicam o modelo acquainted de gerenciamento de pacotes encontrado em sistemas operacionais e linguagens de programação para aplicativos executados em um cluster Kubernetes. Um gráfico Helm pode ter dependências e filhos; todos esses componentes são iniciados automaticamente em seu cluster quando você instala um gráfico de nível awesome.
Os gráficos são totalmente versionados usando uma estratégia de liberação semântica. Da mesma forma que um módulo npm ou pacote de SO, você pode fixar gráficos em versões específicas e acompanhar suas alterações ao longo do pace. Isso simplifica a reversão de implantações de aplicativos para uma versão válida conhecida, caso você tenha problemas em seu cluster.
Os gráficos de leme também incorporam recursos de modelagem para fornecer valores dinâmicos no momento da instalação. Você pode configurar novos aplicativos sem editar diretamente seus arquivos de manifesto, usando variáveis fornecidas pelo desenvolvedor do gráfico.
Instalando o leme
O Helm é distribuído como um binário simples por meio da página de lançamentos do GitHub do projeto. Baixe a distribuição correta para o seu sistema, torne-a executável e mova-a para um native dentro do seu PATH
.
O Helm’s também está presente nos repositórios de pacotes das distribuições Linux mais populares. Você pode encontrá-lo no Homebrew para macOS e Chocolatey e Scoop para Home windows também.
Quando a instalação estiver concluída, execute helm model
para verificar se está tudo funcionando:
$ helm model --template="Model: .Model" Model: v3.8.1
Os comandos do Helm visam sua conexão de cluster ativa do Kubernetes conforme usado pelo Kubectl. Seu arquivo e contexto Kubeconfig selecionados serão usados para todos os comandos do Helm. Você pode referenciar um arquivo de configuração diferente com o padrão KUBECONFIG
variável de ambiente ou --kubeconfig
mecanismos de bandeira.
Criando um gráfico de leme
Agora você pode começar a criar um gráfico Helm para seu aplicativo. Use o helm create
comando para criar um novo gráfico em seu diretório de trabalho:
$ helm create my-app-chart
O conteúdo do gráfico será depositado dentro do my-app-chart
diretório. Vamos inspecionar o que ele contém:
$ ls my-app-chart Chart.yaml charts templates values.yaml
Existem dois arquivos de nível awesome e dois subdiretórios suplementares. Veja para que serve cada recurso:
Chart.yaml
– O manifesto do gráfico do Helm que outline as propriedades de metadados, incluindo seu nome e versão.values.yaml
– Este arquivo armazena valores padrão para variáveis que você pode referenciar em seu gráfico. É possível substituir os valores definidos aqui usando sinalizadores da CLI ao instalar o gráfico.templates
– O diretório de modelos contém os manifestos do objeto Kubernetes do seu gráfico. A instalação do gráfico aplicará todos esses manifestos ao seu cluster. Qualquer manifesto YAML válido do Kubernetes pode ser colocado aqui; você também pode usar funcionalidades extras, como referências a variáveis definidas em seuvalues.yaml
Arquivo. Veremos essa capacidade abaixo.charts
– Ocharts
diretório contém outros gráficos do Helm dos quais este depende. É usado para configurar relacionamentos complexos de gráficos pai-filho. Não abordaremos esse recurso neste artigo para que você possa excluir o diretório se não precisar dele.
O gráfico padrão do Helm vem pré-configurado para implantar uma instância do servidor internet NGINX. O Kubernetes se manifesta no templates
diretório criam os vários componentes constituintes, como um Deployment, Carrier e Ingress. A aplicação é configurada por variáveis definidas em values.yaml
; aqui você encontrará configurações para a tag de imagem, porta de serviço e host do Ingress, entre outros:
$ cat values.yaml # Default values for my-app-chart. # This can be a YAML-formatted record. # Claim variables to be handed into your templates. replicaCount: 1 symbol: repository: nginx pullPolicy: IfNotPresent # Overrides the picture tag whose default is the chart appVersion. tag: "" ...
Instalando o gráfico
Para adicionar o aplicativo ao seu cluster, use o helm set up
comando:
$ helm set up my-app . NAME: foo LAST DEPLOYED: Tue Mar 29 14:47:48 2022 NAMESPACE: default STATUS: deployed REVISION: 1 NOTES: ...
O primeiro argumento para o comando outline o nome da sua versão. O segundo argumento faz referência ao caminho do diretório do qual carregar o gráfico do Helm. Você pode usar .
quando seu diretório de trabalho já está definido para a raiz do seu gráfico.
Você receberá alguma saída de terminal que descreve a versão instalada. o NOTES
seção consiste em informações fornecidas pelo gráfico.
Para substituir values.yaml
variáveis, forneça uma ou mais instâncias da --set
bandeira:
$ helm set up my-app . --set replicaCount=3 --set symbol.tag=1.20
Este exemplo implantaria três réplicas de um contêiner executando o nginx:1.20
imagem. Você pode verificar isso listando os pods em seu cluster usando o Kubectl:
$ kubectl get pods NAME READY STATUS RESTARTS AGE my-app-my-app-chart-6d6577749c-2qbhb 1/1 Operating 0 61s my-app-my-app-chart-6d6577749c-wdmgv 1/1 Operating 0 44s my-app-my-app-chart-6d6577749c-x5wp7 1/1 Operating 0 40s
Atualizando, recuperando e excluindo versões de gráficos
Em seguida, faça algumas alterações no gráfico ou altere o valor de uma variável:
$ helm set up my-app . --set replicaCount=5 Error: INSTALLATION FAILED: can not re-use a reputation this is nonetheless in use
Repetindo o set up
comando não funciona. Para aplicar alterações em um gráfico já implantado, use o improve
comando em vez disso. Isso cria uma nova “versão” dentro do cluster.
$ helm improve my-app . --set replicaCount=5 Unlock "my-app" has been upgraded. Satisfied Helming!
Você pode listar todas as versões de gráfico implantadas em seu cluster com helm record
:
$ helm record NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION my-app default 2 2022-03-30 15:09:34.370758719 +0100 BST deployed my-app-chart-0.1.0 1.16.0
Os detalhes de cada versão incluem seu nome, o número de vezes que foi implantado, o horário da última atualização e os números de versão do gráfico e do aplicativo que ele fornece.
Para remover uma versão e destruir seus objetos Kubernetes, passe seu nome para o uninstall
comando:
$ helm uninstall my-app free up "my-app" uninstalled
Escrevendo seu próprio gráfico do 0
Agora vamos ver como escrever um gráfico básico do 0. Crie um novo diretório para seu gráfico; estamos chamando de nosso cloudsavvy-chart
. Adicionar um Chart.yaml
arquivo dentro com o seguinte conteúdo:
apiVersion: v2 title: cloudsavvy-chart description: An instance Helm chart. sort: utility model: 0.1.0 appVersion: 1.1.0
o sort
campo geralmente deve ser definido como utility
. O outro tipo suportado é library
. Funcionalidade do pacote de gráficos de biblioteca que pode ser incluída como uma dependência de outros gráficos. Eles não contêm nenhum Kubernetes templates
eles mesmos.
o model
campo refere-se à versão do seu gráfico. Você deve incrementá-lo cada vez que modificar os modelos do gráfico. appVersion
indica a versão do componente de tool important que seu gráfico fornece. Ele sinaliza aos usuários do gráfico o que será executado em seu cluster após a instalação do gráfico. Por exemplo, se você estiver criando um gráfico que distribui o WordPress, seria apropriado definir appVersion
para o número da versão do WordPress que você está fornecendo.
A seguir crie um values.yaml
arquivo com algumas variáveis simples:
deploymentName: cloudsavvy symbol: nginx:newest replicas: 1
Essas variáveis serão referenciadas em seu modelo de gráfico. Adicione este modelo agora como templates/deployment.yaml
. Nosso gráfico básico implantará um único pod para que ele tenha apenas um arquivo de modelo. Em uma situação do mundo actual, é uma boa prática criar arquivos de manifesto individuais para cada um dos componentes do seu aplicativo.
apiVersion: apps/v1 sort: Deployment metadata: title: .Values.deploymentName -deployment spec: selector: matchLabels: app: .Values.deploymentName replicas: .Values.replicas template: metadata: labels: app: .Values.deploymentName spec: packing containers: - title: .Values.deploymentName symbol: .Values.symbol
A implantação u.s. valores de values.yaml
para configurar a referência de imagem e a contagem de réplicas. o deploymentName
variável é usada por toda parte para que quaisquer alterações futuras possam ser feitas em um só lugar. Campos em values.yaml
são referenciados usando o .Values.FIELD_NAME
sintaxe.
Agora use o Helm para instalar o gráfico:
$ helm set up cloudsavvy-app . --set replicas=3 NAME: cloudsavvy-app LAST DEPLOYED: Tue Mar 29 15:43:21 2022 NAMESPACE: default STATUS: deployed REVISION: 1 TEST SUITE: None
o --set
sinalizador substitui o valor padrão de replicas
que está definido values.yaml
. Após a aplicação das substituições, o Helm injeta os valores resolvidos nos locais corretos em seus modelos YAML. Os manifestos finais do Kubernetes são então aplicados ao seu cluster. Agora você pode verificar se três contêineres estão em execução usando o Kubectl para listar os pods do seu cluster.
$ kubectl get pods NAME READY STATUS RESTARTS AGE cloudsavvy-deployment-7b975bd985-5r7dc 0/1 ContainerCreating 0 15s cloudsavvy-deployment-7b975bd985-bpbkm 0/1 ContainerCreating 0 15s cloudsavvy-deployment-7b975bd985-jzb5q 0/1 ContainerCreating 0 15s
Resumo
Os gráficos do Helm permitem empacotar coleções de manifestos do Kubernetes como aplicativos completos que estão prontos para implantação. Você pode criar configurações de modelo que os usuários finais podem alterar facilmente antes de instalar uma versão em um cluster.
Neste guia, explicamos o básico da funcionalidade do Helm e mostramos como você pode criar seus próprios gráficos simples para seus aplicativos. No entanto, mal cobrimos a superfície do que o Helm pode alcançar – depois de escrever um gráfico, você pode enviá-lo para um repositório para outros usarem, adicionar outros gráficos como dependências e criar gráficos mais avançados usando funções, pipelines, e controlar expressões de fluxo. Dedicar um pace para aprender o Helm torna suas implantações do Kubernetes mais flexíveis, poderosas e reutilizáveis.
Fonte da Notícia: www.howtogeek.com