Creación de un servidor PostgreSQL habilitado para Azure Arc desde la CLI

En este documento se describen los pasos necesarios para crear un servidor de PostgreSQL en Azure Arc y para conectarse a él.

Requisitos previos

Para poder continuar con las tareas de este artículo, debe tener las herramientas necesarias. Todas las implementaciones necesitan las siguientes herramientas:

  • Azure Data Studio

  • Extensión de Azure Arc para Azure Data Studio

  • CLI de Azure (az)

  • Extensión (arcdata) para la CLI de Azure

  • kubectl

    Herramientas de cliente adicionales en función del entorno. Para obtener una lista más completa, consulte Herramientas de cliente.

Además de las herramientas necesarias, para completar las tareas, necesita un controlador de datos de Azure Arc.

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.

Las actualizaciones más recientes están disponibles en las notas de la versión.

Introducción

Si ya está familiarizado con los temas siguientes, puede omitir este párrafo. Hay temas importantes que puede que le interese leer antes de continuar con la creación:

Si prefiere probar las cosas sin aprovisionar un entorno completo por su cuenta, empiece a trabajar rápidamente con Azure Arc JumpStart en Azure Kubernetes Service (AKS), AWS Elastic Kubernetes Service (EKS), Google Cloud Kubernetes Engine (GKE) o en una máquina virtual de Azure.

Paso preliminar y temporal solo para usuarios de OpenShift

Implemente este paso antes de pasar al siguiente. Para implementar el servidor PostgreSQL en Red Hat OpenShift en un proyecto distinto del predeterminado, debe ejecutar los comandos siguientes en el clúster para actualizar las restricciones de seguridad. Este comando concede los privilegios necesarios a las cuentas de servicio que ejecutarán el servidor PostgreSQL. La restricción de contexto de seguridad (SCC) arc-data-scc es la que ha agregado al implementar el controlador de datos de Azure Arc.

oc adm policy add-scc-to-user arc-data-scc -z <server-name> -n <namespace-name>

Server-name es el nombre del servidor que se va a crear en el siguiente paso.

Para obtener más detalles sobre las SCC en OpenShift, consulte la documentación de OpenShift. Vaya al paso siguiente.

Creación de un servidor PostgreSQL habilitado para Azure Arc

Para crear un servidor de PostgreSQL habilitado para Azure Arc en el controlador de datos de Arc, usará el comando az postgres server-arc create al que pasará varios parámetros.

Para más información sobre todos los parámetros que se pueden establecer en el momento de la creación, revise la salida del comando:

az postgres server-arc create --help

Los parámetros principales que debe tener en cuenta son:

  • el nombre del servidor que quiere implementar. Indique --name o -n seguido de un nombre cuya longitud no debe superar los 11 caracteres.

  • Las clases de almacenamiento que quiere que use el grupo de servidores. Es importante establecer la clase de almacenamiento justo en el momento de implementar un servidor, ya que no se puede cambiar después. Puede especificar las clases de almacenamiento que se usarán para los datos, los registros y las copias de seguridad. De forma predeterminada, si no indica las clases de almacenamiento, se usarán las clases de almacenamiento del controlador de datos.

    • Para establecer la clase de almacenamiento para las copias de seguridad, indique el parámetro --storage-class-backups seguido del nombre de la clase de almacenamiento. Si se excluye este parámetro, se deshabilitan las copias de seguridad automatizadas.
    • Para establecer la clase de almacenamiento para los datos, indique el parámetro --storage-class-data seguido del nombre de la clase de almacenamiento.
    • Para establecer la clase de almacenamiento para los registros, indique el parámetro --storage-class-logs seguido del nombre de la clase de almacenamiento.

    Importante

    Si necesita cambiar la clase de almacenamiento después de la implementación, extraiga los datos, elimine el servidor, cree otro servidor e importe los datos.

Al ejecutar el comando de creación se le va a pedir que escriba el nombre de usuario y la contraseña del usuario administrativo. Para omitir el aviso interactivo, establezca la variable de entorno de sesión AZDATA_USERNAME y AZDATA_PASSWORD antes de ejecutar el comando create.

Ejemplos

Para implementar un servidor de PostgreSQL denominado postgres01 que emplea las mismas clases de almacenamiento que el controlador de datos, ejecute el siguiente comando:

az postgres server-arc create -n postgres01 --k8s-namespace <namespace> --use-k8s

Nota:

  • Si ha implementado el controlador de datos con las variables de entorno de sesión AZDATA_USERNAME y AZDATA_PASSWORD en la misma sesión de terminal, los valores de AZDATA_PASSWORD también se usarán para implementar el servidor de PostgreSQL. Si prefiere usar otra contraseña, (1) actualice el valor de AZDATA_USERNAME y AZDATA_PASSWORD, (2) elimine la variable de entorno AZDATA_USERNAME y AZDATA_PASSWORD o (3) elimine los valores; se le pedirá que escriba un nombre de usuario y contraseña de forma interactiva al crear un servidor.
  • La creación de una instancia de PostgreSQL no registrará los recursos en Azure de forma inmediata. Como parte del proceso de carga de inventario de recursos o datos de uso a Azure, los recursos se crearán en Azure y podrá verlos en Azure Portal.

Enumeración de los servidores de PostgreSQL implementados en el controlador de datos de Arc

Para enumerar los servidores de PostgreSQL implementados en el controlador de datos de Arc, ejecute el siguiente comando:

az postgres server-arc list --k8s-namespace <namespace> --use-k8s
  {
    "name": "postgres01",
    "state": "Ready"
  }

Obtención de los puntos de conexión para conectarse a los servidores de PostgreSQL habilitados para Azure Arc

Para ver los puntos de conexión de servidor de PostgreSQL, ejecute el comando siguiente:

az postgres server-arc endpoint list -n <server name> --k8s-namespace <namespace> --use-k8s

Por ejemplo:

{
  "instances": [
    {
      "endpoints": [
        {
          "description": "PostgreSQL Instance",
          "endpoint": "postgresql://postgres:<replace with password>@123.456.78.912:5432"
        },
        {
          "description": "Log Search Dashboard",
        },
        {
          "description": "Metrics Dashboard",
          "endpoint": "https://98.765.432.11:3000/d/postgres-metrics?var-Namespace=arc&var-Name=postgres01"
        }
      ],
      "engine": "PostgreSql",
      "name": "postgres01"
    }
  ],
  "namespace": "arc"
}

Puede usar el punto de conexión de la instancia de PostgreSQL para conectarse a la instancia de PostgreSQL desde la herramienta que prefiera: Azure Data Studio, pgcli psql, pgAdmin, etc.

En este momento, use la compilación para los participantes del programa Insider de Azure Data Studio.

Nota especial sobre las implementaciones de máquinas virtuales de Azure

Cuando se usa una máquina virtual de Azure, la dirección IP del punto de conexión no mostrará la IP pública. Para localizar la IP pública, use el comando siguiente:

az network public-ip list -g azurearcvm-rg --query "[].{PublicIP:ipAddress}" -o table

Después, puede combinar la dirección IP pública con el puerto para establecer la conexión.

Es posible que también tenga que exponer el puerto del servidor de PostgreSQL a través de la puerta de enlace de seguridad de red (NSG). Para permitir el tráfico a través del grupo de seguridad de red (NSG), establezca una regla. Para establecer una regla, tiene que conocer el nombre del NSG. Puede determinar el NSG con el comando siguiente:

az network nsg list -g azurearcvm-rg --query "[].{NSGName:name}" -o table

Una vez que tenga el nombre del NSG, puede agregar una regla de firewall mediante el comando siguiente. En estos valores de ejemplo se crea una regla de NSG para el puerto 30655 y se permite la conexión desde cualquier dirección IP de origen.

Advertencia

No se recomienda establecer una regla para permitir la conexión desde una dirección IP de origen. Puede bloquear mejor si especifica un valor -source-address-prefixes específico de la dirección IP del cliente, o bien un intervalo de direcciones IP que abarque las direcciones IP del equipo o la organización.

Reemplace el valor del parámetro --destination-port-ranges siguiente por el número de puerto que ha obtenido del comando az postgres server-arc list anterior.

az network nsg rule create -n db_port --destination-port-ranges 30655 --source-address-prefixes '*' --nsg-name azurearcvmNSG --priority 500 -g azurearcvm-rg --access Allow --description 'Allow port through for db access' --destination-address-prefixes '*' --direction Inbound --protocol Tcp --source-port-ranges '*'

Conexión con Azure Data Studio

Abra Azure Data Studio y conéctese a la instancia con la dirección IP y el número de puerto del punto de conexión externo anterior, y la contraseña que haya especificado al crear la instancia. Si PostgreSQL no está disponible en la lista desplegable Tipo de conexión, puede instalar la extensión PostgreSQL si busca PostgreSQL en la pestaña Extensiones.

Nota:

Tendrá que hacer clic en el botón [Avanzado] del panel de conexión para escribir el número de puerto.

Recuerde que si usa una máquina virtual de Azure necesita la dirección IP pública, a la que se puede acceder mediante el comando siguiente:

az network public-ip list -g azurearcvm-rg --query "[].{PublicIP:ipAddress}" -o table

Conexión con psql

Para acceder al servidor de PostgreSQL, pase el punto de conexión externo del servidor de PostgreSQL que ha recuperado antes:

Ahora puede conectarse a psql:

psql postgresql://postgres:<EnterYourPassword>@10.0.0.4:30655