Implementación y administración de extensiones de clústeres de Kubernetes habilitado para Azure Arc
Es posible crear instancias de extensión en un clúster de Kubernetes habilitado para Arc, estableciendo parámetros obligatorios y opcionales, incluyendo las opciones relacionadas con las actualizaciones y las configuraciones. También puede ver, enumerar, actualizar y eliminar instancias de extensiones.
Antes de comenzar, 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 CLI de Azure
connectedk8s
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 extensiones de
connectedk8s
yk8s-extension
ya estuvieran instaladas, asegúrese de que se actualicen 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 de arquitectura
linux/amd64
. Si se implementa Flux (GitOps), es posible usar un clúster basado en ARM64 sin un nodolinux/amd64
.- Si no ha conectado aún un clúster, use nuestro inicio rápido.
- Actualice los agentes a la versión más reciente.
Creación de la instancia de extensión
Para crear una instancia de la extensión, use k8s-extension create
. Para ello, pase los valores de los parámetros requeridos.
En este ejemplo se crea una instancia de la extensión Azure Monitor Container Insights 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 tuvieran conectividad de red durante más de 48 horas y no pudieran determinar si se va a crear una extensión en el clúster, dicha extensión cambiará al estado Failed
. Una vez que se produzca, tendrá que ejecutar k8s-extension create
de nuevo para crear un nuevo recurso de extensión de Azure.
Azure Monitor Container Insights es una extensión singleton (solo se necesita una por clúster). Deberá limpiar todas las instalaciones de gráficos de Helm anteriores de Azure Monitor Container Insights (sin extensiones) antes de instalarlos a través de la extensión. Siga las instrucciones para eliminar el gráfico 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. Para la mayoría de los escenarios, use connectedClusters , que corresponde a los clústeres de Kubernetes habilitado para Azure Arc. |
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:
Es posible 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
en true
, o bien es posible establecer la versión de la instancia de extensión manualmente mediante el parámetro --version
. 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 suelen incluir cambios importantes, no se admiten actualizaciones automáticas para nuevas versiones principales de una instancia de extensión. Elija 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 en true , no se puede establecer el parámetro version , ya que la versión se actualizará dinámicamente. Si se establece en false , la extensión no se actualizará automáticamente, ni siquiera 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. Se pasan como pares key=value separados por 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 pares key=value que se usará 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 llamadas API de GET o comandos az k8s-extension show . Normalmente se usa para pasar la configuración confidencial. Se pasan como pares key=value separados por 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 pares key=value que se usará para pasar los valores confidenciales 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 está establecido en cluster . |
--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 está establecido en namespace . |
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
. Para ello, pase los valores de 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 la instancia de una extensión existente, use k8s-extension update
. Para ello, pase los valores para los parámetros obligatorios y opcionales. Los parámetros obligatorios y opcionales son ligeramente diferentes a los usados para crear una instancia de extensión.
En este ejemplo, se actualiza la configuración de auto-upgrade-minor-version
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 clústeres de Kubernetes habilitados para Azure Arc, connectedClusters . Para 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 parámetro version , ya que la versión se actualizará dinámicamente. Si se establece en false , la extensión no se actualizará automáticamente, ni siquiera 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. Se pasan como pares key=value separados por 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 que contiene los pares key=value 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 llamadas API de GET o comandos az k8s-extension show . Normalmente se usa para pasar la configuración confidencial. Se pasan como pares key=value separados por 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 un valor protegido, se espera que se especifiquen todos los valores protegidos. 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 pares key=value que se usará para pasar los valores confidenciales 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 una 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. Es posible elegir cuándo actualizar para evitar cambios importantes inesperados con las actualizaciones de versiones principales.
Para actualizar manualmente la instancia de una extensión, use k8s-extension update
y establezca el parámetro version
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
. Para ello, pase los valores de 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.
Pasos siguientes
- Revise la referencia de la CLI de la extensión az k8s para obtener una lista completa de los 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ústeres disponibles actualmente para Kubernetes habilitado para Azure Arc.
- Obtenga ayuda para solucionar problemas relacionados con extensiones.