Creación de una instancia de Azure SQL Managed Instance mediante las herramientas de KubernetesCreate Azure SQL managed instance using Kubernetes tools

Nota

Como característica en versión preliminar, la tecnología que se presenta en este artículo está sujeta a los términos de uso complementarios para las versiones preliminares de Microsoft Azure.As a preview feature, the technology presented in this article is subject to Supplemental Terms of Use for Microsoft Azure Previews.

Las actualizaciones más recientes están disponibles en las notas de la versión.The latest updates are available in the release notes.

En la actualización actual, la implementación del controlador de datos de Arc en modo de conectividad directa solo se admite en Azure Portal.For the current update, deployment of Arc data controller in direct connectivity mode is only supported from Azure portal.

Para más información sobre las limitaciones adicionales y otros detalles, consulte los problemas conocidos.For additional limitations and more details, check the known issues.

Requisitos previosPrerequisites

Ya debería haber creado un controlador de datos de Azure Arc.You should have already created an Azure Arc data controller.

Para crear una instancia de SQL Managed Instance mediante las herramientas de Kubernetes, debe tener instaladas dichas herramientas.To create a SQL managed instance using Kubernetes tools, you will need to have the Kubernetes tools installed. En los ejemplos de este artículo se usará kubectl, pero se podrían emplear enfoques similares con otras herramientas de Kubernetes como el panel de Kubernetes, oc o helm si está familiarizado con esas herramientas y los formatos YAML y JSON de Kubernetes.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.

Instalación de la herramienta kubectlInstall the kubectl tool

IntroducciónOverview

Para crear una instancia de SQL Managed Instance, debe crear un secreto de Kubernetes para almacenar el inicio de sesión y la contraseña del administrador del sistema de forma segura, y un recurso personalizado de SQL Managed Instance basado en la definición de recursos personalizada de 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.

Creación de un archivo YAMLCreate a yaml file

Puede usar el archivo YAML de plantilla como punto de partida para crear su propio archivo YAML de SQL Managed Instance personalizado.You can use the template yaml file as a starting point to create your own custom SQL managed instance yaml file. Descargue este archivo en el equipo local y ábralo en un editor de texto.Download this file to your local computer and open it in a text editor. Resulta útil usar un editor de texto como VS Code que admita el linting y el resaltado de la sintaxis en archivos YAML.It is useful to use a text editor such as VS Code that support syntax highlighting and linting for yaml files.

Este es un archivo YAML de ejemplo: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

Personalización del inicio de sesión y la contraseñaCustomizing the login and password

Un secreto de Kubernetes se almacena como una cadena codificada en Base64, una para el nombre de usuario y otra para la contraseña.A Kubernetes secret is stored as a base64 encoded string - one for the username and one for the password. Deberá codificar en Base64 el inicio de sesión y la contraseña del administrador del sistema y colocarlos en la ubicación del marcador de posición en data.password y 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. No incluya los símbolos < y > que se proporcionan en la plantilla.Do not include the < and > symbols provided in the template.

Nota

Para lograr una seguridad óptima, no se permite usar el valor "sa" para el inicio de sesión.For optimum security, using the value 'sa' is not allowed for the login . Siga la directiva de complejidad de la contraseña.Follow the password complexity policy.

Puede usar una herramienta en línea para codificar en Base64 el nombre de usuario y la contraseña que desee, o bien puede usar las herramientas integradas de la CLI, en función de la 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

Personalización del nombreCustomizing the name

La plantilla tiene un valor de "sql1" para el atributo name.The template has a value of 'sql1' for the name attribute. Puede cambiarlo, pero deben ser caracteres que sigan los estándares de nomenclatura de DNS.You can change this but it must be characters that follow the DNS naming standards. También debe cambiar el nombre del secreto para que coincida.You must also change the name of the secret to match. Por ejemplo, si cambia el nombre de la instancia administrada de SQL por "sql2", debe cambiar el nombre del secreto "sql1-login-secret" por "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'

Personalización de los requisitos de recursosCustomizing the resource requirements

Puede cambiar los requisitos de los recursos (solicitudes y límites de RAM y núcleo), según sea necesario.You can change the resource requirements - the RAM and core limits and requests - as needed.

Nota

Puede obtener más información sobre la gobernanza de recursos de Kubernetes.You can learn more about Kubernetes resource governance.

Requisitos para las solicitudes y los límites de recursos:Requirements for resource limits and requests:

  • El valor de límite de núcleos es necesario para la facturación.The cores limit value is required for billing purposes.
  • El resto de límites y solicitudes de recursos son opcionales.The rest of the resource requests and limits are optional.
  • La solicitud y el límite de núcleos deben ser un valor entero positivo, si se especifican.The cores limit and request must be a positive integer value, if specified.
  • Se requiere un mínimo de 2 núcleos para la solicitud de núcleos, si se especifica.The minimum of 2 cores is required for the cores request, if specified.
  • El formato del valor de memoria sigue la notación de Kubernetes.The memory value format follows the Kubernetes notation.
  • Se requiere un mínimo de 2 Gi para la solicitud de memoria, si se especifica.A minimum of 2Gi is required for memory request, if specified.
  • Como norma general, debe tener 4 GB de RAM por cada núcleo para los casos de uso de producción.As a general guideline, you should have 4GB of RAM for each 1 core for production use cases.

Personalización del tipo de servicioCustomizing service type

Si lo desea, el tipo de servicio se puede cambiar a NodePort.The service type can be changed to NodePort if desired. Se asignará un número de puerto aleatorio.A random port number will be assigned.

Personalización del almacenamientoCustomizing storage

Puede personalizar las clases de almacenamiento para que el almacenamiento coincida con su entorno.You can customize the storage classes for storage to match your environment. Si no está seguro de qué clases de almacenamiento están disponibles, puede ejecutar el comando kubectl get storageclass para verlas.If you are not sure which storage classes are available you can run the command kubectl get storageclass to view them. La plantilla tiene el valor predeterminado "default".The template has a default value of 'default'. Esto significa que existe una clase de almacenamiento con name establecido en "default", no que exista una clase de almacenamiento que sea la predeterminada.This means that there is a storage class named 'default' not that there is a storage class that is the default. También tiene la opción de cambiar el tamaño del almacenamiento.You can also optionally change the size of your storage. Puede obtener más información sobre la configuración de almacenamiento.You can read more about storage configuration.

Creación de la instancia de SQL Managed InstanceCreating the SQL managed instance

Ahora que ha personalizado el archivo YAML de SQL Managed Instance, puede crear la instancia de SQL Managed Instance mediante la ejecución del siguiente 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

Supervisión del estado de creaciónMonitoring the creation status

La creación de la instancia de SQL Managed Instance tardará unos minutos en completarse.Creating the SQL managed instance will take a few minutes to complete. Puede supervisar el progreso en otra ventana de terminal con los siguientes comandos:You can monitor the progress in another terminal window with the following commands:

Nota

En los siguientes comandos de ejemplo se da por hecho que ha creado una instancia de SQL Managed Instance denominada "sql1" y un espacio de nombres de Kubernetes con el nombre "arc".The example commands below assume that you created a SQL managed instance named 'sql1' and Kubernetes namespace with the name 'arc'. Si ha usado otro un nombre para el espacio de nombres o la instancia de SQL Managed Instance, puede reemplazar "arc" y "sqlmi" por sus nombres.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

También puede comprobar el estado de creación de un pod determinado ejecutando un comando como el siguiente.You can also check on the creation status of any particular pod by running a command like below. Esto es especialmente útil para solucionar problemas.This is especially useful for troubleshooting any issues.

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

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

Solución de problemas de creaciónTroubleshooting creation problems

Si tiene problemas con la creación, consulte la guía de solución de problemas.If you encounter any troubles with creation, please see the troubleshooting guide.

Pasos siguientesNext steps

Conexión a SQL Managed Instance habilitada para Azure ArcConnect to Azure Arc enabled SQL Managed Instance