GEEKS

Como começar a escrever gráficos de leme para seus aplicativos Kubernetes

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 seu values.yaml Arquivo. Veremos essa capacidade abaixo.
  • charts – O charts 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

Artigos relacionados

Botão Voltar ao topo