Criar exemplo gerido pelo Azure SQL utilizando ferramentas KubernetesCreate Azure SQL managed instance using Kubernetes tools

Nota

Como funcionalidade de pré-visualização, a tecnologia apresentada neste artigo está sujeita a Termos Complementares de Utilização para visualizações do Microsoft Azure.As a preview feature, the technology presented in this article is subject to Supplemental Terms of Use for Microsoft Azure Previews.

As últimas atualizações estão disponíveis nas notas de lançamento.The latest updates are available in the release notes.

Para a atualização atual, a implementação do controlador de dados Arc no modo de conectividade direta é suportada apenas a partir do portal Azure.For the current update, deployment of Arc data controller in direct connectivity mode is only supported from Azure portal.

Para mais limitações e mais detalhes, verifique as questões conhecidas.For additional limitations and more details, check the known issues.

Pré-requisitosPrerequisites

Já deveria ter criado um controlador de dados Azure Arc.You should have already created an Azure Arc data controller.

Para criar uma instância gerida pela SQL utilizando ferramentas Kubernetes, terá de instalar as ferramentas Kubernetes.To create a SQL managed instance using Kubernetes tools, you will need to have the Kubernetes tools installed. Os exemplos deste artigo serão kubectl usados , mas abordagens semelhantes podem ser usadas com outras ferramentas Kubernetes, como o dashboard Kubernetes, oc ou se você estiver familiarizado com essas helm ferramentas e Kubernetes yaml/json.The examples in this article will use kubectl, but similar approaches could be used with other Kubernetes tools such as the Kubernetes dashboard, oc, or helm if you are familiar with those tools and Kubernetes yaml/json.

Instale a ferramenta kubectlInstall the kubectl tool

Descrição GeralOverview

Para criar um exemplo gerido pela SQL, é necessário criar um segredo kubernetes para armazenar o login e a palavra-passe do administrador do sistema de forma segura e um recurso personalizado de instância gerido pela SQL com base na definição de recursos personalizados sqlmanagedinstance.To create a SQL managed instance, you need to create a Kubernetes secret to store your system administrator login and password securely and a SQL managed instance custom resource based on the sqlmanagedinstance custom resource definition.

Criar um ficheiro yamlCreate a yaml file

Pode utilizar o ficheiro yaml do modelo como ponto de partida para criar o seu próprio ficheiro yaml de instância gerida por SQL personalizado.You can use the template yaml file as a starting point to create your own custom SQL managed instance yaml file. Faça o download deste ficheiro para o seu computador local e abra-o num editor de texto.Download this file to your local computer and open it in a text editor. É útil usar um editor de texto como o VS Code que suporta o realce de sintaxe e o lintamento para ficheiros yaml.It is useful to use a text editor such as VS Code that support syntax highlighting and linting for yaml files.

Este é um ficheiro yaml exemplo:This is an example yaml file:

apiVersion: v1
data:
  password: <your base64 encoded password>
  username: <your base64 encoded user name. 'sa' is not allowed>
kind: Secret
metadata:
  name: sql1-login-secret
type: Opaque
---
apiVersion: sql.arcdata.microsoft.com/v1alpha1
kind: sqlmanagedinstance
metadata:
  name: sql1
spec:
  limits:
    memory: 4Gi
    vcores: "4"
  requests:
    memory: 2Gi
    vcores: "1"
  service:
    type: LoadBalancer
  storage:
    data:
      className: default
      size: 5Gi
    logs:
      className: default
      size: 1Gi

Personalizar o login e a palavra-passeCustomizing the login and password

Um segredo de Kubernetes é armazenado como uma cadeia codificada base64 - uma para o nome de utilizador e outra para a senha.A Kubernetes secret is stored as a base64 encoded string - one for the username and one for the password. Terá de codificar um login e palavra-passe de administrador de sistema e colocá-los no local reservado data.password e data.username .You will need to base64 encode a system administrator login and password and place them in the placeholder location at data.password and data.username. Não inclua os < > símbolos e símbolos fornecidos no modelo.Do not include the < and > symbols provided in the template.

Nota

Para uma segurança ótima, não é permitido utilizar o valor 'sa' para o início de sessão .For optimum security, using the value 'sa' is not allowed for the login . Siga a política de complexidade da palavra-passe.Follow the password complexity policy.

Pode utilizar uma ferramenta online para codificar o nome de utilizador e palavra-passe pretendidos ou pode utilizar ferramentas CLI construídas dependendo da sua plataforma.You can use an online tool to base64 encode your desired username and password or you can use built in CLI tools depending on your platform.

PowerShellPowerShell

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

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

Linux/macOSLinux/macOS

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

#Example
# echo -n 'example' | base64

Personalizar o nomeCustomizing the name

O modelo tem um valor de 'sql1' para o atributo de nome.The template has a value of 'sql1' for the name attribute. Podes mudar isto, mas devem ser os caracteres que seguem os padrões de nomeação dns.You can change this but it must be characters that follow the DNS naming standards. Também deve mudar o nome do segredo para combinar.You must also change the name of the secret to match. Por exemplo, se alterar o nome do sql gerido para 'sql2', deve alterar o nome do segredo de 'sql1-login-secret' para 'sql2-login-secret'For example, if you change the name of the SQL managed instance to 'sql2', you must change the name of the secret from 'sql1-login-secret' to 'sql2-login-secret'

Personalização dos requisitos de recursosCustomizing the resource requirements

Pode alterar os requisitos de recursos - os limites e pedidos fundamentais da RAM - conforme necessário.You can change the resource requirements - the RAM and core limits and requests - as needed.

Nota

Pode saber mais sobre a governação dos recursos de Kubernetes.You can learn more about Kubernetes resource governance.

Requisitos para limites de recursos e pedidos:Requirements for resource limits and requests:

  • O valor-limite dos núcleos é necessário para efeitos de faturação.The cores limit value is required for billing purposes.
  • O resto dos pedidos e limites de recursos são opcionais.The rest of the resource requests and limits are optional.
  • O limite de núcleos e o pedido devem ser um valor inteiro positivo, se especificado.The cores limit and request must be a positive integer value, if specified.
  • O mínimo de 2 núcleos é necessário para o pedido de núcleos, se especificado.The minimum of 2 cores is required for the cores request, if specified.
  • O formato de valor de memória segue a notação kubernetes.The memory value format follows the Kubernetes notation.
  • É necessário um mínimo de 2Gi para pedido de memória, se especificado.A minimum of 2Gi is required for memory request, if specified.
  • Como orientação geral, deve ter 4GB de RAM para cada 1 núcleo para casos de utilização de produção.As a general guideline, you should have 4GB of RAM for each 1 core for production use cases.

Tipo de serviço de personalizaçãoCustomizing service type

O tipo de serviço pode ser alterado para NodePort, se desejar.The service type can be changed to NodePort if desired. Um número de porta aleatório será atribuído.A random port number will be assigned.

Personalização do armazenamentoCustomizing storage

Pode personalizar as aulas de armazenamento para o armazenamento que combine com o seu ambiente.You can customize the storage classes for storage to match your environment. Se não tiver a certeza de que aulas de armazenamento estão disponíveis, pode executar o comando kubectl get storageclass para as visualizar.If you are not sure which storage classes are available you can run the command kubectl get storageclass to view them. O modelo tem um valor padrão de 'predefinição'.The template has a default value of 'default'. Isto significa que existe uma classe de armazenamento chamada "padrão" não que exista uma classe de armazenamento que é o padrão.This means that there is a storage class named 'default' not that there is a storage class that is the default. Também pode alterar opcionalmente o tamanho do seu armazenamento.You can also optionally change the size of your storage. Pode ler mais sobre a configuração do armazenamento.You can read more about storage configuration.

Criando o exemplo gerido pelo SQLCreating the SQL managed instance

Agora que personalizou o ficheiro yaml de instância gerida pela SQL, pode criar a instância gerida pelo SQL executando o seguinte comando:Now that you have customized the SQL managed instance yaml file, you can create the SQL managed instance by running the following command:

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çãoMonitoring the creation status

A criação do exemplo gerido pelo SQL levará alguns minutos a ser concluída.Creating the SQL managed instance will take a few minutes to complete. Pode monitorizar o progresso noutra janela do terminal com os seguintes comandos:You can monitor the progress in another terminal window with the following commands:

Nota

Os comandos de exemplo abaixo assumem que criou um SQL gerido exemplo chamado 'sql1' e Kubernetes namespace com o nome 'arc'.The example commands below assume that you created a SQL managed instance named 'sql1' and Kubernetes namespace with the name 'arc'. Se usou um nome diferente de nomespace/SQL, pode substituir 'arc' e 'sqlmi' com os seus nomes.If you used a different namespace/SQL managed instance name, you can replace 'arc' and 'sqlmi' with your names.

kubectl get sqlmi/sql1 --namespace arc
kubectl get pods --namespace arc

Também pode verificar o estado de criação de qualquer cápsula em particular executando um comando como abaixo.You can also check on the creation status of any particular pod by running a command like below. Isto é especialmente útil para resolver problemas.This is especially useful for troubleshooting any issues.

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

#Example:
#kubectl describe po/sql1-0 --namespace arc

Problemas de criação de resolução de problemasTroubleshooting creation problems

Se encontrar algum problema com a criação, consulte o guia de resolução de problemas.If you encounter any troubles with creation, please see the troubleshooting guide.

Passos seguintesNext steps

Ligue ao Arco Azure ativado sql instância geridaConnect to Azure Arc enabled SQL Managed Instance