Freigeben über


Bereitstellen von Testanwendungen im Azure Kubernetes-Dienst auf Azure Stack Hub

Dies ist ein Leitfaden für die ersten Schritte mit dem Azure Kubernetes Service (AKS)-Dienst auf Azure Stack Hub. In diesem Artikel wird beschrieben, wie Sie einige Test-Apps auf Ihrem Cluster bereitstellen, damit Sie sich mit AKS auf Azure Stack Hub vertraut machen können. Die in Azure Stack Hub verfügbare Funktionalität ist eine Teilmenge der in globalen Azure verfügbaren Funktionen.

Bevor Sie beginnen, stellen Sie sicher, dass sie einen AKS-Cluster in Ihrer Azure Stack Hub-Instanz erstellen können. Anweisungen zum Einrichten und Erstellen Ihres ersten Clusters finden Sie unter Verwenden des Azure Kubernetes-Diensts auf Azure Stack Hub mit der CLI.

Bereitstellen von Test-Apps

Wenn Ihr Stempel verbunden ist, können Sie diese Anweisungen befolgen, um Prometheus und Grafana im Cluster bereitzustellen.

  1. Helm 3 herunterladen und installieren:

    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
    

    Hinweis

    Für Windows-Benutzer verwenden Sie Chocolatey , um Helm zu installieren:

    choco install kubernetes-helm
    
  2. Stellen Sie sicher, dass Sie über das neueste stabile Helm-Repository verfügen:

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

    helm install my-prometheus stable/prometheus --set server.service.type=LoadBalancer --set rbac.create=false
    
  4. Gewähren Sie Clusteradministratoren Zugriff auf das Prometheus-Konto. Niedrigere Berechtigungen sind aus Sicherheitsgründen besser.

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

    helm install my-grafana stable/grafana --set service.type=LoadBalancer --set rbac.create=false
    
  6. Get secret for Grafana portal.

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

Hinweis

Verwenden Sie unter Windows die folgenden PowerShell-Cmdlets, um den geheimen Schlüssel abzurufen:

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

Bereitstellen von Apps auf AKS mithilfe von ACR

An diesem Punkt ist Ihr Clientcomputer mit dem Cluster verbunden, und Sie können kubectl verwenden, um den Cluster zu konfigurieren und Ihre Anwendungen bereitzustellen. Wenn Sie auch den Azure Container Registry (ACR)-Dienst testen, können Sie die folgenden Anweisungen befolgen.

Docker-Registrierungsschlüssel für den Zugriff auf lokale ACR

Wenn Sie Anwendungsimages von einem lokalen ACR bereitstellen, müssen Sie einen geheimen Schlüssel speichern, damit der Kubernetes-Cluster Zugriff auf das Abrufen der Images aus der Registrierung hat. Dazu müssen Sie eine Dienstprinzipal-ID (SPN) und einen geheimen Schlüssel bereitstellen, den SPN als Mitwirkender zur Quellregistrierung hinzufügen und den geheimen Kubernetes-Schlüssel erstellen. Außerdem müssen Sie Ihre YAML-Datei aktualisieren, um auf den geheimen Schlüssel zu verweisen.

Hinzufügen des SPN zum ACR

Fügen Sie den SPN als Mitwirkender zum ACR hinzu.

Hinweis

Dieses Skript wurde von der Azure-Containerregistrierungswebsite ( Bash-Beispiel) geändert, da Azure Stack Hub noch nicht über die ACRPULL-Rolle verfügt. Dieses Beispiel ist ein PowerShell-Skript, das in Bash geschrieben werden kann. Achten Sie darauf, die Werte für Ihr System hinzuzufügen.

# 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

Erstellen des Geheimen Schlüssels in Kubernetes

Verwenden Sie den folgenden Befehl, um den geheimen Schlüssel zum Kubernetes-Cluster hinzuzufügen. Achten Sie darauf, die Werte für Ihr System in den Codeausschnitten hinzuzufügen.

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> 

Beispiel für den Verweis auf den geheimen Schlüssel in Ihrer 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ächste Schritte

Verwenden des Azure Kubernetes-Diensts im Azure Stack Hub mit der CLI