Instalar aplicações com Helm no Azure Kubernetes Service (AKS)Install applications with Helm in Azure Kubernetes Service (AKS)

Helm helm é uma ferramenta de empacotamento de código-fonte aberto que ajuda a instalar e gerenciar o ciclo de vida de aplicações do Kubernetes.Helm is an open-source packaging tool that helps you install and manage the lifecycle of Kubernetes applications. Semelhante a gestores de pacotes do Linux, como APT e Yum, Helm é utilizado para gerir gráficos de Kubernetes, que são pacotes de recursos do Kubernetes pré-configurada.Similar to Linux package managers such as APT and Yum, Helm is used to manage Kubernetes charts, which are packages of preconfigured Kubernetes resources.

Este artigo mostra-lhe como configurar e utilizar o Helm num cluster do Kubernetes no AKS.This article shows you how to configure and use Helm in a Kubernetes cluster on AKS.

Antes de começarBefore you begin

Este artigo pressupõe que tem um cluster do AKS existente.This article assumes that you have an existing AKS cluster. Se precisar de um cluster do AKS, consulte o guia de introdução do AKS [com a CLI do Azure] aks-quickstart-cli ou no portal do Azure.If you need an AKS cluster, see the AKS quickstart using the Azure CLI or using the Azure portal.

Também tem a CLI do Helm instalado, que é o cliente que é executado no sistema de desenvolvimento.You also need the Helm CLI installed, which is the client that runs on your development system. Permite-lhe iniciar, parar e gerir aplicações com Helm.It allows you to start, stop, and manage applications with Helm. Se utilizar o Azure Cloud Shell, o Helm CLI já está instalado.If you use the Azure Cloud Shell, the Helm CLI is already installed. Para obter instruções de instalação na sua plataforma de local, veja instalar o Helm.For installation instructions on your local platform see, Installing Helm.

Importante

Helm destina-se para ser executado em nós do Linux.Helm is intended to run on Linux nodes. Se tiver nós do Windows Server no seu cluster, certifique-se de que os Helm pods apenas estão agendados para serem executadas em nós do Linux.If you have Windows Server nodes in your cluster, you must ensure that Helm pods are only scheduled to run on Linux nodes. Também tem de garantir que quaisquer gráficos do Helm que instalar também estão agendados para execução em nós de corretos.You also need to ensure that any Helm charts you install are also scheduled to run on the correct nodes. Os comandos neste artigo utilizam [seletores de nó] k8s-node-selector para se certificar-se de que pods são agendadas para os nós corretos, mas nem todos os gráficos do Helm podem expor um Seletor de nó.The commands in this article use node-selectors to make sure pods are scheduled to the correct nodes, but not all Helm charts may expose a node selector. Também pode considerar utilizar outras opções no seu cluster, tal como taints.You can also consider using other options on your cluster, such as taints.

Criar uma conta de serviçoCreate a service account

Antes de poder implementar Helm num cluster do AKS habilitados no RBAC, terá uma conta de serviço e o enlace de função para o serviço de Tiller.Before you can deploy Helm in an RBAC-enabled AKS cluster, you need a service account and role binding for the Tiller service. Para obter mais informações sobre como proteger o Helm / Tiller num RBAC ativado o cluster, consulte Tiller, espaços de nomes e RBAC.For more information on securing Helm / Tiller in an RBAC enabled cluster, see Tiller, Namespaces, and RBAC. Se o cluster do AKS não for RBAC ativada, ignore este passo.If your AKS cluster is not RBAC enabled, skip this step.

Crie um ficheiro denominado helm-rbac.yaml e copie o YAML seguinte:Create a file named helm-rbac.yaml and copy in the following YAML:

apiVersion: v1
kind: ServiceAccount
metadata:
  name: tiller
  namespace: kube-system
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: tiller
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: cluster-admin
subjects:
  - kind: ServiceAccount
    name: tiller
    namespace: kube-system

Criar a conta de serviço e a associação de função com o kubectl apply comando:Create the service account and role binding with the kubectl apply command:

kubectl apply -f helm-rbac.yaml

Proteger Tiller e HelmSecure Tiller and Helm

O cliente do Helm e o serviço de Tiller autenticarem e se comunicar entre si através de TLS/SSL.The Helm client and Tiller service authenticate and communicate with each other using TLS/SSL. Este método de autenticação ajuda a proteger o cluster de Kubernetes e que serviços podem ser implementados.This authentication method helps to secure the Kubernetes cluster and what services can be deployed. Para melhorar a segurança, pode gerar seus próprios certificados assinados.To improve security, you can generate your own signed certificates. Cada utilizador Helm receberia seu próprio certificado de cliente e Tiller seria possível inicializar no cluster de Kubernetes com certificados aplicados.Each Helm user would receive their own client certificate, and Tiller would be initialized in the Kubernetes cluster with certificates applied. Para obter mais informações, consulte utilizando TLS/SSL entre o Helm e Tiller.For more information, see Using TLS/SSL between Helm and Tiller.

Com um cluster de Kubernetes habilitados no RBAC, pode controlar o nível de acesso que tem de Tiller no cluster.With an RBAC-enabled Kubernetes cluster, you can control the level of access Tiller has to the cluster. Pode definir o espaço de nomes do Kubernetes que o Tiller está implementado na e restringir os espaços de nomes Tiller, em seguida, pode implementar recursos no.You can define the Kubernetes namespace that Tiller is deployed in, and restrict what namespaces Tiller can then deploy resources in. Esta abordagem permite-lhe criar instâncias de Tiller em diferentes namespaces e limites de implementação de limite e definir o âmbito os utilizadores do cliente do Helm para determinados espaços de nomes.This approach lets you create Tiller instances in different namespaces and limit deployment boundaries, and scope the users of Helm client to certain namespaces. Para obter mais informações, consulte executar Helm controlos de acesso baseado em funções.For more information, see Helm role-based access controls.

Configurar o HelmConfigure Helm

Para implementar um Tiller básico para um cluster do AKS, utilize o [helm init] helm-init comando.To deploy a basic Tiller into an AKS cluster, use the helm init command. Se o cluster não for RBAC ativada, remova o --service-account argumento e o valor.If your cluster is not RBAC enabled, remove the --service-account argument and value. Se tiver configurado o TLS/SSL para Tiller e Helm, ignore este passo de inicialização básico e em vez disso, forneça o necessário --tiller-tls- conforme mostrado no exemplo seguinte.If you configured TLS/SSL for Tiller and Helm, skip this basic initialization step and instead provide the required --tiller-tls- as shown in the next example.

helm init --service-account tiller --node-selectors "beta.kubernetes.io/os"="linux"

Se configurou o TLS/SSL entre o Helm e Tiller fornecem o --tiller-tls-* parâmetros e os nomes dos seus próprios certificados, conforme mostrado no exemplo a seguir:If you configured TLS/SSL between Helm and Tiller provide the --tiller-tls-* parameters and names of your own certificates, as shown in the following example:

helm init \
    --tiller-tls \
    --tiller-tls-cert tiller.cert.pem \
    --tiller-tls-key tiller.key.pem \
    --tiller-tls-verify \
    --tls-ca-cert ca.cert.pem \
    --service-account tiller \
    --node-selectors "beta.kubernetes.io/os"="linux"

Encontrar gráficos HelmFind Helm charts

Gráficos Helm são utilizados para implementar aplicações num cluster do Kubernetes.Helm charts are used to deploy applications into a Kubernetes cluster. Para pesquisar por gráficos do Helm previamente criados, utilize o [pesquisa helm] helm-search comando:To search for pre-created Helm charts, use the helm search command:

helm search

O resultado de exemplo condensado seguinte mostra alguns dos gráficos Helm disponíveis para utilização:The following condensed example output shows some of the Helm charts available for use:

$ helm search

NAME                           CHART VERSION    APP VERSION  DESCRIPTION
stable/aerospike               0.1.7            v3.14.1.2    A Helm chart for Aerospike in Kubernetes
stable/anchore-engine          0.1.7            0.1.10       Anchore container analysis and policy evaluatio...
stable/apm-server              0.1.0            6.2.4        The server receives data from the Elastic APM a...
stable/ark                     1.0.1            0.8.2        A Helm chart for ark
stable/artifactory             7.2.1            6.0.0        Universal Repository Manager supporting all maj...
stable/artifactory-ha          0.2.1            6.0.0        Universal Repository Manager supporting all maj...
stable/auditbeat               0.1.0            6.2.4        A lightweight shipper to audit the activities o...
stable/aws-cluster-autoscaler  0.3.3                         Scales worker nodes within autoscaling groups.
stable/bitcoind                0.1.3            0.15.1       Bitcoin is an innovative payment network and a ...
stable/buildkite               0.2.3            3            Agent for Buildkite
stable/burrow                  0.4.4            0.17.1       Burrow is a permissionable smart contract machine
stable/centrifugo              2.0.1            1.7.3        Centrifugo is a real-time messaging server.
stable/cerebro                 0.1.0            0.7.3        A Helm chart for Cerebro - a web admin tool tha...
stable/cert-manager            v0.3.3           v0.3.1       A Helm chart for cert-manager
stable/chaoskube               0.7.0            0.8.0        Chaoskube periodically kills random pods in you...
stable/chartmuseum             1.5.0            0.7.0        Helm Chart Repository with support for Amazon S...
stable/chronograf              0.4.5            1.3          Open-source web application written in Go and R...
stable/cluster-autoscaler      0.6.4            1.2.2        Scales worker nodes within autoscaling groups.
stable/cockroachdb             1.1.1            2.0.0        CockroachDB is a scalable, survivable, strongly...
stable/concourse               1.10.1           3.14.1       Concourse is a simple and scalable CI system.
stable/consul                  3.2.0            1.0.0        Highly available and distributed service discov...
stable/coredns                 0.9.0            1.0.6        CoreDNS is a DNS server that chains plugins and...
stable/coscale                 0.2.1            3.9.1        CoScale Agent
stable/dask                    1.0.4            0.17.4       Distributed computation in Python with task sch...
stable/dask-distributed        2.0.2                         DEPRECATED: Distributed computation in Python
stable/datadog                 0.18.0           6.3.0        DataDog Agent
...

Para atualizar a lista de gráficos, utilize o [atualização de repositório helm] helm-repo-update comando.To update the list of charts, use the helm repo update command. O exemplo seguinte mostra uma atualização do repositório com êxito:The following example shows a successful repo update:

$ helm repo update

Hold tight while we grab the latest from your chart repositories...
...Skip local chart repository
...Successfully got an update from the "stable" chart repository
Update Complete. ⎈ Happy Helming!⎈

Executar gráficos HelmRun Helm charts

Para instalar os gráficos com Helm, utilize o [helm install] helm-install de comando e especifique o nome do gráfico para instalar.To install charts with Helm, use the helm install command and specify the name of the chart to install. Para ver a instalação de um gráfico do Helm em ação, vamos instalar uma implementação de nginx básico com um gráfico Helm.To see installing a Helm chart in action, let's install a basic nginx deployment using a Helm chart. Se tiver configurado o TLS/SSL, adicione o --tls parâmetro a utilizar o certificado de cliente do Helm.If you configured TLS/SSL, add the --tls parameter to use your Helm client certificate.

helm install stable/nginx-ingress \
    --set controller.nodeSelector."beta\.kubernetes\.io/os"=linux \
    --set defaultBackend.nodeSelector."beta\.kubernetes\.io/os"=linux

O resultado de exemplo condensado seguinte mostra o estado de implementação dos recursos do Kubernetes criados pelo gráfico Helm:The following condensed example output shows the deployment status of the Kubernetes resources created by the Helm chart:

$ helm install stable/nginx-ingress --set controller.nodeSelector."beta\.kubernetes\.io/os"=linux --set defaultBackend.nodeSelector."beta\.kubernetes\.io/os"=linux

NAME:   flailing-alpaca
LAST DEPLOYED: Thu May 23 12:55:21 2019
NAMESPACE: default
STATUS: DEPLOYED

RESOURCES:
==> v1/ConfigMap
NAME                                      DATA  AGE
flailing-alpaca-nginx-ingress-controller  1     0s

==> v1/Pod(related)
NAME                                                            READY  STATUS             RESTARTS  AGE
flailing-alpaca-nginx-ingress-controller-56666dfd9f-bq4cl       0/1    ContainerCreating  0         0s
flailing-alpaca-nginx-ingress-default-backend-66bc89dc44-m87bp  0/1    ContainerCreating  0         0s

==> v1/Service
NAME                                           TYPE          CLUSTER-IP  EXTERNAL-IP  PORT(S)                     AGE
flailing-alpaca-nginx-ingress-controller       LoadBalancer  10.0.109.7  <pending>    80:31219/TCP,443:32421/TCP  0s
flailing-alpaca-nginx-ingress-default-backend  ClusterIP     10.0.44.97  <none>       80/TCP                      0s
...

Demora um minuto ou dois para o EXTERNAL-IP endereço do serviço de controlador de entradas de nginx para ser preenchido e permitem-lhe aceder ao mesmo com um navegador da web.It takes a minute or two for the EXTERNAL-IP address of the nginx-ingress-controller service to be populated and allow you to access it with a web browser.

Lista de versões do HelmList Helm releases

Para ver uma lista das versões instaladas no seu cluster, utilize o [o comando helm list] helm-list comando.To see a list of releases installed on your cluster, use the helm list command. O exemplo seguinte mostra a versão de entrada do nginx implementada no passo anterior.The following example shows the nginx-ingress release deployed in the previous step. Se tiver configurado o TLS/SSL, adicione o --tls parâmetro a utilizar o certificado de cliente do Helm.If you configured TLS/SSL, add the --tls parameter to use your Helm client certificate.

$ helm list

NAME                REVISION    UPDATED                     STATUS      CHART                 APP VERSION   NAMESPACE
flailing-alpaca   1         Thu May 23 12:55:21 2019    DEPLOYED    nginx-ingress-1.6.13    0.24.1      default

Limpar recursosClean up resources

Quando implementa um gráfico Helm, um número de recursos do Kubernetes é criado.When you deploy a Helm chart, a number of Kubernetes resources are created. Esses recursos incluem pods, implementações e serviços.These resources include pods, deployments, and services. Para limpar esses recursos, utilize o helm delete comando e especifique o nome do seu lançamento, como encontrada no anterior helm list comando.To clean up these resources, use the helm delete command and specify your release name, as found in the previous helm list command. O exemplo seguinte elimina a versão com o nome flailing alpaca:The following example deletes the release named flailing-alpaca:

$ helm delete flailing-alpaca

release "flailing-alpaca" deleted

Passos SeguintesNext steps

Para obter mais informações sobre como gerir implementações de aplicações do Kubernetes com Helm, consulte a documentação do Helm.For more information about managing Kubernetes application deployments with Helm, see the Helm documentation.