Compartilhar via


Início Rápido: Adicionar sinalizadores de recursos a cargas de trabalho no Serviço de Kubernetes do Azure

Neste início rápido, você criará um sinalizador de recurso na Configuração de Aplicativos do Azure e o usará para controlar dinamicamente a visibilidade de uma nova página da Web em um aplicativo ASP.NET Core em execução no AKS sem reiniciá-lo ou reimplantá-lo.

Pré-requisitos

Siga os documentos para usar a configuração dinâmica no Serviço de Kubernetes do Azure.

Criar um sinalizador de recurso

Adicione um sinalizador de recurso chamado Beta ao repositório de Configuração de Aplicativos e deixe Rótulo e Descrição com seus valores padrão. Para obter mais informações sobre como adicionar sinalizadores de recursos a um repositório usando o portal do Azure ou a CLI, acesse Criar um sinalizador de recurso.

Captura de tela mostrando a criação do sinalizador de recursos chamado Beta.

Usar um sinalizador de recurso

Nesta seção, você usará sinalizadores de recursos em um aplicativo Web ASP.NET simples e o executará no AKS (Serviço de Kubernetes do Azure).

  1. Navegue até o diretório do projeto que você criou no Início Rápido e execute o comando a seguir para adicionar uma referência ao pacote NuGet Microsoft.FeatureManagement.AspNetCore versão 3.2.0 ou posterior.

    dotnet add package Microsoft.FeatureManagement.AspNetCore
    
  2. Abra program.cs e adicione o gerenciamento de recursos à coleção de serviços do aplicativo chamando AddFeatureManagement.

    // Existing code in Program.cs
    // ... ...
    
    // Add a JSON configuration source 
    builder.Configuration.AddJsonFile("config/mysettings.json", reloadOnChange: true, optional: false); 
    
    // Add feature management to the container of services.
    builder.Services.AddFeatureManagement();
    
    var app = builder.Build();
    
    // The rest of existing code in program.cs
    // ... ...
    

    Adicione using Microsoft.FeatureManagement; na parte superior do arquivo se ele não estiver presente.

  3. Adicione uma nova página razor vazia chamada Beta no diretório Páginas . Ele inclui dois arquivos Beta.cshtml e Beta.cshtml.cs.

    Abra Beta.cshtml e atualize-o com a seguinte marcação:

    @page
    @model MyWebApp.Pages.BetaModel
    @{
        ViewData["Title"] = "Beta Page";
    }
    
    <h1>This is the beta website.</h1>
    

    Abra Beta.cshtml.cs e adicione FeatureGate atributo à BetaModel classe. O FeatureGate atributo garante que a página Beta só esteja acessível quando o sinalizador de recurso Beta estiver habilitado. Se o sinalizador de recurso Beta não estiver habilitado, a página retornará 404 Não Encontrado.

    using Microsoft.AspNetCore.Mvc.RazorPages;
    using Microsoft.FeatureManagement.Mvc;
    
    namespace MyWebApp.Pages
    {
        [FeatureGate("Beta")]
        public class BetaModel : PageModel
        {
            public void OnGet()
            {
            }
        }
    }   
    
  4. Abra Pages/_ViewImports.cshtml e registre o Auxiliar de Marca do gerenciador de recursos usando uma @addTagHelper diretiva:

    @addTagHelper *, Microsoft.FeatureManagement.AspNetCore
    

    O código anterior permite que o <feature> Auxiliar de Marca seja usado nos arquivos .cshtml do projeto.

  5. Abra _Layout.cshtml no diretório Pages\Shared . Insira uma nova <feature> marca entre os itens de barra de navegação Página Inicial e Privacidade , conforme mostrado nas linhas realçadas abaixo.

    <div class="navbar-collapse collapse d-sm-inline-flex flex-sm-row-reverse">
        <ul class="navbar-nav flex-grow-1">
            <li class="nav-item">
                <a class="nav-link text-dark" asp-area="" asp-page="/Index">Home</a>
            </li>
            <feature name="Beta">
                <li class="nav-item">
                    <a class="nav-link text-dark" asp-area="" asp-page="/Beta">Beta</a>
                </li>
            </feature>
            <li class="nav-item">
                <a class="nav-link text-dark" asp-area="" asp-page="/Privacy">Privacy</a>
            </li>
        </ul>
    </div>
    

    A <feature> marca garante que o item de menu Beta seja mostrado somente quando o sinalizador de recurso Beta estiver habilitado.

  6. Conteinerize o aplicativo e envie a imagem por push para o Registro de Contêiner do Azure.

  7. Implante o aplicativo. Atualize o navegador e a página da Web terá esta aparência:

    Captura de tela mostrando o Provedor do Kubernetes depois de usar configMap sem sinalizador de recurso.

Usar o Provedor do Kubernetes para carregar sinalizadores de recursos

  1. Atualize o arquivo appConfigurationProvider.yaml localizado no diretório de implantação com o conteúdo a seguir.

    apiVersion: azconfig.io/v1
    kind: AzureAppConfigurationProvider
    metadata:
      name: appconfigurationprovider-sample
    spec:
      endpoint: <your-app-configuration-store-endpoint>
      target:
        configMapName: configmap-created-by-appconfig-provider
        configMapData: 
          type: json
          key: mysettings.json
      auth:
        workloadIdentity:
          managedIdentityClientId: <your-managed-identity-client-id>
      featureFlag:
        selectors:
          - keyFilter: 'Beta'
        refresh:
          enabled: true
    

    Dica

    Quando não selectors forem especificados na featureFlag seção, o Provedor de Kubernetes não carregará sinalizadores de recursos do repositório de Configuração de Aplicativos. O intervalo de atualização padrão dos sinalizadores de recursos é de 30 segundos quando featureFlag.refresh habilitado. Você pode personalizar esse comportamento com o parâmetro featureFlag.refresh.interval.

  2. Execute o comando a seguir para aplicar as alterações.

    kubectl apply -f ./Deployment -n appconfig-demo
    
  3. Atualize o sinalizador de recurso Beta no repositório de Configuração de Aplicativos. Habilite o sinalizador selecionando a caixa de seleção em Habilitado.

  4. Depois de atualizar o navegador várias vezes, o conteúdo atualizado ficará visível depois que o ConfigMap for atualizado dentro de 30 segundos.

    Captura de tela mostrando o Provedor do Kubernetes depois de usar configMap com o sinalizador de recurso habilitado.

  5. Selecione o menu Beta . Ele levará você ao site beta que você habilitou dinamicamente.

    Captura de tela mostrando a página beta do Provedor de Kubernetes depois de usar configMap.

Limpar os recursos

Desinstale o Provedor de Kubernetes de Configuração de Aplicativo do cluster do AKS se você quiser manter o cluster do AKS.

helm uninstall azureappconfiguration.kubernetesprovider --namespace azappconfig-system

Se não deseja continuar usando os recursos criados neste artigo, exclua o grupo de recursos que você criou aqui para evitar encargos.

Importante

A exclusão de um grupo de recursos é irreversível. O grupo de recursos e todos os recursos contidos nele são excluídos permanentemente. Certifique-se de não excluir o grupo de recursos ou os recursos incorretos acidentalmente. Se tiver criado os recursos para este artigo dentro de um grupo de recursos que contém outros recursos que você deseja manter, exclua cada um individualmente do respectivo painel em vez de excluir o grupo de recursos.

  1. Entre no portal do Azure e selecione Grupos de recursos.
  2. Na caixa Filtrar por nome..., digite o nome do seu grupo de recursos.
  3. Na lista de resultados, selecione o nome do grupo de recursos para conferir uma visão geral.
  4. Selecione Excluir grupo de recursos.
  5. Você receberá uma solicitação para confirmar a exclusão do grupo de recursos. Insira o nome do grupo de recursos para confirmar e selecione Excluir.

Após alguns instantes, o grupo de recursos e todos os recursos dele são excluídos.

Próximas etapas

Neste início rápido, você:

  • A funcionalidade de gerenciamento de recursos foi adicionada a um aplicativo ASP.NET Core em execução no AKS (Serviço de Kubernetes do Azure).
  • Conectou o cluster do AKS ao repositório de Configuração de Aplicativos usando o Provedor de Kubernetes de Configuração de Aplicativo.
  • Criou um ConfigMap com valores-chave e sinalizadores de recursos do repositório de Configuração de Aplicativos.
  • Executou o aplicativo com a configuração dinâmica do repositório de Configuração de Aplicativos sem alterar o código do aplicativo.

Para saber mais sobre o Provedor de Kubernetes de Configuração de Aplicativo do Azure, consulte a referência do Provedor de Kubernetes de Configuração de Aplicativo do Azure.

Para saber mais sobre a funcionalidade de gerenciamento de recursos, prossiga para o tutorial a seguir.