Implantar e gerenciar extensões de cluster do Kubernetes habilitado para Azure Arc
Você pode criar instâncias de extensão em um cluster do Kubernetes habilitado para Arc, definindo parâmetros obrigatórios e opcionais, incluindo opções relacionadas a atualizações e configurações. Você também pode exibir, listar, atualizar e excluir instâncias de extensão.
Antes de começar, leia a visão geral conceitual das extensões de cluster do Kubernetes habilitadas para Arc e examine a lista de extensões disponíveis no momento.
Pré-requisitos
A versão mais recente da CLI do Azure.
As versões mais recentes das extensões
connectedk8s
ek8s-extension
da CLI do Azure. Instale essas extensões executando os seguintes comandos:az extension add --name connectedk8s az extension add --name k8s-extension
Se as extensões
connectedk8s
ek8s-extension
já estiverem instalados, verifique se eles estão atualizados para a versão mais recente usando os seguintes comandos:az extension update --name connectedk8s az extension update --name k8s-extension
Um cluster conectado do Kubernetes habilitado para Azure Arc existente, com pelo menos um nó de sistema operacional e tipo de arquitetura
linux/amd64
. Se a implantação do Flux (GitOps), você poderá usar um cluster baseado em ARM64 sem um nólinux/amd64
.- Se você ainda não tiver conectado um cluster, use nosso início rápido.
- Atualize seus agentes para a última versão.
Criar instância de extensão
Para criar uma nova instância de extensão, use k8s-extension create
, passando valores para os parâmetros necessários.
Este exemplo cria uma instância de extensão dos Insights de Contêiner do Azure Monitor em um cluster do Kubernetes habilitado para o 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
Saída:
{
"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"
}
Observação
O serviço não pode reter informações confidenciais por mais de 48 horas. Se os agentes do Kubernetes habilitados para Azure Arc não tiverem conectividade de rede por mais de 48 horas e não puderem determinar se devem criar uma extensão no cluster, a extensão fará a transição para o estado Failed
. Depois que isso acontecer, você precisará executar k8s-extension create
novamente para criar um novo recurso do Azure de extensão.
Os Insights de Contêiner do Azure Monitor é uma extensão singleton (apenas uma necessária por cluster). Você precisará limpar as instalações anteriores do gráfico Helm dos Insights de Contêiner do Azure Monitor (sem extensões) antes de instalar o mesmo por meio de extensões. Siga as instruções para excluir o gráfico Helm antes de executar az k8s-extension create
.
Parâmetros obrigatórios
Os parâmetros a seguir são necessários ao usar az k8s-extension create
para criar uma instância de extensão.
Nome do parâmetro | Descrição |
---|---|
--name |
Nome da instância da extensão |
--extension-type |
O tipo de extensão que você deseja instalar no cluster. Por exemplo: Microsoft.AzureMonitor.Containers, microsoft.azuredefender.kubernetes |
--scope |
Escopo da instalação para a extensão: cluster ou namespace |
--cluster-name |
Nome do recurso do Kubernetes habilitado para Azure Arc no qual a instância de extensão precisa ser criada |
--resource-group |
O grupo de recursos que contém o recurso Kubernetes habilitado para Azure Arc |
--cluster-type |
O tipo de cluster no qual a instância de extensão precisa ser criada. Para a maioria dos cenários, use connectedClusters , que corresponde aos clusters do Kubernetes habilitados para Azure Arc. |
Parâmetros opcionais
Use um ou mais desses parâmetros opcionais conforme necessário para seus cenários, juntamente com os parâmetros necessários.
Observação
Você pode optar por atualizar automaticamente sua instância de extensão para as versões secundárias e de patch mais recentes definindo auto-upgrade-minor-version
para true
ou, em vez disso, pode definir a versão da instância de extensão manualmente usando o parâmetro --version
. Recomendamos habilitar atualizações automáticas para versões secundárias e de patch para que você sempre tenha os patches de segurança e os recursos mais recentes.
Como as atualizações de versão principais podem incluir alterações significativas, não há suporte para atualizações automáticas para novas versões principais de uma instância de extensão. Você pode escolher quando atualizar manualmente as instâncias de extensão para uma nova versão principal.
Nome do parâmetro | Descrição |
---|---|
--auto-upgrade-minor-version |
Propriedade booliana que determina se a versão secundária da extensão é atualizada automaticamente. A configuração padrão é true . Se esse parâmetro for definido como true , você não poderá definir o parâmetro version , pois a versão será atualizada dinamicamente. Se definido como false , a extensão não será atualizada automaticamente, mesmo para versões de patch. |
--version |
Versão da extensão a ser instalada (versão específica para fixar a instância da extensão). Não deve ser fornecido se auto-upgrade-minor-version estiver definido como true . |
--configuration-settings |
Configurações que podem ser passadas para a extensão a fim de controlar sua funcionalidade. Eles são passados como pares key=value separados por espaço após o nome do parâmetro. Se esse parâmetro for usado no comando, --configuration-settings-file não poderá ser usado no mesmo comando. |
--configuration-settings-file |
Caminho para um arquivo JSON com pares key=value a serem usados para passar as configurações para a extensão. Se esse parâmetro for usado no comando, --configuration-settings não poderá ser usado no mesmo comando. |
--configuration-protected-settings |
Configurações que não são recuperáveis usando GET chamadas à API ou comandos az k8s-extension show . Normalmente usado para passar configurações confidenciais. Eles são passados como pares key=value separados por espaço após o nome do parâmetro. Se esse parâmetro for usado no comando, --configuration-protected-settings-file não poderá ser usado no mesmo comando. |
--configuration-protected-settings-file |
Caminho para um arquivo JSON com pares key=value a serem usados para passar configurações confidenciais para a extensão. Se esse parâmetro for usado no comando, --configuration-protected-settings não poderá ser usado no mesmo comando. |
--release-namespace |
Esse parâmetro indica o namespace no qual a versão será criada. Relevante somente se scope estiver definido como cluster . |
--release-train |
Os autores de extensão podem publicar versões em conjuntos de versões diferentes, como Stable , Preview etc. Se esse parâmetro não for definido explicitamente, Stable será usado como padrão. |
--target-namespace |
Indica o namespace no qual a versão será criada. A permissão da conta do sistema criada para esta instância de extensão será restrita a este namespace. Relevante somente se scope estiver definido como namespace . |
Mostrar detalhes da extensão
Para exibir detalhes de uma instância de extensão instalada atualmente, use k8s-extension show
, passando valores para os parâmetros obrigatórios.
az k8s-extension show --name azuremonitor-containers --cluster-name <clusterName> --resource-group <resourceGroupName> --cluster-type connectedClusters
Saída:
{
"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"
}
Listar todas as extensões instaladas no cluster
Para exibir uma lista de todas as extensões instaladas em um cluster, use k8s-extension list
, passando valores para os parâmetros obrigatórios.
az k8s-extension list --cluster-name <clusterName> --resource-group <resourceGroupName> --cluster-type connectedClusters
Saída:
[
{
"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"
}
]
Atualizar instância de extensão
Observação
Confira a documentação do tipo de extensão específico para entender as configurações específicas em --configuration-settings
e --configuration-protected-settings
que podem ser atualizadas. Para --configuration-protected-settings
, todas as configurações devem ser fornecidas, mesmo que apenas uma configuração esteja sendo atualizada. Se qualquer uma dessas configurações for omitida, ela será considerada obsoleta e será excluída.
Para atualizar uma instância de extensão existente, use k8s-extension update
, passando valores para os parâmetros obrigatórios e opcionais. Os parâmetros obrigatórios e opcionais são ligeiramente diferentes daqueles usados para criar uma instância de extensão.
Este exemplo atualiza a configuração de auto-upgrade-minor-version
de uma instância de extensão do Azure Machine Learning para 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 necessários para atualização
Nome do parâmetro | Descrição |
---|---|
--name |
Nome da instância da extensão |
--cluster-name |
Nome do cluster no qual a instância de extensão deve ser criada |
--resource-group |
O grupo de recursos que contém o cluster |
--cluster-type |
O tipo de cluster no qual a instância de extensão precisa ser criada. Para clusters do Kubernetes habilitados para Azure Arc, use connectedClusters . Para clusters do AKS, use managedClusters . |
Parâmetros opcionais para atualização
Nome do parâmetro | Descrição |
---|---|
--auto-upgrade-minor-version |
Propriedade booliana que especifica se a versão secundária da extensão é atualizada automaticamente. A configuração padrão é true . Se esse parâmetro for definido como true, você não poderá definir o parâmetro version , pois a versão será atualizada dinamicamente. Se definido como false , a extensão não será atualizada automaticamente, mesmo para versões de patch. |
--version |
Versão da extensão a ser instalada (versão específica para fixar a instância da extensão). Não deverá ser fornecida se a versão secundária da atualização automática estiver definida como true . |
--configuration-settings |
Configurações que podem ser passadas para a extensão a fim de controlar sua funcionalidade. Eles são passados como pares key=value separados por espaço após o nome do parâmetro. Se esse parâmetro for usado no comando, --configuration-settings-file não poderá ser usado no mesmo comando. Somente as configurações que exigem uma atualização precisam ser fornecidas. As configurações fornecidas serão substituídas pelos valores especificados. |
--configuration-settings-file |
Caminho para o arquivo JSON com pares key=value a serem usados para passar as configurações de configuração para a extensão. Se esse parâmetro for usado no comando, --configuration-settings não poderá ser usado no mesmo comando. |
--configuration-protected-settings |
Configurações que não são recuperáveis usando GET chamadas à API ou comandos az k8s-extension show . Normalmente usado para passar configurações confidenciais. Eles são passados como pares key=value separados por espaço após o nome do parâmetro. Se esse parâmetro for usado no comando, --configuration-protected-settings-file não poderá ser usado no mesmo comando. Quando você atualiza uma configuração protegida, todas as configurações protegidas devem ser especificadas. Se qualquer uma dessas configurações for omitida, ela será considerada obsoleta e será excluída. |
--configuration-protected-settings-file |
Caminho para um arquivo JSON com pares key=value a serem usados para passar configurações confidenciais para a extensão. Se esse parâmetro for usado no comando, --configuration-protected-settings não poderá ser usado no mesmo comando. |
--scope |
Escopo da instalação da extensão – cluster ou namespace . |
--release-train |
Os autores de extensão podem publicar versões em conjuntos de versões diferentes, como Stable , Preview etc. Se esse parâmetro não for definido explicitamente, Stable será usado como padrão. |
Atualizar instância de extensão
Conforme observado anteriormente, se você definir auto-upgrade-minor-version
como true, a extensão será atualizada automaticamente quando uma nova versão secundária for lançada. Para a maioria dos cenários, recomendamos habilitar atualizações automáticas. Se você definir auto-upgrade-minor-version
como false, precisará atualizar a extensão manualmente se quiser uma versão mais recente.
Atualizações manuais também são necessárias para obter uma nova instância principal de uma extensão. Você pode escolher quando atualizar para evitar alterações significativas inesperadas com atualizações de versão principais.
Para atualizar manualmente uma instância de extensão, use k8s-extension update
e defina o parâmetro version
para especificar uma versão.
Este exemplo atualiza uma instância de extensão do Azure Machine Learning para a versão x.y.z:
az k8s-extension update --cluster-name <clusterName> --resource-group <resourceGroupName> --cluster-type connectedClusters --name azureml --version x.y.z
Excluir instância de extensão
Para excluir uma instância de extensão em um cluster, use k8s-extension delete
, passando valores para os parâmetros obrigatórios:
az k8s-extension delete --name azuremonitor-containers --cluster-name <clusterName> --resource-group <resourceGroupName> --cluster-type connectedClusters
Observação
O recurso do Azure que representa essa extensão é excluído imediatamente. A versão Helm no cluster associado a essa extensão só é excluída quando os agentes em execução no cluster do Kubernetes têm conectividade de rede e podem entrar em contato com os serviços do Azure novamente para buscar o estado desejado.
Próximas etapas
- Examine a referência az k8s-extension da CLI para obter uma lista abrangente de comandos e parâmetros.
- Saiba mais sobre como as extensões funcionam com clusters do Kubernetes habilitados para Arc.
- Examine as extensões de cluster atualmente disponíveis para o Kubernetes habilitado para Azure Arc.
- Obtenha ajuda solução de problemas de extensão.