Udostępnij za pośrednictwem


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.

  1. 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
    
  2. Upewnij się, że masz najnowsze stabilne repozytorium helm:

    helm repo add stable https://charts.helm.sh/stable
    helm repo update
    
  3. Zainstaluj rozwiązanie Prometheus.

    helm install my-prometheus stable/prometheus --set server.service.type=LoadBalancer --set rbac.create=false
    
  4. 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
    
  5. Zainstaluj oprogramowanie Grafana.

    helm install my-grafana stable/grafana --set service.type=LoadBalancer --set rbac.create=false
    
  6. 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