Implementar uma aplicação no seu cluster do Azure Kubernetes Service

Concluído

A sua empresa está a procura de formas de implementar o seu serviço de composição com base na cloud. Você escolheu o Serviço Kubernetes do Azure (AKS) como sua plataforma de desenvolvimento nativa da nuvem. Com o cluster configurado, está preparado para implementar um dos componentes na sua aplicação de composição de vídeo. Decide implementar uma versão estática do site da sua empresa para explorar o processo de implementação do Kubernetes.

Antes de abordarmos a forma de implementação do Kubernetes, vamos rever alguns dos passos que irá seguir para implementar uma aplicação semelhante num ambiente não pertencente ao Kubernetes.

Imagine que está a utilizar uma máquina virtual (VM) do Azure como a sua plataforma de destino. O primeiro passo consiste em preparar o software do servidor para alojar a aplicação. Irá:

  • Instalar o sistema operativo.
  • Certificar-se de que atualiza o SO com os patches de segurança e de software mais recentes.
  • Instalar e configurar software de servidor Web na sua VM.
  • Implementar a aplicação Web.

Repita esse processo para cada nova VM quando decidir expandir o site para lidar com um aumento na demanda dos clientes.

Uma abordagem alternativa consiste em executar o site numa plataforma baseada em contentores como o Azure Container Instances. Você não precisa se preocupar com a tecnologia de servidor subjacente, mas precisa configurar e gerenciar vários contêineres para usar essa estratégia manualmente.

O Kubernetes e o AKS ajudam-no a orquestrar os contentores. As funcionalidades da orquestração de contentores do Kubernetes facilitam a gestão das cargas de trabalho no cluster. As cargas de trabalho são implementadas ao utilizar contentores criados a partir de imagens de contentor para executar as suas aplicações num cluster do AKS.

Aqui você pode explorar como criar cargas de trabalho em seu cluster AKS.

O que é um registo de contentor?

Um registo de contentor permite-lhe armazenar imagens de contentor de forma segura na cloud para uma implementação posterior. Pode pensar no registo de contentor como sendo um arquivo que armazena várias versões da sua imagem de contentor. Cada imagem armazenada tem uma etiqueta atribuída para identificação.

Por exemplo, pode ter a imagem contoso-website:latest, que seria uma versão diferente da imagem com a etiqueta contoso-website:v1.0.0.

A diagram that shows how container images are downloaded from a container registry to a Kubernetes cluster by using a manifest file.

Os registos de contentor podem ser públicos ou privados. Os registros privados exigem credenciais para acessar e baixar imagens e é a estratégia que você segue quando armazena imagens de contêiner.

O Kubernetes permite apenas a implementação de imagens alojadas num registo de contentor. Criar um registro de contêiner privado normalmente faz parte de sua estratégia de implantação padrão do AKS.

O que é um pod do Kubernetes?

Um pod do Kubernetes agrupa contêineres e aplicativos em uma estrutura lógica. Estes pods não possuem informações e são compostos por um ou mais contentores de aplicação. Cada um tem um endereço IP, regras de rede e portas expostas.

Por exemplo, se você quisesse pesquisar todas as cargas de trabalho relacionadas ao contoso-website, consultaria o cluster em busca de pods com o rótulo app e o valor contoso-website.

O que é a implementação do Kubernetes?

A diagram that shows a Kubernetes deployment with a label and three pods.

Uma implementação do Kubernetes é uma evolução dos pods. Uma implantação envolve os pods em um objeto inteligente que permite que eles se expandam. Você pode facilmente duplicar e dimensionar seu aplicativo para suportar mais carga sem a necessidade de configurar regras de rede complexas.

As implementações permitem aos utilizadores atualizar as aplicações simplesmente ao alterarem a etiqueta da imagem sem tempo de inatividade. Quando você atualiza uma implantação, em vez de excluir todos os aplicativos, a implantação desativa os aplicativos online um a um. Em seguida, ele os substitui pela versão mais recente. Este aspeto significa que qualquer implementação pode atualizar os pods no interior sem qualquer efeito visível na disponibilidade.

Ficheiro de manifesto do Kubernetes

Um ficheiro de manifesto do Kubernetes permite-lhe descrever declarativamente as suas cargas de trabalho no formato YAML e simplificar a gestão de objetos no Kubernetes.

Imagine que tem de implementar manualmente uma carga de trabalho. Tem de considerar e gerir vários aspetos. Terá de criar um contentor, selecionar um nó específico, envolvê-lo num pod, executar o pod, monitorizar a execução, etc.

Os arquivos de manifesto contêm todas as informações necessárias para criar e gerenciar a carga de trabalho descrita.

O que é uma etiqueta do Kubernetes?

Uma etiqueta do Kubernetes permite-lhe agrupar de forma lógica os objetos do Kubernetes. Estas etiquetas permitem ao sistema consultar o cluster por objetos que correspondam a uma etiqueta com um nome específico.

Estrutura de um ficheiro de manifesto

A estrutura dos ficheiros de manifesto difere consoante o tipo de recurso criado. No entanto, os ficheiros de manifesto partilham instruções comuns. Estas instruções definem vários aspetos, tais como as APIs a utilizar e o tipo de carga de trabalho a criar.

As primeiras duas entradas em todos os ficheiros de manifesto têm duas chaves importantes, apiVersion e kind. Eis um exemplo de um ficheiro de implementação.

apiVersion: apps/v1 # Where in the API it resides
kind: Deployment # The kind of workload we're creating

A apiVersion chave define o ponto de extremidade do servidor de API que gerencia o objeto implantado.

A kind chave define a carga de trabalho que essa implantação cria.

Outras chaves comuns para todos os ficheiros são as chaves metadata e name. Todos os recursos do Kubernetes têm de ter um nome. Esse nome é incluído na chave metadata.

apiVersion: apps/v1
kind: Deployment
metadata:
  name: contoso-website # This will be the name of the deployment

Agrupar objetos numa implementação

As implementações utilizam um label para procurar e agrupar pods. Define a etiqueta com parte do ficheiro de manifesto da sua implementação.

Eis um exemplo. Observe o valor matchLabels definido na definição selector adicionado à definição spec.

# deployment.yaml
# ...
spec:
  selector:
    matchLabels:
      app: contoso-website
# ...

A partir daqui, todos os ficheiros têm estruturas diferentes com base no tipo de recursos que está a pedir ao Kubernetes para criar.

Aplicar um ficheiro de implementação

Implementa um ficheiro de manifesto do Kubernetes ao utilizar kubectl. Veja a seguir um exemplo do comando .

kubectl apply -f ./deployment.yaml

Verifique o seu conhecimento

1.

O que é um registo de contentor?

2.

O que é um ficheiro de manifesto?