Déployer le générateur d’API de données sur Azure Kubernetes Service

Azure Kubernetes Service (AKS) vous permet d’exécuter le générateur d’API de données dans un cluster Kubernetes managé en même temps que vos autres charges de travail. Ce guide décrit la création d’une image conteneur personnalisée qui inclut votre fichier de configuration, l’envoi (push) vers Azure Container Registry (ACR) et son déploiement sur AKS avec un manifeste Kubernetes.

Prerequisites

Générer le fichier de configuration

  1. Créez un répertoire local pour vos fichiers de configuration.

  2. Initialisez un fichier de configuration de base à l’aide dab initde . Utilisez la @env() fonction pour la chaîne de connexion afin que le secret soit injecté au moment de l’exécution, pas dans l’image.

    dab init \
      --database-type mssql \
      --connection-string "@env('DATABASE_CONNECTION_STRING')"
    
  3. Ajoutez au moins une entité à l’aide de dab add. Répétez cette opération pour chaque table ou vue que vous souhaitez exposer.

    dab add Books \
      --source dbo.Books \
      --permissions "anonymous:read"
    
  4. Passez en revue dab-config.json avant de continuer.

Générer et envoyer (push) une image conteneur personnalisée

Générez une image qui inclut dab-config.json à /App/dab-config.json.

  1. Créez un Registre de conteneurs Azure si vous n’en avez pas déjà.

    az acr create \
      --resource-group <resource-group> \
      --name <registry-name> \
      --sku Basic \
      --admin-enabled true
    
  2. Créez un Dockerfile dans le même emplacement que dab-config.json.

    FROM mcr.microsoft.com/azure-databases/data-api-builder:latest
    COPY dab-config.json /App/dab-config.json
    
  3. Générez et envoyez (push) l’image à l’aide de tâches ACR.

    az acr build \
      --registry <registry-name> \
      --image dab:latest \
      .
    
  4. Notez la référence d’image complète : <registry-name>.azurecr.io/dab:latest.

Connecter AKS à ACR

Accordez à votre cluster AKS un accès par extraction au Registre.

az aks update \
  --name <cluster-name> \
  --resource-group <resource-group> \
  --attach-acr <registry-name>

Stocker la chaîne de connexion en tant que secret Kubernetes

Stockez la chaîne de connexion de base de données en tant que secret Kubernetes afin qu’elle ne se trouve jamais dans le fichier manifeste.

kubectl create secret generic dab-secrets \
  --from-literal=DATABASE_CONNECTION_STRING="<your-connection-string>"

Avertissement

Ne placez jamais de chaînes de connexion directement dans les fichiers manifestes Kubernetes ou les images conteneur. Utilisez des secrets ou le service Azure Key Vault.

Créer le manifeste Kubernetes

Créez un fichier nommé dab-deployment.yaml avec le contenu suivant : Remplacez <registry-name> par votre nom ACR.

apiVersion: apps/v1
kind: Deployment
metadata:
  name: dab
  labels:
    app: dab
spec:
  replicas: 2
  selector:
    matchLabels:
      app: dab
  template:
    metadata:
      labels:
        app: dab
    spec:
      containers:
        - name: dab
          image: <registry-name>.azurecr.io/dab:latest
          ports:
            - containerPort: 5000
          env:
            - name: DATABASE_CONNECTION_STRING
              valueFrom:
                secretKeyRef:
                  name: dab-secrets
                  key: DATABASE_CONNECTION_STRING
          readinessProbe:
            httpGet:
              path: /health
              port: 5000
            initialDelaySeconds: 5
            periodSeconds: 10
          livenessProbe:
            httpGet:
              path: /health
              port: 5000
            initialDelaySeconds: 15
            periodSeconds: 20
---
apiVersion: v1
kind: Service
metadata:
  name: dab-service
spec:
  selector:
    app: dab
  ports:
    - protocol: TCP
      port: 80
      targetPort: 5000
  type: LoadBalancer

Note

readinessProbe et livenessProbe utilisent l'endpoint DAB /health. Pour plus d’informations, consultez Vérifications d’intégrité.

Déployer sur AKS

  1. Obtenez des informations d’identification pour votre cluster.

    az aks get-credentials \
      --resource-group <resource-group> \
      --name <cluster-name>
    
  2. Appliquez le manifeste.

    kubectl apply -f dab-deployment.yaml
    
  3. Regardez le déploiement jusqu’à ce que les pods soient prêts.

    kubectl rollout status deployment/dab
    
  4. Obtenez l’adresse IP externe affectée au service.

    kubectl get service dab-service
    

    La EXTERNAL-IP colonne affiche l’adresse IP publique. Laissez une minute pour que l’équilibreur de charge soit approvisionné.

Vérifier le déploiement

  1. Accédez à http://<external-ip>/health. Une réponse saine ressemble à ceci :

    {
      "status": "healthy",
      "version": "2.0.0",
      "app-name": "dab_oss_2.0.0"
    }
    
  2. Testez un point de terminaison d’entité.

    curl http://<external-ip>/api/Books
    

Mettre à l’échelle le déploiement

Modifiez le nombre de réplicas pour effectuer une mise à l’échelle horizontalement.

kubectl scale deployment/dab --replicas=4

Ou mettre à jour spec.replicasdab-deployment.yaml et réappliquer.

Nettoyer les ressources

Supprimez le déploiement et le service quand vous n’en avez plus besoin.

kubectl delete -f dab-deployment.yaml
kubectl delete secret dab-secrets

Pour supprimer le cluster et le Registre AKS, supprimez le groupe de ressources.

az group delete \
  --name <resource-group> \
  --yes --no-wait