Partager via


Tutoriel : activer Azure Container Apps sur Kubernetes avec Azure Arc

Avec les clusters Kubernetes avec Azure Arc, vous pouvez créer un emplacement personnalisé activé par Container Apps dans votre cluster Kubernetes local ou cloud pour déployer vos applications Azure Container Apps comme vous le feriez dans n’importe quelle autre région.

Ce tutoriel montre comment activer Azure Container Apps sur un cluster Kubernetes avec Azure Arc. Dans ce tutoriel, vous allez :

  • Créez un cluster connecté.
  • Créez un espace de travail Log Analytics.
  • Installez l’extension Container Apps.
  • Créer un emplacement personnalisé.
  • Créez l’environnement connecté Azure Container Apps.

Prérequis

Avant de commencer, vérifiez que vous disposez des conditions préalables suivantes :

Programme d’installation

Installez les extensions Azure CLI suivantes.

az extension add --name connectedk8s --upgrade --yes
az extension add --name k8s-extension --upgrade --yes
az extension add --name customlocation --upgrade --yes
az extension add --name containerapp  --upgrade --yes

Inscrivez les espaces de noms requis.

az provider register --namespace Microsoft.ExtendedLocation --wait
az provider register --namespace Microsoft.KubernetesConfiguration --wait
az provider register --namespace Microsoft.App --wait
az provider register --namespace Microsoft.OperationalInsights --wait

Définissez des variables d’environnement en fonction de votre déploiement de cluster Kubernetes.

GROUP_NAME="my-arc-cluster-group"
AKS_CLUSTER_GROUP_NAME="my-aks-cluster-group"
AKS_NAME="my-aks-cluster"
LOCATION="eastus"

Créer un cluster connecté

Ces instructions sont destinées à des fins d’évaluation et d’apprentissage. Pour les déploiements de production, reportez-vous au guide de démarrage rapide : Connecter un cluster Kubernetes existant à Azure Arc pour obtenir des instructions générales sur la création d’un cluster Kubernetes avec Azure Arc.

Pour commencer à utiliser le service, procédez comme suit pour créer un cluster Azure Kubernetes Service (AKS) et le connecter à Azure Arc :

  1. Créez un cluster dans le service Azure Kubernetes.

    az group create --name $AKS_CLUSTER_GROUP_NAME --location $LOCATION
    az aks create \
       --resource-group $AKS_CLUSTER_GROUP_NAME \
       --name $AKS_NAME \
       --enable-aad \
       --generate-ssh-keys
    
  2. Récupérez le fichier kubeconfig et testez votre connexion au cluster. Par défaut, le fichier kubeconfig est enregistré dans ~/.kube/config.

    az aks get-credentials --resource-group $AKS_CLUSTER_GROUP_NAME --name $AKS_NAME --admin
    
    kubectl get ns
    
  3. Créez un groupe de ressources pour accueillir vos ressources Azure Arc.

    az group create --name $GROUP_NAME --location $LOCATION
    
  4. Connectez le cluster que vous avez créé à Azure Arc.

    CLUSTER_NAME="${GROUP_NAME}-cluster" # Name of the connected cluster resource
    
    az connectedk8s connect --resource-group $GROUP_NAME --name $CLUSTER_NAME
    
  5. Validez la connexion à l’aide de la commande suivante. Elle devrait afficher la propriété provisioningState avec la valeur Succeeded. Si ce n’est pas le cas, réexécutez la commande après une minute.

    az connectedk8s show --resource-group $GROUP_NAME --name $CLUSTER_NAME
    

Créer un espace de travail Log Analytics

Un espace de travail Log Analytics permet d’accéder aux journaux pour les applications Container Apps exécutées dans le cluster Kubernetes avec Azure Arc. Un espace de travail Log Analytics est facultatif, mais recommandé.

  1. Créez un espace de travail Log Analytics.

    WORKSPACE_NAME="$GROUP_NAME-workspace" # Name of the Log Analytics workspace
    
    az monitor log-analytics workspace create \
        --resource-group $GROUP_NAME \
        --workspace-name $WORKSPACE_NAME
    
  2. Exécutez les commandes suivantes pour obtenir l’ID d’espace de travail encodé et la clé partagée pour un espace de travail Log Analytics existant. Vous aurez besoin de ces informations à l’étape suivante.

    LOG_ANALYTICS_WORKSPACE_ID=$(az monitor log-analytics workspace show \
        --resource-group $GROUP_NAME \
        --workspace-name $WORKSPACE_NAME \
        --query customerId \
        --output tsv)
    LOG_ANALYTICS_WORKSPACE_ID_ENC=$(printf %s $LOG_ANALYTICS_WORKSPACE_ID | base64 -w0) # Needed for the next step
    LOG_ANALYTICS_KEY=$(az monitor log-analytics workspace get-shared-keys \
        --resource-group $GROUP_NAME \
        --workspace-name $WORKSPACE_NAME \
        --query primarySharedKey \
        --output tsv)
    LOG_ANALYTICS_KEY_ENC=$(printf %s $LOG_ANALYTICS_KEY | base64 -w0) # Needed for the next step
    

Installez l’extension Container Apps

Important

Si vous déployez sur AKS sur Azure Local, vérifiez que vous avez configuré HAProxy ou un équilibreur de charge personnalisé avant de tenter d’installer l’extension. Vous pouvez également utiliser az containerapp arc setup-core-dns --distro AksAzureLocal pour configurer le dns principal pour les contextes locaux.

  1. Définissez les variables d’environnement suivantes pour le nom souhaité de l’extension Container Apps, l’espace de noms de cluster dans lequel les ressources doivent être approvisionnées, et le nom de l’environnement Azure Container Apps. Choisissez un nom unique pour <connected-environment-name>. Le nom de l’environnement connecté fait partie du nom de domaine de l’application que vous créez dans l’environnement connecté Azure Container Apps.

    EXTENSION_NAME="appenv-ext"
    NAMESPACE="appplat-ns"
    CONNECTED_ENVIRONMENT_NAME="<connected-environment-name>"
    
  2. Installez l’extension Container Apps sur votre cluster connecté Azure Arc, avec Log Analytics activé. Log Analytics ne peut pas être ajouté à l’extension ultérieurement.

    az k8s-extension create \
        --resource-group $GROUP_NAME \
        --name $EXTENSION_NAME \
        --cluster-type connectedClusters \
        --cluster-name $CLUSTER_NAME \
        --extension-type 'Microsoft.App.Environment' \
        --release-train stable \
        --auto-upgrade-minor-version true \
        --scope cluster \
        --release-namespace $NAMESPACE \
        --configuration-settings "Microsoft.CustomLocation.ServiceAccount=default" \
        --configuration-settings "appsNamespace=${NAMESPACE}" \
        --configuration-settings "clusterName=${CONNECTED_ENVIRONMENT_NAME}" \
        --configuration-settings "logProcessor.appLogs.destination=log-analytics" \
        --configuration-protected-settings "logProcessor.appLogs.logAnalyticsConfig.customerId=${LOG_ANALYTICS_WORKSPACE_ID_ENC}" \
        --configuration-protected-settings "logProcessor.appLogs.logAnalyticsConfig.sharedKey=${LOG_ANALYTICS_KEY_ENC}"
    

    Remarque

    Pour installer l’extension sans l’intégration de Log Analytics, supprimez les trois paramètres --configuration-settings de la commande.

    Pour les clusters qui utilisent un équilibreur de charge personnalisé au lieu de l’équilibreur de charge AKS standard, une fois l’équilibreur de charge configuré, spécifiez le paramètre suivant :

    --configuration-settings "loadBalancerIp=<LOAD_BALANCER_INGRESS_IP>"
    

    Remplacez <LOAD_BALANCER_INGRESS_IP> par l’adresse IP d’entrée réelle affectée à votre équilibreur de charge.

    Le tableau suivant décrit les différents paramètres --configuration-settings inclus lors de l’exécution de la commande :

    Paramètre Descriptif
    Microsoft.CustomLocation.ServiceAccount Compte de service créé pour l’emplacement personnalisé. Définissez la valeur sur default.
    appsNamespace Espace de noms utilisé pour créer les définitions et révisions d’application. Il doit correspondre à l’espace de noms de la version de l’extension.
    clusterName Nom de l’environnement Kubernetes de l’extension Container Apps créé par rapport à cette extension.
    logProcessor.appLogs.destination facultatif. Destination des journaux d’application. Accepte log-analytics ou none. Le choix d’aucun désactive les journaux de plateforme.
    logProcessor.appLogs.logAnalyticsConfig.customerId Obligatoire uniquement quand logProcessor.appLogs.destination a la valeur log-analytics. ID d’espace de travail Log Analytics codé en base64. Ce paramètre doit être configuré en tant que paramètre protégé.
    logProcessor.appLogs.logAnalyticsConfig.sharedKey Obligatoire uniquement quand logProcessor.appLogs.destination a la valeur log-analytics. Clé partagée d’espace de travail Log Analytics codé en base64. Ce paramètre doit être configuré en tant que paramètre protégé.
    loadBalancerIp Adresse IP d’entrée de l’équilibreur de charge.
  3. Enregistrez la propriété id de l’extension Container Apps pour plus tard.

    EXTENSION_ID=$(az k8s-extension show \
        --cluster-type connectedClusters \
        --cluster-name $CLUSTER_NAME \
        --resource-group $GROUP_NAME \
        --name $EXTENSION_NAME \
        --query id \
        --output tsv)
    
  4. Attendez que l’extension soit complètement installée avant de continuer. Il se peut que vous deviez faire attendre votre session de terminal jusqu’à ce que l’opération soit terminée en exécutant la commande suivante :

    az resource wait --ids $EXTENSION_ID --custom "properties.provisioningState!='Pending'" --api-version "2020-07-01-preview"
    

Permet kubectl d’afficher les pods en cours d’exécution dans votre cluster Kubernetes :

kubectl get pods -n $NAMESPACE

Pour en savoir plus sur ces pods et leur rôle dans le système, consultez Vue d’ensemble d’Azure Arc.

Créer un emplacement personnalisé

L’emplacement personnalisé est un emplacement Azure que vous attribuez à l’environnement connecté Azure Container Apps.

  1. Définissez les variables d’environnement suivantes pour le nom souhaité de l’emplacement personnalisé et pour l’ID du cluster connecté Azure Arc.

    CUSTOM_LOCATION_NAME="my-custom-location" # Name of the custom location
    CONNECTED_CLUSTER_ID=$(az connectedk8s show --resource-group $GROUP_NAME --name $CLUSTER_NAME --query id --output tsv)
    
  2. Créez l’emplacement personnalisé :

    az customlocation create \
        --resource-group $GROUP_NAME \
        --name $CUSTOM_LOCATION_NAME \
        --host-resource-id $CONNECTED_CLUSTER_ID \
        --namespace $NAMESPACE \
        --cluster-extension-ids $EXTENSION_ID
    

    Remarque

    Si vous rencontrez des problèmes pour créer un emplacement personnalisé dans votre cluster, vous devrez peut-être activer la fonctionnalité d’emplacement personnalisé pour votre cluster. Activez cette fonctionnalité lors de la connexion à l’interface CLI à l’aide d’un principal de service ou d’un utilisateur Microsoft Entra disposant d’autorisations restreintes sur la ressource de cluster.

  3. Vérifiez que l’emplacement personnalisé a été correctement créé avec la commande suivante. La sortie devrait afficher la propriété provisioningState avec la valeur Succeeded. Si ce n’est pas le cas, réexécutez la commande après une minute.

    az customlocation show --resource-group $GROUP_NAME --name $CUSTOM_LOCATION_NAME
    
  4. Enregistrez l’ID d’emplacement personnalisé pour l’étape suivante.

    CUSTOM_LOCATION_ID=$(az customlocation show \
        --resource-group $GROUP_NAME \
        --name $CUSTOM_LOCATION_NAME \
        --query id \
        --output tsv)
    

Créez l’environnement connecté Azure Container Apps

Avant de commencer à créer des applications à l’emplacement personnalisé, vous avez besoin d’un environnement connecté à Azure Container Apps.

  1. Créez l’environnement connecté Container Apps :

    az containerapp connected-env create \
        --resource-group $GROUP_NAME \
        --name $CONNECTED_ENVIRONMENT_NAME \
        --custom-location $CUSTOM_LOCATION_ID \
        --location $LOCATION
    
  2. Vérifiez que l’environnement connecté Container Apps est correctement créé avec la commande suivante. La sortie devrait afficher la propriété provisioningState avec la valeur Succeeded. Si ce n’est pas le cas, réexécutez la commande après une minute.

    az containerapp connected-env show --resource-group $GROUP_NAME --name $CONNECTED_ENVIRONMENT_NAME
    

Étapes suivantes