Announcing KubeDB v2023.02.28

We are pleased to announce the release of KubeDB v2023.02.28 . This post lists all the major changes done in this release since the last release. The release include new features Combined PEM Certifiacte Postgres StandAlone to High Availibility, Acme Protocol based certificate support for ProxySQL & PgBouncer and new verisons for MySQL:8.0.32 , 5.7.41 , OpenSearch 2.0.1 , 2.5.0 , Redis: 6.0.18,6.2.11,7.0.9.

You can find the detailed changelogs here .

Combined PEM Certificate

From this release, client certificates secret for TLS enabled databases now contain combined PEM certificates. The combined PEM certificate is stored under the key tls-combined.pem in the client certificate secret. To enable this, the cert-manager needs to be deployed with feature-gate AdditionalCertificateOutputFormats=true. To install cert-manager with this flag using helm you can use the following command.

 helm install \
   cert-manager jetstack/cert-manager \
   --namespace cert-manager \
   --create-namespace \
   --set installCRDs=true \
   --set featureGates=AdditionalCertificateOutputFormats=true

Acme Protocol Certificate

ProxySQL & PgBouncer

In this release we introduced TLS support using ACME Protocol based Certificates with Let’s Encrypt. Now you can provision KubeDB PgBouncer with TLS secured connection via both CA and ACME issuer using cert-manager. Here’s an example using acme issuer with ProxySQL

apiVersion: cert-manager.io/v1
kind: Issuer
metadata:
  name: le-issuer
  namespace: demo
spec:
  acme:
    # server: https://acme-v02.api.letsencrypt.org/directory
    server: https://acme-staging-v02.api.letsencrypt.org/directory
    email: <your_email>
    # Name of a secret used to store the ACME account private key
    privateKeySecretRef:
      name: <secret_ref_name>
    # ACME DNS-01 provider configurations
    solvers:
    # An empty 'selector' means that this solver matches all domains
    - selector: {}
      dns01:
        cloudflare:
          email: <your_email>
          apiTokenSecretRef:
            name: <secret_ref_name>
            key: api-token

---
apiVersion: v1
kind: Secret
metadata:
  name: <secret_name>
  namespace: demo
type: Opaque
stringData:
  api-token: "sometoken"
apiVersion: kubedb.com/v1alpha2
kind: ProxySQL
metadata:
  name: proxy-server
  namespace: demo
spec:
  version: "2.4.4-debian"
  replicas: 1
  mode: GroupReplication
  backend:
    name: mysql-server
  syncUsers: true
  tls:
    issuerRef:
      apiGroup: cert-manager.io
      kind: Issuer
      name: le-issuer
    certificates:
    - alias: server
      dnsNames:
      - <challenge_resolver_dns>
  terminationPolicy: Delete
  healthChecker:
    failureThreshold: 3

PostgreSQL

Now you will be able to migrate from StandAlone to High Availability Cluster for PostgreSQL. The migration process will copy the data for new replicas first and thus preventing possible data loss during the migration process.

apiVersion: ops.kubedb.com/v1alpha1
kind: PostgresOpsRequest
metadata:
  name: move-to-high-availibility
  namespace: demo
spec:
  type: HorizontalScaling
  horizontalScaling:
    replicas: 3
    streamingMode: Synchronous
    standbyMode: Hot
  databaseRef:
    name: demo-pg

Elasticsearch

Latest versions for OpenSearch 2.0.1 and 2.5.0 added in this release. Now, you can provision and manage OpenSearch V2 with Elasticsearch CRD using KubeDB. Check out all the currently supported Opensearch Versions using the following command.

$ kubectl get esversion | grep opensearch
opensearch-1.1.0            1.1.0     OpenSearch     opensearchproject/opensearch:1.1.0             29h
opensearch-1.2.2            1.2.2     OpenSearch     opensearchproject/opensearch:1.2.2             29h
opensearch-1.3.2            1.3.2     OpenSearch     opensearchproject/opensearch:1.3.2             29h
opensearch-2.0.1            2.0.1     OpenSearch     opensearchproject/opensearch:2.0.1             29h
opensearch-2.5.0            2.5.0     OpenSearch     opensearchproject/opensearch:2.5.0             29h

If you are using any of the Opensearch 1.x.x versions, you can very easily upgrade to OpenSearch 2.x.x with data persistence using the following ElasticsearchOpsRequest CRD.

apiVersion: ops.kubedb.com/v1alpha1
kind: ElasticsearchOpsRequest
metadata:
  name: os-upgrade
  namespace: demo
spec:
  type: Upgrade
  databaseRef:
    name: os-cluster       # refer the name of you opensearch instance
  upgrade:
    targetVersion: opensearch-2.0.1    # refer the target version to be upgraded 

We recommend upgrading to OpenSearch 2.0.1 before upgrading to any other V2 minor versions.

Elasticsearch Dashboard

Along with support for Opensearch V2, KubeDB also brings support for Opensearch Dashboards version 2.0.1 & 2.5.0 in this release. Visualize Opensearch data easily and conveniently by provisioning Opensearch-Dashboards in your cluster using KubeDB. Use the following YAML to deploy TLS secured Opensearch-Dashboards with ElasticsearchDashboard CRD.

apiVersion: dashboard.kubedb.com/v1alpha1
kind: ElasticsearchDashboard
metadata:
  name: os-cluster-dashboard
  namespace: demo
spec:
  enableSSL: true
  databaseRef:
    name: os-cluster      # refer the name of you opensearch instance
  terminationPolicy: WipeOut

On upgrading the Opensearch version using ElasticsearchVersion CRD, KubeDB ops-manager autonomously upgrades Opensearch-Dashboards to their compatible versions.

MySQL

Latest version for MySQL 8.0.31 and 5.7.41 also added in this release. Here’s a example instance that usage MySQL Group Replication

apiVersion: kubedb.com/v1alpha2
kind: MySQL
metadata:
  name: mysql-group
  namespace: demo
spec:   
  version: "8.0.32"
  replicas: 3
  topology:
   mode: GroupReplication
  storageType: Durable
  storage:
    storageClassName: "standard"
    accessModes:
      - ReadWriteOnce
    resources:
      requests:
        storage: 10Gi
  terminationPolicy: Delete

Redis

Latest versions for Redis 6.0.18, 6.2.11 and 7.0.9 also added in this release. Example of a Redis Standalone instance with version Redis 6.0.18

apiVersion: kubedb.com/v1alpha2
kind: Redis
metadata:
  name: sample-redis
  namespace: demo
spec:
  version: 6.0.18
  storageType: Durable
  storage:
    storageClassName: "standard"
    accessModes:
    - ReadWriteOnce
    resources:
      requests:
        storage: 1Gi
  terminationPolicy: WipeOut

What Next?

Please try the latest release and give us your valuable feedback.

  • If you want to install KubeDB, please follow the installation instruction from here .

  • If you want to upgrade KubeDB from a previous version, please follow the upgrade instruction from here .

Support

To speak with us, please leave a message on our website .

To receive product announcements, follow us on Twitter .

If you have found a bug with KubeDB or want to request for new features, please file an issue .


TAGS

Get Up and Running Quickly

Deploy, manage, upgrade Kubernetes on any cloud and automate deployment, scaling, and management of containerized applications.