Implante com o Helm
Você criou e enviou com êxito suas imagens de preparo e produção para sua instância do Registro de Contêiner do Azure. É hora de automatizar todas as etapas e fazer o pipeline funcionar para você.
Atualmente, você deve alterar manualmente os arquivos sempre que executar o pipeline, para que não possa implantá-los automaticamente. Para resolver esse problema, você pode usar um gráfico de leme para gerenciar suas implantações. Nesta unidade, você aprende sobre gráficos e modelos Helm.
Gráficos Helm
Helm é uma ferramenta de empacotamento de código aberto semelhante aos gerenciadores de pacotes Linux como APT e Yum. O Helm pode ajudá-lo a instalar e gerenciar o ciclo de vida dos aplicativos Kubernetes.
Você usa o Helm para gerenciar gráficos do Kubernetes, que são grupos de uma ou mais cargas de trabalho empacotadas com arquivos de configuração e um arquivo de descrição de gráfico. Quando empacotados num gráfico, os ficheiros podem ser facilmente implementados como uma unidade num cluster do Kubernetes.
Uma das vantagens de usar o Helm é não ter que implantar arquivos individualmente. Você pode emitir um único comando para implantar o gráfico. Pode até mesmo implementar vários gráficos dependentes, com uma resolução de dependência automática.
Aqui está a estrutura de um diretório gráfico Helm típico:
- O arquivo Chart.yaml contém o nome, a descrição e a versão do gráfico.
- O diretório de gráficos inclui gráficos dependentes.
- O diretório templates contém todos os arquivos de manifesto.
- O arquivo values.yaml contém os valores padrão para os modelos Helm.
Modelos do Helm
Uma característica distintiva da ferramenta Helm é sua capacidade de criar e gerenciar modelos para executar implantações automatizadas. Os modelos possibilitam que os arquivos de manifesto sejam automatizados e adicionados a um pipeline de CI/CD. Um ficheiro de modelo é um ficheiro de manifesto que contém espaços reservados para valores de variáveis.
Veja o seguinte exemplo do arquivo deployment.yaml no diretório kubernetes da bifurcação do seu site:
apiVersion: apps/v1
kind: Deployment
metadata:
name: contoso-website
spec:
selector:
matchLabels:
app: contoso-website
template:
metadata:
labels:
app: contoso-website
spec:
containers:
- image: !IMAGE!
name: contoso-website
resources:
requests:
cpu: 100m
memory: 128Mi
limits:
cpu: 250m
memory: 256Mi
ports:
- containerPort: 80
name: http
Seu fluxo de trabalho substitui o espaço reservado pela instância do Registro de Contêiner e pelo nome da !IMAGE!
imagem. Em um fluxo de trabalho manual, você pode executar o seguinte comando para substituir o espaço reservado e, em seguida, imprimir o !IMAGE!
resultado. Para executar o código manualmente, você pode canalizar o comando para kubectl apply -f -
criar as cargas de trabalho:
$ sed 's+!IMAGE!+'"$ACR_NAME"'/contoso-website+g' kubernetes/deployment.yaml
No entanto, esta solução manual não é elegante nem eficiente. Com a modelagem nativa do Helm, você pode substituir !IMAGE!
usando a {{.Values.containerImage}}
variável em vez disso.
...
template:
...
spec:
containers:
- image: {{.Values.containerImage}}
...
Em seguida, você corre helm install
para apontar para a imagem e passar a pasta de gráficos:
$ helm install contoso-website ./chart-location --set containerImage="$ACR_NAME/contoso-website"
O Helm também oferece funções de modelo para lógicas mais complexas, por exemplo, para incluir valores padrão e necessários em seu ambiente. Prossiga para a próxima unidade para construir um gráfico Helm para tornar seu pipeline de CI/CD mais eficiente.