mirror of
https://github.com/ceph/ceph-csi.git
synced 2024-12-22 13:00:19 +00:00
106 lines
3.8 KiB
Bash
Executable File
106 lines
3.8 KiB
Bash
Executable File
#!/bin/sh
|
|
|
|
# Copyright 2016 The Kubernetes Authors.
|
|
#
|
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
# you may not use this file except in compliance with the License.
|
|
# You may obtain a copy of the License at
|
|
#
|
|
# http://www.apache.org/licenses/LICENSE-2.0
|
|
#
|
|
# Unless required by applicable law or agreed to in writing, software
|
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
# See the License for the specific language governing permissions and
|
|
# limitations under the License.
|
|
|
|
# NOTES
|
|
# This script performs etcd upgrade based on the following environmental
|
|
# variables:
|
|
# TARGET_STORAGE - API of etcd to be used (supported: 'etcd2', 'etcd3')
|
|
# TARGET_VERSION - etcd release to be used (supported: '2.2.1', '2.3.7', '3.0.17', '3.1.12', '3.2.18')
|
|
# DATA_DIRECTORY - directory with etcd data
|
|
#
|
|
# The current etcd version and storage format is detected based on the
|
|
# contents of "${DATA_DIRECTORY}/version.txt" file (if the file doesn't
|
|
# exist, we default it to "2.2.1/etcd2".
|
|
#
|
|
# The update workflow support the following upgrade steps:
|
|
# - 2.2.1/etcd2 -> 2.3.7/etcd2
|
|
# - 2.3.7/etcd2 -> 3.0.17/etcd2
|
|
# - 3.0.17/etcd3 -> 3.1.12/etcd3
|
|
# - 3.1.12/etcd3 -> 3.2.18/etcd3
|
|
#
|
|
# NOTE: The releases supported in this script has to match release binaries
|
|
# present in the etcd image (to make this script work correctly).
|
|
#
|
|
# Based on the current etcd version and storage format we detect what
|
|
# upgrade step from this should be done to get reach target configuration
|
|
|
|
set -o errexit
|
|
set -o nounset
|
|
|
|
# NOTE: BUNDLED_VERSION has to match release binaries present in the
|
|
# etcd image (to make this script work correctly).
|
|
BUNDLED_VERSIONS="2.2.1, 2.3.7, 3.0.17, 3.1.12, 3.2.18"
|
|
|
|
ETCD_NAME="${ETCD_NAME:-etcd-$(hostname)}"
|
|
if [ -z "${DATA_DIRECTORY:-}" ]; then
|
|
echo "DATA_DIRECTORY variable unset - unexpected failure"
|
|
exit 1
|
|
fi
|
|
|
|
case "${DATA_DIRECTORY}" in
|
|
*event*)
|
|
ETCD_PEER_PORT=2381
|
|
ETCD_CLIENT_PORT=18631
|
|
;;
|
|
*)
|
|
ETCD_PEER_PORT=2380
|
|
ETCD_CLIENT_PORT=18629
|
|
;;
|
|
esac
|
|
|
|
if [ -z "${INITIAL_CLUSTER:-}" ]; then
|
|
echo "Warn: INITIAL_CLUSTER variable unset - defaulting to ${ETCD_NAME}=http://localhost:${ETCD_PEER_PORT}"
|
|
INITIAL_CLUSTER="${ETCD_NAME}=http://localhost:${ETCD_PEER_PORT}"
|
|
fi
|
|
if [ -z "${LISTEN_PEER_URLS:-}" ]; then
|
|
echo "Warn: LISTEN_PEER_URLS variable unset - defaulting to http://localhost:${ETCD_PEER_PORT}"
|
|
LISTEN_PEER_URLS="http://localhost:${ETCD_PEER_PORT}"
|
|
fi
|
|
if [ -z "${INITIAL_ADVERTISE_PEER_URLS:-}" ]; then
|
|
echo "Warn: INITIAL_ADVERTISE_PEER_URLS variable unset - defaulting to http://localhost:${ETCD_PEER_PORT}"
|
|
INITIAL_ADVERTISE_PEER_URLS="http://localhost:${ETCD_PEER_PORT}"
|
|
fi
|
|
if [ -z "${TARGET_VERSION:-}" ]; then
|
|
echo "TARGET_VERSION variable unset - unexpected failure"
|
|
exit 1
|
|
fi
|
|
if [ -z "${TARGET_STORAGE:-}" ]; then
|
|
echo "TARGET_STORAGE variable unset - unexpected failure"
|
|
exit 1
|
|
fi
|
|
ETCD_DATA_PREFIX="${ETCD_DATA_PREFIX:-/registry}"
|
|
ETCD_CREDS="${ETCD_CREDS:-}"
|
|
|
|
# Correctly support upgrade and rollback to non-default version.
|
|
if [ "${DO_NOT_MOVE_BINARIES:-}" != "true" ]; then
|
|
cp "/usr/local/bin/etcd-${TARGET_VERSION}" "/usr/local/bin/etcd"
|
|
cp "/usr/local/bin/etcdctl-${TARGET_VERSION}" "/usr/local/bin/etcdctl"
|
|
fi
|
|
|
|
/usr/local/bin/migrate \
|
|
--name "${ETCD_NAME}" \
|
|
--port "${ETCD_CLIENT_PORT}" \
|
|
--listen-peer-urls "${LISTEN_PEER_URLS}" \
|
|
--initial-advertise-peer-urls "${INITIAL_ADVERTISE_PEER_URLS}" \
|
|
--data-dir "${DATA_DIRECTORY}" \
|
|
--bundled-versions "${BUNDLED_VERSIONS}" \
|
|
--initial-cluster "${INITIAL_CLUSTER}" \
|
|
--target-version "${TARGET_VERSION}" \
|
|
--target-storage "${TARGET_STORAGE}" \
|
|
--etcd-data-prefix "${ETCD_DATA_PREFIX}" \
|
|
--ttl-keys-directory "${TTL_KEYS_DIRECTORY:-${ETCD_DATA_PREFIX}/events}" \
|
|
--etcd-server-extra-args "${ETCD_CREDS}"
|