Cómo implementar MS SQL Server 2022 en Vultr Kubernetes Engine

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.

  1. Abra SQL Server Management Studio y haga clic en el botón “Archivo” en la barra de herramientas.

  2. En el menú desplegable, seleccione la opción “Conectar Explorador de objetos…”.

  3. Establezca el tipo de servidor en “Motor de base de datos” en el menú desplegable.

  4. 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”.

  5. 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

Related Posts