Distribuire applicazioni di test in servizio Azure Kubernetes nell'hub di Azure Stack
Questa è una guida per iniziare a usare il servizio servizio Azure Kubernetes (AKS) nell'hub di Azure Stack. Questo articolo descrive come distribuire alcune app di test nel cluster in modo che sia possibile acquisire familiarità con il servizio Azure Kubernetes nell'hub di Azure Stack. La funzionalità disponibile nell'hub di Azure Stack è un subset di ciò che è disponibile in Azure globale.
Prima di iniziare, assicurarsi di poter creare un cluster del servizio Azure Kubernetes nell'istanza dell'hub di Azure Stack. Per istruzioni su come configurare e creare il primo cluster, vedere Uso di servizio Azure Kubernetes nell'hub di Azure Stack con l'interfaccia della riga di comando.
Distribuire app di test
Se il timbro è connesso, è possibile seguire queste istruzioni per distribuire Prometheus e Grafana nel cluster.
Scaricare e installare 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
Assicurarsi di avere il repository Helm stabile più recente:
helm repo add stable https://charts.helm.sh/stable helm repo update
Installare Prometheus.
helm install my-prometheus stable/prometheus --set server.service.type=LoadBalancer --set rbac.create=false
Concedere al cluster l'accesso amministrativo all'account Prometheus. Le autorizzazioni inferiori sono migliori per motivi di sicurezza.
kubectl create clusterrolebinding my-prometheus-server --clusterrole=cluster-admin --serviceaccount=default:my-prometheus-server
Installare Grafana.
helm install my-grafana stable/grafana --set service.type=LoadBalancer --set rbac.create=false
Ottenere il segreto per il portale di Grafana.
kubectl get secret --namespace default my-grafana -o jsonpath="{.data.admin-password}" | base64 --decode ; echo
Nota
In Windows usare i cmdlet di PowerShell seguenti per ottenere il segreto:
\$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}")))
Distribuire app nel servizio Azure Kubernetes con Registro Azure Container
A questo punto, il computer client è connesso al cluster ed è possibile continuare a usare kubectl per configurare il cluster e distribuire le applicazioni. Se si esegue anche il test del servizio Registro Azure Container (ACR), è possibile seguire le istruzioni riportate di seguito.
Segreto del Registro di sistema Docker per l'accesso al Registro Azure Container locale
Se si distribuiscono immagini dell'applicazione da un Registro Azure Container locale, è necessario archiviare un segreto per consentire al cluster Kubernetes di avere accesso per eseguire il pull delle immagini dal Registro di sistema. A tale scopo, è necessario specificare un ID entità servizio (SPN) e un segreto, aggiungere il nome SPN come collaboratore al Registro di sistema di origine e creare il segreto Kubernetes. Sarà anche necessario aggiornare il file YAML per fare riferimento al segreto.
Aggiungere il nome SPN al Registro Azure Container
Aggiungere il nome SPN come collaboratore al Registro Azure Container.
Nota
Questo script è stato modificato dal sito di Registro Azure Container (esempio bash) perché l'hub di Azure Stack non ha ancora il ruolo ACRPULL. Questo esempio è uno script di PowerShell, equivalente può essere scritto in bash. Assicurarsi di aggiungere i valori per il 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
Creare il segreto in Kubernetes
Usare il comando seguente per aggiungere il segreto al cluster Kubernetes. Assicurarsi di aggiungere i valori per il sistema nei frammenti di codice.
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>
Esempio di riferimento al segreto nell'app YAML
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
Passaggi successivi
Uso di servizio Azure Kubernetes nell'hub di Azure Stack con l'interfaccia della riga di comando