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.
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
Kontrollera att du har den senaste stabila helm-lagringsplatsen:
helm repo add stable https://charts.helm.sh/stable helm repo update
Installera Prometheus.
helm install my-prometheus stable/prometheus --set server.service.type=LoadBalancer --set rbac.create=false
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
Installera Grafana.
helm install my-grafana stable/grafana --set service.type=LoadBalancer --set rbac.create=false
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