Implantar um contêiner do Azure SQL Edge no Kubernetes
Importante
O Azure SQL Edge será desativado em 30 de setembro de 2025. Para obter mais informações e opções de migração, consulte o Aviso de aposentadoria.
Nota
O Azure SQL Edge não suporta mais a plataforma ARM64.
O SQL Edge do Azure pode ser implantado em um cluster do Kubernetes como um módulo do IoT Edge por meio do Azure IoT Edge em execução no Kubernetes ou como um pod de contêiner autônomo. Para o restante deste artigo, nos concentraremos na implantação de contêiner autônomo em um cluster Kubernetes. Para obter informações sobre como implantar o Azure IoT Edge no Kubernetes, consulte Azure IoT Edge no Kubernetes (visualização).
Este tutorial demonstra como configurar uma instância altamente disponível do Azure SQL Edge em um contêiner em um cluster Kubernetes.
- Criar uma palavra-passe SA
- Criar armazenamento
- Criar a implantação
- Conectar-se ao SQL Server Management Studio (SSMS)
- Verificar falha e recuperação
O Kubernetes 1.6 e posterior tem suporte para classes de armazenamento, declarações de volume persistentes e o tipo de volume de disco do Azure. Você pode criar e gerenciar suas instâncias do Azure SQL Edge nativamente no Kubernetes. O exemplo neste artigo mostra como criar uma implantação para obter uma configuração de alta disponibilidade semelhante a uma instância de cluster de failover de disco compartilhado. Nessa configuração, o Kubernetes desempenha o papel de orquestrador de cluster. Quando uma instância do Azure SQL Edge em um contêiner falha, o orquestrador inicializa outra instância do contêiner que se anexa ao mesmo armazenamento persistente.
No diagrama anterior, azure-sql-edge
é um recipiente em um pod. O Kubernetes orquestra os recursos no cluster. Um conjunto de réplicas garante que o pod seja recuperado automaticamente após uma falha de nó. Os aplicativos se conectam ao serviço. Nesse caso, o serviço representa um balanceador de carga que hospeda um endereço IP que permanece o mesmo após falha azure-sql-edge
do .
No diagrama a seguir, o azure-sql-edge
contêiner falhou. Como orquestrador, o Kubernetes garante a contagem correta de instâncias íntegras no conjunto de réplicas e inicia um novo contêiner de acordo com a configuração. O orquestrador inicia um novo pod no mesmo nó e azure-sql-edge
se reconecta ao mesmo armazenamento persistente. O serviço se conecta ao recriado azure-sql-edge
.
No diagrama a seguir, o nó que hospeda o azure-sql-edge
contêiner falhou. O orquestrador inicia o novo pod em um nó diferente e azure-sql-edge
se reconecta ao mesmo armazenamento persistente. O serviço se conecta ao recriado azure-sql-edge
.
Pré-requisitos
Cluster do Kubernetes
O tutorial requer um cluster Kubernetes. As etapas usam kubectl para gerenciar o cluster.
Para o propósito deste tutorial, estamos usando o Serviço Kubernetes do Azure para implantar o Azure SQL Edge. Consulte Implantar um cluster do Serviço Kubernetes do Azure (AKS) para criar e conectar-se a um cluster Kubernetes de nó único no AKS com
kubectl
.
Nota
Para proteger contra falha de nó, um cluster Kubernetes requer mais de um nó.
CLI do Azure
- As instruções neste tutorial foram validadas em relação à CLI do Azure 2.10.1.
Criar um namespace Kubernetes para implantação do SQL Edge
Crie um novo namespace no cluster kubernetes. Esse namespace é usado para implantar o SQL Edge e todos os artefatos necessários. Para obter mais informações sobre namespaces do Kubernetes, consulte namespaces.
kubectl create namespace <namespace name>
Criar uma palavra-passe SA
Crie uma senha SA no cluster do Kubernetes. O Kubernetes pode gerenciar informações confidenciais de configuração, como senhas como segredos.
O comando a seguir cria uma senha para a conta SA:
kubectl create secret generic mssql --from-literal=MSQL_SA_PASSWORD="<password>" -n <namespace name>
Substitua MyC0m9l&xP@ssw0rd
por uma senha complexa.
Criar armazenamento
Configure um volume persistente e uma declaração de volume persistente no cluster Kubernetes. Conclua os seguintes passos:
Crie um manifesto para definir a classe de armazenamento e a declaração de volume persistente. O manifesto especifica o provisionador de armazenamento, os parâmetros e a política de recuperação. O cluster Kubernetes usa esse manifesto para criar o armazenamento persistente.
O exemplo yaml a seguir define uma classe de armazenamento e uma declaração de volume persistente. O provisionador de classe de armazenamento é
azure-disk
, porque esse cluster do Kubernetes está no Azure. O tipo de conta de armazenamento éStandard_LRS
. A declaração de volume persistente é denominadamssql-data
. Os metadados de declaração de volume persistente incluem uma anotação conectando-os de volta à classe de armazenamento.kind: StorageClass apiVersion: storage.k8s.io/v1 metadata: name: azure-disk provisioner: kubernetes.io/azure-disk parameters: storageaccounttype: Standard_LRS kind: managed --- kind: PersistentVolumeClaim apiVersion: v1 metadata: name: mssql-data annotations: volume.beta.kubernetes.io/storage-class: azure-disk spec: accessModes: - ReadWriteOnce resources: requests: storage: 8Gi
Salve o arquivo (por exemplo, pvc.yaml).
Crie a declaração de volume persistente no Kubernetes.
kubectl apply -f <Path to pvc.yaml file> -n <namespace name>
<Path to pvc.yaml file>
é o local onde você salvou o arquivo.O volume persistente é criado automaticamente como uma conta de armazenamento do Azure e vinculado à declaração de volume persistente.
Verifique a declaração de volume persistente.
kubectl describe pvc <PersistentVolumeClaim> -n <name of the namespace>
<PersistentVolumeClaim>
é o nome da declaração de volume persistente.Na etapa anterior, a declaração de volume persistente é denominada
mssql-data
. Para ver os metadados sobre a declaração de volume persistente, execute o seguinte comando:kubectl describe pvc mssql-data -n <namespace name>
Os metadados retornados incluem um valor chamado
Volume
. Esse valor é mapeado para o nome do blob.Verifique o volume persistente.
kubectl describe pv -n <namespace name>
kubectl
Retorna metadados sobre o volume persistente que foi criado automaticamente e vinculado à declaração de volume persistente.
Criar a implantação
Neste exemplo, o contêiner que hospeda a instância do Azure SQL Edge é descrito como um objeto de implantação do Kubernetes. A implantação cria um conjunto de réplicas. O conjunto de réplicas cria o pod.
Nesta etapa, crie um manifesto para descrever o contêiner com base na imagem do Docker de Borda SQL do Azure. O manifesto faz referência à mssql-data
declaração de volume persistente e ao mssql
segredo que você já aplicou ao cluster do Kubernetes. O manifesto também descreve um serviço. Este serviço é um balanceador de carga. O balanceador de carga garante que o endereço IP persista após a recuperação da instância do SQL Edge do Azure.
Crie um manifesto (um arquivo YAML) para descrever a implantação. O exemplo a seguir descreve uma implantação, incluindo um contêiner baseado na imagem de contêiner do Azure SQL Edge.
apiVersion: apps/v1 kind: Deployment metadata: name: sqledge-deployment spec: replicas: 1 selector: matchLabels: app: sqledge template: metadata: labels: app: sqledge spec: volumes: - name: sqldata persistentVolumeClaim: claimName: mssql-data containers: - name: azuresqledge image: mcr.microsoft.com/azure-sql-edge:latest ports: - containerPort: 1433 volumeMounts: - name: sqldata mountPath: /var/opt/mssql env: - name: MSSQL_PID value: "Developer" - name: ACCEPT_EULA value: "Y" - name: MSSQL_SA_PASSWORD valueFrom: secretKeyRef: name: mssql key: MSSQL_SA_PASSWORD - name: MSSQL_AGENT_ENABLED value: "TRUE" - name: MSSQL_COLLATION value: "SQL_Latin1_General_CP1_CI_AS" - name: MSSQL_LCID value: "1033" terminationGracePeriodSeconds: 30 securityContext: fsGroup: 10001 --- apiVersion: v1 kind: Service metadata: name: sqledge-deployment spec: selector: app: sqledge ports: - protocol: TCP port: 1433 targetPort: 1433 name: sql type: LoadBalancer
Copie o código anterior para um novo arquivo, chamado
sqldeployment.yaml
. Atualize os seguintes valores:value: "Developer"
MSSQL_PID : Define o contêiner para executar o Azure SQL Edge Developer edition. A edição do desenvolvedor não é licenciada para dados de produção. Se a implantação for para uso em produção, defina a edição comoPremium
.Nota
Para obter mais informações, consulte Como licenciar o Azure SQL Edge.
persistentVolumeClaim
: Este valor requer uma entrada paraclaimName:
que mapeie para o nome usado para a declaração de volume persistente. Este tutorial utilizamssql-data
.name: MSSQL_SA_PASSWORD
: Configura a imagem do contêiner para definir a senha SA, conforme definido nesta seção.valueFrom: secretKeyRef: name: mssql key: MSSQL_SA_PASSWORD
Quando o Kubernetes implanta o contêiner, ele se refere ao segredo nomeado
mssql
para obter o valor da senha.
Nota
Usando o
LoadBalancer
tipo de serviço, a instância do Azure SQL Edge pode ser acessada remotamente (via Internet) na porta 1433.Salve o arquivo (por exemplo,
sqledgedeploy.yaml
).Crie a implantação.
kubectl apply -f <Path to sqledgedeploy.yaml file> -n <namespace name>
<Path to sqldeployment.yaml file>
é o local onde você salvou o arquivo.A implantação e o serviço são criados. A instância do Azure SQL Edge está em um contêiner, conectada ao armazenamento persistente.
Para visualizar o status do pod, digite
kubectl get pod -n <namespace name>
.Na imagem anterior, o pod tem um status de
Running
. Esse status indica que o contêiner está pronto. Este processo pode demorar vários minutos.Nota
Depois que a implantação é criada, pode levar alguns minutos até que o pod fique visível. O atraso ocorre porque o cluster extrai a imagem do contêiner do SQL Edge do Azure do hub do Docker. Depois que a imagem for extraída pela primeira vez, as implantações subsequentes poderão ser mais rápidas se a implantação for para um nó que já tenha a imagem armazenada em cache.
Verifique se os serviços estão em execução. Execute o seguinte comando:
kubectl get services -n <namespace name>
Este comando retorna os serviços que estão em execução, bem como os endereços IP internos e externos para os serviços. Observe o endereço IP externo do
mssql-deployment
serviço. Use esse endereço IP para se conectar ao SQL Edge do Azure.Para obter mais informações sobre o status dos objetos no cluster do Kubernetes, execute:
az aks browse --resource-group <MyResourceGroup> --name <MyKubernetesClustername>
Conectar-se à instância do SQL Edge do Azure
Se você configurou o contêiner conforme descrito, poderá se conectar a um aplicativo de fora da rede virtual do Azure. Use a sa
conta e o endereço IP externo para o serviço. Use a senha que você configurou como o segredo do Kubernetes. Para obter mais informações sobre como se conectar a uma instância do Azure SQL Edge, consulte Conectar-se ao Azure SQL Edge.
Verificar falha e recuperação
Para verificar a falha e a recuperação, você pode excluir o pod. Efetue os seguintes passos:
Liste o pod que executa o Azure SQL Edge.
kubectl get pods -n <namespace name>
Observe o nome do pod que executa o Azure SQL Edge.
Exclua o pod.
kubectl delete pod sqledge-deployment-7df66c9999-rc9xl
sqledge-deployment-7df66c9999-rc9xl
é o valor retornado da etapa anterior para o nome do pod.
O Kubernetes recria automaticamente o pod para recuperar uma instância do Azure SQL Edge e se conectar ao armazenamento persistente. Use kubectl get pods
para verificar se um novo pod está implantado. Use kubectl get services
para verificar se o endereço IP do novo contêiner é o mesmo.
Resumo
Neste tutorial, você aprendeu como implantar contêineres do SQL Edge do Azure em um cluster Kubernetes para alta disponibilidade.
- Criar uma palavra-passe SA
- Criar armazenamento
- Criar a implantação
- Conecte-se com o Azure SQL Edge Management Studios (SSMS)
- Verificar falha e recuperação