Partilhar via


Gerenciar uma extensão NFO

Este artigo orienta o gerenciamento de usuários de uma extensão de operador de função de rede (NFO) para o Azure Operator Service Manager. Você usa essa extensão de cluster do Kubernetes para gerenciar cargas de trabalho baseadas em contêiner que a plataforma Azure Operator Nexus hospeda.

Execute os comandos neste artigo depois de preparar o cluster Nexus Azure Kubernetes Service (NAKS) para a extensão de complemento. Os comandos presumem a instalação prévia da CLI do Azure e a autenticação na assinatura de destino.

Criar uma extensão NFO

Para criar uma extensão NFO, execute o comando az k8s-extension createAzure CLI .

Comando

az k8s-extension create --cluster-name
                        --cluster-type {connectedClusters}
                        --extension-type {Microsoft.Azure.HybridNetwork}
                        --name
                        --resource-group
                        --scope {cluster}
                        --release-namespace {azurehybridnetwork}
                        --release-train {preview, stable}
                        --config Microsoft.CustomLocation.ServiceAccount=azurehybridnetwork-networkfunction-operator
                        [--auto-upgrade {false, true}]
                        [--config global.networkfunctionextension.enableClusterRegistry={false, true}]
                        [--config global.networkfunctionextension.enableLocalRegistry={false, true}]
                        [--config global.networkfunctionextension.enableEarlyLoading={false,true}]
                        [--config global.networkfunctionextension.clusterRegistry.highAvailability.enabled={true, false}]
                        [--config global.networkfunctionextension.clusterRegistry.autoScaling.enabled={true, false}]
                        [--config global.networkfunctionextension.webhook.highAvailability.enabled={true, false}]
                        [--config global.networkfunctionextension.webhook.autoScaling.enabled={true, false}]
                        [--config global.networkfunctionextension.clusterRegistry.storageClassName=]
                        [--config global.networkfunctionextension.clusterRegistry.storageSize=]
                        [--config global.networkfunctionextension.webhook.pod.mutation.matchConditionExpression=]
                        [--config global.networkfunctionextension.clusterRegistry.clusterRegistryGCCadence=]
                        [--config global.networkfunctionextension.clusterRegistry.clusterRegistryGCThreshold=]
                        [--config global.networkfunctionextension.clusterRegistry.registryService.scale={"small", "medium", "large"}]
                        [--version]

Parâmetros necessários

--cluster-name -c

  • Nome do cluster Kubernetes.

--cluster-type -t

  • Especifique clusters do Azure Arc, clusters gerenciados do Serviço Kubernetes do Azure (AKS), dispositivos do Azure Arc ou provisionedClusters.
  • Valores aceites: connectedClusters.

--extension-type

  • Nome do tipo de extensão.
  • Valores aceites: Microsoft.Azure.HybridNetwork.

--name -n

  • Nome da instância de extensão.

--resource-group -g

  • Nome do grupo de recursos. Você pode configurar o grupo padrão usando az configure --defaults group=groupname.

--config Microsoft.CustomLocation.ServiceAccount=azurehybridnetwork-networkfunction-operator

  • Você deve fornecer essa configuração.

Parâmetros opcionais

--auto-upgrade

  • Atualize automaticamente a versão menor da instância de extensão.
  • Valores aceites: false, true.
  • Valor predefinido: true.

--release-train

  • Especifique o trem de liberação para o tipo de extensão.
  • Valores aceites: preview, stable.
  • Valor predefinido: stable.

--version

  • Especifique a versão explícita a ser instalada para a instância de extensão se --auto-upgrade-minor-version não estiver habilitada.

Configurações opcionais específicas de funcionalidades

Carregamento lateral

--config global.networkfunctionextension.enableLocalRegistry=

  • Esta configuração permite que os artefatos sejam entregues para o edge por hardware.
  • Valores aceites: false, true.
  • Valor predefinido: false.

Webhook mutante do pod

--config global.networkfunctionextension.webhook.pod.mutation.matchConditionExpression=

  • Esta configuração é um parâmetro opcional. Ele entra em jogo somente quando as funções de rede de contêiner (CNFs) são instaladas no namespace de versão correspondente.

  • Essa configuração configura um controle mais granular sobre as regras e namespaceSelectors.

  • Valor predefinido:

    "((object.metadata.namespace != \"kube-system\") ||  (object.metadata.namespace == \"kube-system\" && has(object.metadata.labels) && (has(object.metadata.labels.app) && (object.metadata.labels.app == \"commissioning\") || (has(object.metadata.labels.name) && object.metadata.labels.name == \"cert-exporter\") || (has(object.metadata.labels.app) && object.metadata.labels.app == \"descheduler\"))))"
    

    A condição de correspondência referenciada implica que os pods aceites no namespace kube-system serão mutados apenas se tiverem pelo menos um dos seguintes rótulos: app == "commissioning", app == "descheduler" ou name == "cert-exporter". Caso contrário, eles não são mutados e continuam a ser extraídos da fonte original de acordo com o gráfico Helm do CNF, componente ou aplicativo.

  • Valor aceito: qualquer expressão CEL (Common Expression Language) válida.

  • Você pode definir ou atualizar esse parâmetro durante a instalação ou atualização da extensão NFO.

  • Essa condição entra em jogo somente quando você está instalando o CNF, componente ou aplicativo no namespace de acordo com as regras e namespaceSelectors. Se você criar mais pods nesse namespace, essa condição será aplicada.

Registro de cluster

--config global.networkfunctionextension.enableClusterRegistry=

  • Essa configuração provisiona um registro no cluster para armazenar artefatos em cache localmente.
  • Os valores padrão habilitam o modo de carregamento lento, a menos que global.networkfunctionextension.enableEarlyLoading=true.
  • Valores aceites: false, true.
  • Valor predefinido: false.

--config global.networkfunctionextension.clusterRegistry.highAvailability.enabled=

  • Essa configuração provisiona o registro de cluster no modo de alta disponibilidade (HA) se o registro de cluster estiver habilitado.
  • Essa configuração usa um volume NAKS nexus-shared na recomendação do AKS se o valor estiver definido como false.
  • A contagem de réplicas do pod do registro é um mínimo de 3 e um máximo de 5.
  • Valores aceites: true, false.
  • Valor predefinido: true.

--config global.networkfunctionextension.clusterRegistry.autoScaling.enabled=

  • Essa configuração provisiona os pods de registro do cluster com dimensionamento automático horizontal.
  • Valores aceites: true, false.
  • Valor predefinido: true.

--config global.networkfunctionextension.webhook.highAvailability.enabled=

  • Essa configuração fornece várias réplicas do webhook para alta disponibilidade.
  • Valores aceites: true, false.
  • Valor predefinido: true.

--config global.networkfunctionextension.webhook.autoScaling.enabled=

  • Esta configuração provisiona os pods do webhook com dimensionamento automático horizontal.
  • Valores aceites: true, false.
  • Valor predefinido: true.

--config global.networkfunctionextension.enableEarlyLoading=

  • Essa configuração permite o carregamento antecipado de artefatos no registro do cluster antes da instalação ou atualização do Helm.
  • Você pode habilitar essa configuração somente quando global.networkfunctionextension.enableClusterRegistry=true.
  • Valores aceites: false, true.
  • Valor predefinido: false.

--config global.networkfunctionextension.clusterRegistry.storageClassName=

  • Você deve fornecer essa configuração quando global.networkfunctionextension.enableClusterRegistry=true.
  • networkfunctionextension provisiona uma declaração de volume persistente (PVC) para artefatos de cache local dessa classe de armazenamento.
  • Valores específicos da plataforma:
    • AKS: managed-csi
    • NAKS (padrão): nexus-shared
    • NAKS (não HA): nexus-volume
    • Azure Stack Edge: managed-premium
  • Valor predefinido: nexus-shared.

Nota

  • Quando você está gerenciando um cluster NAKS usando o Azure Operator Service Manager, os valores de parâmetro padrão habilitam HA como a configuração recomendada.
  • Ao gerenciar um cluster AKS usando o Azure Operator Service Manager, você deve desabilitar a HA usando as seguintes opções de configuração:
   --config global.networkfunctionextension.clusterRegistry.highAvailability.enabled=false
   --config global.networkfunctionextension.webhook.highAvailability.enabled=false
   --config global.networkfunctionextension.clusterRegistry.storageClassName=managed-csi

--config global.networkfunctionextension.clusterRegistry.storageSize=

  • Você deve fornecer essa configuração quando global.networkfunctionextension.enableClusterRegistry=true.
  • Essa configuração define o tamanho que reservamos para o registro do cluster.
  • Esta configuração utiliza unidades como Gi e Ti para dimensionamento.
  • Valor predefinido: 100Gi

--config global.networkfunctionextension.clusterRegistry.clusterRegistryGCCadence=

  • Você deve fornecer esta configuração como um cronograma no formato padrão Unix Crontab.
  • Essa configuração, especificada como uma cadeia de caracteres vazia, desabilita o trabalho agendado para que você possa desativar a execução da coleta de lixo.
  • Valor predefinido: 0 0 * * *. Executa o trabalho uma vez por dia.

--config global.networkfunctionextension.clusterRegistry.clusterRegistryGCThreshold=

  • Essa configuração especifica o valor de limite percentual para disparar o processo de coleta de lixo para o registro de cluster.
  • Essa configuração dispara o processo de coleta de lixo quando o uso do registro do cluster excede esse valor.
  • Valor predefinido: 0.

--config global.networkfunctionextension.clusterRegistry.registryService.scale=

  • Essa configuração define os recursos de CPU e memória para o registro do cluster como uma opção de escala predefinida.

  • Valores aceites: small, medium, large.

  • Valor predefinido: medium.

  • A seguir estão as especificações de recursos do Registro para todas as três escalas:

        - requests:
          - small: cpu: 100m, memory: 250Mi
          - medium: cpu: 250m, memory: 500Mi
          - large: cpu: 500m, memory: 1Gi
        - limits:
          - small: cpu: 100m, memory: 2Gi
          - medium: cpu: 500m, memory: 2Gi
          - large: cpu: 1, memory: 4Gi
    

Atualizar uma extensão NFO

Para atualizar uma extensão NFO, execute o comando az k8s-extension updateAzure CLI :

az k8s-extension update --resource-group
                        --cluster-name
                        --cluster-type {connectedClusters}
                        --extension-type {Microsoft.Azure.HybridNetwork}
                        --name
                        --release-namespace {azurehybridnetwork}
                        --release-train {preview, stable}
                        --config Microsoft.CustomLocation.ServiceAccount=azurehybridnetwork-networkfunction-operator
                        [--version] {version-target}
                        [--config global.networkfunctionextension.enableClusterRegistry={false, true}]
                        [--config global.networkfunctionextension.enableLocalRegistry={false, true}]
                        [--config global.networkfunctionextension.enableEarlyLoading={false,true}]
                        [--config global.networkfunctionextension.clusterRegistry.highAvailability.enabled={true, false}]
                        [--config global.networkfunctionextension.clusterRegistry.autoScaling.enabled={true, false}]
                        [--config global.networkfunctionextension.webhook.highAvailability.enabled={true, false}]
                        [--config global.networkfunctionextension.webhook.autoScaling.enabled={true, false}]
                        [--config global.networkfunctionextension.clusterRegistry.storageClassName=]
                        [--config global.networkfunctionextension.clusterRegistry.storageSize=]
                        [--config global.networkfunctionextension.webhook.pod.mutation.matchConditionExpression=]
                        [--config global.networkfunctionextension.clusterRegistry.clusterRegistryGCCadence=]
                        [--config global.networkfunctionextension.clusterRegistry.clusterRegistryGCThreshold=]

Excluir uma extensão NFO

Para excluir uma extensão NFO, execute o comando az k8s-extension deleteAzure CLI :

az k8s-extension delete --resource-group
                        --cluster-name
                        --cluster-type {connectedClusters}
                        --extension-type {Microsoft.Azure.HybridNetwork}
                        --name
                        --release-namespace {azurehybridnetwork}
                        --release-train {preview, stable}
                        --config Microsoft.CustomLocation.ServiceAccount=azurehybridnetwork-networkfunction-operator

Exemplos

Crie uma extensão NFO com atualização automática:

az k8s-extension create --resource-group myresourcegroup --cluster-name mycluster --name myextension --cluster-type connectedClusters --extension-type Microsoft.Azure.HybridNetwork --scope cluster --config Microsoft.CustomLocation.ServiceAccount=azurehybridnetwork-networkfunction-operator --release-namespace azurehybridnetwork

Crie uma extensão NFO com uma versão fixada:

az k8s-extension create --resource-group myresourcegroup --cluster-name mycluster --name myextension --cluster-type connectedClusters --extension-type Microsoft.Azure.HybridNetwork --auto-upgrade-minor-version false --scope cluster --config Microsoft.CustomLocation.ServiceAccount=azurehybridnetwork-networkfunction-operator --release-namespace azurehybridnetwork --version 1.0.2711-7

Crie uma extensão NFO com o recurso de registro de cluster (modo de carregamento lento padrão) habilitado no NAKS:

az k8s-extension create --resource-group myresourcegroup --cluster-name mycluster --name myextension --cluster-type connectedClusters --extension-type Microsoft.Azure.HybridNetwork --scope cluster --config Microsoft.CustomLocation.ServiceAccount=azurehybridnetwork-networkfunction-operator --release-namespace azurehybridnetwork --config global.networkfunctionextension.enableClusterRegistry=true --config global.networkfunctionextension.clusterRegistry.storageSize=100Gi

Crie uma extensão NFO com o recurso de registro de cluster (modo de carregamento lento padrão) ativado no AKS:

az k8s-extension create --resource-group myresourcegroup --cluster-name mycluster --name myextension --cluster-type connectedClusters --extension-type Microsoft.Azure.HybridNetwork --scope cluster --config Microsoft.CustomLocation.ServiceAccount=azurehybridnetwork-networkfunction-operator --release-namespace azurehybridnetwork --config global.networkfunctionextension.enableClusterRegistry=true --config global.networkfunctionextension.clusterRegistry.highAvailability.enabled=false --config global.networkfunctionextension.clusterRegistry.storageClassName=managed-csi --config global.networkfunctionextension.clusterRegistry.storageSize=100Gi

Crie uma extensão NFO com o recurso de registro de cluster (carregamento antecipado) habilitado:

az k8s-extension create --resource-group myresourcegroup --cluster-name mycluster --name myextension --cluster-type connectedClusters --extension-type Microsoft.Azure.HybridNetwork --scope cluster --config Microsoft.CustomLocation.ServiceAccount=azurehybridnetwork-networkfunction-operator --release-namespace azurehybridnetwork --config global.networkfunctionextension.enableClusterRegistry=true --config global.networkfunctionextension.enableEarlyLoading=true --config global.networkfunctionextension.clusterRegistry.storageClassName=managed-csi --config global.networkfunctionextension.clusterRegistry.storageSize=100Gi

Crie uma extensão NFO com o recurso de carregamento lateral ativado:

az k8s-extension create --resource-group myresourcegroup --cluster-name mycluster --name myextension --cluster-type connectedClusters --extension-type Microsoft.Azure.HybridNetwork --scope cluster --config Microsoft.CustomLocation.ServiceAccount=azurehybridnetwork-networkfunction-operator --release-namespace azurehybridnetwork --config global.networkfunctionextension.enableLocalRegistry=true

Atualize uma extensão NFO para habilitar o registro do cluster:

az k8s-extension update --resource-group naks-1-rg --cluster-name naks-1  --cluster-type connectedClusters --name networkfunction-operator  --extension-type Microsoft.Azure.HybridNetwork --release-namespace azurehybridnetwork --config networkFunctionExtension.EnableManagedInClusterEdgeRegistry=true –-config networkFunctionExtension.EdgeRegistrySizeInGB=1024

Atualize uma extensão NFO para alcançar uma nova versão de destino:

az k8s-extension update --resource-group naks-1-rg --cluster-name naks-1  --cluster-type connectedClusters --name networkfunction-operator  --extension-type Microsoft.Azure.HybridNetwork --release-namespace azurehybridnetwork --version X.X.XXXX-YYY