Introducción
Microsoft SQL (MS SQL) Server es un sistema de administración de bases de datos relacionales (RDBMS). Le permite administrar y almacenar datos en un formato estructurado, ofreciendo facilidad de acceso y manipulación de los datos. SQL Server ofrece una gama de funciones y herramientas para la gestión, el análisis y la generación de informes de datos y, a menudo, se utiliza en aplicaciones de nivel empresarial. Ofrecen varias ediciones para adaptarse a diferentes necesidades y presupuestos. Está disponible como una imagen de contenedor, lo que le permite ejecutar SQL Server en un entorno contenedor como Docker o Kubernetes. La versión en contenedor de SQL Server proporciona beneficios adicionales de aislamiento y seguridad porque permite que la base de datos se ejecute en un contenedor separado con sus recursos y controles de acceso.
La implementación de SQL Server en Kubernetes puede ofrecer una mayor flexibilidad, ahorro de costos, rendimiento y seguridad en comparación con la ejecución de SQL Server en una máquina virtual de Windows. Este artículo muestra los pasos para implementar Microsoft SQL Server 2022 en Vultr Kubernetes Engine (VKE). También lo guía a través de los pasos para implementar un Vultr Load Balancer para exponer el servidor de la base de datos fuera del clúster de Kubernetes y usar el servicio Vultr Block Storage para el almacenamiento persistente.
requisitos previos
Antes de comenzar, debe:
-
Implemente un clúster de Vultr Kubernetes Engine.
-
Implemente un servidor Ubuntu 22.04 para usarlo como estación de trabajo de administración. En la estación de trabajo de administración:
-
Instalar Kubectl .
-
Descargue su configuración de VKE y configure Kubectl.
-
Aprovisione el clúster en la región más cercana al cliente para evitar operaciones lentas debido a la latencia de la red.
Preparar el clúster de Kubernetes
Debe preparar el clúster de Kubernetes para la implementación de SQL Server mediante la creación de los recursos necesarios. Esta sección explica los pasos para crear un recurso secreto para almacenar las credenciales utilizadas para proteger el servidor SQL y un recurso de PVC para aprovisionar un servicio de almacenamiento en bloque para el almacenamiento persistente.
Cree un recurso secreto llamado mssql-login
.
# kubectl create secret generic mssql-login --from-literal=MSSQL_SA_PASSWORD="YOUR_PASS"
El comando anterior crea un nuevo recurso secreto llamado mssql-login
que contiene un solo par clave-valor que define las credenciales para el sa
usuario. Debe utilizar una contraseña segura con una longitud mínima de 8 caracteres. Él sa
usuario es el usuario administrador del sistema con acceso completo a todos los objetos y configuraciones de la base de datos. Este usuario tiene los permisos más altos y puede realizar cualquier operación, incluida la creación y modificación de tablas, usuarios y otros objetos, la configuración de la base de datos y la seguridad.
Cree un nuevo archivo de manifiesto llamado mssql-data.yaml
.
# nano mssql-data.yaml
Agregue los siguientes contenidos al archivo y guárdelo usando CTRL + X y luego ENTER.
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: mssql-data
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 100Gi
storageClassName: vultr-block-storage
El manifiesto anterior declara un recurso de PVC llamado mssql-data
que aprovisiona un recurso vinculado Vultr Block Storage. utiliza el vultr-block-storage
clase de almacenamiento creada por el controlador de interfaz de almacenamiento de contenedores (CSI) para Vultr. Puede cambiar el tamaño de almacenamiento editando el spec.resources.requests.storage
valor. Este recurso servirá como un bloque de almacenamiento persistente para el contenedor de SQL Server. Consulte la Guía de referencia de VKE para obtener más información.
Aplicar el archivo de manifiesto.
# kubectl apply -f mssql-data.yaml
Verifique la implementación.
# kubectl get pvc mssql-data
Pueden pasar unos minutos antes de que el recurso esté listo para su uso. Si la implementación lleva más de unos minutos, puede usar el kubectl describe pvc mssql-data
Comando para ver el registro de eventos para solucionar los errores.
Implementar el servidor SQL
Las imágenes del contenedor de SQL Server están disponibles en Microsoft Container Registry. Puede implementar las imágenes del contenedor de SQL Server en un entorno en contenedores como Kubernetes. La implementación de SQL Server en un clúster de Kubernetes ofrece escalabilidad, seguridad, flexibilidad y ahorro de costos mejorados en comparación con las otras opciones. Si el pod de SQL Server falla, Kubernetes vuelve a crear automáticamente un nuevo pod, comenzando donde lo dejó con la ayuda del almacenamiento persistente. Esta sección explica los pasos para implementar SQL Server en el clúster de Kubernetes mediante un recurso de implementación.
Cree un nuevo archivo de manifiesto llamado mssql-deployment.yaml
.
# nano mssql-deployment.yaml
Agregue los siguientes contenidos al archivo y guárdelo usando CTRL + X y luego ENTER.
apiVersion: apps/v1
kind: Deployment
metadata:
name: mssql-deployment
spec:
replicas: 1
selector:
matchLabels:
app: mssql
template:
metadata:
labels:
app: mssql
spec:
terminationGracePeriodSeconds: 30
hostname: mssqlinst
securityContext:
fsGroup: 10001
containers:
- name: mssql
image: mcr.microsoft.com/mssql/server:2022-latest
ports:
- containerPort: 1433
env:
- name: MSSQL_PID
value: "Developer"
- name: ACCEPT_EULA
value: "Y"
- name: MSSQL_SA_PASSWORD
valueFrom:
secretKeyRef:
name: mssql-login
key: MSSQL_SA_PASSWORD
volumeMounts:
- name: mssqldb
mountPath: /var/opt/mssql
volumes:
- name: mssqldb
persistentVolumeClaim:
claimName: mssql-data
El manifiesto anterior declara un recurso de implementación llamado mssql
que implementa un ReplicaSet con una única réplica del mssql
contenedor que utiliza la imagen de contenedor oficial de SQL Server. La imagen del contenedor espera 3 variables de entorno para configurar SQL Server: MSSQL_PID
, ACCEPT_EULA
y MSSQL_SA_PASSWORD
. Él MSSQL_PID
La variable define la edición de SQL Server. Él ACCEPT_EULA
variable define que usted está de acuerdo con el obligatorio Acuerdo de licencia de usuario final (EULA) . Él MSSQL_SA_PASSWORD
variable define las credenciales para el sa
usuario que usa el recurso secreto creado en los pasos anteriores. También utiliza el mssql-data
Recurso de PVC para almacenar el /var/opt/mssql
directorio.
Aplicar el archivo de manifiesto.
# kubectl apply -f mssql-deployment.yaml
Verifique la implementación.
# kubectl get deployment mssql-deployment
Pueden pasar unos minutos antes de que el recurso esté listo para su uso. Si la implementación lleva más de unos minutos, puede usar el kubectl describe deployment mssql-deployment
Comando para ver el registro de eventos para solucionar los errores.
Ediciones de servidor y licencia
Como se mencionó anteriormente, la imagen del contenedor de SQL Server utiliza el MSSQL_PID
variable de entorno para determinar la edición que desea. Los siguientes son los valores posibles para el MSSQL_PID
Variable ambiental.
-
Desarrollador
-
Expresar
-
Web
-
Estándar
-
Empresa
-
Una clave de producto
Las ediciones Developer y Express son gratuitas, la edición Developer ofrece las mismas funciones que la edición Enterprise. Aún así, solo puede usarlo con fines de desarrollo, ya que no permite el uso de producción. Las otras opciones, como Web, Standard y Enterprise, requieren que compre una licencia para funciones adicionales. Referirse a Ediciones de SQL Server página para más información.
La imagen del contenedor de SQL Server no tiene comprobaciones técnicas para validar la licencia. Sin embargo, aceptar la Acuerdo de licencia de usuario final (EULA) es obligatorio utilizar el SQL Server. Esto significa que debe comprar una licencia antes de usar las ediciones pagas de SQL Server. Al aceptar el EULA, acepta los términos y condiciones, que incluyen la condición de comprar una licencia para las ediciones pagas de SQL Server. Es importante tener esto en cuenta al usar SQL Server en un contenedor, ya que usar las ediciones pagas sin una licencia válida podría tener consecuencias legales.
Como se mencionó en la lista anterior, también puede usar una clave de producto para definir la edición de SQL Server, que determina automáticamente la edición de acuerdo con la clave de producto especificada. Al especificar una clave de producto, debe tener la forma de #####-#####-#####-#####-#####
dónde #
es un número o una letra.
Configurar el acceso externo
Vultr Kubernetes Engine le permite aprovisionar un recurso de equilibrador de carga vinculado para exponer las conexiones al contenedor de SQL Server fuera de la red mediante Vultr Cloud Administrador de controladores. Esta sección demuestra los pasos para crear un recurso de servicio para exponer las conexiones a SQL Server mediante un equilibrador de carga Vultr.
Cree un nuevo archivo de manifiesto llamado mssql-loadbalancer.yaml
.
# nano mssql-loadbalancer.yaml
Agregue los siguientes contenidos al archivo y guárdelo usando CTRL + X y luego ENTER.
apiVersion: v1
kind: Service
metadata:
name: mssql-loadbalancer
annotations:
service.beta.kubernetes.io/vultr-loadbalancer-protocol: "tcp"
spec:
type: LoadBalancer
ports:
- protocol: TCP
port: 1433
targetPort: 1433
selector:
app: mssql
El manifiesto anterior declara un recurso de servicio llamado mssql-loadbalancer
que aprovisiona un recurso vinculado Vultr Load Balancer. utiliza el vultr-loadbalancer-protocol
tipo de anotación que viene con el Cloud Controller Manager para Vultr para configurar el protocolo de conexión. Este recurso expondrá conexiones a SQL Server fuera del clúster de Kubernetes. Consulte la Guía de referencia de VKE para obtener más información.
Aplicar el archivo de manifiesto.
# kubectl apply -f mssql-loadbalancer.yaml
Verifique la implementación.
# kubectl get service mssql-loadbalancer
Pueden pasar de 5 a 10 minutos antes de que el recurso esté listo para usarse. Si la implementación lleva más que eso, puede usar el kubectl describe service mssql-loadbalancer
Comando para ver el registro de eventos para solucionar los errores.
Obtenga la dirección IP del equilibrador de carga.
# kubectl get service mssql-loadbalancer -o jsonpath={.status.loadBalancer.ingress[0].ip}
La salida contiene la dirección IP mediante la cual puede conectarse a SQL Server fuera del clúster en el puerto predeterminado 1433
. El equilibrador de carga puede tardar unos minutos más después de entrar en el Listo estado para comenzar a manejar las solicitudes.
Conéctese al servidor SQL usando sqlcmd
sqlcmd
es una utilidad de línea de comandos para SQL Server que permite a los usuarios interactuar con la base de datos mediante comandos y secuencias de comandos SQL. Proporciona una forma flexible y eficiente de ejecutar consultas, administrar objetos de base de datos y realizar otras tareas en la base de datos. Referirse a Utilidad sqlcmd página para más información.
Conéctese al servidor SQL usando sqlcmd
.
sqlcmd -S LOADBALANCER_IP -U sa -P PASSWORD
Reemplazar LOADBALANCER_IP
con la dirección IP del balanceador de carga y PASSWORD
con la contraseña que utilizó en los pasos anteriores para crear el recurso secreto.
Conéctese a SQL Server usando SQL Server Management Studio
SQL Server Management Studio (SSMS) es una herramienta de interfaz gráfica de usuario para gestionar y administrar bases de datos de SQL Server. Proporciona un conjunto integral de herramientas y funciones para administrar objetos de base de datos, ejecutar consultas, realizar copias de seguridad y restauraciones, y monitorear el rendimiento y la salud de la base de datos. Referirse a Estudio de administración de SQL Server página para más información.
Conéctese a SQL Server usando SQL Server Management Studio.
-
Abra SQL Server Management Studio y haga clic en el botón “Archivo” en la barra de herramientas.
-
En el menú desplegable, seleccione la opción “Conectar Explorador de objetos…”.
-
Establezca el tipo de servidor en “Motor de base de datos” en el menú desplegable.
-
Seleccione “Autenticación de SQL Server” como modo de autenticación e ingrese las credenciales de inicio de sesión en los campos “Iniciar sesión” y “Contraseña”.
-
Haga clic en el botón “Conectar” para establecer una conexión.
Probado en SQL Server Management Studio v18.21.1
Conclusión
La implementación de SQL Server en Kubernetes puede ofrecer una mayor flexibilidad, ahorro de costos, rendimiento y seguridad en comparación con la ejecución de SQL Server en una máquina virtual de Windows. Este artículo demostró los pasos para implementar Microsoft SQL (MS SQL) Server 2022 en Vultr Kubernetes Engine (VKE). También lo guió a través de los pasos para implementar un Vultr Load Balancer para exponer el servidor de la base de datos fuera del clúster de Kubernetes y usar el servicio Vultr Block Storage para el almacenamiento persistente.
Tenga en cuenta que los servicios adicionales que se usan con Vultr Kubernetes Engine, como Vultr Block Storage y Vultr Load Balancer, no están incluidos con el clúster y son recursos de nube que se cobran individualmente.
Más información
Título del artículo Nombre (opcional) Correo electrónico (opcional) Descripción
Enviar sugerencia