opensearch-project / opensearch-k8s-operator

OpenSearch Kubernetes Operator
Apache License 2.0
387 stars 202 forks source link

Refactor opensearch-cluster helm chart #754

Open evheniyt opened 6 months ago

evheniyt commented 6 months ago

Description

We found that the current opensearch-cluster helm chart supports only OpenSearchCluster configuration, also configuration itself is very limited because not all possible options were defined in the template. For our needs, we have decided to improve this helm chart and think that our changes could be useful for the community.

The main differences in the new helm chart:

We were trying to build this chart by following the next logic. We didn't try to template all possible configurations for CRDs, instead, we relied on official parameters supported by specific sections of the CRD, e.g.

Instead of doing this:

  {{- if .Values.opensearchCluster.bootstrap }}
  bootstrap:
    {{- if .Values.opensearchCluster.bootstrap.additionalConfig }}
    additionalConfig:
      {{ toYaml .Values.opensearchCluster.bootstrap.additionalConfig | nindent 6 }}
    {{- end }}
  {{- end }}
  {{- if .Values.opensearchCluster.initHelper }}

We did:

  {{- with .Values.cluster.bootstrap }}
  bootstrap: {{ . | toYaml | nindent 4 }}
  {{- end }}

And defined all possible configuration options inside the .Values.cluster.bootstrap.

Pros of such logic:

If you apply it, I could help with maintaining this helm chart by fixing bugs, adding new features, etc.

Issues Resolved

Closes #699 Closes #9 Closes #855 Closes #866

By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license. For more information on following Developer Certificate of Origin and signing off your commits, please check here.

evheniyt commented 6 months ago

FYI as this PR was prepared a few months ago it didn't include some templates for the CRDs. If you will give it a green light in terms of concept and implementation I will add all missing templates.

prudhvigodithi commented 6 months ago

Hey @evheniyt thanks for your contribution, I like the idea to control the yaml files using the helm that can be used to create the cluster via the operator, can you include all the CRD's and fix the conflicts, we can go ahead and merge it.

Adding @bbarani @salyh @jochenkressin @pchmielnik @bbarani

evheniyt commented 6 months ago

Sure, I will add all the missing CRDs soon. Also, will need to add upgrade instructions. @prudhvigodithi what about chart version? currently, it is equal to operator version. Do you think we should continue with this approach or we could have a different version for chart? With different version for chart it will be simpler to set it 3.0.0 meaning that there are breaking changes.

prudhvigodithi commented 6 months ago

Thanks @evheniyt with existing setup and release process, the helm charts are updated to the appVersion (operator version) https://github.com/opensearch-project/opensearch-k8s-operator/blob/main/.github/workflows/release.yaml#L26-L31.

We should seperate out this sooner to ensure the helm charts development and release is fast paced. WDYT @salyh @jochenkressin @pchmielnik @swoehrl-mw ?

swoehrl-mw commented 6 months ago

@prudhvigodithi

We should seperate out this sooner to ensure the helm charts development and release is fast paced.

There is something to be said for keeping the versioning of cluster chart and operator the same to make it clear which versions match and are compatible. But on the other hand I can understand the cluster chart might need a faster/different release cycle than the operator.

salyh commented 6 months ago

We should seperate out this sooner to ensure the helm charts development and release is fast paced. WDYT @salyh @jochenkressin @pchmielnik @swoehrl-mw ?

I agree

evheniyt commented 5 months ago

Added OpenSearchISMPolicy template

evheniyt commented 5 months ago

I have updated Readme.

Also, I have tested helm chart upgrade process from v2 to v3 with default config from values.yaml. In general, because the new version of the helm chart has the same labels, annotations and follows the same default logic for cluster name, the upgrade from v2 to v3 (with default values) didn't trigger any resource redeployments.

Now it's ready for review @prudhvigodithi @swoehrl-mw @salyh

waqarsky commented 2 months ago

When is this going to be merged / released?