Delen via


Testtoepassingen implementeren in Azure Kubernetes Service in Azure Stack Hub

Dit is een handleiding om u op weg te helpen met de AKS-service (Azure Kubernetes Service) in Azure Stack Hub. In dit artikel wordt beschreven hoe u enkele test-apps implementeert in uw cluster, zodat u vertrouwd kunt raken met AKS in Azure Stack Hub. De functionaliteit die beschikbaar is in Azure Stack Hub, is een subset van wat beschikbaar is in wereldwijde Azure.

Voordat u aan de slag gaat, moet u ervoor zorgen dat u een AKS-cluster kunt maken op uw Azure Stack Hub-exemplaar. Zie Using Azure Kubernetes Service on Azure Stack Hub with the CLI (Azure Kubernetes Service gebruiken in Azure Stack Hub met de CLI) voor instructies over het instellen en maken van uw eerste cluster.

Test-apps implementeren

Als uw stempel is verbonden, kunt u deze instructies volgen om Prometheus en Grafana in het cluster te implementeren.

  1. Helm 3 downloaden en installeren:

    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
    

    Notitie

    Windows-gebruikers kunnen Chocolatey gebruiken om Helm te installeren:

    choco install kubernetes-helm
    
  2. Zorg ervoor dat u de meest recente stabiele Helm-opslagplaats hebt:

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

    helm install my-prometheus stable/prometheus --set server.service.type=LoadBalancer --set rbac.create=false
    
  4. Clusterbeheerderstoegang verlenen tot het Prometheus-account. Lagere machtigingen zijn om veiligheidsredenen beter.

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

    helm install my-grafana stable/grafana --set service.type=LoadBalancer --set rbac.create=false
    
  6. Haal het geheim op voor de Grafana-portal.

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

Notitie

Gebruik in Windows de volgende PowerShell-cmdlets om het geheim op te halen:

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

Apps implementeren in AKS met behulp van ACR

Op dit moment is uw clientcomputer verbonden met het cluster en kunt u kubectl gebruiken om het cluster te configureren en uw toepassingen te implementeren. Als u ook de ACR-service (Azure Container Registry) test, kunt u de onderstaande instructies volgen.

Docker-registergeheim voor toegang tot lokale ACR

Als u toepassingsinstallatiekopieën van een lokale ACR implementeert, moet u een geheim opslaan om ervoor te zorgen dat het Kubernetes-cluster toegang heeft tot het ophalen van de installatiekopieën uit het register. Hiervoor moet u een service-principal-id (SPN) en geheim opgeven, de SPN toevoegen als inzender aan het bronregister en het Kubernetes-geheim maken. U moet ook uw YAML-bestand bijwerken om te verwijzen naar het geheim.

De SPN toevoegen aan de ACR

Voeg de SPN toe als inzender aan de ACR.

Notitie

Dit script is gewijzigd vanaf de Azure Container Registry-site (bash-voorbeeld) omdat Azure Stack Hub nog niet de ACRPULL-rol heeft. Dit voorbeeld is een PowerShell-script, dat equivalent kan worden geschreven in bash. Zorg ervoor dat u de waarden voor uw systeem toevoegt.

# 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

Het geheim maken in Kubernetes

Gebruik de volgende opdracht om het geheim toe te voegen aan het Kubernetes-cluster. Zorg ervoor dat u de waarden voor uw systeem toevoegt in de codefragmenten.

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> 

Voorbeeld van het verwijzen naar het geheim in de YAML van uw app

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

Volgende stappen

Azure Kubernetes Service in Azure Stack Hub gebruiken met de CLI