Partager via


Déployer des applications de test sur Azure Kubernetes Service sur Azure Stack Hub

Il s’agit d’un guide pour vous aider à utiliser le service Azure Kubernetes Service (AKS) sur Azure Stack Hub. Cet article explique comment déployer certaines applications de test sur votre cluster afin de vous familiariser avec AKS sur Azure Stack Hub. La fonctionnalité disponible dans Azure Stack Hub est un sous-ensemble de ce qui est disponible dans Azure global.

Avant de commencer, assurez-vous de pouvoir créer un cluster AKS sur votre instance Azure Stack Hub. Pour obtenir des instructions sur la configuration et la création de votre premier cluster, consultez Utilisation d’Azure Kubernetes Service sur Azure Stack Hub avec l’interface CLI.

Déployer des applications de test

Si votre empreinte est connectée, vous pouvez suivre ces instructions pour déployer Prometheus et Grafana sur le cluster.

  1. Téléchargez et installez 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
    

    Remarque

    Pour que l’utilisateur Windows utilise Chocolatey pour installer Helm :

    choco install kubernetes-helm
    
  2. Vérifiez que vous disposez du dernier référentiel helm stable :

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

    helm install my-prometheus stable/prometheus --set server.service.type=LoadBalancer --set rbac.create=false
    
  4. Donnez à l’administrateur du cluster l’accès au compte Prometheus. Les autorisations inférieures sont meilleures pour des raisons de sécurité.

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

    helm install my-grafana stable/grafana --set service.type=LoadBalancer --set rbac.create=false
    
  6. Obtenez un secret pour le portail Grafana.

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

Remarque

Sur Windows, utilisez les applets de commande PowerShell suivantes pour obtenir le secret :

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

Déployer des applications sur AKS à l’aide d’ACR

À ce stade, votre ordinateur client est connecté au cluster et vous pouvez continuer à utiliser kubectl pour configurer le cluster et déployer vos applications. Si vous testez également le service Azure Container Registry (ACR), vous pouvez suivre les instructions ci-dessous.

Secret de Registre Docker pour accéder à ACR local

Si vous déployez des images d’application à partir d’un ACR local, vous devez stocker un secret afin que le cluster Kubernetes ait accès à l’extraction des images à partir du Registre. Pour ce faire, vous devez fournir un ID de principal de service (SPN) et un secret, ajouter le SPN en tant que contributeur au registre source et créer le secret Kubernetes. Vous devez également mettre à jour votre fichier YAML pour référencer le secret.

Ajouter le nom de principal du service à l’ACR

Ajoutez le SPN en tant que contributeur à l’ACR.

Remarque

Ce script a été modifié à partir du site Azure Container Registry ( exemple bash) car Azure Stack Hub n’a pas encore le rôle ACRPULL. Cet exemple est un script PowerShell, équivalent peut être écrit dans bash. Veillez à ajouter les valeurs de votre système.

# 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

Créer le secret dans Kubernetes

Utilisez la commande suivante pour ajouter le secret au cluster Kubernetes. Veillez à ajouter les valeurs de votre système dans les extraits de code.

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> 

Exemple de référencement du secret dans votre application 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

Étapes suivantes

Utilisation d’Azure Kubernetes Service sur Azure Stack Hub avec l’interface CLI