Implementar aplicações de teste para Azure Kubernetes Service no Azure Stack Hub
Este é um guia para começar a utilizar o serviço Azure Kubernetes Service (AKS) no Azure Stack Hub. Este artigo descreve como implementar algumas aplicações de teste no cluster para que possa familiarizar-se 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, certifique-se de que pode criar um cluster do AKS na instância do Azure Stack Hub. Para obter instruções sobre como configurar e criar o seu primeiro cluster, veja Using Azure Kubernetes Service on Azure Stack Hub with the CLI (Utilizar Azure Kubernetes Service no Azure Stack Hub com a CLI).
Implementar aplicações de teste
Se o seu selo estiver ligado, pode seguir estas instruções para implementar o Prometheus e o Grafana no cluster.
Transfira 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
Nota
Para o utilizador do Windows, utilize o Chocolatey para instalar o Helm:
choco install kubernetes-helm
Certifique-se de que tem o repositório helm estável mais recente:
helm repo add stable https://charts.helm.sh/stable helm repo update
Instale o Prometheus.
helm install my-prometheus stable/prometheus --set server.service.type=LoadBalancer --set rbac.create=false
Conceder acesso administrativo ao cluster à conta do Prometheus. As permissões mais baixas são melhores por razões de segurança.
kubectl create clusterrolebinding my-prometheus-server --clusterrole=cluster-admin --serviceaccount=default:my-prometheus-server
Instale o Grafana.
helm install my-grafana stable/grafana --set service.type=LoadBalancer --set rbac.create=false
Obtenha o segredo do portal do Grafana.
kubectl get secret --namespace default my-grafana -o jsonpath="{.data.admin-password}" | base64 --decode ; echo
Nota
No Windows, utilize 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}")))
Implementar aplicações no AKS com o ACR
Neste momento, o computador cliente está ligado ao cluster e pode continuar a utilizar o kubectl para configurar o cluster e implementar as suas aplicações. Se também estiver a testar o serviço Azure Container Registry (ACR), pode seguir as instruções abaixo.
Segredo do registo do Docker para aceder ao ACR local
Se estiver a implementar imagens da aplicação a partir de um ACR local, terá de armazenar um segredo para que o cluster do Kubernetes tenha acesso para extrair as imagens do registo. Para tal, terá de fornecer um ID do principal de serviço (SPN) e Um Segredo, adicionar o SPN como contribuidor ao registo de origem e criar o segredo do Kubernetes. Também terá de atualizar o ficheiro YAML para referenciar o segredo.
Adicionar o SPN ao ACR
Adicione o SPN como contribuidor ao ACR.
Nota
Este script foi modificado do site Azure Container Registry (exemplo de bash), uma vez que o Azure Stack Hub ainda não tem a função ACRPULL. Este exemplo é um script do PowerShell, o equivalente pode ser escrito no bash. Certifique-se de que adiciona os valores para o seu 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
Utilize o seguinte comando para adicionar o segredo ao cluster do Kubernetes. Certifique-se de que adiciona os valores para o seu sistema nos fragmentos 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 referência do segredo no YAML da sua aplicação
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
Passos seguintes
Utilizar Azure Kubernetes Service no Azure Stack Hub com a CLI