Déployer et gérer les extensions de cluster Kubernetes avec Azure Arc
Vous pouvez créer des instances d’extension dans un cluster Kubernetes avec Arc, définir les paramètres requis et facultatifs, y compris les options relatives aux mises à jour et aux configurations. Vous pouvez aussi afficher, lister, mettre à jour et supprimer des instances d’extensions.
Avant de commencer, lisez la vue d’ensemble conceptuelle des extensions de cluster Kubernetes avec Arc et passez en revue la liste des extensions actuellement disponibles.
Prérequis
La dernière version d’Azure CLI.
Les dernières versions des extensions
connectedk8s
etk8s-extension
Azure CLI. Installez ces extensions en exécutant les commandes suivantes :az extension add --name connectedk8s az extension add --name k8s-extension
Si les extensions
connectedk8s
etk8s-extension
sont déjà installées, vérifiez qu’elles sont mises à jour vers la dernière version à l’aide des commandes suivantes :az extension update --name connectedk8s az extension update --name k8s-extension
Un cluster connecté Kubernetes avec Azure Arc existant, avec au moins un nœud de système d’exploitation et un type d’architecture
linux/amd64
. Si vous déployez Flux (GitOps), vous pouvez utiliser un cluster ARM64 sans nœudlinux/amd64
.- Si vous n’avez pas encore connecté de cluster, utilisez notre démarrage rapide.
- Mettez à niveau vos agents vers la dernière version.
Créer une instance d’extension
Pour créer une instance d’extension, utilisez k8s-extension create
, en passant des valeurs pour les paramètres requis.
Cet exemple crée une instance d’extension Azure Monitor Container Insights sur un cluster Kubernetes avec Azure Arc :
az k8s-extension create --name azuremonitor-containers --extension-type Microsoft.AzureMonitor.Containers --scope cluster --cluster-name <clusterName> --resource-group <resourceGroupName> --cluster-type connectedClusters
Sortie :
{
"autoUpgradeMinorVersion": true,
"configurationProtectedSettings": null,
"configurationSettings": {
"logAnalyticsWorkspaceResourceID": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourcegroups/defaultresourcegroup-eus/providers/microsoft.operationalinsights/workspaces/defaultworkspace-xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx-eus"
},
"creationTime": "2021-04-02T12:13:06.7534628+00:00",
"errorInfo": {
"code": null,
"message": null
},
"extensionType": "microsoft.azuremonitor.containers",
"id": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/demo/providers/Microsoft.Kubernetes/connectedClusters/demo/providers/Microsoft.KubernetesConfiguration/extensions/azuremonitor-containers",
"identity": null,
"installState": "Pending",
"lastModifiedTime": "2021-04-02T12:13:06.753463+00:00",
"lastStatusTime": null,
"name": "azuremonitor-containers",
"releaseTrain": "Stable",
"resourceGroup": "demo",
"scope": {
"cluster": {
"releaseNamespace": "azuremonitor-containers"
},
"namespace": null
},
"statuses": [],
"systemData": null,
"type": "Microsoft.KubernetesConfiguration/extensions",
"version": "2.8.2"
}
Remarque
Le service ne peut pas conserver d’informations sensibles pendant plus de 48 heures. Si les agents Kubernetes avec Azure Arc n’ont pas de connectivité réseau pendant plus de 48 heures et ne peuvent pas déterminer s’il faut créer une extension sur le cluster, l’extension passe à l’étatFailed
. Une fois cela arrivé, vous devez réexécuter k8s-extension create
pour créer une nouvelle ressource Azure d’extension.
Azure Monitor Container Insights est une extension singleton (une seule requise par cluster). Vous devez nettoyer les installations de graphique Helm précédentes d’Azure Monitor Container Insights (sans extensions) avant d’installer les mêmes via des extensions. Suivez les instructions pour supprimer le graphique Helm avant d’exécuter az k8s-extension create
.
Paramètres obligatoires
Les paramètres suivants sont requis lors de l’utilisation de az k8s-extension create
pour créer une instance d’extension.
Nom du paramètre | Description |
---|---|
--name |
Nom de l’instance d’extension |
--extension-type |
Type d’extension que vous souhaitez installer sur le cluster. Par exemple : Microsoft.AzureMonitor.Containers, microsoft.azuredefender.kubernetes |
--scope |
Étendue des d’installation de l’extension : cluster ou namespace |
--cluster-name |
Nom de la ressource Kubernetes avec Azure Arc sur laquelle l’instance d’extension doit être créée |
--resource-group |
Groupe de ressources contenant la ressource Kubernetes avec Azure Arc |
--cluster-type |
Type de cluster sur lequel l’instance d’extension doit être créée. Pour la plupart des scénarios, utilisez connectedClusters , qui correspond aux clusters Kubernetes avec Azure Arc. |
Paramètres facultatifs
Utilisez un ou plusieurs de ces paramètres facultatifs si nécessaire pour vos scénarios, ainsi que les paramètres requis.
Remarque
Vous pouvez choisir de mettre automatiquement à niveau votre instance d’extension vers les dernières versions mineures et correctives en définissant auto-upgrade-minor-version
sur true
, ou vous pouvez définir manuellement la version de l’instance d’extension à l’aide du paramètre --version
. Nous vous recommandons d’activer les mises à niveau automatiques pour les versions mineures et correctives afin que vous disposiez toujours des derniers correctifs et fonctionnalités de sécurité.
Étant donné que les mises à niveau de versions majeures peuvent inclure des modifications cassants, les mises à niveau automatiques pour les nouvelles versions majeures d’une instance d’extension ne sont pas prises en charge. Vous pouvez choisir quand mettre à niveau manuellement les instances d’extension vers une nouvelle version majeure.
Nom du paramètre | Description |
---|---|
--auto-upgrade-minor-version |
Propriété booléenne qui détermine si la version mineure de l’extension est automatiquement mise à niveau. La valeur par défaut est true . Si ce paramètre est défini sur true , vous ne pouvez pas définir le paramètre version , car la version sera mise à jour dynamiquement. Si elle est définie sur false , l’extension ne sera pas automatiquement mise à niveau, même pour les versions de correctifs. |
--version |
Version de l’extension à installer (version spécifique à laquelle épingler l’instance d’extension). Ne doit pas être fourni si auto-upgrade-minor-version a la valeur true . |
--configuration-settings |
Paramètres qui peuvent être transmis dans l’extension pour contrôler sa fonctionnalité. Ceux-ci sont transmis en tant que paires de key=value séparées par espace après le nom du paramètre. Si ce paramètre est utilisé dans la commande, --configuration-settings-file ne peut pas être utilisé dans la même commande. |
--configuration-settings-file |
Chemin d’accès à un fichier JSON avec key=value paires à utiliser pour transmettre des paramètres de configuration à l’extension. Si ce paramètre est utilisé dans la commande, --configuration-settings ne peut pas être utilisé dans la même commande. |
--configuration-protected-settings |
Paramètres qui ne sont pas récupérables à l’aide GET d’appels d’API ou de commandes az k8s-extension show . Généralement utilisé pour passer des paramètres sensibles. Ceux-ci sont transmis en tant que paires de key=value séparées par espace après le nom du paramètre. Si ce paramètre est utilisé dans la commande, --configuration-protected-settings-file ne peut pas être utilisé dans la même commande. |
--configuration-protected-settings-file |
Chemin d’accès à un fichier JSON avec key=value paires à utiliser pour transmettre des paramètres sensibles à l’extension. Si ce paramètre est utilisé dans la commande, --configuration-protected-settings ne peut pas être utilisé dans la même commande. |
--release-namespace |
Ce paramètre indique l’espace de noms dans lequel la mise en production sera créée. Applicable uniquement si scope est défini sur cluster . |
--release-train |
Les créateurs d’extensions peuvent publier des versions dans différents trains de versions, comme Stable , Preview , etc. Si ce paramètre n’est pas défini explicitement, Stable est utilisé comme valeur par défaut. |
--target-namespace |
Indique l’espace de noms dans lequel la version sera créée. L’autorisation du compte système créé pour cette instance d’extension sera limitée à cet espace de noms. Applicable uniquement si scope est défini sur namespace . |
Afficher les détails de l’extension
Pour afficher les détails d’une instance d’extension actuellement installée, utilisez k8s-extension show
, qui transmet des valeurs pour les paramètres obligatoires.
az k8s-extension show --name azuremonitor-containers --cluster-name <clusterName> --resource-group <resourceGroupName> --cluster-type connectedClusters
Sortie :
{
"autoUpgradeMinorVersion": true,
"configurationProtectedSettings": null,
"configurationSettings": {
"logAnalyticsWorkspaceResourceID": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourcegroups/defaultresourcegroup-eus/providers/microsoft.operationalinsights/workspaces/defaultworkspace-xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx-eus"
},
"creationTime": "2021-04-02T12:13:06.7534628+00:00",
"errorInfo": {
"code": null,
"message": null
},
"extensionType": "microsoft.azuremonitor.containers",
"id": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/demo/providers/Microsoft.Kubernetes/connectedClusters/demo/providers/Microsoft.KubernetesConfiguration/extensions/azuremonitor-containers",
"identity": null,
"installState": "Installed",
"lastModifiedTime": "2021-04-02T12:13:06.753463+00:00",
"lastStatusTime": "2021-04-02T12:13:49.636+00:00",
"name": "azuremonitor-containers",
"releaseTrain": "Stable",
"resourceGroup": "demo",
"scope": {
"cluster": {
"releaseNamespace": "azuremonitor-containers"
},
"namespace": null
},
"statuses": [],
"systemData": null,
"type": "Microsoft.KubernetesConfiguration/extensions",
"version": "2.8.2"
}
Répertorier toutes les extensions installées sur le cluster
Pour afficher la liste de toutes les extensions installées sur un cluster, utilisez k8s-extension list
, en transmettant des valeurs pour les paramètres obligatoires.
az k8s-extension list --cluster-name <clusterName> --resource-group <resourceGroupName> --cluster-type connectedClusters
Sortie :
[
{
"autoUpgradeMinorVersion": true,
"creationTime": "2020-09-15T02:26:03.5519523+00:00",
"errorInfo": {
"code": null,
"message": null
},
"extensionType": "Microsoft.AzureMonitor.Containers",
"id": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/myRg/providers/Microsoft.Kubernetes/connectedClusters/myCluster/providers/Microsoft.KubernetesConfiguration/extensions/myExtInstanceName",
"identity": null,
"installState": "Pending",
"lastModifiedTime": "2020-09-15T02:48:45.6469664+00:00",
"lastStatusTime": null,
"name": "myExtInstanceName",
"releaseTrain": "Stable",
"resourceGroup": "myRG",
"scope": {
"cluster": {
"releaseNamespace": "myExtInstanceName1"
}
},
"statuses": [],
"type": "Microsoft.KubernetesConfiguration/extensions",
"version": "0.1.0"
},
{
"autoUpgradeMinorVersion": true,
"creationTime": "2020-09-02T00:41:16.8005159+00:00",
"errorInfo": {
"code": null,
"message": null
},
"extensionType": "microsoft.azuredefender.kubernetes",
"id": "/subscriptions/0e849346-4343-582b-95a3-e40e6a648ae1/resourceGroups/myRg/providers/Microsoft.Kubernetes/connectedClusters/myCluster/providers/Microsoft.KubernetesConfiguration/extensions/defender",
"identity": null,
"installState": "Pending",
"lastModifiedTime": "2020-09-02T00:41:16.8005162+00:00",
"lastStatusTime": null,
"name": "microsoft.azuredefender.kubernetes",
"releaseTrain": "Stable",
"resourceGroup": "myRg",
"scope": {
"cluster": {
"releaseNamespace": "myExtInstanceName2"
}
},
"type": "Microsoft.KubernetesConfiguration/extensions",
"version": "0.1.0"
}
]
Mettre à jour l’instance d’extension
Notes
Reportez-vous à la documentation pour le type d’extension spécifique pour comprendre les paramètres spécifiques dans --configuration-settings
et --configuration-protected-settings
qui peuvent être mis à jour. Pour --configuration-protected-settings
, tous les paramètres sont censés être fournis, même si un seul paramètre est en cours de mise à jour. Si certains de ces paramètres sont omis, ils seront considérés comme obsolètes puis supprimés.
Pour mettre à jour une instance d’extension existante, utilisez k8s-extension update
, en passant des valeurs pour les paramètres obligatoires et facultatifs. Les paramètres obligatoires et facultatifs sont légèrement différents de ceux utilisés pour créer une instance d’extension.
Cet exemple met à jour le paramètre auto-upgrade-minor-version
d’une instance d’extension Azure Machine Learning pour true
:
az k8s-extension update --name azureml --extension-type Microsoft.AzureML.Kubernetes --scope cluster --cluster-name <clusterName> --resource-group <resourceGroupName> --auto-upgrade-minor-version true --cluster-type managedClusters
Paramètres requis pour la mise à jour
Nom du paramètre | Description |
---|---|
--name |
Nom de l’instance d’extension |
--cluster-name |
Nom du cluster sur lequel l’instance d’extension doit être créée |
--resource-group |
Groupe de ressources contenant le cluster |
--cluster-type |
Type de cluster sur lequel l’instance d’extension doit être créée. Pour les clusters Kubernetes avec Azure Arc, utilisez connectedClusters . Pour les clusters AKS, utilisez managedClusters . |
Paramètres facultatifs pour la mise à jour
Nom du paramètre | Description |
---|---|
--auto-upgrade-minor-version |
Propriété booléenne qui spécifie si la version mineure de l’extension est automatiquement mise à niveau. La valeur par défaut est true . Si ce paramètre a la valeur true, vous ne pouvez pas définir le paramètre version , car la version sera mise à jour dynamiquement. Si elle est définie sur false , l’extension ne sera pas automatiquement mise à niveau, même pour les versions de correctifs. |
--version |
Version de l’extension à installer (version spécifique à laquelle épingler l’instance d’extension). Ne doit pas être fournie si la mise à niveau automatique de version mineure est définie sur true . |
--configuration-settings |
Paramètres qui peuvent être transmis dans l’extension pour contrôler sa fonctionnalité. Ceux-ci sont transmis en tant que paires de key=value séparées par espace après le nom du paramètre. Si ce paramètre est utilisé dans la commande, --configuration-settings-file ne peut pas être utilisé dans la même commande. Seuls les paramètres qui nécessitent une mise à jour doivent être fournis. Les paramètres fournis seront remplacés par les valeurs spécifiées. |
--configuration-settings-file |
Chemin d’accès au fichier JSON avec key=value paires à utiliser pour transmettre les paramètres de configuration à l’extension. Si ce paramètre est utilisé dans la commande, --configuration-settings ne peut pas être utilisé dans la même commande. |
--configuration-protected-settings |
Paramètres qui ne sont pas récupérables à l’aide GET d’appels d’API ou de commandes az k8s-extension show . Généralement utilisé pour passer des paramètres sensibles. Ceux-ci sont transmis en tant que paires de key=value séparées par espace après le nom du paramètre. Si ce paramètre est utilisé dans la commande, --configuration-protected-settings-file ne peut pas être utilisé dans la même commande. Lorsque vous mettez à jour un paramètre protégé, tous les paramètres protégés sont censés être spécifiés. Si certains de ces paramètres sont omis, ils seront considérés comme obsolètes puis supprimés. |
--configuration-protected-settings-file |
Chemin d’accès à un fichier JSON avec key=value paires à utiliser pour transmettre des paramètres sensibles à l’extension. Si ce paramètre est utilisé dans la commande, --configuration-protected-settings ne peut pas être utilisé dans la même commande. |
--scope |
Étendue de l’installation de l’extension : cluster ou namespace . |
--release-train |
Les créateurs d’extensions peuvent publier des versions dans différents trains de versions, comme Stable , Preview , etc. Si ce paramètre n’est pas défini explicitement, Stable est utilisé comme valeur par défaut. |
Mettre à niveau l’instance d’extension
Comme indiqué précédemment, si vous définissez auto-upgrade-minor-version
sur true, l’extension est automatiquement mise à niveau lorsqu’une nouvelle version mineure est publiée. Pour la plupart des scénarios, nous vous recommandons d’activer les mises à niveau automatiques. Si vous définissez auto-upgrade-minor-version
sur false, vous devez mettre à niveau l’extension manuellement si vous souhaitez une version plus récente.
Les mises à niveau manuelles sont également requises pour obtenir une nouvelle instance principale d’une extension. Vous pouvez choisir quand effectuer une mise à niveau afin d’éviter tout changement cassant inattendu avec des mises à niveau de version majeures.
Pour mettre à niveau manuellement une instance d’extension, utilisez k8s-extension update
et définissez le paramètre version
pour spécifier une version.
Cet exemple met à jour une instance d’extension Azure Machine Learning vers la version x.y.z :
az k8s-extension update --cluster-name <clusterName> --resource-group <resourceGroupName> --cluster-type connectedClusters --name azureml --version x.y.z
Supprimer une instance d’extension
Pour supprimer une instance d’extension sur un cluster, utilisez k8s-extension delete
, en transmettant des valeurs pour les paramètres obligatoires :
az k8s-extension delete --name azuremonitor-containers --cluster-name <clusterName> --resource-group <resourceGroupName> --cluster-type connectedClusters
Remarque
La ressource Azure représentant cette extension est immédiatement supprimée. La version Helm sur le cluster associé à cette extension n’est supprimée que quand les agents s’exécutant sur le cluster Kubernetes disposent d’une connectivité réseau et peuvent à nouveau accéder aux services Azure pour extraire l’état souhaité.
Étapes suivantes
- Pour obtenir une liste complète des commandes et de leurs paramètres, consultez les informations de référence sur l’interface CLI az k8s-extension.
- En savoir plus sur fonctionnement des extensions avec des clusters Kubernetes avec Arc.
- Passez en revue les extensions de cluster actuellement disponibles pour les Kubernetes avec Azure Arc.
- Obtenez de l’aide résoudre les problèmes d’extension.