Openshift se posiciona como lider de administracion de cluster de Kubernetes. Ahora puedes tener tu openshift ya configurado y listo para usar en azure o aws. ¿Que diferencias tiene tener un cluster de kubernetes administrado con openshift? La respuesta es que hace lo que casi seguro tenias que hacer. ¿Un sistema de monitorizacion de todo el cluster con prometheus y grafana? Lo tiene. ¿Un docker registry donde almacenar imaganes? Lo tiene ¿Adminsitracion de usuarios y permisos? Lo tiene ¿Catalogo de plantillas de despliegue? Lo tiene. Por no hablar de todas las posibilidades de arquitecturas de redes y balanceadores compatibles. ¿Que tiene de malo? 2 cosas, lo primero que necesita una exagerada cantidad de hierro para funcionar adecuadamente (mirar los requisistos minimos de la version 4) y que no podras actualizar tu cluster, dependeras de openshift para todo.

A mi me no me gusta especialmente, prefiero soluciones mas ligeras y desacopladas y asi poder optimizar, cambiar , probar , actualizar y tocar el codigo de todo lo que instalo si hace falta pero he de reconocer que es una solucion muy completa y robusta. ¿Acabaremos usando todos tambien podman en vez de docker?.

Aqui os dejo una openshift list con un ejemplo de un mongodb en alta diponibilidad en statefulset

apiVersion: apps.openshift.io/v1                                                                          
kind: List                                                                                       
items:
- apiVersion: apps/v1
  kind: StatefulSet
  metadata:
    annotations:
    labels:
      app: mongodb-service-ha
      name: mongodb
    name: mongodb
    namespace: test-project
  spec:
    podManagementPolicy: OrderedReady
    replicas: 3
    revisionHistoryLimit: 10
    selector:
      matchLabels:
        name: mongodb
    serviceName: mongodb-internal
    template:
      metadata:
        labels:
          name: mongodb
      spec:
        containers:
          - args:
              - run-mongod-pet
            env:
              - name: MONGODB_USER
                value: mongouser
              - name: MONGODB_PASSWORD
                value: userpassword
              - name: MONGODB_DATABASE
                value: dbsample
              - name: MONGODB_ADMIN_PASSWORD
                value: adminpassword
              - name: MONGODB_REPLICA_NAME
                value: rs0
              - name: MONGODB_KEYFILE_VALUE
                value: keysecretvalue
              - name: MONGODB_SERVICE_NAME
                value: mongodb-internal
            image: centos/mongodb-32-centos7
            imagePullPolicy: Always
            name: mongo-container
            ports:
              - containerPort: 27017
                protocol: TCP
            readinessProbe:
              exec:
                command:
                  - stat
                  - /tmp/initialized
              failureThreshold: 3
              periodSeconds: 10
              successThreshold: 1
              timeoutSeconds: 1
            resources:
              limits:
                memory: 512Mi
            terminationMessagePath: /dev/termination-log
            terminationMessagePolicy: File
            volumeMounts:
              - mountPath: /var/lib/mongodb/data
                name: mongo-data
        dnsPolicy: ClusterFirst
        restartPolicy: Always
        terminationGracePeriodSeconds: 30
    volumeClaimTemplates:
      - metadata:
          name: mongo-data
        spec:
          accessModes:
            - ReadWriteOnce
          resources:
            requests:
              storage: 1Gi
- apiVersion: v1
  kind: Service
  metadata:
    annotations:
      service.alpha.kubernetes.io/tolerate-unready-endpoints: 'true'
    labels:
      app:  mongodb-service-ha
    name: mongodb-internal
    namespace: test-project
  spec:
    clusterIP: None
    ports:
      - name: mongodb
        port: 27017
        protocol: TCP
        targetPort: 27017
    selector:
      name: mongodb
    type: ClusterIP
- apiVersion: v1
  kind: Service
  metadata:
    annotations:
    labels:
      app: mongodb-service-ha
    name: mongodb-service
    namespace: test-project
  spec:
    ports:
      - name: mongodb
        port: 27017
        protocol: TCP
        targetPort: 27017
    selector:
      name: mongodb
    type: ClusterIP

0 comentarios

Deja una respuesta

Marcador de posición del avatar

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *