Déployer des applications de test sur Azure Kubernetes Service dans Azure Stack Hub
Il s’agit d’un guide pour bien démarrer avec le service Azure Kubernetes Service (AKS) dans Azure Stack Hub. Cet article explique comment déployer des applications de test sur votre cluster pour vous familiariser avec AKS dans Azure Stack Hub. Les fonctionnalités disponibles dans Azure Stack Hub sont un sous-ensemble de ce qui est disponible dans Azure global.
Avant de commencer, vérifiez que vous pouvez créer un cluster AKS sur votre instance Azure Stack Hub. Pour des instructions sur les prérequis 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.
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
Notes
Pour un utilisateur Windows, utilisez Chocolatey pour installer Helm :
choco install kubernetes-helm
Vérifiez que vous avez le dernier dépôt Helm stable :
helm repo add stable https://charts.helm.sh/stable helm repo update
Installez Prometheus.
helm install my-prometheus stable/prometheus --set server.service.type=LoadBalancer --set rbac.create=false
Accordez un accès administratif du cluster au compte Prometheus. Les autorisations inférieures sont préférables pour des raisons de sécurité.
kubectl create clusterrolebinding my-prometheus-server --clusterrole=cluster-admin --serviceaccount=default:my-prometheus-server
Installez Grafana.
helm install my-grafana stable/grafana --set service.type=LoadBalancer --set rbac.create=false
Obtenez le secret pour le portail Grafana.
kubectl get secret --namespace default my-grafana -o jsonpath="{.data.admin-password}" | base64 --decode ; echo
Notes
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 en utilisant ACR
À ce stade, votre machine cliente est connectée au cluster, et vous pouvez maintenant 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 du registre Docker pour accéder au registre de conteneurs Azure local
Si vous déployez des images d’application à partir d’un registre de conteneurs Azure local, vous devez stocker un secret pour que le cluster Kubernetes puisse tirer les images du registre. Pour ce faire, vous devez fournir un ID de principal de service (SPN) et un secret, ajouter le SPN comme contributeur du registre source, et créer le secret Kubernetes. Vous devez également mettre à jour votre fichier YAML pour référencer le secret.
Ajouter le SPN au registre de conteneurs Azure
Ajoutez le SPN comme contributeur du registre de conteneurs Azure.
Notes
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, l’équivalent peut être écrit en 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 pour référencer le 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