En esta página se ofrece una descripción general del operador AlloyDB Omni Kubernetes, con instrucciones para usarlo y desplegar AlloyDB Omni en un clúster de Kubernetes. En esta página se da por supuesto que tienes conocimientos básicos sobre el funcionamiento de Kubernetes.
Para obtener instrucciones sobre cómo instalar AlloyDB Omni en un entorno Linux estándar, consulta Instalar AlloyDB Omni.
Información general
Para desplegar 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 AlloyDB Omni basado en Kubernetes, empareja archivos de manifiesto declarativos con la utilidad kubectl
, al igual que con cualquier otro despliegue basado en Kubernetes. No uses la CLI de AlloyDB Omni, que está diseñada para desplegarse 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 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 empezar
Necesitas acceso a lo siguiente:
- Un clúster de Kubernetes que ejecute el siguiente software:
- Kubernetes 1.21 o una versión posterior.
- El servicio
cert-manager
.
- La utilidad
kubectl
. - El
helm
gestor de paquetes. - La CLI de Google Cloud. Después de instalar la CLI de gcloud, debes autenticar tu cuenta de Google Cloud ejecutando
gcloud auth login
.
Cada nodo del clúster de Kubernetes debe tener lo siguiente:
- Un mínimo de dos CPUs x86 o AMD64.
- Al menos 8 GB de RAM.
- Versión 4.18 o posterior del kernel de Linux.
- Control group v2 (cgroup v2) habilitado.
Instalar el operador de AlloyDB Omni
Para instalar el operador de AlloyDB Omni, sigue estos pasos:
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%%/*}"
Descarga el operador de AlloyDB Omni:
gcloud storage cp gs://$GCS_BUCKET/$HELM_PATH ./ --recursive
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
Elimina el archivo de instalación descargado del operador de AlloyDB Omni. El archivo se llama
alloydbomni-operator-VERSION_NUMBER.tgz
y se encuentra en el directorio de trabajo actual.
Configurar el almacenamiento de GDC conectado
Para instalar el operador AlloyDB Omni en GDC connected, debes seguir pasos adicionales para configurar el almacenamiento, ya que los clústeres de GDC connected no definen una clase de almacenamiento predeterminada. Debes definir una clase de almacenamiento predeterminada antes de crear un clúster de base de datos de AlloyDB Omni.
Para saber cómo definir Symcloud Storage como clase de almacenamiento predeterminada, consulta el artículo Definir Symcloud Storage como 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 el artículo Cambiar la clase de almacenamiento predeterminada.
Pasos de conciliación de Red Hat OpenShift
Si usas Red Hat OpenShift 4.12 o una versión posterior, 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 saltarte estos pasos.
Añade permisos para actualizar los finalizadores de la instancia de AlloyDB Omni editando el rol de clúster
system:controller:statefulset-controller
de la siguiente manera:kubectl edit clusterrole system:controller:statefulset-controller
En el editor de texto, añade lo siguiente al final del rol de clúster:
- apiGroups: - alloydbomni.internal.dbadmin.goog resources: - instances/finalizers verbs: - update - apiGroups: - alloydbomni.internal.dbadmin.goog resources: - backuprepositories/finalizers verbs: - update
El controlador StatefulSet debe tener permisos adicionales para actualizar los finalizadores de instancias añadidos al rol de clúster, ya que Red Hat OpenShift tiene habilitado OwnerReferencesPermissionEnforcement. Si no tiene permiso para actualizar los finalizadores de la instancia, el controlador de StatefulSet no podrá crear la reclamación de volumen persistente (PVC) de la base de datos y se mostrará el siguiente mensaje de error 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
Añade 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
En el editor de texto, añade lo siguiente al final del rol de clúster:
- apiGroups: - alloydbomni.dbadmin.goog resources: - dbinstances/finalizers verbs: - update
Añade la restricción de contexto de seguridad
anyuid
a la cuenta de serviciodefault
de 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 seguridadanyuid
, ya que, en el pod de la base de datos, el contenedor init se ejecuta como root y los demás contenedores se ejecutan con IDs de usuario específicos. Si no tienes permiso para usaranyuid
, el controlador StatefulSet no podrá crear el PVC de la base de datos y aparecerá 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
Crear un clúster de bases de datos
Un clúster de base de datos de AlloyDB Omni contiene todos los recursos de almacenamiento y de computación 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
Haz los cambios siguientes:
DB_CLUSTER_NAME
: el nombre de este clúster de base de datos. Por ejemplo,my-db-cluster
.ENCODED_PASSWORD
: la contraseña de inicio de sesión de la base de datos del rol de usuariopostgres
predeterminado, codificada como una cadena base64. Por ejemplo,Q2hhbmdlTWUxMjM=
paraChangeMe123
.CPU_COUNT
: número de CPUs disponibles para cada instancia de base de datos de este clúster de bases de datos.MEMORY_SIZE
: la cantidad de memoria por instancia de base de datos de este clúster de bases de datos. Recomendamos que este valor sea de 8 gigabytes por CPU. Por ejemplo, si has definidocpu
como2
en este manifiesto, te recomendamos que definasmemory
como16Gi
.DISK_SIZE
: 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 Conectarse mediante psql
preinstalado.
Para obtener más información sobre los manifiestos de Kubernetes y cómo aplicarlos, consulta Gestión de recursos.
Siguientes pasos
- Ejecutar y conectarse a AlloyDB Omni
- Gestionar AlloyDB Omni
- Gestionar la alta disponibilidad en Kubernetes