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:
- Crie o namespace e o serviço de inicialização
- 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.
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:
- Siga as etapas para efetuar pull das imagens de contêiner do Microsoft Container Registry e efetue push para um registro de contêiner privado.
- Crie um segredo de pull de imagem denominado
arc-private-registry
para o registro de contêiner privado. - Altere a URL da imagem do bootstrapper no arquivo bootstrap.yaml.
- Substitua
arc-private-registry
no arquivo bootstrap.yaml se um nome diferente foi usado para o segredo de pull de imagem.
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 comodefault
, 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.