En esta página, se proporciona una descripción general del operador de Kubernetes de AlloyDB Omni, con instrucciones para usarlo para 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.
Para obtener instrucciones sobre cómo instalar AlloyDB Omni en un entorno estándar de Linux, 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 que proporciona Google.
Para configurar y controlar un clúster de base de datos de AlloyDB Omni basado en Kubernetes, debes combinar archivos de manifiesto declarativos con la utilidad kubectl, al igual que cualquier otra implementación basada en Kubernetes.
Compatibilidad del 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:
- Un clúster de Kubernetes que ejecute el siguiente software:
- Kubernetes versión 1.21 o posterior
- El servicio
cert-manager.
- La utilidad
kubectl. - El administrador de paquetes
helm. - Google Cloud CLI Después de instalar la
gcloud CLI, debes autenticar tu Google Cloud cuenta 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
- Grupo de control v2 (cgroup v2) habilitado
Instala 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-operatorexport 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 ./ --recursiveInstala el operador de AlloyDB Omni:
helm install alloydbomni-operator alloydbomni-operator-${OPERATOR_VERSION}.tgz \ --create-namespace \ --namespace alloydb-omni-system \ --atomic \ --timeout 5mUna instalación exitosa muestra el siguiente resultado:
NAME: alloydbomni-operator LAST DEPLOYED: CURRENT_TIMESTAMP NAMESPACE: alloydb-omni-system STATUS: deployed REVISION: 1 TEST SUITE: NoneLibera espacio borrando el archivo de instalación del operador de AlloyDB Omni descargado. El archivo se llama
alloydbomni-operator-VERSION_NUMBER.tgzy se encuentra en tu directorio de trabajo actual.
Configura el almacenamiento conectado de GDC
Para instalar el operador de AlloyDB Omni en GDC conectado, debes seguir pasos adicionales para configurar el almacenamiento, ya que los clústeres de GDC conectado 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 obtener información sobre cómo establecer Symcloud Storage como la clase de almacenamiento predeterminada, consulta Establece Symcloud Storage como la clase de almacenamiento predeterminada.
Para obtener más información sobre cómo cambiar la configuración predeterminada de todas las demás clases de almacenamiento, consulta Cambia el recurso StorageClass predeterminado.
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 omitir estos pasos.
Agrega permisos para actualizar los finalizadores de la instancia de AlloyDB Omni. Para ello, edita el rol de clúster
system:controller:statefulset-controllerde la siguiente manera:kubectl edit clusterrole system:controller:statefulset-controllerEn el editor de texto, agrega 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: - updateEl controlador de StatefulSet debe tener permisos adicionales para actualizar los finalizadores de la instancia agregados al rol de clúster, ya que Red Hat OpenShift tiene habilitado OwnerReferencesPermissionEnforcement. Sin el permiso para actualizar los finalizadores de la instancia, el controlador de StatefulSet no puede crear la solicitud de volumen persistente (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 onAgrega permisos para actualizar los finalizadores de DBInstance de AlloyDB Omni. Para ello, edita el rol de clúster
fleet-manager-role:kubectl edit clusterrole fleet-manager-roleEn el editor de texto, agrega lo siguiente al final del rol de clúster:
- apiGroups: - alloydbomni.dbadmin.goog resources: - dbinstances/finalizers verbs: - updateAgrega la restricción de contexto de seguridad
anyuida la cuenta de serviciodefaulten 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
defaultuse la restricción de contexto de seguridadanyuid, ya que, dentro del pod de la base de datos, el contenedor init se ejecuta como raíz y los otros contenedores se ejecutan con IDs de usuario específicos. Sin permiso para usaranyuid, el controlador de StatefulSet no puede crear la 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 [...] 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.1"
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 del rol de usuariopostgrespredeterminado, codificada como una cadena base64 (por ejemplo,Q2hhbmdlTWUxMjM=paraChangeMe123).CPU_COUNT: Es la cantidad de CPU disponibles para cada instancia de base de datos en este clúster de base de datos.MEMORY_SIZE: Es la cantidad de memoria por instancia de base de datos de este clúster de base de datos. Recomendamos establecer este valor en 8 gigabytes por CPU. Por ejemplo, si establecescpuen2anteriormente en este manifiesto, te recomendamos que establezcasmemoryen16Gi.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 Administra recursos.
¿Qué sigue?
- Ejecuta AlloyDB Omni y conéctate a él
- Administra AlloyDB Omni
- Administra la alta disponibilidad en Kubernetes