Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Este artigo demonstra como implementar o Azure SQL Managed Instance para o Azure Arc com ferramentas de Kubernetes.
Prerequisites
Já deveria ter criado um controlador de dados.
Para criar uma instância gerida de SQL utilizando ferramentas Kubernetes, precisará de ter as ferramentas Kubernetes instaladas. Os exemplos neste artigo irão usar kubectl, mas abordagens similares poderiam ser usadas com outras ferramentas do Kubernetes, como o painel do Kubernetes, oc, ou helm, se estiver familiarizado com essas ferramentas e os ficheiros yaml/json do Kubernetes.
Overview
Para criar uma Instância Gerida de SQL, é necessário:
- Crie um segredo no Kubernetes para armazenar com segurança o login e a palavra-passe do administrador do sistema
- Crie um recurso personalizado de instância gerida do SQL com base na definição de recurso personalizado
SqlManagedInstance
Defina ambos os itens num ficheiro yaml.
Crie um ficheiro yaml
Use o ficheiro template yaml como ponto de partida para criar o seu próprio ficheiro yaml de instância gerida SQL personalizada. Faça o download deste ficheiro para o seu computador local e abra-o num editor de texto. Utilize um editor de texto como o VS Code que suporte realce de sintaxe e análise estática para arquivos yaml.
Nota
A partir da versão de fevereiro de 2022, a classe de armazenamento capaz de ReadWriteMany (RWX) necessita ser especificada para backups. Saiba mais sobre access modes.
Se nenhuma classe de armazenamento for especificada para backups, a classe de armazenamento padrão no Kubernetes será usada. Se a predefinição não for capaz de RWX, a instalação do SQL Managed Instance pode não ser bem-sucedida.
Ficheiro yaml de exemplo
Veja o seguinte exemplo de um ficheiro yaml
apiVersion: v1
data:
password: <your base64 encoded password>
username: <your base64 encoded username>
kind: Secret
metadata:
name: sql1-login-secret
type: Opaque
---
apiVersion: sql.arcdata.microsoft.com/v12
kind: SqlManagedInstance
metadata:
name: sql1
annotations:
exampleannotation1: exampleannotationvalue1
exampleannotation2: exampleannotationvalue2
labels:
examplelabel1: examplelabelvalue1
examplelabel2: examplelabelvalue2
spec:
dev: true #options: [true, false]
licenseType: LicenseIncluded #options: [LicenseIncluded, BasePrice]. BasePrice is used for Azure Hybrid Benefits.
tier: GeneralPurpose #options: [GeneralPurpose, BusinessCritical]
security:
adminLoginSecret: sql1-login-secret
scheduling:
default:
resources:
limits:
cpu: "2"
memory: 4Gi
requests:
cpu: "1"
memory: 2Gi
services:
primary:
type: LoadBalancer
storage:
#backups:
# volumes:
# - className: azurefile # Backup volumes require a ReadWriteMany (RWX) capable storage class
# size: 5Gi
data:
volumes:
- className: default # Use default configured storage class or modify storage class based on your Kubernetes environment
size: 5Gi
datalogs:
volumes:
- className: default # Use default configured storage class or modify storage class based on your Kubernetes environment
size: 5Gi
logs:
volumes:
- className: default # Use default configured storage class or modify storage class based on your Kubernetes environment
size: 5Gi
Personalização do login e da senha
Um segredo no Kubernetes é armazenado como uma string codificada em base64 - uma para o nome de utilizador e outra para a palavra-passe. Você precisará codificar um login e senha de administrador de sistema em base64 e colocá-los na localização do marcador em data.password e data.username. Do not include the < and > symbols provided in the template.
Nota
Para segurança ideal, não é permitido usar o valor sa para o login.
Siga a política de complexidade de palavras-passe.
Pode utilizar uma ferramenta online para codificar em base64 o nome de utilizador e a palavra-passe desejados, ou pode usar ferramentas de linha de comando (CLI) dependendo da sua plataforma.
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
Personalizar o nome
O modelo tem um valor de sql1 para o atributo de nome. Pode alterar este valor, mas deve incluir caracteres que sigam os padrões de nomenclatura DNS. Também deve alterar o nome do segredo para corresponder. Por exemplo, se alterar o nome da instância gerida do SQL para sql2, deve alterar o nome do segredo de sql1-login-secret para sql2-login-secret
Personalizando os requisitos de recursos
Você pode alterar os requisitos de recursos - os limites e pedidos de RAM e de núcleos - conforme necessário.
Nota
Pode saber mais sobre governança de recursos Kubernetes.
Requisitos para limites e solicitações de recursos:
- O valor limite de núcleos é necessário para fins de faturação.
- O restante dos pedidos de recursos e limites são opcionais.
- O limite e o pedido de núcleos devem ser um valor inteiro positivo, se especificado.
- É necessário um mínimo de 1 núcleo para o pedido de núcleos, se especificado.
- O formato do valor da memória segue a notação do Kubernetes.
- É necessário um mínimo de 2 GB para o pedido de memória, se especificado.
- Como diretriz geral, deve ter 4 GB de RAM para cada núcleo para casos de uso em produção.
Personalização do tipo de serviço
O tipo de serviço pode ser alterado para NodePort, se desejado. Um número de porta aleatório será atribuído.
Personalização do armazenamento
Step 2: Provide the improved translation.
pt-PT: Pode personalizar as classes de armazenamento para adaptar ao seu ambiente. Se não tiver a certeza de quais classes de armazenamento estão disponíveis, execute o comando kubectl get storageclass para visualizá-las.
O modelo tem um valor padrão de default.
Por exemplo
storage:
data:
volumes:
- className: default
Este exemplo significa que há uma classe de armazenamento chamada default, e não que há uma classe de armazenamento que é a padrão. Também pode opcionalmente alterar o tamanho do seu armazenamento. Para mais informações, veja a configuração de armazenamento.
Criando a instância gerida do SQL
Agora que personalizou o ficheiro yaml da instância gerida de SQL, pode criar a instância gerida de SQL executando o seguinte comando:
kubectl create -n <your target namespace> -f <path to your yaml file>
#Example
#kubectl create -n arc -f C:\arc-data-services\sqlmi.yaml
Monitorização do estado de criação
Criar a instância gerida do SQL demorará alguns minutos a concluir. Pode monitorizar o progresso numa outra janela de terminal com os seguintes comandos:
Nota
Os comandos de exemplo abaixo assumem que você criou uma instância gerida de SQL chamada sql1 e um namespace do Kubernetes com o nome arc. Se utilizou um nome de namespace/instância gerida SQL diferente, pode substituir arc e sqlmi pelos seus nomes.
kubectl get sqlmi/sql1 --namespace arc
kubectl get pods --namespace arc
Pode também verificar o estado de criação de qualquer pod em particular. Executar kubectl describe pod .... Utilize este comando para resolver quaisquer problemas. For example:
kubectl describe pod/<pod name> --namespace arc
#Example:
#kubectl describe pod/sql1-0 --namespace arc
Resolver problemas de implementação
Se encontrar quaisquer problemas com a implementação, por favor consulte o guia de resolução de problemas.