Dela via


Distribuera testprogram till Azure Kubernetes Service på Azure Stack Hub

Det här är en guide för att komma igång med tjänsten Azure Kubernetes Service (AKS) på Azure Stack Hub. Den här artikeln beskriver hur du distribuerar vissa testappar till klustret så att du kan bekanta dig med AKS på Azure Stack Hub. Funktionerna som är tillgängliga i Azure Stack Hub är en delmängd av det som är tillgängligt i globala Azure.

Innan du kommer igång måste du se till att du kan skapa ett AKS-kluster på din Azure Stack Hub-instans. Anvisningar om hur du konfigurerar och skapar ditt första kluster finns i Använda Azure Kubernetes Service på Azure Stack Hub med CLI.

Distribuera testappar

Om din stämpel är ansluten kan du följa de här anvisningarna för att distribuera Prometheus och Grafana till klustret.

  1. Ladda ned och installera 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
    

    Anteckning

    För Windows-användare använder Chocolatey för att installera Helm:

    choco install kubernetes-helm
    
  2. Kontrollera att du har den senaste stabila helm-lagringsplatsen:

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

    helm install my-prometheus stable/prometheus --set server.service.type=LoadBalancer --set rbac.create=false
    
  4. Ge kluster administrativ åtkomst till Prometheus-kontot. Lägre behörigheter är bättre av säkerhetsskäl.

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

    helm install my-grafana stable/grafana --set service.type=LoadBalancer --set rbac.create=false
    
  6. Hämta hemlighet för Grafana-portalen.

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

Anteckning

I Windows använder du följande PowerShell-cmdletar för att hämta hemligheten:

\$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}")))

Distribuera appar till AKS med hjälp av ACR

Nu är klientdatorn ansluten till klustret och du kan fortsätta att använda kubectl för att konfigurera klustret och distribuera dina program. Om du även testar tjänsten Azure Container Registry (ACR) kan du följa anvisningarna nedan.

Docker-registerhemlighet för åtkomst till lokal ACR

Om du distribuerar programavbildningar från en lokal ACR måste du lagra en hemlighet för att Kubernetes-klustret ska ha åtkomst till att hämta avbildningarna från registret. För att göra detta måste du ange ett tjänsthuvudnamns-ID (SPN) och hemlighet, lägga till SPN som deltagare i källregistret och skapa Kubernetes-hemligheten. Du måste också uppdatera YAML-filen för att referera till hemligheten.

Lägg till SPN i ACR

Lägg till SPN som deltagare i ACR.

Anteckning

Det här skriptet har ändrats från Azure Container Registry -platsen (bash-exempel) eftersom Azure Stack Hub ännu inte har ACRPULL-rollen. Det här exemplet är ett PowerShell-skript, motsvarande kan skrivas i bash. Se till att lägga till värdena för systemet.

# 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

Skapa hemligheten i Kubernetes

Använd följande kommando för att lägga till hemligheten i Kubernetes-klustret. Se till att lägga till värdena för systemet i kodfragmenten.

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> 

Exempel på att referera till hemligheten i din 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

Nästa steg

Använda Azure Kubernetes Service på Azure Stack Hub med CLI