Wdrażanie aplikacji testowych w usłudze Azure Kubernetes Service w usłudze Azure Stack Hub
Jest to przewodnik ułatwia rozpoczęcie korzystania z usługi Azure Kubernetes Service (AKS) w usłudze Azure Stack Hub. W tym artykule opisano sposób wdrażania niektórych aplikacji testowych w klastrze, aby zapoznać się z usługą AKS w usłudze Azure Stack Hub. Funkcje dostępne w usłudze Azure Stack Hub to podzbiór tego, co jest dostępne na globalnej platformie Azure.
Przed rozpoczęciem upewnij się, że można utworzyć klaster usługi AKS w wystąpieniu usługi Azure Stack Hub. Aby uzyskać instrukcje dotyczące konfigurowania i tworzenia pierwszego klastra, zobacz Using Azure Kubernetes Service on Azure Stack Hub with the CLI (Używanie Azure Kubernetes Service w usłudze Azure Stack Hub za pomocą interfejsu wiersza polecenia).
Wdrażanie aplikacji testowych
Jeśli sygnatura jest połączona, możesz wykonać te instrukcje, aby wdrożyć rozwiązanie Prometheus i Grafana w klastrze.
Pobierz i zainstaluj program 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
Uwaga
W przypadku użytkownika systemu Windows użyj narzędzia Chocolatey do zainstalowania programu Helm:
choco install kubernetes-helm
Upewnij się, że masz najnowsze stabilne repozytorium helm:
helm repo add stable https://charts.helm.sh/stable helm repo update
Zainstaluj rozwiązanie Prometheus.
helm install my-prometheus stable/prometheus --set server.service.type=LoadBalancer --set rbac.create=false
Nadaj klastrowi dostęp administracyjny do konta Prometheus. Niższe uprawnienia są lepsze ze względów bezpieczeństwa.
kubectl create clusterrolebinding my-prometheus-server --clusterrole=cluster-admin --serviceaccount=default:my-prometheus-server
Zainstaluj oprogramowanie Grafana.
helm install my-grafana stable/grafana --set service.type=LoadBalancer --set rbac.create=false
Uzyskaj wpis tajny dla portalu Grafana.
kubectl get secret --namespace default my-grafana -o jsonpath="{.data.admin-password}" | base64 --decode ; echo
Uwaga
W systemie Windows użyj następujących poleceń cmdlet programu PowerShell, aby uzyskać wpis tajny:
\$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}")))
Wdrażanie aplikacji w usłudze AKS przy użyciu usługi ACR
Na tym etapie maszyna kliencka jest połączona z klastrem i możesz przejść do konfigurowania klastra i wdrażania aplikacji przy użyciu narzędzia kubectl . Jeśli testujesz również usługę Azure Container Registry (ACR), możesz wykonać poniższe instrukcje.
Wpis tajny rejestru platformy Docker na potrzeby uzyskiwania dostępu do lokalnego rejestru ACR
Jeśli wdrażasz obrazy aplikacji z lokalnego rejestru ACR, musisz przechowywać wpis tajny, aby klaster Kubernetes miał dostęp do ściągania obrazów z rejestru. W tym celu należy podać identyfikator jednostki usługi (SPN) i wpis tajny, dodać nazwę SPN jako współautora do rejestru źródłowego i utworzyć wpis tajny Kubernetes. Należy również zaktualizować plik YAML, aby odwoływać się do wpisu tajnego.
Dodawanie głównej nazwy usługi do usługi ACR
Dodaj nazwę SPN jako współautora do usługi ACR.
Uwaga
Ten skrypt został zmodyfikowany z witryny Azure Container Registry (przykład bash), ponieważ usługa Azure Stack Hub nie ma jeszcze roli ACRPULL. Ten przykład jest skryptem programu PowerShell, który można napisać w powłoce bash. Pamiętaj, aby dodać wartości dla systemu.
# 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
Tworzenie wpisu tajnego na platformie Kubernetes
Użyj następującego polecenia, aby dodać wpis tajny do klastra Kubernetes. Pamiętaj, aby dodać wartości dla systemu w fragmentach kodu.
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>
Przykład odwoływania się do wpisu tajnego w pliku YAML aplikacji
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
Następne kroki
Używanie Azure Kubernetes Service w usłudze Azure Stack Hub za pomocą interfejsu wiersza polecenia