728c340dc0
This is a code improvement to reuse ceph monitor doscovering function in different templates. Calling the mentioned above function from a single place (helm-infra snippets) allows less code maintenance and simlifies further development. Rev. 0.1 Charts version bump for ceph-client, ceph-mon, ceph-osd, ceph-provisioners and helm-toolkit Rev. 0.2 Mon endpoint discovery functionality added for the rados gateway. ClusterRole and ClusterRoleBinding added. Rev. 0.3 checkdns is allowed to correct ceph.conf for RGW deployment. Rev. 0.4 Added RoleBinding to the deployment-rgw. Rev. 0.5 Remove _namespace-client-ceph-config-manager.sh.tpl and the appropriate job, because of duplicated functionality. Related configuration has been removed. Rev. 0.6 RoleBinding logic has been changed to meet rules: checkdns namespace - HAS ACCESS -> RGW namespace(s) Change-Id: Ie0af212bdcbbc3aa53335689deed9b226e5d4d89
69 lines
2.1 KiB
Smarty
69 lines
2.1 KiB
Smarty
{{- define "helm-toolkit.snippets.mon_host_from_k8s_ep" -}}
|
|
{{/*
|
|
|
|
Inserts a bash function definition mon_host_from_k8s_ep() which can be used
|
|
to construct a mon_hosts value from the given namespaced endpoint.
|
|
|
|
Usage (e.g. in _script.sh.tpl):
|
|
#!/bin/bash
|
|
|
|
: "${NS:=ceph}"
|
|
: "${EP:=ceph-mon-discovery}"
|
|
|
|
{{ include "helm-toolkit.snippets.mon_host_from_k8s_ep" . }}
|
|
|
|
MON_HOST=$(mon_host_from_k8s_ep "$NS" "$EP")
|
|
|
|
if [ -z "$MON_HOST" ]; then
|
|
# deal with failure
|
|
else
|
|
sed -i -e "s/^mon_host = /mon_host = $MON_HOST/" /etc/ceph/ceph.conf
|
|
fi
|
|
*/}}
|
|
{{`
|
|
# Construct a mon_hosts value from the given namespaced endpoint
|
|
# IP x.x.x.x with port p named "mon-msgr2" will appear as [v2:x.x.x.x/p/0]
|
|
# IP x.x.x.x with port q named "mon" will appear as [v1:x.x.x.x/q/0]
|
|
# IP x.x.x.x with ports p and q will appear as [v2:x.x.x.x/p/0,v1:x.x.x.x/q/0]
|
|
# The entries for all IPs will be joined with commas
|
|
mon_host_from_k8s_ep() {
|
|
local ns=$1
|
|
local ep=$2
|
|
|
|
if [ -z "$ns" ] || [ -z "$ep" ]; then
|
|
return 1
|
|
fi
|
|
|
|
# We don't want shell expansion for the go-template expression
|
|
# shellcheck disable=SC2016
|
|
kubectl get endpoints -n "$ns" "$ep" -o go-template='
|
|
{{- $sep := "" }}
|
|
{{- range $_,$s := .subsets }}
|
|
{{- $v2port := 0 }}
|
|
{{- $v1port := 0 }}
|
|
{{- range $_,$port := index $s "ports" }}
|
|
{{- if (eq $port.name "mon-msgr2") }}
|
|
{{- $v2port = $port.port }}
|
|
{{- else if (eq $port.name "mon") }}
|
|
{{- $v1port = $port.port }}
|
|
{{- end }}
|
|
{{- end }}
|
|
{{- range $_,$address := index $s "addresses" }}
|
|
{{- $v2endpoint := printf "v2:%s:%d/0" $address.ip $v2port }}
|
|
{{- $v1endpoint := printf "v1:%s:%d/0" $address.ip $v1port }}
|
|
{{- if (and $v2port $v1port) }}
|
|
{{- printf "%s[%s,%s]" $sep $v2endpoint $v1endpoint }}
|
|
{{- $sep = "," }}
|
|
{{- else if $v2port }}
|
|
{{- printf "%s[%s]" $sep $v2endpoint }}
|
|
{{- $sep = "," }}
|
|
{{- else if $v1port }}
|
|
{{- printf "%s[%s]" $sep $v1endpoint }}
|
|
{{- $sep = "," }}
|
|
{{- end }}
|
|
{{- end }}
|
|
{{- end }}'
|
|
}
|
|
`}}
|
|
{{- end -}}
|