Implantar aplicativos de teste no Serviço de Kubernetes do Azure no Azure Stack Hub

Este é um guia para começar a usar o serviço AKS (Serviço de Kubernetes do Azure) no Azure Stack Hub. Este artigo descreve como implantar alguns aplicativos de teste em seu cluster para que você possa se familiarizar com o AKS no Azure Stack Hub. A funcionalidade disponível no Azure Stack Hub é um subconjunto do que está disponível no Azure global.

Antes de começar, verifique se isso pode criar um cluster do AKS na instância do Azure Stack Hub. Para obter instruções sobre como configurar e criar seu primeiro cluster, consulte Como usar o Serviço de Kubernetes do Azure no Azure Stack Hub com a CLI.

Implantar aplicativos de teste

Se o carimbo estiver conectado, você poderá seguir estas instruções para implantar o Prometheus e o Grafana no cluster.

  1. Baixe e instale o Helm 3:

    curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/master/scripts/get-helm-3
    chmod 700 get_helm.sh
    ./get_helm.sh
    

    Observação

    Para o usuário do Windows, use o Chocolatey para instalar o Helm:

    choco install kubernetes-helm
    
  2. Verifique se você tem o repositório helm estável mais recente:

    helm repo add stable https://charts.helm.sh/stable
    helm repo update
    
  3. Instale o Prometheus.

    helm install my-prometheus stable/prometheus --set server.service.type=LoadBalancer --set rbac.create=false
    
  4. Forneça acesso administrativo do cluster à conta do Prometheus. Permissões mais baixas são melhores por motivos de segurança.

    kubectl create clusterrolebinding my-prometheus-server --clusterrole=cluster-admin --serviceaccount=default:my-prometheus-server
    
  5. Instale o Grafana.

    helm install my-grafana stable/grafana --set service.type=LoadBalancer --set rbac.create=false
    
  6. Obter segredo para o portal do Grafana.

    kubectl get secret --namespace default my-grafana -o jsonpath="{.data.admin-password}" | base64 --decode ; echo
    

Observação

No Windows, use os seguintes cmdlets do PowerShell para obter o segredo:

\$env:Path = \$env:Path + ";\$env:USERPROFILE\\.azure-kubectl"
[System.Text.Encoding]::ASCII.GetString([System.Convert]::FromBase64String(\$(kubectl get secret --namespace default my-grafana -o jsonpath="{.data.admin-password}")))

Implantar aplicativos no AKS usando o ACR

Neste ponto, seu computador cliente está conectado ao cluster e você pode continuar a usar o kubectl para configurar o cluster e implantar seus aplicativos. Se você também estiver testando o serviço do Registro de Contêiner do Azure (ACR), poderá seguir as instruções abaixo.

Segredo do Registro do Docker para acessar o ACR local

Se você estiver implantando imagens de aplicativo de um ACR local, precisará armazenar um segredo para que o cluster do Kubernetes tenha acesso para efetuar pull das imagens do Registro. Para fazer isso, você precisará fornecer uma ID de entidade de serviço (SPN) e Segredo, adicionar o SPN como um colaborador ao registro de origem e criar o segredo do Kubernetes. Você também precisará atualizar seu arquivo YAML para fazer referência ao segredo.

Adicionar o SPN ao ACR

Adicione o SPN como um colaborador ao ACR.

Observação

Esse script foi modificado do site do Registro de Contêiner do Azure ( amostra bash), pois o Azure Stack Hub ainda não tem a função ACRPULL. Este exemplo é um script do PowerShell, equivalente pode ser escrito em bash. Adicione os valores para o sistema.

# Modify for your environment. The ACR_NAME is the name of your Azure Container
# Registry, and the SERVICE_PRINCIPAL_ID is the SPN's 'appId' or
# one of its 'servicePrincipalNames' values.
ACR_NAME=mycontainerregistry
SERVICE_PRINCIPAL_ID=<service-principal-ID>

# Populate value required for subsequent command args
ACR_REGISTRY_ID=$(az acr show --name $ACR_NAME --query id --output tsv)

# Assign the desired role to the SPN. 
az role assignment create --assignee $SERVICE_PRINCIPAL_ID --scope $ACR_REGISTRY_ID --role contributor

Criar o segredo no Kubernetes

Use o comando a seguir para adicionar o segredo ao cluster do Kubernetes. Adicione os valores para o sistema nos snippets de código.

kubectl create secret docker-registry <secret name> \
kubectl create secret docker-registry <secret name> \
    --docker-server=<ACR container registry URL> \
    --docker-username=<service principal ID> \
    --docker-password=<service principal secret> 

Exemplo de referenciar o segredo no YAML do aplicativo

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment 
spec:
selector:
  matchLabels:
   app: nginx
replicas: 2
template:
  metadata:
   labels:
    app: nginx
  spec:
   containers:
   - name: nginx
     image: democr2.azsacr.redmond.ext-n31r1208.masd.stbtest.microsoft.com/library/nginx:1.17.3
     imagePullPolicy: Always
     ports: 
      - containerPort: 80
   imagePullSecrets:
     - name: democr2
 
 
---
apiVersion: v1
kind: Service
metadata:
  name: nginx
spec:
  selector:
    app: nginx
  ports:
  - protocol: "TCP"
    port: 80
    targetPort: 80
  type: LoadBalancer

Próximas etapas

Usando o Serviço de Kubernetes do Azure no Azure Stack Hub com a CLI