Condividi tramite


Distribuire applicazioni di test nel servizio Azure Kubernetes nell'hub di Azure Stack

Questa è una guida per iniziare a usare il servizio Azure Kubernetes nell'hub di Azure Stack. Questo articolo descrive come distribuire alcune app di test nel cluster in modo da 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, assicuratevi di poter creare un cluster AKS sull'istanza di Azure Stack Hub. Per istruzioni su come configurare e creare il primo cluster, vedere Uso del servizio Azure Kubernetes nell'hub di Azure Stack con l'interfaccia della riga di comando.

Distribuire app di test

Se la tua unità è collegata, puoi seguire queste istruzioni per distribuire Prometheus e Grafana nel cluster.

  1. 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
    

    Annotazioni

    Per l'utente di Windows, usare Chocolatey per installare Helm:

    choco install kubernetes-helm
    
  2. Assicurati di avere l'ultima versione del repository Helm stabile.

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

    helm install my-prometheus stable/prometheus --set server.service.type=LoadBalancer --set rbac.create=false
    
  4. 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
    
  5. Installare Grafana.

    helm install my-grafana stable/grafana --set service.type=LoadBalancer --set rbac.create=false
    
  6. Ottenere il segreto per il portale di Grafana.

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

Annotazioni

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 su AKS utilizzando ACR

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, è possibile seguire le istruzioni riportate di seguito.

Segreto del registro Docker per l'accesso al registro ACR 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 fornire un ID entità servizio (SPN) e un segreto, aggiungere l'ID SPN come collaboratore al registro di origine e creare il segreto Kubernetes. Sarà anche necessario aggiornare il file YAML per fare riferimento al segreto.

** Aggiungere lo SPN all'ACR

Aggiungere SPN come contributore all'Azure Container Registry.

Annotazioni

Questo script è stato modificato dal Azure Container Registry site (esempio bash) poiché Azure Stack Hub non ha ancora il ruolo ACRPULL. Questo esempio è uno script di PowerShell, equivalente può essere scritto in bash. Assicurati di aggiungere i valori per il tuo 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 del servizio Azure Kubernetes nell'hub di Azure Stack con l'interfaccia della riga di comando