ea2c0115c4
This change moves the ceph-mgr deployment from the ceph-client chart to the ceph-mon chart. Its purpose is to facilitate the proper Ceph upgrade procedure, which prescribes restarting mgr daemons before mon daemons. There will be additional work required to implement the correct daemon restart procedure for upgrades. This change only addresses the move of the ceph-mgr deployment. Change-Id: I3ac4a75f776760425c88a0ba1edae5fb339f128d
69 lines
2.1 KiB
Smarty
69 lines
2.1 KiB
Smarty
{{- define "ceph-mon.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 "ceph-mon.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 -}}
|