Compartilhar via


Criar um controlador de dados habilitado para Azure Arc usando ferramentas do Kubernetes

Um controlador de dados gerencia os serviços de dados habilitados para Azure Arc para um cluster Kubernetes. Este artigo descreve como usar as ferramentas do Kubernetes para criar um controlador de dados.

A criação do controlador de dados tem as seguintes etapas de alto nível:

  1. Crie o namespace e o serviço de inicialização
  2. Crie o controlador de dados

Observação

Para simplificar, as etapas abaixo pressupõem que você é um administrador de cluster do Kubernetes. Para implantações de produção ou ambientes mais seguros, é recomendável seguir as melhores práticas de segurança de "privilégio mínimo" ao implantar o controlador de dados concedendo apenas permissões específicas a usuários e contas de serviço envolvidas no processo de implantação.

Consulte o tópico Operar serviços de dados habilitados para Arc com privilégios mínimos para obter instruções detalhadas.

Pré-requisitos

Examine o tópico Planejar uma implantação de serviços de dados habilitados para Azure Arc para obter informações gerais.

Para criar o controlador de dados usando as ferramentas de Kubernetes você precisará ter as ferramentas de Kubernetes instaladas. Os exemplos neste artigo usarão kubectl, mas abordagens semelhantes podem ser usadas com outras ferramentas de Kubernetes como, por exemplo, o painel do Kubernetes, oc ou helm se você estiver familiarizado com essas ferramentas e yaml/json de Kubernetes.

Instalar ferramenta kubectl

Crie o namespace e o serviço de inicialização

O serviço bootstrapper trata as solicitações de entrada para criar, editar e excluir recursos personalizados, como um controlador de dados.

Salve uma cópia de bootstrapper-unified.yaml e substitua o espaço reservado {{NAMESPACE}} em todos os locais do arquivo pelo nome do namespace desejado, por exemplo: arc.

Importante

O arquivo de modelo bootstrapper-unified.yam usa como padrão efetuar pull da imagem de contêiner do bootstrapper do MCR (Registro de Contêiner do Microsoft). Se o seu ambiente não tiver acesso direto ao Microsoft Container Registry, você poderá fazer o seguinte:

Execute o comando a seguir para criar o namespace e o serviço bootstrapper com o arquivo editado.

kubectl apply --namespace arc -f bootstrapper-unified.yaml

Verifique se o pod do bootstrapper está em execução usando o comando a seguir.

kubectl get pod --namespace arc -l app=bootstrapper

Se o status não for Em execução, execute o comando algumas vezes até que o status seja Em execução.

Crie o controlador de dados

Agora você está pronto para criar o próprio controlador de dados.

Primeiro, crie uma cópia do arquivo de modelo localmente no seu computador para que você possa modificar algumas das configurações.

Criar as métricas e os painéis de logs de nomes de usuário e senhas

Na parte superior do arquivo, especifique um nome de usuário e uma senha usados para autenticar para as métricas e os painéis de logs como administrador. Escolha uma senha segura e compartilhe-a apenas com quem precise ter esses privilégios.

Um segredo de Kubernetes é armazenado como uma cadeia de caracteres codificada em base64, uma para o nome de usuário e outra para a senha.

É possível usar uma ferramenta online para codificar o nome de usuário e a senha desejados usando base64, ou, dependendo da plataforma, pode-se usar as ferramentas incorporadas da CLI.

PowerShell

[Convert]::ToBase64String([System.Text.Encoding]::UTF8.GetBytes('<your string to encode here>'))

#Example
#[Convert]::ToBase64String([System.Text.Encoding]::UTF8.GetBytes('example'))

Linux/macOS

echo -n '<your string to encode here>' | base64

#Example
# echo -n 'example' | base64

Criar certificados para logs e painéis de métricas

Opcionalmente, você pode criar certificados SSL/TLS para logs e painéis de métricas. Siga as instruções em Especificar certificados de SSL/TLS durante a implantação de ferramentas nativas do Kubernetes.

Edite a configuração do controlador de dados

Edite a configuração do controlador de dados conforme necessário:

OBRIGATÓRIO

  • local: Altere esta para o local do Azure onde os metadados sobre o controlador de dados serão armazenados. Examine a lista de regiões disponíveis.
  • resourcegroup: o grupo de recursos do Azure no qual você deseja criar o recurso de controlador de dados do Azure no Azure Resource Manager. Normalmente, esse grupo de recursos já deve existir, mas não é obrigatório até o momento em que você carregar os dados no Azure.
  • assinatura: o GUID da assinatura do Azure para a assinatura na qual você deseja criar os recursos do Azure.

RECOMENDADO PARA REVISAR E POSSIVELMENTE ALTERAR OS PADRÕES

  • storage..className: a classe de armazenamento a ser usada para os dados do controlador de dados e os arquivos de log. Se não tiver certeza das classes de armazenamento disponíveis no cluster do Kubernetes, poderá executar o seguinte comando: kubectl get storageclass. O padrão é default, que pressupõe que há uma classe de armazenamento que existe e que é nomeada como default, não que haja uma classe de armazenamento que seja o padrão. Observação: Há duas configurações de className a serem definidas para a classe de armazenamento desejada, uma para os dados e outra para os logs.
  • serviceType: Altere o tipo de serviço para NodePort se não estiver usando um LoadBalancer.
  • Segurança: para o Red Hat OpenShift no Azure ou na Plataforma de Contêiner Red Hat OpenShift, substitua as configurações security: pelos valores a seguir no arquivo yaml do controlador de dados.
  security:
    allowDumps: false
    allowNodeMetricsCollection: false
    allowPodMetricsCollection: false

OPCIONAL

  • nome: O nome padrão do controlador de dados é arc, mas você pode alterá-lo, se desejar.
  • displayName: Defina como o mesmo valor que o atributo nome na parte superior do arquivo.
  • logsui-certificate-secret: nome do segredo criado no cluster do Kubernetes para o certificado de interface do usuário de logs.
  • metricsui-certificate-secret: nome do segredo criado no cluster do Kubernetes para o certificado de interface do usuário de métricas.

O exemplo a seguir mostra um yaml do controlador de dados concluído.

apiVersion: v1
data:
  password: <your base64 encoded password>
  username: <your base64 encoded username>
kind: Secret
metadata:
  name: metricsui-admin-secret
type: Opaque

---

apiVersion: v1
data:
  password: <your base64 encoded password>
  username: <your base64 encoded username>
kind: Secret
metadata:
  name: logsui-admin-secret
type: Opaque

---

apiVersion: arcdata.microsoft.com/v5
kind: DataController
metadata:
  name: arc-dc
spec:
  credentials:
    dockerRegistry: arc-private-registry # Create a registry secret named 'arc-private-registry' if you are going to pull from a private registry instead of MCR.
    serviceAccount: sa-arc-controller
  docker:
    imagePullPolicy: Always
    imageTag: v1.34.0_2024-10-08
    registry: mcr.microsoft.com
    repository: arcdata
  infrastructure: other # Must be a value in the array [alibaba, aws, azure, gcp, onpremises, other]
  security:
    allowDumps: true # Set this to false if deploying on OpenShift
    allowNodeMetricsCollection: true # Set this to false if deploying on OpenShift
    allowPodMetricsCollection: true # Set this to false if deploying on OpenShift
  services:
  - name: controller
    port: 30080
    serviceType: LoadBalancer # Modify serviceType based on your Kubernetes environment
  settings:
    ElasticSearch:
      vm.max_map_count: "-1"
    azure:
      connectionMode: indirect # Only indirect is supported for Kubernetes-native deployment for now.
      location: eastus # Choose a different Azure location if you want
      resourceGroup: <your resource group>
      subscription: <your subscription GUID>
    controller:
      displayName: arc-dc
      enableBilling: true
      logs.rotation.days: "7"
      logs.rotation.size: "5000"
  storage:
    data:
      accessMode: ReadWriteOnce
      className: default # Use default configured storage class or modify storage class based on your Kubernetes environment
      size: 15Gi
    logs:
      accessMode: ReadWriteOnce
      className: default # Use default configured storage class or modify storage class based on your Kubernetes environment
      size: 10Gi

Salve o arquivo editado no computador local e execute o seguinte comando para criar o controlador de dados:

kubectl create --namespace arc -f <path to your data controller file>

#Example
kubectl create --namespace arc -f data-controller.yaml

Monitorando o status de criação

A criação do controlador levará alguns minutos para ser concluída. Você pode monitorar o progresso em outra janela do terminal com os seguintes comandos:

kubectl get datacontroller --namespace arc
kubectl get pods --namespace arc

Você também pode verificar o estado de criação ou os logs de qualquer pod específico executando um comando como exibido abaixo. Isso é especialmente útil para solucionar problemas.

kubectl describe pod/<pod name> --namespace arc
kubectl logs <pod name> --namespace arc

#Example:
#kubectl describe pod/control-2g7bl --namespace arc
#kubectl logs control-2g7b1 --namespace arc

Solução de problemas de criação

Se houver qualquer problema com a criação, consulte o Guia de solução de problemas.