mirror of https://github.com/k3s-io/k3s
Added configurable etcd initial-cluster-state to kube-up script.
Added configurable etcd initial-cluster-state to kube-up script. This allows creation of multi-master cluster from scratch. This is a cherry-pick of #41320 from 1.5 branch.pull/6/head
parent
e80afed777
commit
80e57b7016
|
@ -787,6 +787,11 @@ EOF
|
|||
if [ -n "${INITIAL_ETCD_CLUSTER:-}" ]; then
|
||||
cat >>$file <<EOF
|
||||
INITIAL_ETCD_CLUSTER: $(yaml-quote ${INITIAL_ETCD_CLUSTER})
|
||||
EOF
|
||||
fi
|
||||
if [ -n "${INITIAL_ETCD_CLUSTER_STATE:-}" ]; then
|
||||
cat >>$file <<EOF
|
||||
INITIAL_ETCD_CLUSTER_STATE: $(yaml-quote ${INITIAL_ETCD_CLUSTER_STATE})
|
||||
EOF
|
||||
fi
|
||||
if [ -n "${ETCD_QUORUM_READ:-}" ]; then
|
||||
|
|
|
@ -475,6 +475,7 @@ num_nodes: $(echo "${NUM_NODES:-}" | sed -e "s/'/''/g")
|
|||
e2e_storage_test_environment: '$(echo "$E2E_STORAGE_TEST_ENVIRONMENT" | sed -e "s/'/''/g")'
|
||||
kube_uid: '$(echo "${KUBE_UID}" | sed -e "s/'/''/g")'
|
||||
initial_etcd_cluster: '$(echo "${INITIAL_ETCD_CLUSTER:-}" | sed -e "s/'/''/g")'
|
||||
initial_etcd_cluster_state: '$(echo "${INITIAL_ETCD_CLUSTER_STATE:-}" | sed -e "s/'/''/g")'
|
||||
|
||||
hostname: $(hostname -s)
|
||||
enable_default_storage_class: '$(echo "$ENABLE_DEFAULT_STORAGE_CLASS" | sed -e "s/'/''/g")'
|
||||
|
|
|
@ -53,6 +53,10 @@ function replicate-master-instance() {
|
|||
kube_env="$(echo "${kube_env}" | grep -v "INITIAL_ETCD_CLUSTER")"
|
||||
kube_env="$(echo -e "${kube_env}\nINITIAL_ETCD_CLUSTER: '${existing_master_replicas},${REPLICA_NAME}'")"
|
||||
|
||||
# Substitute INITIAL_ETCD_CLUSTER_STATE
|
||||
kube_env="$(echo "${kube_env}" | grep -v "INITIAL_ETCD_CLUSTER_STATE")"
|
||||
kube_env="$(echo -e "${kube_env}\nINITIAL_ETCD_CLUSTER_STATE: 'existing'")"
|
||||
|
||||
ETCD_CA_KEY="$(echo "${kube_env}" | grep "ETCD_CA_KEY" | sed "s/^.*: '//" | sed "s/'$//")"
|
||||
ETCD_CA_CERT="$(echo "${kube_env}" | grep "ETCD_CA_CERT" | sed "s/^.*: '//" | sed "s/'$//")"
|
||||
|
||||
|
|
|
@ -689,6 +689,9 @@ function prepare-etcd-manifest {
|
|||
local etcd_protocol="http"
|
||||
local etcd_creds=""
|
||||
|
||||
if [[ -n "${INITIAL_ETCD_CLUSTER_STATE:-}" ]]; then
|
||||
cluster_state="${INITIAL_ETCD_CLUSTER_STATE}"
|
||||
fi
|
||||
if [[ -n "${ETCD_CA_KEY:-}" && -n "${ETCD_CA_CERT:-}" && -n "${ETCD_PEER_KEY:-}" && -n "${ETCD_PEER_CERT:-}" ]]; then
|
||||
etcd_creds=" --peer-trusted-ca-file /etc/srv/kubernetes/etcd-ca.crt --peer-cert-file /etc/srv/kubernetes/etcd-peer.crt --peer-key-file /etc/srv/kubernetes/etcd-peer.key -peer-client-cert-auth "
|
||||
etcd_protocol="https"
|
||||
|
@ -698,7 +701,6 @@ function prepare-etcd-manifest {
|
|||
etcd_host="etcd-${host}=${etcd_protocol}://${host}:$3"
|
||||
if [[ -n "${etcd_cluster}" ]]; then
|
||||
etcd_cluster+=","
|
||||
cluster_state="existing"
|
||||
fi
|
||||
etcd_cluster+="${etcd_host}"
|
||||
done
|
||||
|
|
|
@ -48,6 +48,11 @@ function replicate-master-instance() {
|
|||
# Substitute INITIAL_ETCD_CLUSTER to enable etcd clustering.
|
||||
kube_env="$(echo "${kube_env}" | grep -v "INITIAL_ETCD_CLUSTER")"
|
||||
kube_env="$(echo -e "${kube_env}\nINITIAL_ETCD_CLUSTER: '${existing_master_replicas},${REPLICA_NAME}'")"
|
||||
|
||||
# Substitute INITIAL_ETCD_CLUSTER_STATE
|
||||
kube_env="$(echo "${kube_env}" | grep -v "INITIAL_ETCD_CLUSTER_STATE")"
|
||||
kube_env="$(echo -e "${kube_env}\nINITIAL_ETCD_CLUSTER_STATE: 'existing'")"
|
||||
|
||||
ETCD_CA_KEY="$(echo "${kube_env}" | grep "ETCD_CA_KEY" | sed "s/^.*: '//" | sed "s/'$//")"
|
||||
ETCD_CA_CERT="$(echo "${kube_env}" | grep "ETCD_CA_CERT" | sed "s/^.*: '//" | sed "s/'$//")"
|
||||
create-etcd-certs "${REPLICA_NAME}" "${ETCD_CA_CERT}" "${ETCD_CA_KEY}"
|
||||
|
|
|
@ -452,6 +452,9 @@ prepare_etcd_manifest() {
|
|||
local etcd_protocol="http"
|
||||
local etcd_creds=""
|
||||
|
||||
if [[ -n "${INITIAL_ETCD_CLUSTER_STATE:-}" ]]; then
|
||||
cluster_state="${INITIAL_ETCD_CLUSTER_STATE}"
|
||||
fi
|
||||
if [[ -n "${ETCD_CA_KEY:-}" && -n "${ETCD_CA_CERT:-}" && -n "${ETCD_PEER_KEY:-}" && -n "${ETCD_PEER_CERT:-}" ]]; then
|
||||
etcd_creds=" --peer-trusted-ca-file /etc/srv/kubernetes/etcd-ca.crt --peer-cert-file /etc/srv/kubernetes/etcd-peer.crt --peer-key-file /etc/srv/kubernetes/etcd-peer.key -peer-client-cert-auth "
|
||||
etcd_protocol="https"
|
||||
|
@ -461,7 +464,6 @@ prepare_etcd_manifest() {
|
|||
etcd_host="etcd-${host}=${etcd_protocol}://${host}:$3"
|
||||
if [[ -n "${etcd_cluster}" ]]; then
|
||||
etcd_cluster+=","
|
||||
cluster_state="existing"
|
||||
fi
|
||||
etcd_cluster+="${etcd_host}"
|
||||
done
|
||||
|
|
|
@ -4,22 +4,20 @@
|
|||
{% set etcd_protocol = 'https' -%}
|
||||
{% set etcd_creds = '--peer-trusted-ca-file /srv/kubernetes/etcd-ca.crt --peer-cert-file /srv/kubernetes/etcd-peer.crt --peer-key-file /srv/kubernetes/etcd-peer.key -peer-client-cert-auth' -%}
|
||||
{% endif -%}
|
||||
{% set cluster_state = 'new' -%}
|
||||
{% set hostname = pillar.get('hostname', '') -%}
|
||||
{% set cluster_state = (pillar.get('initial_etcd_cluster_state') or 'new') -%}
|
||||
{% set etcd_cluster_array = (pillar.get('initial_etcd_cluster') or hostname).split(',') -%}
|
||||
{% set etcd_cluster = '' -%}
|
||||
{# We use vars dictionary to pass variables set inside the for loop, because jinja defines new variables inside the for loop that hide variables from the outside. #}
|
||||
{% set vars = {'etcd_cluster': '', 'cluster_state': cluster_state} -%}
|
||||
{% set vars = {'etcd_cluster': ''} -%}
|
||||
{% for host in etcd_cluster_array -%}
|
||||
{% if etcd_cluster != '' -%}
|
||||
{% set cluster_state = 'existing' -%}
|
||||
{% set etcd_cluster = etcd_cluster ~ ',' -%}
|
||||
{% endif -%}
|
||||
{% set etcd_cluster = etcd_cluster ~ 'etcd-' ~ host ~ '=' ~ etcd_protocol ~'://' ~ host ~ ':' ~ server_port -%}
|
||||
{% do vars.update({'etcd_cluster': etcd_cluster, 'cluster_state': cluster_state}) -%}
|
||||
{% do vars.update({'etcd_cluster': etcd_cluster}) -%}
|
||||
{% endfor -%}
|
||||
{% set etcd_cluster = vars.etcd_cluster -%}
|
||||
{% set cluster_state = vars.cluster_state -%}
|
||||
{% set quota_bytes = '' -%}
|
||||
{% if pillar.get('storage_backend', 'etcd3') == 'etcd3' -%}
|
||||
{% set quota_bytes = '--quota-backend-bytes=4294967296' -%}
|
||||
|
|
Loading…
Reference in New Issue