From 853d5db8ad9077bf96f46952a30d80f62e1e3c9e Mon Sep 17 00:00:00 2001 From: Caio Correa Date: Fri, 5 Apr 2024 08:01:17 -0300 Subject: [PATCH] Add chart for duplex preparation This patch adds a pre-install rook that edits the entrypoint to rook-ceph-mon. On a duplex this entrypoint should be the floating IP to acomplish the roaming mon strategy. Signed-off-by: Caio Correa Signed-off-by: Ítalo Vieira --- .../pre-install-duplex-preparation.yaml | 82 +++++++++++++++++++ deploy/charts/rook-ceph-cluster/values.yaml | 18 ++++ 2 files changed, 100 insertions(+) create mode 100644 deploy/charts/rook-ceph-cluster/templates/pre-install-duplex-preparation.yaml diff --git a/deploy/charts/rook-ceph-cluster/templates/pre-install-duplex-preparation.yaml b/deploy/charts/rook-ceph-cluster/templates/pre-install-duplex-preparation.yaml new file mode 100644 index 000000000..aa276ec55 --- /dev/null +++ b/deploy/charts/rook-ceph-cluster/templates/pre-install-duplex-preparation.yaml @@ -0,0 +1,82 @@ +{{/* +# +# Copyright (c) 2020 Intel Corporation, Inc. +# +# SPDX-License-Identifier: Apache-2.0 +# +*/}} + +{{- if .Values.hook.duplexPreparation.enable }} +{{ $root := . }} +--- +apiVersion: v1 +kind: ConfigMap +metadata: + name: config-rook-ceph-duplex-preparation + namespace: {{ $root.Release.Namespace }} + annotations: + "helm.sh/hook": "pre-install" + "helm.sh/hook-delete-policy": "before-hook-creation,hook-succeeded" +data: + rook_duplex_preparation.sh: |- + #!/bin/bash + + cat > endpoint.yaml << EOF + apiVersion: v1 + kind: ConfigMap + metadata: + name: rook-ceph-mon-endpoints + namespace: $NAMESPACE + data: + data: a=$FLOAT_IP:6789 + mapping: '{"node":{"a":{"Name":"$ACTIVE_CONTROLLER","Hostname":"$ACTIVE_CONTROLLER","Address":"$FLOAT_IP"}}}' + maxMonId: "0" + EOF + + kubectl apply -f endpoint.yaml + + rm -f endpoint.yaml +--- +apiVersion: batch/v1 +kind: Job +metadata: + name: rook-ceph-duplex-preparation + namespace: {{ $root.Release.Namespace }} + labels: + heritage: {{$root.Release.Service | quote }} + release: {{$root.Release.Name | quote }} + chart: "{{$root.Chart.Name}}" + annotations: + "helm.sh/hook": "pre-install" + "helm.sh/hook-delete-policy": "before-hook-creation,hook-succeeded" +spec: + template: + metadata: + name: rook-ceph-duplex-preparation + namespace: {{ $root.Release.Namespace }} + labels: + heritage: {{$root.Release.Service | quote }} + release: {{$root.Release.Name | quote }} + chart: "{{$root.Chart.Name}}" + spec: + serviceAccountName: rook-ceph-system + restartPolicy: OnFailure + volumes: + - name: config-rook-ceph-duplex-preparation + configMap: + name: config-rook-ceph-duplex-preparation + containers: + - name: duplex-preparation + image: {{ .Values.hook.image }} + command: [ "/bin/bash", "/tmp/mount/rook_duplex_preparation.sh" ] + env: + - name: NAMESPACE + value: {{ $root.Release.Namespace }} + - name: ACTIVE_CONTROLLER + value: {{ $root.Values.hook.duplexPreparation.activeController }} + - name: FLOAT_IP + value: {{ $root.Values.hook.duplexPreparation.floatIP | quote }} + volumeMounts: + - name: config-rook-ceph-duplex-preparation + mountPath: /tmp/mount +{{- end }} diff --git a/deploy/charts/rook-ceph-cluster/values.yaml b/deploy/charts/rook-ceph-cluster/values.yaml index b7d2e1d6d..f1965b5a8 100644 --- a/deploy/charts/rook-ceph-cluster/values.yaml +++ b/deploy/charts/rook-ceph-cluster/values.yaml @@ -698,3 +698,21 @@ cephObjectStores: # -- CSI driver name prefix for cephfs, rbd and nfs. # @default -- `namespace name where rook-ceph operator is deployed` csiDriverNamePrefix: + +hook: + image: docker.io/openstackhelm/ceph-config-helper:ubuntu_jammy_18.2.2-1-20240312 + duplexPreparation: + enable: false + activeController: controller-0 + floatIP: 192.188.204.1 + cleanup: + enable: true + cluster_cleanup: rook-ceph + rbac: + clusterRole: rook-ceph-cleanup + clusterRoleBinding: rook-ceph-cleanup + role: rook-ceph-cleanup + roleBinding: rook-ceph-cleanup + serviceAccount: rook-ceph-cleanup + mon_hosts: + - controller-0