Criar o controlador de dados do Azure Arc usando a CLI

Pré-requisitos

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

Instalar ferramentas

Antes de começar, instale a extensão arcdata para a CLI do Azure (az).

Instalar a (arcdata) extensão para a CLI (az) do Azure

Independentemente da plataforma de destino escolhida, você precisará definir as variáveis de ambiente a seguir antes da criação do controlador de dados. Essas variáveis de ambiente se tornarão as credenciais usadas para acessar os painéis de métricas e de logs após a criação do controlador de dados.

Definir variáveis de ambiente

Estes são dois conjuntos de variáveis de ambiente necessários para acessar as métricas e os painéis de logs.

As variáveis de ambiente incluem senhas para serviços de log e métricas. As senhas devem ter pelo menos oito caracteres de comprimento e conter caracteres das quatro seguintes categorias: letras maiúsculas em latim, letras minúsculas em latim, números e caracteres não alfanuméricos.

## variables for Metrics and Monitoring dashboard credentials
export AZDATA_LOGSUI_USERNAME=<username for Kibana dashboard>
export AZDATA_LOGSUI_PASSWORD=<password for Kibana dashboard>
export AZDATA_METRICSUI_USERNAME=<username for Grafana dashboard>
export AZDATA_METRICSUI_PASSWORD=<password for Grafana dashboard>

Conectar ao cluster do Kubernetes

Faça autenticação e se conecte a um cluster do Kubernetes e tenha um contexto do Kubernetes existente selecionado antes de iniciar a criação do controlador de dados do Azure Arc. A maneira como você se conecta a um cluster ou serviço do Kubernetes varia. Consulte a documentação da distribuição ou serviço do Kubernetes que você está usando sobre como se conectar ao servidor de API do Kubernetes.

Você pode verificar se tem uma conexão do Kubernetes atual e confirmar seu contexto atual com os comandos a seguir.

kubectl cluster-info
kubectl config current-context

Criar o controlador de dados do Azure Arc

As seções a seguir fornecem instruções sobre tipos específicos de plataformas do Kubernetes. Siga as instruções para sua plataforma.

Dica

Se você não tiver um cluster do Kubernetes, poderá criá-lo no Azure. Siga as instruções em Início Rápido: implantar serviços de dados habilitados para Azure Arc – modo de conexão direta – portal do Azure para percorrer todo o processo.

Em seguida, siga as instruções em Criar no AKS (Serviço de Kubernetes do Azure).

Criar no AKS (Serviço de Kubernetes do Azure)

Por padrão, o perfil de implantação AKS usa a classe de armazenamento managed-premium. A classe de armazenamento managed-premium só funcionará se você tiver VMs que foram implantadas usando imagens de VM que têm discos premium.

Se você pretende usar managed-premium como sua classe de armazenamento, poderá executar o comando a seguir para criar o controlador de dados. Substitua os espaços reservados no comando pelo nome do grupo de recursos, pela ID da assinatura e pela localização do Azure.

az arcdata dc create --profile-name azure-arc-aks-premium-storage --k8s-namespace <namespace> --name arc --subscription <subscription id> --resource-group <resource group name> --location <location> --connectivity-mode indirect --use-k8s

#Example:
#az arcdata dc create --profile-name azure-arc-aks-premium-storage --k8s-namespace arc --name arc --subscription xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx --resource-group my-resource-group --location eastus --connectivity-mode indirect --use-k8s

Se você não tiver certeza de qual classe de armazenamento usar, deverá usar a classe de armazenamento default que é suportada independentemente do tipo de VM que você está usando. Apenas não fornecerá o desempenho mais rápido.

Se você quiser usar a classe de armazenamento default, execute este comando:

az arcdata dc create --profile-name azure-arc-aks-default-storage --k8s-namespace <namespace> --use-k8s --name arc --subscription <subscription id> --resource-group <resource group name> --location <location> --connectivity-mode indirect

#Example:
#az arcdata dc create --profile-name azure-arc-aks-default-storage  --k8s-namespace arc --use-k8s --name arc --subscription xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx --resource-group my-resource-group --location eastus --connectivity-mode indirect

Depois de executar o comando, continue em para Monitorar o status de criação.

Criar no AKS no Azure Stack HCI

Configurar o armazenamento (Azure Stack HCI com AKS-HCI)

Se você estiver usando o Azure Stack HCI com AKS-HCI, crie uma classe de armazenamento personalizada com fsType.

fsType: ext4

Use esse tipo para implantar o controlador de dados. Consulte as instruções completas em Criar uma classe de armazenamento personalizada para um disco do AKS no Azure Stack HCI.

Por padrão, o perfil de implantação usa uma classe de armazenamento denominada default e o tipo de serviço LoadBalancer.

Você pode executar o seguinte comando para criar o controlador de dados usando a classe de armazenamento default e tipo de serviço LoadBalancer.

az arcdata dc create --profile-name azure-arc-aks-hci  --k8s-namespace <namespace> --use-k8s --name arc --subscription <subscription id> --resource-group <resource group name> --location <location> --connectivity-mode indirect

#Example:
#az arcdata dc create --profile-name azure-arc-aks-hci  --k8s-namespace arc --use-k8s --name arc --subscription xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx --resource-group my-resource-group --location eastus --connectivity-mode indirect

Depois de executar o comando, continue em para Monitorar o status de criação.

Criar no ARO (Red Hat OpenShift no Azure)

Criar perfil de implantação personalizado

Use o perfil azure-arc-azure-openshift do Red Hat OpenShift no Azure.

az arcdata dc config init --source azure-arc-azure-openshift --path ./custom

Criar controlador de dados

Você pode executar o seguinte comando para criar o controlador de dados:

az arcdata dc create --profile-name azure-arc-azure-openshift  --k8s-namespace <namespace> --use-k8s --name arc --subscription <subscription id> --resource-group <resource group name> --location <location> --connectivity-mode indirect

#Example
#az arcdata dc create --profile-name azure-arc-azure-openshift  --k8s-namespace arc --use-k8s --name arc --subscription xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx --resource-group my-resource-group --location eastus --connectivity-mode indirect

Depois de executar o comando, continue em para Monitorar o status de criação.

Criar na plataforma de contêiner Red Hat OpenShift (OCP)

Determinar a classe de armazenamento

Para determinar qual classe de armazenamento usar, execute o comando a seguir.

kubectl get storageclass

Criar perfil de implantação personalizado

Crie um novo arquivo de perfil de implantação personalizado com base no perfil de implantação azure-arc-openshift executando o comando a seguir. Esse comando cria um diretório custom no diretório de trabalho atual e um arquivo de perfil de implantação personalizado control.json nesse diretório.

Use o perfil azure-arc-openshift para a plataforma de contêiner OpenShift.

az arcdata dc config init --source azure-arc-openshift --path ./custom

Definir classe de armazenamento

Agora, defina a classe de armazenamento desejada substituindo <storageclassname> no comando abaixo pelo nome da classe de armazenamento que você deseja usar e que foi determinada executando o comando kubectl get storageclass acima.

az arcdata dc config replace --path ./custom/control.json --json-values "spec.storage.data.className=<storageclassname>"
az arcdata dc config replace --path ./custom/control.json --json-values "spec.storage.logs.className=<storageclassname>"

#Example:
#az arcdata dc config replace --path ./custom/control.json --json-values "spec.storage.data.className=mystorageclass"
#az arcdata dc config replace --path ./custom/control.json --json-values "spec.storage.logs.className=mystorageclass"

Definir LoadBalancer (opcional)

Por padrão, o perfil de implantação azure-arc-openshift usa NodePort como o tipo de serviço. Se você estiver usando um cluster do OpenShift integrado a um balanceador de carga, poderá alterar a configuração para usar o tipo de serviço LoadBalancer usando o seguinte comando:

az arcdata dc config replace --path ./custom/control.json --json-values "$.spec.services[*].serviceType=LoadBalancer"

Criar controlador de dados

Agora você está pronto para criar o controlador de dados usando o comando a seguir.

Observação

O parâmetro --path deve apontar para o diretório que contém o arquivo control.json, e não para o próprio arquivo control.json.

Observação

Ao implantar no OpenShift Container Platform, será necessário especificar o valor do parâmetro --infrastructure. As opções são: aws, azure, alibaba, gcp, onpremises.

az arcdata dc create --path ./custom  --k8s-namespace <namespace> --use-k8s --name arc --subscription <subscription id> --resource-group <resource group name> --location <location> --connectivity-mode indirect --infrastructure <infrastructure>

#Example:
#az arcdata dc create --path ./custom  --k8s-namespace arc --use-k8s --name arc --subscription xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx --resource-group my-resource-group --location eastus --connectivity-mode indirect --infrastructure onpremises

Depois de executar o comando, continue em para Monitorar o status de criação.

Criar em open source, upstream Kubernetes (kubeadm)

Por padrão, o perfil de implantação kubeadm usa uma classe de armazenamento chamada local-storage e o tipo de serviço NodePort. Se isso for aceitável, você poderá ignorar as instruções abaixo que definem a classe de armazenamento e o tipo de serviço desejados e executar imediatamente o comando az arcdata dc create a seguir.

Se você quiser personalizar seu perfil de implantação para definir um tipo de serviço e/ou classe de armazenamento específico, comece criando um novo arquivo de perfil de implantação personalizado com base no perfil de implantação kubeadm executando o comando a seguir. Esse comando cria um diretório custom no diretório de trabalho atual e um arquivo de perfil de implantação personalizado control.json nesse diretório.

az arcdata dc config init --source azure-arc-kubeadm --path ./custom 

Você pode pesquisar as classes de armazenamento disponíveis executando o comando a seguir.

kubectl get storageclass

Agora, defina a classe de armazenamento desejada substituindo <storageclassname> no comando abaixo pelo nome da classe de armazenamento que você deseja usar e que foi determinada executando o comando kubectl get storageclass acima.

az arcdata dc config replace --path ./custom/control.json --json-values "spec.storage.data.className=<storageclassname>"
az arcdata dc config replace --path ./custom/control.json --json-values "spec.storage.logs.className=<storageclassname>"

#Example:
#az arcdata dc config replace --path ./custom/control.json --json-values "spec.storage.data.className=mystorageclass"
#az arcdata dc config replace --path ./custom/control.json --json-values "spec.storage.logs.className=mystorageclass"

Por padrão, o perfil de implantação kubeadm usa NodePort como o tipo de serviço. Se você estiver usando um cluster do Kubernetes integrado a um balanceador de carga, poderá alterar a configuração usando o seguinte comando:

az arcdata dc config replace --path ./custom/control.json --json-values "$.spec.services[*].serviceType=LoadBalancer"

Agora você está pronto para criar o controlador de dados usando o comando a seguir.

Observação

Ao implantar no OpenShift Container Platform, será necessário especificar o valor do parâmetro --infrastructure. As opções são: aws, azure, alibaba, gcp, onpremises.

az arcdata dc create --path ./custom  --k8s-namespace <namespace> --use-k8s --name arc --subscription <subscription id> --resource-group <resource group name> --location <location> --connectivity-mode indirect --infrastructure <infrastructure>

#Example:
#az arcdata dc create --path ./custom - --k8s-namespace <namespace> --use-k8s --name arc --subscription xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx --resource-group my-resource-group --location eastus --connectivity-mode indirect --infrastructure onpremises

Depois de executar o comando, continue em para Monitorar o status de criação.

Criar na AWS Elastic Kubernetes Service (EKS)

Por padrão, a classe de armazenamento do EKS é chamada gp2 e o tipo de serviço é LoadBalancer.

Execute o comando a seguir para criar o controlador de dados usando o perfil de implantação do EKS fornecido.

az arcdata dc create --profile-name azure-arc-eks  --k8s-namespace <namespace> --use-k8s --name arc --subscription <subscription id> --resource-group <resource group name> --location <location> --connectivity-mode indirect

#Example:
#az arcdata dc create --profile-name azure-arc-eks  --k8s-namespace <namespace> --use-k8s --name arc --subscription xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx --resource-group my-resource-group --location eastus --connectivity-mode indirect

Depois de executar o comando, continue em para Monitorar o status de criação.

Criar no serviço do Google Cloud Kubernetes Engine (GKE)

Por padrão, a classe de armazenamento do GKE é chamada standard e o tipo de serviço é LoadBalancer.

Execute o comando a seguir para criar o controlador de dados usando o perfil de implantação do GKE fornecido.

az arcdata dc create --profile-name azure-arc-gke --k8s-namespace <namespace> --use-k8s --name arc --subscription <subscription id> --resource-group <resource group name> --location <location> --connectivity-mode indirect

#Example:
#az arcdata dc create --profile-name azure-arc-gke --k8s-namespace <namespace> --use-k8s --name arc --subscription xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx --resource-group my-resource-group --location eastus --connectivity-mode indirect

Depois de executar o comando, continue em para Monitorar o status de criação.

Monitorar o status de criação

Leva alguns minutos para criar o controlador completamente. Você pode monitorar o progresso em outra janela do terminal com os seguintes comandos:

Observação

Os comandos de exemplo abaixo pressupõem que você criou um controlador de dados chamado arc-dc e um namespace do Kubernetes chamado arc. Se você usou valores diferentes, atualize o script adequadamente.

kubectl get datacontroller/arc-dc --namespace arc
kubectl get pods --namespace arc

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

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

#Example:
#kubectl describe po/control-2g7bl --namespace arc

Solução de problemas de criação

Se você encontrar qualquer problemas com a criação, consulte o Guia de solução de problemas.