Instala AlloyDB Omni en Kubernetes

Selecciona una versión de la documentación:

En esta página, se proporciona una descripción general del operador de Kubernetes de AlloyDB Omni, con instrucciones para usarlo y, así, implementar AlloyDB Omni en un clúster de Kubernetes. En esta página, se supone que tienes conocimientos básicos sobre el funcionamiento de Kubernetes.

Si deseas obtener instrucciones para instalar AlloyDB Omni en un entorno Linux estándar, consulta Instala AlloyDB Omni.

Descripción general

Para implementar AlloyDB Omni en un clúster de Kubernetes, instala el operador de AlloyDB Omni, una extensión de la API de Kubernetes proporcionada por Google.

Para configurar y controlar un clúster de base de datos de AlloyDB Omni basado en Kubernetes, debes vincular archivos de manifiesto declarativos con la utilidad kubectl, al igual que con cualquier otra implementación basada en Kubernetes. No usas la CLI de AlloyDB Omni, que está diseñada para implementaciones en máquinas Linux individuales y no en clústeres de Kubernetes.

Compatibilidad con el operador de AlloyDB Omni 1.1.0

La versión 1.1.0 del operador de AlloyDB Omni no es compatible con las versiones 15.5.3 y 15.5.4 de AlloyDB Omni. Si usas una de estas versiones de AlloyDB Omni, es posible que recibas un error similar al siguiente:

Error from server (Forbidden): error when creating "[...]/dbcluster.yaml": admission webhook "vdbcluster.alloydbomni.dbadmin.goog" denied the request: unsupported database version 15.5.3

Antes de comenzar

Necesitas acceso a lo siguiente:

Cada nodo del clúster de Kubernetes debe tener lo siguiente:

  • Al menos dos CPUs x86 o AMD64
  • Al menos 8 GB de RAM
  • Versión 4.18 o posterior del kernel de Linux
  • Grupo de control v2 (cgroup v2) habilitado.

Instala el operador de AlloyDB Omni

Para instalar el operador de AlloyDB Omni, sigue estos pasos:

  1. Define varias variables de entorno:

    export GCS_BUCKET=alloydb-omni-operator
    export HELM_PATH=$(gcloud storage cat gs://$GCS_BUCKET/latest)
    export OPERATOR_VERSION="${HELM_PATH%%/*}"
  2. Descarga el operador de AlloyDB Omni:

    gcloud storage cp gs://$GCS_BUCKET/$HELM_PATH ./ --recursive
  3. Instala el operador de AlloyDB Omni:

    helm install alloydbomni-operator alloydbomni-operator-${OPERATOR_VERSION}.tgz \
    --create-namespace \
    --namespace alloydb-omni-system \
    --atomic \
    --timeout 5m

    Si la instalación se realiza correctamente, se muestra el siguiente resultado:

    NAME: alloydbomni-operator
    LAST DEPLOYED: CURRENT_TIMESTAMP
    NAMESPACE: alloydb-omni-system
    STATUS: deployed
    REVISION: 1
    TEST SUITE: None
    
  4. Borra el archivo de instalación del operador de AlloyDB Omni que descargaste para realizar una limpieza. El archivo se llama alloydbomni-operator-VERSION_NUMBER.tgz y se encuentra en tu directorio de trabajo actual.

Configura el almacenamiento conectado de GDC

Para instalar el operador de AlloyDB Omni en GDC connected, debes seguir pasos adicionales para configurar el almacenamiento, ya que los clústeres de GDC connected no establecen una clase de almacenamiento predeterminada. Debes establecer una clase de almacenamiento predeterminada antes de crear un clúster de base de datos de AlloyDB Omni.

Para aprender a configurar Symcloud Storage como la clase de almacenamiento predeterminada, consulta Cómo configurar Symcloud Storage como la clase de almacenamiento predeterminada.

Para obtener más información sobre cómo cambiar el valor predeterminado de todas las demás clases de almacenamiento, consulta Cambia el recurso StorageClass predeterminado.

Pasos de reconciliación de Red Hat OpenShift

Si usas Red Hat OpenShift 4.12 o versiones posteriores, debes completar los siguientes pasos después de instalar el operador de AlloyDB Omni y antes de crear un clúster de base de datos de AlloyDB Omni en el clúster de Kubernetes. De lo contrario, puedes omitir estos pasos.

  1. Agrega permisos para actualizar los finalizadores de instancias de AlloyDB Omni editando el rol de clúster system:controller:statefulset-controller de la siguiente manera:

    kubectl edit clusterrole system:controller:statefulset-controller
  2. En el editor de texto, agrega lo siguiente al final del rol del clúster:

    - apiGroups:
      - alloydbomni.internal.dbadmin.goog
      resources:
      - instances/finalizers
      verbs:
      - update
    - apiGroups:
      - alloydbomni.internal.dbadmin.goog
      resources:
      - backuprepositories/finalizers
      verbs:
      - update
    

    El controlador de StatefulSet debe tener permisos adicionales para actualizar los finalizadores de instancias agregados al rol del clúster, ya que Red Hat OpenShift tiene habilitado OwnerReferencesPermissionEnforcement. Sin el permiso para actualizar los finalizadores de instancias, el controlador de StatefulSet no puede crear la PersistentVolumeClaim (PVC) de la base de datos con el siguiente mensaje de error que se encuentra en los eventos de StatefulSet de la base de datos:

    Warning  FailedCreate  [...] cannot set blockOwnerDeletion if an ownerReference refers to a resource you can't set finalizers on
    
  3. Agrega permisos para actualizar los finalizadores de DBInstance de AlloyDB Omni editando el rol de clúster fleet-manager-role:

    kubectl edit clusterrole fleet-manager-role
  4. En el editor de texto, agrega lo siguiente al final del rol del clúster:

    - apiGroups:
      - alloydbomni.dbadmin.goog
      resources:
      - dbinstances/finalizers
      verbs:
      - update
    
  5. Agrega la restricción del contexto de seguridad anyuid a la cuenta de servicio default en tu proyecto de Red Hat OpenShift de la siguiente manera:

    oc adm policy add-scc-to-user anyuid system:serviceaccount:OPENSHIFT_PROJECT:default
    

    Debes permitir que la cuenta de servicio default use la restricción de contexto de seguridad anyuid, ya que, dentro del Pod de la base de datos, el contenedor de inicialización se ejecuta como raíz y los demás contenedores se ejecutan con IDs de usuario específicos. Sin permiso para usar anyuid, el controlador de StatefulSet no puede crear el PVC de la base de datos y muestra el siguiente mensaje de error en los eventos de StatefulSet de la base de datos:

    Warning  FailedCreate  [...]    unable to validate against any security context constraint
    

Crea un clúster de base de datos

Un clúster de base de datos de AlloyDB Omni contiene todos los recursos de almacenamiento y procesamiento necesarios para ejecutar un servidor de AlloyDB Omni, incluido el servidor principal, las réplicas y todos tus datos.

Después de instalar el operador de AlloyDB Omni en tu clúster de Kubernetes, puedes crear un clúster de base de datos de AlloyDB Omni en el clúster de Kubernetes aplicando un manifiesto similar al siguiente:

apiVersion: v1
kind: Secret
metadata:
  name: db-pw-DB_CLUSTER_NAME
type: Opaque
data:
  DB_CLUSTER_NAME: "ENCODED_PASSWORD"
---
apiVersion: alloydbomni.dbadmin.goog/v1
kind: DBCluster
metadata:
  name: DB_CLUSTER_NAME
spec:
  databaseVersion: "15.7.0"
  primarySpec:
    adminUser:
      passwordRef:
        name: db-pw-DB_CLUSTER_NAME
    resources:
      cpu: CPU_COUNT
      memory: MEMORY_SIZE
      disks:
      - name: DataDisk
        size: DISK_SIZE

Reemplaza lo siguiente:

  • DB_CLUSTER_NAME: Es el nombre de este clúster de base de datos, por ejemplo, my-db-cluster.

  • ENCODED_PASSWORD: Es la contraseña de acceso a la base de datos para el rol de usuario postgres predeterminado, codificada como una cadena en base64 (por ejemplo, Q2hhbmdlTWUxMjM= para ChangeMe123).

  • CPU_COUNT: Es la cantidad de CPU disponibles para cada instancia de base de datos en este clúster de bases de datos.

  • MEMORY_SIZE: Es la cantidad de memoria por instancia de base de datos de este clúster de bases de datos. Te recomendamos que establezcas este valor en 8 gigabytes por CPU. Por ejemplo, si estableciste cpu en 2 anteriormente en este manifiesto, te recomendamos que establezcas memory en 16Gi.

  • DISK_SIZE: Es el tamaño del disco por instancia de base de datos, por ejemplo, 10Gi.

Después de aplicar este manifiesto, tu clúster de Kubernetes contendrá un clúster de base de datos de AlloyDB Omni con la configuración de memoria, CPU y almacenamiento especificada. Para establecer una conexión de prueba con el nuevo clúster de base de datos, consulta Conéctate con psql preinstalado.

Para obtener más información sobre los manifiestos de Kubernetes y cómo aplicarlos, consulta Administración de recursos.

¿Qué sigue?