Bereitstellen von Testanwendungen für Azure Kubernetes Service in Azure Stack Hub
Dies ist ein Leitfaden für die ersten Schritte mit Azure Kubernetes Service (AKS) in Azure Stack Hub. In diesem Artikel wird beschrieben, wie Sie einige Test-Apps in Ihrem Cluster bereitstellen, sodass Sie sich mit AKS in Azure Stack Hub vertraut machen können. Die in Azure Stack Hub verfügbare Funktionalität ist eine Teilmenge dessen, was im globalen Azure verfügbar ist.
Stellen Sie vor den ersten Schritten sicher, dass Sie einen AKS-Cluster auf Ihrer Azure Stack Hub-Instanz erstellen können. Eine Anleitung zum Einrichten und Erstellen Ihres ersten Clusters finden Sie unter Verwenden von Azure Kubernetes Service in Azure Stack Hub mit der CLI.
Bereitstellen von Test-Apps
Wenn Ihre Skalierungseinheit verbunden ist, können Sie diese Anweisungen befolgen, um Prometheus und Grafana für den Cluster bereitzustellen.
Laden Sie Helm 3 herunter, und installieren Sie es:
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
Verwenden Sie für Windows Benutzer Chocolatey, um Helm zu installieren:
choco install kubernetes-helm
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
Installieren Sie Prometheus.
helm install my-prometheus stable/prometheus --set server.service.type=LoadBalancer --set rbac.create=false
Gewähren Sie dem Cluster Administratorzugriff auf das Prometheus-Konto. Niedrigere Berechtigungen sind aus Sicherheitsgründen besser geeignet.
kubectl create clusterrolebinding my-prometheus-server --clusterrole=cluster-admin --serviceaccount=default:my-prometheus-server
Installieren Sie Grafana.
helm install my-grafana stable/grafana --set service.type=LoadBalancer --set rbac.create=false
Rufen Sie das Geheimnis für das Grafana-Portal ab.
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 das Geheimnis 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 in 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 ACR-Dienst (Azure Container Registry) testen, können Sie die unten folgenden Anweisungen befolgen.
Docker-Registrierungsgeheimnis für den Zugriff auf lokale ACR
Wenn Sie Anwendungsimages aus einer lokalen ACR bereitstellen, müssen Sie ein Geheimnis speichern, damit der Kubernetes-Cluster Zugriff hat, um die Images aus der Registrierung zu pullen. Hierzu müssen Sie eine Dienstprinzipal-ID (SPN) und einen geheimen Schlüssel angeben, den SPN als Mitwirkenden der Quellregistrierung hinzufügen und das Kubernetes-Geheimnis erstellen. Sie müssen zudem Ihre YAML-Datei aktualisieren, um auf das Geheimnis zu verweisen.
Hinzufügen des SPN zur ACR
Fügen Sie den SPN als „Mitwirkender“ zur ACR hinzu.
Hinweis
Dieses Skript wurde von der Azure Container Registry-Website (Bash-Beispiel) geändert, da Azure Stack Hub noch nicht über die ACRPULL-Rolle verfügt. Dieses Beispiel ist ein PowerShell-Skript, das auch in Bash geschrieben werden kann. Achten Sie darauf, dass Sie die Werte für Ihr System hinzufü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 Geheimnisses in Kubernetes
Verwenden Sie den folgenden Befehl, um das Geheimnis dem 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 das Geheimnis im YAML-Code Ihrer 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
Nächste Schritte
Verwenden von Azure Kubernetes Service in Azure Stack Hub mit der CLI