Exercício – configurar o ambiente do Azure DevOps

Concluído

Nesta seção, você configurará sua organização do Azure DevOps para continuar com o restante deste módulo e criar um ambiente do Serviço Kubernetes do Azure (AKS) para implantar seu aplicativo.

Para alcançar estes objetivos, irá:

  • Adicione um usuário à sua organização do Azure DevOps.
  • Configure seu projeto de DevOps do Azure.
  • Gerencie seu fluxo de trabalho com os Painéis do Azure.
  • Crie recursos do Azure usando a CLI do Azure.
  • Crie variáveis de pipeline no Azure Pipelines.
  • Crie uma conexão de serviço para autenticar com o Azure.
  • Atualize seu manifesto de implantação do Kubernetes.

Adicionar um utilizador à sua organização

Para concluir este módulo, é necessária uma subscrição do Azure. Pode começar a utilizar o Azure gratuitamente.

Embora não seja necessário trabalhar com o Azure DevOps, uma assinatura do Azure é necessária para implantar nos recursos do Azure por meio do Azure DevOps. Para tornar o processo mais simples, use a mesma conta da Microsoft para entrar na sua assinatura do Azure e na sua organização do Azure DevOps.

Se você entrar no Azure e no Azure DevOps usando contas da Microsoft diferentes, ainda poderá continuar adicionando um usuário à sua organização de DevOps na conta da Microsoft associada à sua assinatura do Azure. Consulte Adicionar usuários à sua organização ou projeto para obter mais detalhes. Ao adicionar o usuário, selecione o nível de acesso Básico .

Depois de adicionar o usuário com o nível de acesso Básico, saia do Azure DevOps e entre novamente usando a conta da Microsoft associada à sua assinatura do Azure.

Obtenha o projeto Azure DevOps

Nesta seção, você executa um modelo para criar seu projeto no Azure DevOps.

Executar o modelo

Execute o modelo para configurar seu projeto de DevOps do Azure para este módulo:

No portal do Azure DevOps Demo Generator, siga estas etapas para executar o modelo:

  1. Selecione Entrar e concorde com os termos de uso.

  2. Na página Criar Novo Projeto, selecione sua organização do Azure DevOps e forneça um nome de projeto, como Space Game - web - Kubernetes.

    Screenshot of the Azure DevOps Demo Generator showing the process to create the project.

  3. Selecione Sim, quero bifurcar este repositório e, em seguida , Autorizar. Se aparecer uma janela, conceda permissão para acessar sua conta do GitHub.

    Importante

    Selecionar essa opção é necessário para que o modelo se conecte ao repositório do GitHub. Por favor, escolha-o, mesmo que você já tenha bifurcado o repositório do Space Game, pois o modelo usará seu fork existente.

  4. Selecione Criar projeto e aguarde até que o modelo termine a execução, o que pode levar alguns minutos.

  5. Selecione Navegar até o projeto para acessar seu projeto no Azure DevOps.

Importante

A unidade Limpar seu ambiente de DevOps do Azure neste módulo inclui etapas cruciais para limpeza. Recomenda-se executar estas etapas para evitar ficar sem minutos de compilação gratuitos. Mesmo que não termine este módulo, é importante seguir os passos de limpeza.

Defina a visibilidade do seu projeto

Inicialmente, sua bifurcação do repositório do Jogo Espacial no GitHub é definida como pública, enquanto o projeto criado pelo modelo de DevOps do Azure é definido como privado. Um repositório público no GitHub pode ser acessado por qualquer pessoa, enquanto um repositório privado só é acessível para você e para as pessoas com quem você escolher compartilhá-lo. Da mesma forma, no Azure DevOps, os projetos públicos fornecem acesso somente leitura a usuários não autenticados, enquanto os projetos privados exigem que os usuários recebam acesso e sejam autenticados para acessar os serviços.

No momento, não é necessário modificar nenhuma dessas configurações para os fins deste módulo. No entanto, para seus projetos pessoais, você deve determinar a visibilidade e o acesso que deseja conceder a outras pessoas. Por exemplo, se seu projeto for de código aberto, você pode optar por tornar público o repositório do GitHub e o projeto do Azure DevOps. Se seu projeto for proprietário, você normalmente tornará o repositório do GitHub e o projeto do Azure DevOps privados.

Mais tarde, você pode achar os seguintes recursos úteis para determinar qual opção é melhor para o seu projeto:

Passar o item de trabalho para Doing (Em Curso)

Nesta etapa, você atribui um item de trabalho a si mesmo nos Painéis do Azure e move-o para o estado Fazendo . Em cenários do mundo real, você e sua equipe criariam itens de trabalho no início de cada sprint ou iteração de trabalho.

A atribuição de itens de trabalho fornece uma lista de verificação para trabalhar e dá a outros membros da equipe visibilidade sobre seu progresso e trabalho restante. Ele também ajuda a impor limites de trabalho em andamento (WIP) para evitar que a equipe assuma muito trabalho ao mesmo tempo.

  1. Navegue até Painéis no Azure DevOps e selecione Painéis no menu.

    Screenshot of Azure DevOps showing the location of the Boards menu.

  2. Atribua a si mesmo o item de trabalho Criar versão de vários contêineres do site orquestrado com o Kubernetes selecionando a seta para baixo localizada na parte inferior do cartão.

    Screenshot of Azure Boards showing the location of the down arrow.

  3. Arraste e solte o item de trabalho da coluna Tarefas Pendentes para a coluna Fazer . Você moverá a tarefa para a coluna Concluído no final deste módulo depois de concluí-la.

    Screenshot of Azure Boards showing the card in the Doing column.

Criar o ambiente do Serviço Kubernetes do Azure

Nesta etapa, você cria os recursos necessários do Serviço Kubernetes do Azure para implantar a nova versão de contêiner do site.

No módulo anterior, Criar um pipeline de versão com o Azure Pipelines, você usou o portal do Azure para criar recursos do Azure. Embora o portal seja útil para explorar os recursos do Azure e executar tarefas básicas, a criação de componentes como o Serviço Kubernetes do Azure pode ser um processo demorado.

Neste módulo, você usa a CLI do Azure para criar os recursos necessários para implantar e executar seu aplicativo no Serviço Kubernetes do Azure. A CLI do Azure pode ser acessada de um terminal ou por meio do Visual Studio Code. No entanto, neste módulo, você acessa a CLI do Azure do Azure Cloud Shell. O Cloud Shell é uma experiência de shell baseada em navegador hospedada na nuvem, que vem pré-configurada com a CLI do Azure para uso com sua assinatura do Azure.

Importante

Para concluir os exercícios neste módulo, você precisa de sua própria assinatura do Azure.

Iniciar Cloud Shell

  1. Navegue até o portal do Azure e entre.

  2. Selecione a opção Cloud Shell no menu e, em seguida, escolha a experiência Bash quando solicitado.

    Screenshot of the Azure portal showing the location of the Cloud Shell menu item.

Nota

O Cloud Shell requer um recurso de armazenamento do Azure para manter todos os arquivos criados no Cloud Shell. Ao abrir o Cloud Shell pela primeira vez, você será solicitado a criar um grupo de recursos, uma conta de armazenamento e um compartilhamento de Arquivos do Azure. Essa configuração é usada automaticamente para todas as futuras sessões do Cloud Shell.

Selecione uma região do Azure

Uma região refere-se a um ou mais datacenters do Azure localizados em uma área geográfica. Regiões como o Leste dos EUA, o Oeste dos EUA e o Norte da Europa são exemplos dessas áreas. Cada recurso do Azure, incluindo uma instância do Serviço de Aplicativo, está associado a uma região.

Para simplificar a execução de comandos, comece definindo uma região padrão. Depois de definir uma região padrão, os comandos subsequentes usam essa região por padrão, a menos que você especifique explicitamente uma região diferente.

  1. No Cloud Shell, execute o seguinte comando para listar as regiões disponíveis em sua assinatura do Azure:

    az account list-locations \
      --query "[].{Name: name, DisplayName: displayName}" \
      --output table
    
  2. Selecione uma região na coluna Nome na saída que esteja geograficamente perto de você. Por exemplo, você pode escolher eastasia ou westus2.

  3. Execute o seguinte comando para definir sua região padrão. Substitua REGION pelo nome da região escolhida anteriormente.

    az configure --defaults location=<REGION>
    

    Este exemplo define westus2 como a região padrão.

    az configure --defaults location=westus2
    

Criar variáveis Bash

O uso de variáveis Bash pode tornar o processo de configuração mais conveniente e menos propenso a erros. Essa abordagem ajuda a evitar erros de digitação acidentais definindo cadeias de texto compartilhadas como variáveis que podem ser usadas em todo o script.

  1. A partir do Cloud Shell, gere um número aleatório para simplificar a criação de nomes globalmente exclusivos para determinados serviços na próxima etapa.

    resourceSuffix=$RANDOM
    
  2. Crie nomes globalmente exclusivos para seu Registro de Contêiner do Azure e instância do Serviço Kubernetes do Azure. Observe que esses comandos usam aspas duplas, que instruem Bash a interpolar as variáveis usando a sintaxe embutida.

    registryName="tailspinspacegame${resourceSuffix}"
    aksName="tailspinspacegame-${resourceSuffix}"
    
  3. Crie outra variável Bash para armazenar o nome do seu grupo de recursos.

    rgName='tailspin-space-game-rg'
    
  4. Encontre a versão mais recente do AKS.

    az aks get-versions
    

    Anote a versão mais recente.

Criar recursos do Azure

Nota

Neste tutorial, as configurações de rede padrão são usadas para fins de aprendizagem. Estas definições permitem que o seu website seja acedido a partir da Internet. No entanto, na prática, você pode optar por configurar uma rede virtual do Azure que coloca seu site em uma rede que não é roteável pela Internet e só é acessível por você e sua equipe. Mais tarde, você pode reconfigurar sua rede para disponibilizar o site para seus usuários.

  1. Execute o seguinte comando para criar um grupo de recursos com o nome definido anteriormente:

    az group create --name $rgName
    
  2. Execute o comando para criar um Registro de Contêiner do Azure com o az acr create nome definido anteriormente:

    az acr create \
      --name $registryName \
      --resource-group $rgName \
      --sku Standard
    
  3. Execute o comando para criar uma instância do AKS com o az aks create nome definido anteriormente. Substitua <latest-AKS-version> pela versão que você anotou anteriormente.

    az aks create \
      --name $aksName \
      --resource-group $rgName \
      --enable-addons monitoring \
      --kubernetes-version <latest-AKS-version> \
      --generate-ssh-keys
    

    Nota

    A conclusão da implantação do AKS pode levar de 10 a 15 minutos.

  4. Crie uma variável para armazenar a ID da entidade de serviço configurada para a instância AKS:

    clientId=$(az aks show \
      --resource-group $rgName \
      --name $aksName \
      --query "identityProfile.kubeletidentity.clientId" \
      --output tsv)
    
  5. Crie uma variável para armazenar a ID do Registro de Contêiner do Azure:

    acrId=$(az acr show \
      --name $registryName \
      --resource-group $rgName \
      --query "id" \
      --output tsv)
    
  6. Execute o az acr list comando para recuperar a URL do servidor de logon para sua instância do Azure Container Registry (ACR):

    az acr list \
     --resource-group $rgName \
     --query "[].{loginServer: loginServer}" \
     --output table
    

    Certifique-se de tomar nota do servidor de login para seu registro de contêiner. Você precisará dessas informações mais tarde ao configurar seu pipeline. Eis um exemplo:

    LoginServer                      
    --------------------------------
    tailspinspacegame4692.azurecr.io
    
  7. Execute o comando para criar uma atribuição de função para autorizar o az role assignment create cluster AKS a se conectar ao Registro de Contêiner do Azure:

    az role assignment create \
      --assignee $clientId \
      --role AcrPull \
      --scope $acrId
    

Importante

A unidade Limpar seu ambiente de DevOps do Azure neste módulo inclui etapas cruciais para limpeza. Recomenda-se executar estas etapas para evitar ficar sem minutos de compilação gratuitos. Mesmo que não termine este módulo, é importante seguir os passos de limpeza.

Criar um grupo de variáveis

Nesta seção, você adicionará uma variável ao seu pipeline para armazenar o nome do seu Registro de Contêiner do Azure. Recomenda-se definir o nome da instância do Registro de Contêiner do Azure como uma variável na configuração do pipeline em vez de codificá-la. Isso torna sua configuração mais reutilizável e, caso o nome da instância mude, você pode atualizar facilmente a variável e acionar o pipeline sem precisar modificar a configuração.

  1. Entre em sua organização do Azure DevOps e navegue até seu projeto.

  2. Selecione Pipelines e, em seguida, selecione Biblioteca no painel de navegação esquerdo.

    Screenshot of Azure Pipelines showing the Library menu option.

  3. Selecione Grupos de variáveis e, em seguida, selecione + Grupo de variáveis para adicionar um novo grupo de variáveis .

  4. Na seção Propriedades, insira Release para o nome do grupo de variáveis.

  5. Na seção Variáveis, selecione Adicionar.

  6. Insira RegistryName para o nome da variável e, para o valor, insira o servidor de logon do seu Registro de Contêiner do Azure, como tailspinspacegame4692.azurecr.io.

  7. Na parte superior da página, selecione Salvar para salvar a variável de pipeline. Este é um exemplo de como seu grupo variável pode parecer

    Screenshot of Azure Pipeline showing the variable group. The group contains one variable.

Criar conexões de serviço

A próxima etapa é criar conexões de serviço que permitam que o Azure Pipelines acesse seu Registro de Contêiner do Azure e instâncias do Serviço Kubernetes do Azure. Ao criar essas conexões de serviço, o Azure Pipelines pode enviar seus contêineres por push e instruir seu cluster AKS a obtê-los para atualizar o serviço implantado.

Importante

Certifique-se de que tem sessão iniciada no portal do Azure e no Azure DevOps com a mesma conta Microsoft.

Criar uma conexão de serviço do Registro do Docker

  1. Entre em sua organização do Azure DevOps e navegue até seu projeto.

  2. Selecione Configurações do projeto no canto inferior da página.

  3. Selecione Conexões de serviço na seção Pipelines .

  4. Selecione Nova conexão de serviço, selecione Registro do Docker e selecione Avançar.

  5. Perto da parte superior da página, selecione Registro de Contêiner do Azure e, em seguida, selecione Entidade de Serviço para o tipo de autenticação.

  6. Insira os seguintes valores para cada configuração:

    Definição valor
    Subscrição a subscrição do Azure
    Registo do Azure Container Registry Selecione o que você criou anteriormente
    Nome da conexão de serviço Conexão do Registro de Contêiner
  7. Verifique se a caixa de seleção Conceder permissão de acesso a todos os pipelines está marcada.

  8. Quando terminar, selecione Guardar.

Criar conexão de serviço ARM

Agora você criará uma conexão de serviço do Azure Resource Manager para autenticar com seu cluster AKS. Estamos usando uma conexão de serviço ARM em vez do Kubernetes porque os tokens de longa duração não são mais criados por padrão desde o Kubernetes 1.24. Confira esta postagem do blog DevOps para obter mais detalhes: Orientação de conexão de serviço para clientes AKS que usam tarefas do Kubernetes.

  1. Selecione Nova conexão de serviço, selecione Gerenciador de Recursos do Azure e selecione Avançar.

  2. Selecione Entidade de Serviço (automática) e, em seguida, selecione Seguinte.

  3. Selecione Assinatura para o nível de escopo.

  4. Insira os seguintes valores para cada configuração.

    Definição valor
    Subscrição a subscrição do Azure
    Grupo de recursos Selecione o que você criou anteriormente
    Nome da conexão de serviço Conexão de cluster do Kubernetes
  5. Verifique se a caixa de seleção Conceder permissão de acesso a todos os pipelines está marcada.

  6. Quando terminar, selecione Guardar.

Criar um ambiente de pipeline

  1. Selecione Pipelines e, em seguida, selecione Ambientes.

    Screenshot of Azure Pipelines showing the Environments menu option.

  2. Selecione Criar ambiente para criar um novo ambiente .

  3. No campo Nome, digite Dev.

  4. Selecione Nenhum na seção Recurso e, em seguida, selecione Criar para criar seu ambiente de pipeline.

Atualizar o manifesto de implantação do Kubernetes

Nesta seção, você atualizará o manifesto do Kubernetes deployment.yml para apontar para o registro de contêiner criado anteriormente.

  1. Navegue até sua conta do GitHub e selecione o repositório bifurcado para este módulo: mslearn-tailspin-spacegame-web-kubernetes.

  2. Abra o arquivo manifestos/deployment.yml no modo de edição.

    Screenshot of GitHub showing the location of the edit mode icon.

  3. Altere as referências de imagem de contêiner para usar seu servidor de login ACR. O manifesto a seguir usa tailspinspacegame2439.azurecr.io como exemplo.

    apiVersion : apps/v1
    kind: Deployment
    metadata:
      name: web
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: web
      template:
        metadata:
          labels:
            app: web
        spec:
          containers:
            - name: web
              image: tailspinspacegame4692.azurecr.io/web
              ports:
              - containerPort: 80
    
    apiVersion : apps/v1
    kind: Deployment
    metadata:
      name: leaderboard
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: leaderboard
      template:
        metadata:
          labels:
            app: leaderboard
        spec:
          containers:
            - name: leaderboard
              image: tailspinspacegame4692.azurecr.io/leaderboard
              ports:
              - containerPort: 80
    
  4. Confirme as alterações na sua main ramificação.