diff --git a/charts/elastic-search/1.0.32/README.md b/charts/elastic-search/1.0.32/README.md deleted file mode 100644 index beec2c1bc3..0000000000 --- a/charts/elastic-search/1.0.32/README.md +++ /dev/null @@ -1,10 +0,0 @@ -# Elastic Search - -> During the installation process, a container will be launched with **root** privileges. This is required -> in order to apply the correct permissions to the `Elastic Search` data directory. Afterward, the `Elastic Search` container -> will run as a **non**-root user (default `568`). - -If you want to apply additional configuration you can by using additional environment variables. - -See the [Elastic Search documentation](https://www.elastic.co/guide/en/elasticsearch/reference/master/docker.html#docker-configuration-methods) -for more information. diff --git a/charts/elastic-search/1.0.32/app-readme.md b/charts/elastic-search/1.0.32/app-readme.md deleted file mode 100644 index beec2c1bc3..0000000000 --- a/charts/elastic-search/1.0.32/app-readme.md +++ /dev/null @@ -1,10 +0,0 @@ -# Elastic Search - -> During the installation process, a container will be launched with **root** privileges. This is required -> in order to apply the correct permissions to the `Elastic Search` data directory. Afterward, the `Elastic Search` container -> will run as a **non**-root user (default `568`). - -If you want to apply additional configuration you can by using additional environment variables. - -See the [Elastic Search documentation](https://www.elastic.co/guide/en/elasticsearch/reference/master/docker.html#docker-configuration-methods) -for more information. diff --git a/charts/elastic-search/1.0.32/migrations/migrate b/charts/elastic-search/1.0.32/migrations/migrate deleted file mode 100755 index a578a218c2..0000000000 --- a/charts/elastic-search/1.0.32/migrations/migrate +++ /dev/null @@ -1,29 +0,0 @@ -#!/usr/bin/python3 -import json -import os -import sys - - -def migrate(values): - storageKey = 'esStorage' - storages = ['data'] - - - for storage in storages: - check_val = values.get(storageKey, {}).get(storage, {}) - if not isinstance(check_val, dict) or not check_val or check_val.get('type', 'hostPath') == 'hostPath': - continue - - values[storageKey][storage] = {key: value for key, value in check_val.items() if key != 'hostPath'} - - - return values - - -if __name__ == '__main__': - if len(sys.argv) != 2: - exit(1) - - if os.path.exists(sys.argv[1]): - with open(sys.argv[1], 'r') as f: - print(json.dumps(migrate(json.loads(f.read())))) diff --git a/charts/elastic-search/1.0.32/questions.yaml b/charts/elastic-search/1.0.32/questions.yaml deleted file mode 100644 index f84311560b..0000000000 --- a/charts/elastic-search/1.0.32/questions.yaml +++ /dev/null @@ -1,192 +0,0 @@ -groups: - - name: Elastic Search Configuration - description: Configure Elastic Search - - name: User and Group Configuration - description: Configure User and Group for Elastic Search - - name: Network Configuration - description: Configure Network for Elastic Search - - name: Storage Configuration - description: Configure Storage for Elastic Search - - name: Resources Configuration - description: Configure Resources for Elastic Search - -portals: - web_portal: - protocols: - - "$kubernetes-resource_configmap_portal_protocol" - host: - - "$kubernetes-resource_configmap_portal_host" - ports: - - "$kubernetes-resource_configmap_portal_port" - path: "$kubernetes-resource_configmap_portal_path" - -questions: - - - variable: esConfig - label: "" - group: Elastic Search Configuration - schema: - type: dict - attrs: - - variable: password - label: Password - description: The password for the Elastic Search (elastic) user. - schema: - type: string - default: "" - required: true - - variable: nodeName - label: Node Name - description: The name of the Elastic Search node. - schema: - type: string - default: "elastic_search_node" - required: true - - variable: heapSize - label: Heap Size - description: The heap size for Elastic Search. - schema: - type: string - default: "512m" - required: true - - variable: additionalEnvs - label: Additional Environment Variables - description: Configure additional environment variables for Elastic Search. - schema: - type: list - default: [] - items: - - variable: env - label: Environment Variable - schema: - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - - variable: esNetwork - label: "" - group: Network Configuration - schema: - type: dict - attrs: - - variable: httpPort - label: HTTP Port - description: The port for the Elastic Search HTTP - schema: - type: int - default: 30003 - min: 9000 - max: 65535 - required: true - - variable: hostNetwork - label: Host Network - description: | - Bind to the host network. It's recommended to keep this disabled. - schema: - type: boolean - default: false - - variable: certificateID - label: Certificate - description: | - The certificate to use for Elastic Search
- schema: - type: int - "null": true - $ref: - - "definitions/certificate" - - - variable: esStorage - label: "" - group: Storage Configuration - schema: - type: dict - attrs: - - variable: data - label: Elastic Search Data Storage - description: The path to store Elastic Search data. - schema: - type: dict - attrs: - - variable: type - label: Type - description: | - ixVolume: Is dataset created automatically by the system.
- Host Path: Is a path that already exists on the system. - schema: - type: string - required: true - immutable: true - default: "ixVolume" - enum: - - value: "hostPath" - description: Host Path (Path that already exists on the system) - - value: "ixVolume" - description: ixVolume (Dataset created automatically by the system) - - variable: datasetName - label: Dataset Name - schema: - type: string - show_if: [["type", "=", "ixVolume"]] - required: true - hidden: true - immutable: true - default: "data" - $ref: - - "normalize/ixVolume" - - variable: hostPath - label: Host Path - schema: - type: hostpath - show_if: [["type", "=", "hostPath"]] - immutable: true - required: true - - - variable: resources - label: "" - group: Resources Configuration - schema: - type: dict - attrs: - - variable: limits - label: Limits - schema: - type: dict - attrs: - - variable: cpu - label: CPU - description: CPU limit for Elastic Search. - schema: - type: string - max_length: 6 - valid_chars: '^(0\.[1-9]|[1-9][0-9]*)(\.[0-9]|m?)$' - valid_chars_error: | - Valid CPU limit formats are
- - Plain Integer - eg. 1
- - Float - eg. 0.5
- - Milicpu - eg. 500m - default: "4000m" - required: true - - variable: memory - label: Memory - description: Memory limit for Elastic Search. - schema: - type: string - max_length: 12 - valid_chars: '^[1-9][0-9]*([EPTGMK]i?|e[0-9]+)?$' - valid_chars_error: | - Valid Memory limit formats are
- - Suffixed with E/P/T/G/M/K - eg. 1G
- - Suffixed with Ei/Pi/Ti/Gi/Mi/Ki - eg. 1Gi
- - Plain Integer in bytes - eg. 1024
- - Exponent - eg. 134e6 - default: "8Gi" - required: true diff --git a/charts/elastic-search/1.0.32/Chart.lock b/charts/elastic-search/1.1.0/Chart.lock similarity index 100% rename from charts/elastic-search/1.0.32/Chart.lock rename to charts/elastic-search/1.1.0/Chart.lock diff --git a/charts/elastic-search/1.0.32/Chart.yaml b/charts/elastic-search/1.1.0/Chart.yaml similarity index 98% rename from charts/elastic-search/1.0.32/Chart.yaml rename to charts/elastic-search/1.1.0/Chart.yaml index c010b07120..a51f51b134 100644 --- a/charts/elastic-search/1.0.32/Chart.yaml +++ b/charts/elastic-search/1.1.0/Chart.yaml @@ -3,7 +3,7 @@ description: Elasticsearch is the distributed, RESTful search and analytics engi annotations: title: Elastic Search type: application -version: 1.0.32 +version: 1.1.0 apiVersion: v2 appVersion: 8.11.1 kubeVersion: '>=1.16.0-0' diff --git a/charts/elastic-search/1.1.0/README.md b/charts/elastic-search/1.1.0/README.md new file mode 100644 index 0000000000..bbf6cdb439 --- /dev/null +++ b/charts/elastic-search/1.1.0/README.md @@ -0,0 +1,6 @@ +# Elastic Search + +If you want to apply additional configuration you can by using additional environment variables. + +See the [Elastic Search documentation](https://www.elastic.co/guide/en/elasticsearch/reference/master/docker.html#docker-configuration-methods) +for more information. diff --git a/charts/elastic-search/1.1.0/app-readme.md b/charts/elastic-search/1.1.0/app-readme.md new file mode 100644 index 0000000000..bbf6cdb439 --- /dev/null +++ b/charts/elastic-search/1.1.0/app-readme.md @@ -0,0 +1,6 @@ +# Elastic Search + +If you want to apply additional configuration you can by using additional environment variables. + +See the [Elastic Search documentation](https://www.elastic.co/guide/en/elasticsearch/reference/master/docker.html#docker-configuration-methods) +for more information. diff --git a/charts/elastic-search/1.0.32/charts/common-1.2.3.tgz b/charts/elastic-search/1.1.0/charts/common-1.2.3.tgz similarity index 100% rename from charts/elastic-search/1.0.32/charts/common-1.2.3.tgz rename to charts/elastic-search/1.1.0/charts/common-1.2.3.tgz diff --git a/charts/elastic-search/1.0.32/ci/basic-values.yaml b/charts/elastic-search/1.1.0/ci/basic-values.yaml similarity index 58% rename from charts/elastic-search/1.0.32/ci/basic-values.yaml rename to charts/elastic-search/1.1.0/ci/basic-values.yaml index 5e6c993ef6..0a32d54d64 100644 --- a/charts/elastic-search/1.0.32/ci/basic-values.yaml +++ b/charts/elastic-search/1.1.0/ci/basic-values.yaml @@ -1,7 +1,6 @@ esStorage: data: - type: hostPath - hostPath: /mnt/{{ .Release.Name }}/data + type: pvc esConfig: password: some-secret diff --git a/charts/elastic-search/1.0.32/ci/https-values.yaml b/charts/elastic-search/1.1.0/ci/https-values.yaml similarity index 98% rename from charts/elastic-search/1.0.32/ci/https-values.yaml rename to charts/elastic-search/1.1.0/ci/https-values.yaml index ce7d041923..7e98262336 100644 --- a/charts/elastic-search/1.0.32/ci/https-values.yaml +++ b/charts/elastic-search/1.1.0/ci/https-values.yaml @@ -1,7 +1,6 @@ esStorage: data: - type: hostPath - hostPath: /mnt/{{ .Release.Name }}/data + type: pvc esConfig: password: some-https-secret diff --git a/charts/elastic-search/1.0.32/ix_values.yaml b/charts/elastic-search/1.1.0/ix_values.yaml similarity index 86% rename from charts/elastic-search/1.0.32/ix_values.yaml rename to charts/elastic-search/1.1.0/ix_values.yaml index 6cab91d3ad..d8dc7fb3a0 100644 --- a/charts/elastic-search/1.0.32/ix_values.yaml +++ b/charts/elastic-search/1.1.0/ix_values.yaml @@ -27,4 +27,6 @@ esNetwork: esStorage: data: type: ixVolume - datasetName: data + ixVolumeConfig: + datasetName: data + additionalStorages: [] diff --git a/charts/elastic-search/1.0.32/metadata.yaml b/charts/elastic-search/1.1.0/metadata.yaml similarity index 100% rename from charts/elastic-search/1.0.32/metadata.yaml rename to charts/elastic-search/1.1.0/metadata.yaml diff --git a/charts/elastic-search/1.1.0/migrations/migrate b/charts/elastic-search/1.1.0/migrations/migrate new file mode 100755 index 0000000000..00c21112ee --- /dev/null +++ b/charts/elastic-search/1.1.0/migrations/migrate @@ -0,0 +1,55 @@ +#!/usr/bin/python3 +import json +import os +import sys + + +def storage_migrate(storage): + delete_keys = [] + if storage['type'] == 'hostPath': + # Check if the key exists, if not we have already migrated + if not storage.get('hostPath'): + return storage + + storage['hostPathConfig'] = {'hostPath': storage['hostPath']} + delete_keys.append('hostPath') + + elif storage['type'] == 'ixVolume': + # Check if the key exists, if not we have already migrated + if not storage.get('datasetName'): + return storage + + storage['ixVolumeConfig'] = {'datasetName': storage['datasetName']} + delete_keys.append('datasetName') + + # Clean up for some older versions. + if storage.get('hostPath'): + delete_keys.append('hostPath') + + for key in delete_keys: + storage.pop(key, None) + + return storage + + +def migrate(values): + storage_key = 'esStorage' + storages = ['data'] + + for storage in storages: + check_val = values.get(storage_key, {}).get(storage, {}) + if not isinstance(check_val, dict) or not check_val: + raise Exception(f'Storage section {storage} is malformed') + + values[storage_key][storage] = storage_migrate(check_val) + + return values + + +if __name__ == '__main__': + if len(sys.argv) != 2: + exit(1) + + if os.path.exists(sys.argv[1]): + with open(sys.argv[1], 'r') as f: + print(json.dumps(migrate(json.loads(f.read())))) diff --git a/charts/elastic-search/1.1.0/questions.yaml b/charts/elastic-search/1.1.0/questions.yaml new file mode 100644 index 0000000000..f868e92739 --- /dev/null +++ b/charts/elastic-search/1.1.0/questions.yaml @@ -0,0 +1,377 @@ +groups: + - name: Elastic Search Configuration + description: Configure Elastic Search + - name: User and Group Configuration + description: Configure User and Group for Elastic Search + - name: Network Configuration + description: Configure Network for Elastic Search + - name: Storage Configuration + description: Configure Storage for Elastic Search + - name: Resources Configuration + description: Configure Resources for Elastic Search + +portals: + web_portal: + protocols: + - "$kubernetes-resource_configmap_portal_protocol" + host: + - "$kubernetes-resource_configmap_portal_host" + ports: + - "$kubernetes-resource_configmap_portal_port" + path: "$kubernetes-resource_configmap_portal_path" + +questions: + + - variable: esConfig + label: "" + group: Elastic Search Configuration + schema: + type: dict + attrs: + - variable: password + label: Password + description: The password for the Elastic Search (elastic) user. + schema: + type: string + default: "" + required: true + - variable: nodeName + label: Node Name + description: The name of the Elastic Search node. + schema: + type: string + default: "elastic_search_node" + required: true + - variable: heapSize + label: Heap Size + description: The heap size for Elastic Search. + schema: + type: string + default: "512m" + required: true + - variable: additionalEnvs + label: Additional Environment Variables + description: Configure additional environment variables for Elastic Search. + schema: + type: list + default: [] + items: + - variable: env + label: Environment Variable + schema: + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + + - variable: esNetwork + label: "" + group: Network Configuration + schema: + type: dict + attrs: + - variable: httpPort + label: HTTP Port + description: The port for the Elastic Search HTTP + schema: + type: int + default: 30003 + min: 9000 + max: 65535 + required: true + - variable: hostNetwork + label: Host Network + description: | + Bind to the host network. It's recommended to keep this disabled. + schema: + type: boolean + default: false + - variable: certificateID + label: Certificate + description: | + The certificate to use for Elastic Search
+ schema: + type: int + "null": true + $ref: + - "definitions/certificate" + + - variable: esStorage + label: "" + group: Storage Configuration + schema: + type: dict + attrs: + - variable: data + label: Elastic Search Data Storage + description: The path to store Elastic Search data. + schema: + type: dict + attrs: + - variable: type + label: Type + description: | + ixVolume: Is dataset created automatically by the system.
+ Host Path: Is a path that already exists on the system. + schema: + type: string + required: true + immutable: true + default: "ixVolume" + enum: + - value: "hostPath" + description: Host Path (Path that already exists on the system) + - value: "ixVolume" + description: ixVolume (Dataset created automatically by the system) + - variable: ixVolumeConfig + label: ixVolume Configuration + description: The configuration for the ixVolume dataset. + schema: + type: dict + show_if: [["type", "=", "ixVolume"]] + $ref: + - "normalize/ixVolume" + attrs: + - variable: aclEnable + label: Enable ACL + description: Enable ACL for the dataset. + schema: + type: boolean + default: false + - variable: datasetName + label: Dataset Name + description: The name of the dataset to use for storage. + schema: + type: string + required: true + immutable: true + hidden: true + default: "data" + - variable: aclEntries + label: ACL Configuration + schema: + type: dict + show_if: [["aclEnable", "=", true]] + attrs: [] + - variable: hostPathConfig + label: Host Path Configuration + schema: + type: dict + show_if: [["type", "=", "hostPath"]] + attrs: + - variable: aclEnable + label: Enable ACL + description: Enable ACL for the dataset. + schema: + type: boolean + default: false + - variable: acl + label: ACL Configuration + schema: + type: dict + show_if: [["aclEnable", "=", true]] + attrs: [] + $ref: + - "normalize/acl" + - variable: hostPath + label: Host Path + description: The host path to use for storage. + schema: + type: hostpath + show_if: [["aclEnable", "=", false]] + immutable: true + required: true + + - variable: additionalStorages + label: Additional Storage + description: Additional storage for Elastic Search. + schema: + type: list + default: [] + items: + - variable: storageEntry + label: Storage Entry + schema: + type: dict + attrs: + - variable: type + label: Type + description: | + ixVolume: Is dataset created automatically by the system.
+ Host Path: Is a path that already exists on the system.
+ SMB Share: Is a SMB share that is mounted to a persistent volume claim. + schema: + type: string + required: true + default: "ixVolume" + immutable: true + enum: + - value: "hostPath" + description: Host Path (Path that already exists on the system) + - value: "ixVolume" + description: ixVolume (Dataset created automatically by the system) + - value: "smb-pv-pvc" + description: SMB Share (Mounts a persistent volume claim to a SMB share) + - variable: readOnly + label: Read Only + description: Mount the volume as read only. + schema: + type: boolean + default: false + - variable: mountPath + label: Mount Path + description: The path inside the container to mount the storage. + schema: + type: path + required: true + - variable: hostPathConfig + label: Host Path Configuration + schema: + type: dict + show_if: [["type", "=", "hostPath"]] + attrs: + - variable: aclEnable + label: Enable ACL + description: Enable ACL for the dataset. + schema: + type: boolean + default: false + - variable: acl + label: ACL Configuration + schema: + type: dict + show_if: [["aclEnable", "=", true]] + attrs: [] + $ref: + - "normalize/acl" + - variable: hostPath + label: Host Path + description: The host path to use for storage. + schema: + type: hostpath + show_if: [["aclEnable", "=", false]] + immutable: true + required: true + - variable: ixVolumeConfig + label: ixVolume Configuration + description: The configuration for the ixVolume dataset. + schema: + type: dict + show_if: [["type", "=", "ixVolume"]] + $ref: + - "normalize/ixVolume" + attrs: + - variable: aclEnable + label: Enable ACL + description: Enable ACL for the dataset. + schema: + type: boolean + default: false + - variable: datasetName + label: Dataset Name + description: The name of the dataset to use for storage. + schema: + type: string + required: true + immutable: true + default: "storage_entry" + - variable: aclEntries + label: ACL Configuration + schema: + type: dict + show_if: [["aclEnable", "=", true]] + attrs: [] + - variable: smbConfig + label: SMB Share Configuration + description: The configuration for the SMB Share. + schema: + type: dict + show_if: [["type", "=", "smb-pv-pvc"]] + attrs: + - variable: server + label: Server + description: The server for the SMB share. + schema: + type: string + required: true + - variable: share + label: Share + description: The share name for the SMB share. + schema: + type: string + required: true + - variable: domain + label: Domain (Optional) + description: The domain for the SMB share. + schema: + type: string + - variable: username + label: Username + description: The username for the SMB share. + schema: + type: string + required: true + - variable: password + label: Password + description: The password for the SMB share. + schema: + type: string + required: true + private: true + - variable: size + label: Size (in Gi) + description: The size of the volume quota. + schema: + type: int + required: true + min: 1 + default: 1 + + - variable: resources + label: "" + group: Resources Configuration + schema: + type: dict + attrs: + - variable: limits + label: Limits + schema: + type: dict + attrs: + - variable: cpu + label: CPU + description: CPU limit for Elastic Search. + schema: + type: string + max_length: 6 + valid_chars: '^(0\.[1-9]|[1-9][0-9]*)(\.[0-9]|m?)$' + valid_chars_error: | + Valid CPU limit formats are
+ - Plain Integer - eg. 1
+ - Float - eg. 0.5
+ - Milicpu - eg. 500m + default: "4000m" + required: true + - variable: memory + label: Memory + description: Memory limit for Elastic Search. + schema: + type: string + max_length: 12 + valid_chars: '^[1-9][0-9]*([EPTGMK]i?|e[0-9]+)?$' + valid_chars_error: | + Valid Memory limit formats are
+ - Suffixed with E/P/T/G/M/K - eg. 1G
+ - Suffixed with Ei/Pi/Ti/Gi/Mi/Ki - eg. 1Gi
+ - Plain Integer in bytes - eg. 1024
+ - Exponent - eg. 134e6 + default: "8Gi" + required: true diff --git a/charts/elastic-search/1.0.32/templates/NOTES.txt b/charts/elastic-search/1.1.0/templates/NOTES.txt similarity index 100% rename from charts/elastic-search/1.0.32/templates/NOTES.txt rename to charts/elastic-search/1.1.0/templates/NOTES.txt diff --git a/charts/elastic-search/1.0.32/templates/_es.tpl b/charts/elastic-search/1.1.0/templates/_es.tpl similarity index 80% rename from charts/elastic-search/1.0.32/templates/_es.tpl rename to charts/elastic-search/1.1.0/templates/_es.tpl index e6ff70aed6..8aa13c8133 100644 --- a/charts/elastic-search/1.0.32/templates/_es.tpl +++ b/charts/elastic-search/1.1.0/templates/_es.tpl @@ -60,11 +60,6 @@ workload: port: {{ .Values.esNetwork.httpPort }} httpHeaders: Authorization: Basic {{ printf "elastic:%s" .Values.esConfig.password | b64enc }} - initContainers: - {{- include "ix.v1.common.app.permissions" (dict "containerName" "01-permissions" - "UID" .Values.esRunAs.user - "GID" .Values.esRunAs.group - "type" "install") | nindent 8 }} {{/* Service */}} service: es: @@ -84,15 +79,24 @@ service: persistence: data: enabled: true - type: {{ .Values.esStorage.data.type }} - datasetName: {{ .Values.esStorage.data.datasetName | default "" }} - hostPath: {{ .Values.esStorage.data.hostPath | default "" }} + {{- include "es.storage.ci.migration" (dict "storage" .Values.esStorage.data) }} + {{- include "ix.v1.common.app.storageOptions" (dict "storage" .Values.esStorage.data) | nindent 4 }} targetSelector: es: es: mountPath: /usr/share/elasticsearch/data - 01-permissions: - mountPath: /mnt/directories/data + + {{- range $idx, $storage := .Values.esStorage.additionalStorages }} + {{ printf "es-%v:" (int $idx) }} + enabled: true + {{- include "es.storage.ci.migration" (dict "storage" $storage) }} + {{- include "ix.v1.common.app.storageOptions" (dict "storage" $storage) | nindent 4 }} + targetSelector: + es: + es: + mountPath: {{ $storage.mountPath }} + {{- end }} + {{- if .Values.esNetwork.certificateID }} certs: enabled: true @@ -118,3 +122,13 @@ scaleCertificate: id: {{ .Values.esNetwork.certificateID }} {{- end -}} {{- end -}} + +{{/* TODO: Remove on the next version bump, eg 1.1.0+ */}} +{{- define "es.storage.ci.migration" -}} + {{- $storage := .storage -}} + + {{- if $storage.hostPath -}} + {{- $_ := set $storage "hostPathConfig" dict -}} + {{- $_ := set $storage.hostPathConfig "hostPath" $storage.hostPath -}} + {{- end -}} +{{- end -}} diff --git a/charts/elastic-search/1.0.32/templates/_helper.tpl b/charts/elastic-search/1.1.0/templates/_helper.tpl similarity index 100% rename from charts/elastic-search/1.0.32/templates/_helper.tpl rename to charts/elastic-search/1.1.0/templates/_helper.tpl diff --git a/charts/elastic-search/1.0.32/templates/_portal.tpl b/charts/elastic-search/1.1.0/templates/_portal.tpl similarity index 100% rename from charts/elastic-search/1.0.32/templates/_portal.tpl rename to charts/elastic-search/1.1.0/templates/_portal.tpl diff --git a/charts/elastic-search/1.0.32/templates/common.yaml b/charts/elastic-search/1.1.0/templates/common.yaml similarity index 100% rename from charts/elastic-search/1.0.32/templates/common.yaml rename to charts/elastic-search/1.1.0/templates/common.yaml