helm-charts icon indicating copy to clipboard operation
helm-charts copied to clipboard

Cluster Initialization is missing for custom `conf.join`

Open shaardie opened this issue 3 years ago • 2 comments

I have a setup for CockroachDB using multiple Kubernetes Cluster. Since the automatic join list only contains the services from the local cluster but not the other cluster, I used a custom conf.join list with the services from both clusters. But unfortunately the job.init to initialize the cluster is not running for both clusters due to

{{ $isClusterInitEnabled := and (eq (len .Values.conf.join) 0) (not (index .Values.conf `single-node`)) }}
{{ $isDatabaseProvisioningEnabled := .Values.init.provisioning.enabled }}
{{- if or $isClusterInitEnabled $isDatabaseProvisioningEnabled }}

So I end with an uninitialized database cluster.

What would be the best way to do this? Can we have something like

init:
  enabled: true

to explicitly enable the init on one of the clusters?

shaardie avatar Nov 26 '21 14:11 shaardie

We've implemented that on our Forked version on the Helm Chart.

We use the join flag to join multiple nodes from multiple clusters. Which means that the isClusterInitEnabled would never work as well.

We've changed it to this:

{{ $isClusterInitEnabled := and (not (index .Values.conf `single-node`)) .Values.init.enabled }}

And then we manually control the enabled flag per cluster manually.

Personally I think this would make sense to be introduced here, and I was thinking doing that to avoid having a forked chart. @pseudomuto WDYT ?

samuel-form3 avatar Jun 20 '22 13:06 samuel-form3

Just to note a quick workaround for this (until it is fixed) as i had the same problem. You can just specify the join list members in the statefulset args

statefulset:
  args:
    - --join=cockroachdb-0.cockroachdb.database.svc.cluster.local:26257,cockroachdb-1.cockroachdb.database.svc.cluster.local:26257,cockroachdb-2.cockroachdb.database.svc.cluster.local:26257

Otterpohl avatar Nov 02 '22 12:11 Otterpohl