Implementación y administración de extensiones de clústeres de Kubernetes habilitado para Azure Arc
Puede crear instancias de extensión en un clúster de Kubernetes habilitado para Arc, estableciendo parámetros obligatorios y opcionales, incluidas las opciones relacionadas con las actualizaciones y las configuraciones. También puede ver, enumerar, actualizar y eliminar instancias de extensiones.
Antes de empezar, lea la introducción conceptual de las extensiones de clúster de Kubernetes habilitadas para Arc y revise la lista de extensiones disponibles actualmente.
Requisitos previos
La versión más reciente de la CLI de Azure.
Las versiones más recientes de las extensiones de la
connectedk8s
CLI de Azure yk8s-extension
. Instale estas extensiones mediante la ejecución de los siguientes comandos:az extension add --name connectedk8s az extension add --name k8s-extension
Si las
connectedk8s
extensiones yk8s-extension
ya están instaladas, asegúrese de que se actualizan a la versión más reciente mediante los siguientes comandos:az extension update --name connectedk8s az extension update --name k8s-extension
Un clúster conectado a Kubernetes habilitado para Azure Arc existente, con al menos un nodo del sistema operativo y el tipo
linux/amd64
de arquitectura . Si implementa Flux (GitOps), puede usar un clúster basado en ARM64 sin unlinux/amd64
nodo.- Si no ha conectado aún un clúster, use nuestra guía de inicio rápido.
- Actualice los agentes a la versión más reciente.
Nota
La instalación de extensiones de Azure Arc en clústeres híbridos de AKS aprovisionados desde Azure se encuentra actualmente en versión preliminar, con compatibilidad con las extensiones Open Service Mesh habilitado para Azure Arc, Proveedor de secretos de Azure Key Vault, Flux (GitOps) y Microsoft Defender for Cloud.
Creación de la instancia de extensión
Para crear una nueva instancia de extensión, use k8s-extension create
, pasando valores para los parámetros necesarios.
En este ejemplo se crea una instancia de extensión de Container Insights de Azure Monitor en un clúster de Kubernetes habilitado para 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
Salida:
{
"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"
}
Nota:
El servicio no puede conservar información confidencial durante más de 48 horas. Si los agentes de Kubernetes habilitados para Azure Arc no tienen conectividad de red durante más de 48 horas y no pueden determinar si se va a crear una extensión en el clúster, la extensión pasa al Failed
estado. Una vez que esto suceda, tendrá que volver a ejecutarse k8s-extension create
para crear un recurso de Azure de extensión nuevo.
Azure Monitor Container Insights es una extensión singleton (solo una necesaria por clúster). Tendrá que limpiar las instalaciones de gráficos de Helm anteriores de Azure Monitor Container Insights (sin extensiones) antes de instalar lo mismo a través de extensiones. Siga las instrucciones para eliminar el gráfico de Helm antes de ejecutar az k8s-extension create
.
Parámetros obligatorios
Los parámetros siguientes son necesarios al usar az k8s-extension create
para crear una instancia de extensión.
Nombre de parámetro | Descripción |
---|---|
--name |
Nombre de la instancia de extensión. |
--extension-type |
Tipo de extensión que desea instalar en el clúster. Por ejemplo: Microsoft.AzureMonitor.Containers, microsoft.azuredefender.kubernetes. |
--scope |
Ámbito de instalación de la extensión: cluster o namespace |
--cluster-name |
Nombre del recurso de Kubernetes habilitado para Azure Arc en el que se debe crear la instancia de la extensión. |
--resource-group |
Grupo de recursos que contiene el recurso de Kubernetes habilitado para Azure Arc. |
--cluster-type |
Tipo de clúster en el que se debe crear la instancia de extensión. En la mayoría de los escenarios, use connectedClusters , que corresponde a los clústeres de Kubernetes habilitados para Azure Arc. |
Nota
Al trabajar con clústeres híbridos de AKS aprovisionados desde Azure, debe establecer que --cluster-type
use provisionedClusters
y agregue --cluster-resource-provider microsoft.hybridcontainerservice
también al comando . La instalación de extensiones de Azure Arc en clústeres híbridos de AKS aprovisionados desde Azure se encuentra actualmente en versión preliminar.
Parámetros opcionales
Use uno o varios de estos parámetros opcionales según sea necesario para los escenarios, junto con los parámetros necesarios.
Nota
Puede optar por actualizar automáticamente la instancia de extensión a las versiones secundarias y de revisión más recientes estableciendo auto-upgrade-minor-version
true
en o, en su lugar, puede establecer la versión de la instancia de extensión manualmente mediante el --version
parámetro . Se recomienda habilitar las actualizaciones automáticas para versiones secundarias y de revisión para que siempre tenga las funcionalidades y revisiones de seguridad más recientes.
Dado que las actualizaciones de versiones principales pueden incluir cambios importantes, no se admiten actualizaciones automáticas para las nuevas versiones principales de una instancia de extensión. Puede elegir cuándo actualizar manualmente las instancias de extensión a una nueva versión principal.
Nombre de parámetro | Descripción |
---|---|
--auto-upgrade-minor-version |
Propiedad booleana que determina si la versión secundaria de la extensión se actualiza automáticamente. El valor predeterminado es true . Si este parámetro se establece true en , no se puede establecer el version parámetro, ya que la versión se actualizará dinámicamente. Si se establece en false , la extensión no se actualizará automáticamente, incluso para las versiones de revisión. |
--version |
Versión de la extensión que se va a instalar (versión específica en la que se fijará la instancia de extensión). No se debe proporcionar si auto-upgrade-minor-version se establece en true . |
--configuration-settings |
Configuración que se puede pasar a la extensión para controlar su funcionalidad. Estos se pasan como pares separados por key=value espacios después del nombre del parámetro. Si se usa este parámetro, no se podrá emplear --configuration-settings-file en el mismo comando. |
--configuration-settings-file |
Ruta de acceso a un archivo JSON con key=value pares que se usarán para pasar valores de configuración a la extensión. Si se usa este parámetro, no se podrá emplear --configuration-settings en el mismo comando. |
--configuration-protected-settings |
Configuración que no se puede recuperar mediante GET llamadas API o az k8s-extension show comandos. Normalmente se usa para pasar la configuración confidencial. Estos se pasan como pares separados por key=value espacios después del nombre del parámetro. Si se usa este parámetro, no se podrá emplear --configuration-protected-settings-file en el mismo comando. |
--configuration-protected-settings-file |
Ruta de acceso a un archivo JSON con key=value pares que se usarán para pasar la configuración confidencial a la extensión. Si se usa este parámetro, no se podrá emplear --configuration-protected-settings en el mismo comando. |
--release-namespace |
Este parámetro indica el espacio de nombres en el que se creará la versión. Solo es relevante si scope se establece cluster en . |
--release-train |
Los autores de las extensiones pueden publicar las versiones en series de versiones diferentes, como Stable , Preview , etc. Si este parámetro no se establece explícitamente, Stable se usa como valor predeterminado. |
--target-namespace |
Indica el espacio de nombres en el que se creará la versión. El permiso de la cuenta del sistema creada para esta instancia de extensión está restringido a este espacio de nombres. Solo es relevante si scope se establece namespace en . |
Mostrar detalles de la extensión
Para ver los detalles de una instancia de extensión que esté instalada, use k8s-extension show
; para ello, pase valores para los parámetros obligatorios.
az k8s-extension show --name azuremonitor-containers --cluster-name <clusterName> --resource-group <resourceGroupName> --cluster-type connectedClusters
Salida:
{
"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"
}
Lista de todas las extensiones instaladas en el clúster
Para ver una lista de todas las extensiones instaladas en un clúster, use k8s-extension list
, pasando valores para los parámetros obligatorios.
az k8s-extension list --cluster-name <clusterName> --resource-group <resourceGroupName> --cluster-type connectedClusters
Salida:
[
{
"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"
}
]
Actualización de la instancia de extensión
Nota
Consulte la documentación del tipo de extensión específico para comprender la configuración específica de --configuration-settings
y --configuration-protected-settings
que se pueden actualizar. Para --configuration-protected-settings
, se espera que se proporcionen todas las configuraciones, incluso si solo se está actualizando una configuración. Si se omiten algunos de estos valores, se considerarán obsoletos y se eliminarán.
Para actualizar una instancia de extensión existente, use k8s-extension update
, pasando valores para los parámetros obligatorios y opcionales. Los parámetros obligatorios y opcionales son ligeramente diferentes de los usados para crear una instancia de extensión.
En este ejemplo se actualiza la auto-upgrade-minor-version
configuración de una instancia de extensión de Azure Machine Learning en 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
Parámetros necesarios para la actualización
Nombre de parámetro | Descripción |
---|---|
--name |
Nombre de la instancia de extensión. |
--cluster-name |
Nombre del clúster en el que se debe crear la instancia de extensión |
--resource-group |
Grupo de recursos que contiene el clúster |
--cluster-type |
Tipo de clúster en el que se debe crear la instancia de extensión. Para los clústeres de Kubernetes habilitados para Azure Arc, use connectedClusters . Para los clústeres de AKS, use managedClusters . |
Parámetros opcionales para la actualización
Nombre de parámetro | Descripción |
---|---|
--auto-upgrade-minor-version |
Propiedad booleana que especifica si la versión secundaria de la extensión se actualiza automáticamente. El valor predeterminado es true . Si este parámetro se establece en true, no se puede establecer el version parámetro, ya que la versión se actualizará dinámicamente. Si se establece en false , la extensión no se actualizará automáticamente, incluso para las versiones de revisión. |
--version |
Versión de la extensión que se va a instalar (versión específica en la que se fijará la instancia de extensión). No se debe proporcionar si auto-upgrade-minor-version está establecido en true . |
--configuration-settings |
Configuración que se puede pasar a la extensión para controlar su funcionalidad. Estos se pasan como pares separados por key=value espacios después del nombre del parámetro. Si se usa este parámetro, no se podrá emplear --configuration-settings-file en el mismo comando. Solo se deben proporcionar los valores que requieren una actualización. La configuración proporcionada se reemplazará por los valores especificados. |
--configuration-settings-file |
Ruta de acceso al archivo JSON con key=value pares que se usarán para pasar los valores de configuración a la extensión. Si se usa este parámetro, no se podrá emplear --configuration-settings en el mismo comando. |
--configuration-protected-settings |
Configuración que no se puede recuperar mediante GET llamadas API o az k8s-extension show comandos. Normalmente se usa para pasar la configuración confidencial. Estos se pasan como pares separados por key=value espacios después del nombre del parámetro. Si se usa este parámetro, no se podrá emplear --configuration-protected-settings-file en el mismo comando. Al actualizar una configuración protegida, se espera que se especifique toda la configuración protegida. Si se omiten algunos de estos valores, se considerarán obsoletos y se eliminarán. |
--configuration-protected-settings-file |
Ruta de acceso a un archivo JSON con key=value pares que se usarán para pasar la configuración confidencial a la extensión. Si se usa este parámetro, no se podrá emplear --configuration-protected-settings en el mismo comando. |
--scope |
Ámbito de instalación de la extensión: cluster o namespace . |
--release-train |
Los autores de las extensiones pueden publicar las versiones en series de versiones diferentes, como Stable , Preview , etc. Si este parámetro no se establece explícitamente, Stable se usa como valor predeterminado. |
Actualización de la instancia de extensión
Como se indicó anteriormente, si se establece auto-upgrade-minor-version
en true, la extensión se actualizará automáticamente cuando se publique una nueva versión secundaria. En la mayoría de los escenarios, se recomienda habilitar las actualizaciones automáticas. Si establece auto-upgrade-minor-version
en false, tendrá que actualizar la extensión manualmente si desea una versión más reciente.
Las actualizaciones manuales también son necesarias para obtener una nueva instancia principal de una extensión. Puede elegir cuándo actualizar para evitar cambios importantes inesperados con las actualizaciones de versiones principales.
Para actualizar manualmente una instancia de extensión, use k8s-extension update
y establezca el version
parámetro para especificar una versión.
En este ejemplo se actualiza una instancia de extensión de Azure Machine Learning a la versión x.y.z:
az k8s-extension update --cluster-name <clusterName> --resource-group <resourceGroupName> --cluster-type connectedClusters --name azureml --version x.y.z
Eliminación de una instancia de extensión
Para eliminar una instancia de extensión en un clúster, use k8s-extension delete
, pasando valores para los parámetros obligatorios:
az k8s-extension delete --name azuremonitor-containers --cluster-name <clusterName> --resource-group <resourceGroupName> --cluster-type connectedClusters
Nota
El recurso de Azure que representa esta extensión se elimina inmediatamente. La versión de Helm del clúster asociado a esta extensión solo se eliminará cuando los agentes que se ejecutan en el clúster de Kubernetes tengan conectividad de red y puedan ponerse en contacto con los servicios de Azure de nuevo para recuperar el estado deseado.
Importante
Al trabajar con clústeres híbridos de AKS aprovisionados desde Azure, debe agregar --yes
para eliminar el comando. La instalación de extensiones de Azure Arc en clústeres híbridos de AKS aprovisionados desde Azure se encuentra actualmente en versión preliminar.
Clústeres híbridos de AKS aprovisionados desde Azure (versión preliminar)
Puede implementar extensiones en clústeres híbridos de AKS aprovisionados desde Azure. Sin embargo, hay algunas diferencias clave que hay que tener en cuenta para poder realizar la implementación correctamente:
El valor del parámetro
--cluster-type
debe serprovisionedClusters
.Debe agregar
--cluster-resource-provider microsoft.hybridcontainerservice
a los comandos.Al eliminar una instancia de extensión, debe agregar
--yes
al comando:az k8s-extension delete --name azuremonitor-containers --cluster-name <clusterName> --resource-group <resourceGroupName> --cluster-type provisionedClusters --cluster-resource-provider microsoft.hybridcontainerservice --yes
Además, debe usar la versión más reciente del módulo k8s-extension
de la CLI de Azure (versión >= 1.3.3). Utilice los siguientes comandos para agregar o actualizar a la versión más reciente:
# add if you do not have this installed
az extension add --name k8s-extension
# update if you do have the module installed
az extension update --name k8s-extension
Importante
La instalación de extensiones de Azure Arc en clústeres híbridos de AKS aprovisionados desde Azure se encuentra actualmente en versión preliminar.
Pasos siguientes
- Revise la referencia de la CLI az k8s-extension para obtener una lista completa de comandos y parámetros.
- Obtenga más información sobre cómo funcionan las extensiones con clústeres de Kubernetes habilitados para Arc.
- Revise las extensiones de clúster disponibles actualmente para Kubernetes habilitado para Azure Arc.