Skip to content

Commit f9487e4

Browse files
FxKusdudoladov
authored andcommitted
inject cluster name label into logical backup pod (zalando#725)
* inject cluster name label into logical backup pod
1 parent 0b544ae commit f9487e4

File tree

3 files changed

+9
-42
lines changed

3 files changed

+9
-42
lines changed

docker/logical-backup/dump.sh

Lines changed: 5 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -14,9 +14,8 @@ PG_BIN=$PG_DIR/$PG_VERSION/bin
1414
DUMP_SIZE_COEFF=5
1515

1616
TOKEN=$(cat /var/run/secrets/kubernetes.io/serviceaccount/token)
17-
K8S_API_URL=https://$KUBERNETES_SERVICE_HOST:$KUBERNETES_SERVICE_PORT
17+
K8S_API_URL=https://$KUBERNETES_SERVICE_HOST:$KUBERNETES_SERVICE_PORT/api/v1
1818
CERT=/var/run/secrets/kubernetes.io/serviceaccount/ca.crt
19-
CLUSTER_NAME_LABEL=cluster-name
2019

2120
function estimate_size {
2221
"$PG_BIN"/psql -tqAc "${ALL_DB_SIZE_QUERY}"
@@ -49,53 +48,23 @@ function aws_upload {
4948
function get_pods {
5049
declare -r SELECTOR="$1"
5150

52-
curl "${K8S_API_URL}/api/v1/namespaces/${POD_NAMESPACE}/pods?$SELECTOR" \
53-
--cacert $CERT \
51+
curl "${K8S_API_URL}/namespaces/${POD_NAMESPACE}/pods?$SELECTOR" \
52+
--cacert $CERT \
5453
-H "Authorization: Bearer ${TOKEN}" | jq .items[].status.podIP -r
5554
}
5655

5756
function get_current_pod {
58-
curl "${K8S_API_URL}/api/v1/namespaces/${POD_NAMESPACE}/pods?fieldSelector=metadata.name%3D${HOSTNAME}" \
59-
--cacert $CERT \
57+
curl "${K8S_API_URL}/namespaces/${POD_NAMESPACE}/pods?fieldSelector=metadata.name%3D${HOSTNAME}" \
58+
--cacert $CERT \
6059
-H "Authorization: Bearer ${TOKEN}"
6160
}
6261

6362
declare -a search_strategy=(
64-
get_cluster_name_label
6563
list_all_replica_pods_current_node
6664
list_all_replica_pods_any_node
6765
get_master_pod
6866
)
6967

70-
function get_config_resource() {
71-
curl "${K8S_API_URL}/apis/apps/v1/namespaces/default/deployments/postgres-operator" \
72-
--cacert $CERT \
73-
-H "Authorization: Bearer ${TOKEN}" | jq '.spec.template.spec.containers[0].env[] | select(.name == "$1") | .value'
74-
}
75-
76-
function get_cluster_name_label {
77-
local config
78-
local clustername
79-
80-
config=$(get_config_resource "CONFIG_MAP_NAME")
81-
if [ -n "$config" ]; then
82-
clustername=$(curl "${K8S_API_URL}/api/v1/namespaces/default/configmaps/${config}" \
83-
--cacert $CERT \
84-
-H "Authorization: Bearer ${TOKEN}" | jq '.data.cluster_name_label')
85-
else
86-
config=$(get_config_resource "POSTGRES_OPERATOR_CONFIGURATION_OBJECT")
87-
if [ -n "$config" ]; then
88-
clustername=$(curl "${K8S_API_URL}/apis/acid.zalan.do/v1/namespaces/default/operatorconfigurations/${config}" \
89-
--cacert $CERT \
90-
-H "Authorization: Bearer ${TOKEN}" | jq '.configuration.kubernetes.cluster_name_label')
91-
fi
92-
fi
93-
94-
if [ -n "$clustername" ]; then
95-
CLUSTER_NAME_LABEL=${clustername}
96-
fi;
97-
}
98-
9968
function list_all_replica_pods_current_node {
10069
get_pods "labelSelector=${CLUSTER_NAME_LABEL}%3D${SCOPE},spilo-role%3Dreplica&fieldSelector=spec.nodeName%3D${CURRENT_NODENAME}" | head -n 1
10170
}

manifests/operator-service-account-rbac.yaml

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -103,12 +103,6 @@ rules:
103103
- delete
104104
- get
105105
- patch
106-
- apiGroups:
107-
- apps
108-
resources:
109-
- deployments
110-
verbs:
111-
- get
112106
- apiGroups:
113107
- apps
114108
resources:

pkg/cluster/k8sres.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1557,6 +1557,10 @@ func (c *Cluster) generateLogicalBackupPodEnvVars() []v1.EnvVar {
15571557
Name: "SCOPE",
15581558
Value: c.Name,
15591559
},
1560+
{
1561+
Name: "CLUSTER_NAME_LABEL",
1562+
Value: c.OpConfig.ClusterNameLabel,
1563+
},
15601564
{
15611565
Name: "POD_NAMESPACE",
15621566
ValueFrom: &v1.EnvVarSource{

0 commit comments

Comments
 (0)