OpenShift es una plataforma como servicio (PaaS) de Red Hat basada en contenedores Docker y Kubernetes. Se trata de una plataforma de aplicaciones en contenedores de código abierto de Red Hat basada en contenedores Docker y el gestor de clústeres de contenedores Kubernetes para el desarrollo y la implantación de aplicaciones empresariales.
Couchbase's Operator también es compatible con OpenShift. Ahora, vamos a ver cómo se puede escalar rápidamente hacia arriba y hacia abajo, recuperarse de fallos, o incluso cambiar la arquitectura de su clúster con sólo unos pocos comandos de línea:
Transcripción del vídeo:
Código:
|
1 |
https://github.com/couchbaselabs/kubernetes-starter-kit |
Requisitos previos
Inicio de Minishift
Para iniciar su minishift, sólo tiene que escribir el siguiente comando:
|
1 |
minishift iniciar |

Una vez que se haya iniciado, ejecute el siguiente comando para añadir oc a su Classpath:
|
1 |
evalúe $(minishift oc-env) |

Además, también puede incluir el siguiente complemento para poder acceder a su clúster como administrador:
|
1 |
minishift complemento aplicar admin-usuario |
Ahora, para acceder a OpenShift, puede utilizar el siguiente comando:
|
1 |
oc inicio de sesión -u admin |

Configuración de Minishift
Hay algunas cosas que deben ser creadas antes de empezar. Me limitaré a enumerar todos los comandos necesarios, pero puedes consultar la documentación oficial aquí.
1 - Crear un proyecto Openshift
|
1 2 3 |
oc inicio de sesión -u desarrollador oc nuevo-proyecto operador-ejemplo oc cierre de sesión |
2 - Crear una nueva Definición de Recurso Personalizada y Rol de Cluster
|
1 2 3 4 |
oc inicio de sesión -u admin oc crear -f https://packages.couchbase.com/kubernetes/0.8.1-beta2/openshift/crd.yaml oc crear -f https://packages.couchbase.com/kubernetes/0.8.1-beta2/openshift/cluster-role-sa.yaml oc crear -f https://packages.couchbase.com/kubernetes/0.8.1-beta2/openshift/cluster-role-user.yaml |
3- Configuración de RBAC para un proyecto OpenShift
|
1 2 3 4 5 |
oc crear cuenta de servicio couchbase-operador --espacio de nombres operador-ejemplo oc crear vinculación de funciones couchbase-operador --clusterrole couchbase-operador --cuenta de servicio operador-ejemplo:couchbase-operador oc adm política añada-scc-a-usuario anyuid sistema:cuenta de servicio:operador-ejemplo:couchbase-operador oc crear vinculación de funciones couchbasecluster --clusterrole couchbasecluster --usuario desarrollador --espacio de nombres operador-ejemplo oc crear clusterrolebinding couchbasecluster --clusterrole couchbasecluster --usuario desarrollador |
Despliegue del operador de Couchbase en OpenShift
Ahora que hemos configurado todo, vamos a desplegar el Operador de Couchbase. Como he mencionado en un entrada anteriorEl Operador es responsable de automatizar parte del trabajo del DBA, como unir un nuevo nodo al cluster, reequilibrar datos, consolidar logs, etc.
Puede desplegar el operador ejecutando el siguiente comando:
|
1 |
oc crear -f https://packages.couchbase.com/kubernetes/0.8.1-beta2/openshift/operator.yaml |
Ejecute el siguiente comando para verificar que su despliegue se ha ejecutado correctamente:
|
1 |
oc consiga vainas: |

Despliegue de Couchbase en OpenShift
Desplegar Couchbase en OpenShift es casi lo mismo que despliegue en Kubernetessólo tienes que ejecutar el siguiente comando dentro del directorio "kubernetes":
|
1 2 |
oc crear -f secreto.yaml // crear el usuario y la contraseña que vamos a utilizar para acceder a la consola web oc crear -f couchbase-grupo.yaml |
Nuestro archivo yaml contiene la especificación del clúster, como el nombre del bucket, el número de servidores, servicios, etc:
secret.yaml
|
1 2 3 4 5 6 7 8 |
apiVersion: v1 amable: Secreto metadatos: nombre: cb-example-auth tipo: Opaco datos: nombre de usuario: QWRtaW5pc3RyYXRvcg== #base64 para Administrador contraseña: cGFzc3dvcmQ= #base64 para contraseña |
couchbase-cluster.yaml
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
apiVersion: couchbase.database.couchbase.com/v1beta1 amable: CouchbaseCluster metadatos: nombre: cb-ejemplo spec: baseImage: couchbase/servidor versión: enterprise-5.0.1 authSecret: cb-example-auth exposeAdminConsoleVerdadero grupo: dataServiceMemoryQuota: 256 indexServiceMemoryQuota: 256 searchServiceMemoryQuota: 256 indexStorageSetting: memoria_optimizada autoFailoverTimeout: 30 cubos: - nombre: couchbase-muestra tipo: couchbase memoryQuota: 128 réplicas: 3 ioPriority: alto política de desalojo: fullEviction resolución de conflictos: seqno enableFlushVerdadero enableIndexReplica: falso servidores: - tamaño: 3 nombre: todos_servicios servicios: - datos - índice - consulta - busque en ruta de datos: /opt/couchbase/var/lib/couchbase/data indexPath: /opt/couchbase/var/lib/couchbase/data |
Consulte el documentación oficial para comprender la función de cada propiedad.
En el archivo anterior, hemos especificado que queremos 3 nodos, lo que significa que deberíamos tener 3 nodos ejecutando Couchbase:
|
1 |
oc consiga vainas |

Acceso a su base de datos en OpenShift
Hay muchas maneras de exponer la consola web al mundo externo. En este artículo, vamos a simplemente reenviar el puerto a la máquina local con el siguiente comando:
|
1 |
oc puerto-adelante cb-ejemplo-0000 8091:8091 |
Ahora, debería poder acceder a la consola web de Couchbase en su máquina local en http://localhost:8091:

Observa que todos los nodos creados ya forman parte de un cluster. Todo fue hecho automáticamente por el Operador de Couchbase.

Cómo recuperarse de un fallo de nodo de base de datos en OpenShift
Matemos una de nuestras instancias para ver cómo se comporta el clúster:
|
1 |
oc borrar vaina cb-ejemplo-0001 |

Couchbase se dará cuenta inmediatamente de que un nodo "desapareció" y se iniciará el proceso de recuperación. Como especificamos en couchbase-cluster.yaml que siempre queremos 3 servidores funcionando, Kubernetes iniciará una nueva instancia llamado cb-example-0004:

Una vez cb-ejemplo-004 el operador se encarga de unir el nodo recién creado al clúster y, a continuación, activa el reequilibrio de datos.

Reducción de Couchbase en Open Shift
Si crees que escalar una base de datos es difícil, deberías intentar escalarla a la baja. Por suerte, es algo realmente sencillo con Couchbase y OpenShift. Todo lo que necesitas es cambiar la configuración de tu clúster:
couchbase-cluster.yaml
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
apiVersion: couchbase.database.couchbase.com/v1beta1 amable: CouchbaseCluster metadatos: nombre: cb-ejemplo spec: baseImage: couchbase/servidor versión: enterprise-5.0.1 authSecret: cb-example-auth exposeAdminConsoleVerdadero grupo: dataServiceMemoryQuota: 256 indexServiceMemoryQuota: 256 searchServiceMemoryQuota: 256 indexStorageSetting: memoria_optimizada autoFailoverTimeout: 30 cubos: - nombre: couchbase-muestra tipo: couchbase memoryQuota: 128 réplicas: 3 ioPriority: alto política de desalojo: fullEviction resolución de conflictos: seqno enableFlushVerdadero enableIndexReplica: falso servidores: - tamaño: 1 //cambiado nombre: todos_servicios servicios: - datos - índice - consulta - busque en ruta de datos: /opt/couchbase/var/lib/couchbase/data indexPath: /opt/couchbase/var/lib/couchbase/data |
Y luego ejecute el siguiente comando para empujar su cambio a OpenShift:
|
1 |
oc sustituir -f couchbase-grupo.yaml |
Sin embargo, aquí hay un pequeño detalle, ya que no podemos matar 2 nodos al mismo tiempo sin correr cierto riesgo de pérdida de datos. Para evitar este problema, el operador reduce el clúster gradualmente, una instancia cada vez, activando el reequilibrio para garantizar que no se pierden datos durante el proceso:

Ampliación de Couchbase en OpenShift
Volvamos a escalarlo a 3 nodos. Como habrás adivinado, todo lo que tenemos que hacer es cambiar la directiva talla parámetro en couchbase-cluster.yaml volver a 3:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
apiVersion: couchbase.database.couchbase.com/v1beta1 amable: CouchbaseCluster metadatos: nombre: cb-ejemplo spec: baseImage: couchbase/servidor versión: enterprise-5.0.1 authSecret: cb-example-auth exposeAdminConsoleVerdadero grupo: dataServiceMemoryQuota: 256 indexServiceMemoryQuota: 256 searchServiceMemoryQuota: 256 indexStorageSetting: memoria_optimizada autoFailoverTimeout: 30 cubos: - nombre: couchbase-muestra tipo: couchbase memoryQuota: 128 réplicas: 3 ioPriority: alto política de desalojo: fullEviction resolución de conflictos: seqno enableFlushVerdadero enableIndexReplica: falso servidores: - tamaño: 3 //volver a 3 servidores nombre: todos_servicios servicios: - datos - índice - consulta - busque en ruta de datos: /opt/couchbase/var/lib/couchbase/data indexPath: /opt/couchbase/var/lib/couchbase/data |
A continuación, actualizamos nuestra configuración ejecutando
|
1 |
oc sustituir -f Couchbase-grupo.yaml |
Después de unos minutos, verá que ahora tenemos 3 nodos de nuevo:

Escala multidimensional
También puede aprovechar el escalado multidimensional especificando los servicios que desea ejecutar en cada nodo:
couchbase-cluster.yaml
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
apiVersion: couchbase.database.couchbase.com/v1beta1 amable: CouchbaseCluster metadatos: nombre: cb-ejemplo spec: baseImage: couchbase/servidor versión: enterprise-5.0.1 authSecret: cb-example-auth exposeAdminConsoleVerdadero grupo: dataServiceMemoryQuota: 256 indexServiceMemoryQuota: 256 searchServiceMemoryQuota: 256 indexStorageSetting: memoria_optimizada autoFailoverTimeout: 30 cubos: - nombre: couchbase-muestra tipo: couchbase memoryQuota: 128 réplicas: 3 ioPriority: alto política de desalojo: fullEviction resolución de conflictos: seqno enableFlushVerdadero enableIndexReplica: falso servidores: - tamaño: 2 nombre: datos_y_índice servicios: - datos - índice ruta de datos: /opt/couchbase/var/lib/couchbase/data indexPath: /opt/couchbase/var/lib/couchbase/data - tamaño: 1 nombre: consulta_y_búsqueda servicios: - consulta - busque en ruta de datos: /opt/couchbase/var/lib/couchbase/data indexPath: /opt/couchbase/var/lib/couchbase/data |
Una vez más, tenemos que empujar nuestros cambios a OpenShift con el siguiente comando:
|
1 |
oc sustituir -f couchbase-grupo.yaml |

En este caso, se crearán tres nuevos nodos: dos de datos e índice y uno de búsqueda y consulta de texto completo.

Conectando su aplicación a Couchbase en OpenShift
Desplegar una aplicación en OpenShift es muy similar a desplegarla en Kubernetes. La principal diferencia es que debe utilizar oc en lugar de utilizar kubectl. Este artículo muestra paso a paso cómo hacerlo.
Si tienes alguna pregunta, envíame un tweet a @deniswsrosa o deje un comentario a continuación.
Lea también:
Un blog muy bien escrito. Es bueno para mostrar cómo escalar hacia arriba / abajo, mostrar la capacidad multidimensional, todo en el mismo blog.
muchas gracias!, si tiene alguna pregunta, no dude en preguntar.
Hola Denis
Gracias por este artículo, parece fantástico, pero parece que el enlace ya no funciona es decir https://packages.couchbase.com/kubernetes/0.8.1-beta2/openshift/crd.yaml
¿Puede indicarme dónde viven ahora?
Muchas gracias, Adrian