diff --git a/addons/mogdb/dataprotection/brm-common.sh b/addons/mogdb/dataprotection/brm-common.sh new file mode 100644 index 000000000..85af0f4c2 --- /dev/null +++ b/addons/mogdb/dataprotection/brm-common.sh @@ -0,0 +1,117 @@ +# brm variables setting +: ${BRM_CONFIG:=/etc/brm.yaml} +: ${BACKUP_ROOTDIR:=/backupdata} +: ${BACKUP_DIR:=mogdb} +: ${PGDATA:=/var/lib/mogdb/data} +: ${LAST_INFO:=last_info.log} +: ${ARCHIVE_DIR:=/var/lib/mogdb/archives} + + +function brm_backup_dir() { + echo "${BACKUP_ROOTDIR}/${BACKUP_DIR}" +} + +function brm_instance_backup_dir() { + echo $(brm_backup_dir)/backups/${KB_CLUSTER_NAME} +} + +function brm_instance_wal_dir() { + echo $(brm_backup_dir)/wal/${KB_CLUSTER_NAME} +} + +function init_brm_required_vars() { + BRM_BACKUP_DIR=$(brm_backup_dir) + BRM_INST_BACKUP_DIR=$(brm_instance_backup_dir) + BRM_INST_WAL_DIR=$(brm_instance_wal_dir) +} + +function brm_cleanup_instance() { + local inst="$1" + + if [ -n "$inst" ]; then + rm -rf $(brm_instance_backup_dir) + rm -rf $(brm_instance_wal_dir) + fi +} + +function is_first_backup() { + # TODO: simple judgment currently, enhance this logic in the future + local inst_backup_dir=$(brm_instance_backup_dir) + + for dir in $(ls $inst_backup_dir); do + if [ -d "$inst_backup_dir/$dir" ] && [[ "$dir" =~ [A-Z0-9]+ ]]; then + return 1 + fi + done + + return 0 +} + +function setup_brm_configure() { + which yq >/dev/null || apt_get_install_package yq + + local brm_dir=$(home_directory omm)/brm + test -d ${brm_dir} || { + echo "Making brm directory.." + mkdir -p ${brm_dir} + chown -R omm:omm ${brm_dir} + } + + yq -i ".backup_home = \"$(brm_backup_dir)\"" ${BRM_CONFIG} + yq -i ".log_file = \"${brm_dir}/brm.log\"" ${BRM_CONFIG} + yq -i ".lock_directory = \"/var/run\"" ${BRM_CONFIG} +} + +function brm_add_server() { + local inst_backup_dir=$(brm_instance_backup_dir) + + local cmd=(gosu omm brm) + if [ ! -e "$inst_backup_dir" ]; then + cmd+=(add-server) + else + cmd+=(set-server) + fi + + ${cmd[@]} \ + -i ${KB_CLUSTER_NAME} \ + -D ${PGDATA} \ + --pghost=${DP_DB_HOST} \ + --pguser=${DP_DB_USER} \ + --pgpassword=\'${DP_DB_PASSWORD}\' \ + --remote-user=omm --remote-host=${DP_DB_HOST} \ + -p ${PGPORT:-26000} +} + + +function brm_set_server_wal() { + brm set-server -i ${KB_CLUSTER_NAME} --archive-dir=${ARCHIVE_DIR} +} + + +function brm_analysis_log() { + # last_info.log + local last_line=$(tail -n 1 ${BRM_INST_BACKUP_DIR}/${LAST_INFO}) + + if [[ "$last_line" =~ "Backup "([A-Z0-9]+)" completed" ]]; then + local backup_id=${BASH_REMATCH[1]} + fi + + echo "{\"backup_id\":\"$backup_id\"}" +} + +function brm_backup_info() { + local backup_id="$1" + local cmd=(brm show-backup) + + if [ -n "$backup_id" ]; then + cmd+=(-b $backup_id -i ${KB_CLUSTER_NAME} -f JSON) + fi + + local output=$(${cmd[@]}) + + if [[ $output =~ \[.*\] ]]; then + echo ${BASH_REMATCH[0]} + else + echo "[]" + fi +} \ No newline at end of file diff --git a/addons/mogdb/dataprotection/brm-full-backup.sh b/addons/mogdb/dataprotection/brm-full-backup.sh new file mode 100644 index 000000000..48286c4c7 --- /dev/null +++ b/addons/mogdb/dataprotection/brm-full-backup.sh @@ -0,0 +1,39 @@ +#set -e +#set -o pipefail +export PATH="$PATH:$DP_DATASAFED_BIN_PATH" +export DATASAFED_BACKEND_BASE_PATH="$DP_BACKUP_BASE_PATH" +export PGPASSWORD=${DP_DB_PASSWORD} + +trap handle_exit EXIT + +START_TIME=`get_current_time` +BACKUP_TMPDIR="/tmp" + +function brm_backup() { + gosu omm brm backup -i ${KB_CLUSTER_NAME} --debug=info | tee $(brm_instance_backup_dir)/${LAST_INFO} +} + +echo "Init brm required vars.." +init_brm_required_vars + +# setup brm configuration +echo "Setuping brm configuration.." +setup_brm_configure + +echo "Configure ssh.." +setup_ssh_configure + +# add brm server +echo "Adding brm server.." +brm_add_server + +# backup using brm +echo "Backuping.." +brm_backup + +# stat and save the backup information +stat_and_save_backup_info $START_TIME + +# temporarily add for test +# TODO: remove it in the future +# sleep infinity \ No newline at end of file diff --git a/addons/mogdb/dataprotection/brm-info-collector.sh b/addons/mogdb/dataprotection/brm-info-collector.sh new file mode 100644 index 000000000..c6e93a5d3 --- /dev/null +++ b/addons/mogdb/dataprotection/brm-info-collector.sh @@ -0,0 +1,36 @@ +function get_current_time() { + curr_time=$(gsql -U ${DP_DB_USER} -h ${DP_DB_HOST} -W ${DP_DB_PASSWORD} -d postgres -t -c "SELECT now() AT TIME ZONE 'UTC'") + echo $curr_time +} + +function stat_and_save_backup_info() { + local start_time="$1" + local stop_time="$2" + + if [ -z $stop_time ]; then + stop_time=$(get_current_time) + fi + + start_time=$(date -d "${start_time}" -u '+%Y-%m-%dT%H:%M:%SZ') + stop_time=$(date -d "${stop_time}" -u '+%Y-%m-%dT%H:%M:%SZ') + + local analysis=$(brm_analysis_log) + local backup_id=$(jq -r .backup_id <<< $analysis) + + local backup_info=$(brm_backup_info "$backup_id") + local size_bytes=$(jq -r '.[0].backups[0]."data-bytes"' <<< ${backup_info}) + local human_size=$(human_format $size_bytes) + + echo "{\"totalSize\":\"$human_size\",\"timeRange\":{\"start\":\"${start_time}\",\"end\":\"${stop_time}\"}}" >"${DP_BACKUP_INFO_FILE}" +} + +# if the script exits with a non-zero exit code, touch a file to indicate that the backup failed, +# the sync progress container will check this file and exit if it exists +function handle_exit() { + exit_code=$? + if [ $exit_code -ne 0 ]; then + echo "failed with exit code $exit_code" + touch "${DP_BACKUP_INFO_FILE}.exit" + exit 1 + fi +} diff --git a/addons/mogdb/dataprotection/brm-ptrack-backup.sh b/addons/mogdb/dataprotection/brm-ptrack-backup.sh new file mode 100644 index 000000000..176337144 --- /dev/null +++ b/addons/mogdb/dataprotection/brm-ptrack-backup.sh @@ -0,0 +1,34 @@ +START_TIME=`get_current_time` + +function brm_ptrack_backup() { + if is_first_backup; then + gosu omm brm backup -i ${KB_CLUSTER_NAME} --debug=info | tee $(brm_instance_backup_dir)/${LAST_INFO} + else + gosu omm brm backup -i ${KB_CLUSTER_NAME} -b PTRACK --debug=info | tee $(brm_instance_backup_dir)/${LAST_INFO} + fi +} + + +echo "Init brm required vars.." +init_brm_required_vars + +# setup brm configuration +echo "Setuping brm configuration.." +setup_brm_configure + +echo "Configure ssh.." +setup_ssh_configure + +# add brm server +echo "Adding brm server.." +brm_add_server + +echo "Starting ptrack backup.." +brm_ptrack_backup + +# stat and save the backup information +stat_and_save_backup_info $START_TIME + +# temporarily add for test +# TODO: remove it in the future +# sleep infinity \ No newline at end of file diff --git a/addons/mogdb/dataprotection/brm-wal-backup.sh b/addons/mogdb/dataprotection/brm-wal-backup.sh new file mode 100644 index 000000000..9e54b5119 --- /dev/null +++ b/addons/mogdb/dataprotection/brm-wal-backup.sh @@ -0,0 +1,43 @@ +# brm backup-wal -i test --debug=info + +START_TIME=`get_current_time` + +function brm_ptrack_backup() { + brm backup-wal -i ${KB_CLUSTER_NAME} --debug=info | tee ${BRM_INST_WAL_DIR}/${LAST_INFO} +} + + +function save_backup_status() { + echo +} + + +echo "Init brm required vars.." +init_brm_required_vars + +# setup brm configuration +echo "Setuping brm configuration.." +setup_brm_configure + +echo "Configure ssh.." +setup_ssh_configure + +# add brm server +echo "Adding brm server.." +brm_set_server_wal + +# trap term signal +trap "echo 'Terminating...' && sync && exit 0" TERM +DP_log "start to archive wal logs" +while true; do + brm_ptrack_backup + + save_backup_status + + sleep ${LOG_ARCHIVE_SECONDS} + + # temporarily add for test + # TODO: remove it in the future + sleep infinity +done + diff --git a/addons/mogdb/dataprotection/ssh.sh b/addons/mogdb/dataprotection/ssh.sh new file mode 100644 index 000000000..98d491b12 --- /dev/null +++ b/addons/mogdb/dataprotection/ssh.sh @@ -0,0 +1,16 @@ +function setup_ssh_configure() { + if [ ! -f /etc/ssh/ssh_config ]; then + echo "SSH client config not exist!" + exit 1 + fi + + { + echo "StrictHostKeyChecking no" + } >> /etc/ssh/ssh_config + + mkdir -p /home/omm/.ssh + echo -n "$SSH_RSA" > /home/omm/.ssh/id_rsa + + chown -R omm:omm /home/omm/.ssh + chmod 0600 /home/omm/.ssh/id_rsa +} \ No newline at end of file diff --git a/addons/mogdb/reloader/update-parameters.sh b/addons/mogdb/reloader/update-parameters.sh new file mode 100644 index 000000000..5d6f0ed25 --- /dev/null +++ b/addons/mogdb/reloader/update-parameters.sh @@ -0,0 +1,10 @@ +#!/bin/sh +set -ex + +OB_SERVICE_PORT=${COMP_MYSQL_PORT:-2881} +OB_CLI="/kb_tools/obtools" + +paramName="${1:?missing config}" +paramValue="${2:?missing value}" + +$OB_CLI --host 127.0.0.1 -uroot -P ${OB_SERVICE_PORT} var-update --set "${paramName}=${paramValue}" \ No newline at end of file diff --git a/addons/mogdb/scripts/entrypoint-mogdb.sh b/addons/mogdb/scripts/entrypoint-mogdb.sh new file mode 100644 index 000000000..c36e55648 --- /dev/null +++ b/addons/mogdb/scripts/entrypoint-mogdb.sh @@ -0,0 +1,310 @@ +#!/bin/bash +# + +source /kb-scripts/setup.sh +source /kb-scripts/library.sh + + +HOSTNAME=$(hostname) +ORDINAL= +AGENT_PORT=6688 + +PHASE_BUILDING="building" +PHASE_RUNNING="running" + +APT_UPDATE=false + + +function apt_get_install_package() { + local pkg="$1" + if [ "${!pkg:-}" ]; then + echo "Apt-get install package not provide" + exit 1 + fi + + OLD_LD_LIBRARY_PATH=${LD_LIBRARY_PATH} + unset LD_LIBRARY_PATH + + if [ "$APT_UPDATE" == "false" ]; then + echo "Apt-get updating..." + apt-get update + + APT_UPDATE="true" + fi + + # Install package + echo "Apt-get install package $pkg..." + apt-get install -y $pkg + + LD_LIBRARY_PATH=${OLD_LD_LIBRARY_PATH} +} + + +function install_requirement_package() { + OLD_LD_LIBRARY_PATH=${LD_LIBRARY_PATH} + unset LD_LIBRARY_PATH + + apt-get update + echo "Installing open ssh server, client, jq etc." + DEBIAN_FRONTEND=noninteractive apt-get install -y openssh-server \ + openssh-server \ + jq \ + expect \ + unzip + + # TODO: add this logic to image + # install brm package + echo "Installing brm package.." + mkdir -p /tmp/brm + wget http://cdn-mogdb.enmotech.com/brm/v1.0.6/brm_1.0.6_linux_amd64.zip -O /tmp/brm/brm.zip + unzip /tmp/brm/brm.zip -d /tmp/brm + cp /tmp/brm/brm /usr/local/bin + cp /tmp/brm/conf/brm.yaml /etc/brm.yaml + rm -rf /tmp/brm + + # TODO: move this logic to image + # install yq tool + + LD_LIBRARY_PATH=${OLD_LD_LIBRARY_PATH} +} + + + +function setup_ssh_configure() { + if [ ! -f /etc/ssh/ssh_config ]; then + echo "SSH client config not exist!" + exit 1 + fi + + { + echo "StrictHostKeyChecking no" + } >> /etc/ssh/ssh_config + + mkdir -p /home/omm/.ssh + cp /home/omm/ssh/id_rsa.pub /home/omm/.ssh/authorized_keys + + chown -R omm:omm /home/omm/.ssh +} + +function start_ssh_service() { + setup_ssh_configure + + mkdir -p /run/sshd + /usr/sbin/sshd -D & +} + +function notify_cluster_peers() { + for ((i=0; i<$ORDINAL; i++)); do + local peer_ip=$(ping ${KB_CLUSTER_COMP_NAME}-${i}.${KB_CLUSTER_COMP_NAME}-headless -c 1 | sed '1{s/[^(]*(//;s/).*//;q}') + local key="replconninfo${ORDINAL}" + local value="localhost=$peer_ip localport=$(($PGPORT+1)) localservice=$(($PGPORT+2)) remotehost=$KB_PODIP remoteport=$(($PGPORT+1)) remoteservice=$(($PGPORT+2))" + local cmd=(mscli curl http://${peer_ip}:${AGENT_PORT}/api/v1/mogdb/pgconf -X PATCH -d "'{\"action\":\"reload\",\"key\":\"${key}\",\"value\":\"${value}\"}'") + + eval "${cmd[*]}" + done +} + + +function get_pod_ip_list { + # Get the headless service name + IP_LIST=() + + # wait for up to 10 minutes for the server to be ready + local wait_time=600 + # Get every replica's IP + for i in $(seq 0 $(($KB_REPLICA_COUNT-1))); do + local replica_hostname="${KB_CLUSTER_COMP_NAME}-${i}" + local replica_ip="" + if [ $i -ne $ORDINAL_INDEX ]; then + echo "nslookup $replica_hostname.$SVC_NAME" + local elapsed_time=0 + while [ $elapsed_time -lt $wait_time ]; do + replica_ip=$(nslookup $replica_hostname.$SVC_NAME | tail -n 2 | grep -P "(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})" --only-matching) + if [ $? -ne 0 ]; then + echo "$replica_hostname.$SVC_NAME is not ready yet" + sleep 10 + elapsed_time=$((elapsed_time + 10)) + else + echo "$replica_hostname.$SVC_NAME is ready" + echo "nslookup $replica_hostname.$SVC_NAME success, IP: $replica_ip" + break + fi + done + if [ $elapsed_time -ge $wait_time ]; then + echo "Failed to get the IP of $replica_hostname.$SVC_NAME, exit..." + exit 1 + fi + else + replica_ip=$KB_POD_IP + fi + + IP_LIST+=("$replica_ip") + done + + echo "get_pod_ip_list: ${IP_LIST[*]}" + echo "rs_list: $RS_LIST" +} + + +function get_primary_pod_ip() { + PRIMARY_POD_IP= +} + + +function set_phase() { + local phase="$1" + + echo -e "$phase" > /tmp/phase +} + + +function add_server() { + echo "add server" + echo "IP_LIST: ${IP_LIST[*]}" + + local suffix=1 + for ((i=0; i<$KB_REPLICA_COUNT; i++)); do + if [ $i -eq $ORDINAL_INDEX ]; then + continue + fi + + local cmd=(gs_guc reload -D $PGDATA -c \"replconninfo${suffix} = \'localhost=$KB_PODIP localport=$(($PGPORT+1)) localservice=$(($PGPORT+2)) remotehost=${IP_LIST[$i]} remoteport=$(($PGPORT+1)) remoteservice=$(($PGPORT+2))\'\") + + eval "${cmd[*]}" + + suffix=$(($suffix+1)) + done +} + + +function is_primary_ready() { + echo +} + + +function wait_until_previous_pods_running() { + echo +} + + +function add_peers_to_self() { + for ((i=0; i<$ORDINAL; i++)); do + local key="replconninfo$((i+1))" + local peer_ip=$(ping ${KB_CLUSTER_COMP_NAME}-${i}.${KB_CLUSTER_COMP_NAME}-headless -c 1 | sed '1{s/[^(]*(//;s/).*//;q}') + local value="'localhost=$KB_PODIP localport=$(($PGPORT+1)) localservice=$(($PGPORT+2)) remotehost=$peer_ip remoteport=$(($PGPORT+1)) remoteservice=$(($PGPORT+2))'" + + local cmd=(gs_guc reload -D $PGDATA -c \"$key = $value\") + + eval "${cmd[*]}" + done +} + + +function mogdb_required_environments() { + local path=$(add_path "$GAUSSHOME/bin") + + cat <<-EOF +GAUSSHOME="$GAUSSHOME" +PGHOST="$PGHOST" +PGPORT="$PGPORT" +PATH="$path" +EOF +} + + +function add_environment_to_omm() { + mogdb_required_environments >> /etc/environment +} + +echo "Setup env variables" +docker_setup_env + +if [ "$(id -u)" = '0' ]; then + # install_requirement_package + + echo "Start sshd service..." + start_ssh_service + + # then restart script as postgres user + echo "Copy config file from cm" + cp /home/omm/conf/* /tmp/ + chmod 777 /tmp/postgresql.conf /tmp/pg_hba.conf + + echo "Add required envs to omm" + add_environment_to_omm + + echo "Create required directories for mogdb" + docker_create_db_directories + + echo "Script run as root, will replay as omm" + exec gosu omm "$BASH_SOURCE" "$@" +fi + +# add mogdb tools directory to PATH +export PATH="/mogdb_tools:$PATH" + +if [[ ! "$HOSTNAME" =~ -([0-9]+)$ ]]; then + echo "Hostname $HOSTNAME is not valid" + exit 1 +fi +ORDINAL=${BASH_REMATCH[1]} + +if [[ $ORDINAL -eq 0 ]]; then + SERVER_MODE="primary" +else + SERVER_MODE="standby" +fi +echo "Mogdb role is $SERVER_MODE" + +if [ "$1" != 'mogdb' ]; then + set -- mogdb -M $SERVER_MODE "$@" +fi + + +if [ -z "$DATABASE_ALREADY_EXISTS" ]; then + docker_verify_minimum_env + + # check dir permissions to reduce likelihood of half-initialized database + ls /docker-entrypoint-initdb.d/ >/dev/null + + docker_init_database_dir + mogdb_setup_hba_conf + mogdb_setup_postgresql_conf + mogdb_setup_mot_conf + + export PGPASSWORD="${PGPASSWORD:-$GS_PASSWORD}" + docker_temp_server_start "$@" + if [ -z "$SERVER_MODE" ] || [ "$SERVER_MODE" = "primary" ]; then + docker_setup_db + docker_setup_user + docker_setup_rep_user + docker_process_init_files /docker-entrypoint-initdb.d/* + fi + + echo "Notify cluster other peers to add replconninfo configuration" + notify_cluster_peers + + echo "Add cluster other peers replconninfo configuration to self" + add_peers_to_self + + if [ -n "$SERVER_MODE" ] && [ "$SERVER_MODE" != "primary" ]; then + docker_slave_full_backup + fi + docker_temp_server_stop + unset PGPASSWORD + + echo + echo 'mogdb init process complete; ready for start up.' + echo +else + echo + echo 'mogdb Database directory appears to contain a database; Skipping initialization' + echo + + # recovering + # ip changed ? + + # get ip from local +fi + +exec $@ \ No newline at end of file diff --git a/addons/mogdb/scripts/library.sh b/addons/mogdb/scripts/library.sh new file mode 100644 index 000000000..4bf5c8737 --- /dev/null +++ b/addons/mogdb/scripts/library.sh @@ -0,0 +1,48 @@ +function home_directory() { + local user=${1:=root} + + if [ "$user" == "root" ];then + echo "/root" + else + echo "/home/$user" + fi +} + + +function string_contain() { + local src="$1" + local sub="$2" + + if [[ "$src" == *"$2"* ]]; then + return 0 + fi + + return 1 +} + + +function add_path() { + local path="$1" + + if ! string_contain "$PATH" "$path"; then + echo "$path:$PATH" + else + echo "$PATH" + fi +} + +function human_format() { + local b="$1" + local f="$2" + + local cmd=(numfmt --to=iec-i --suffix=B) + if [ -n "$b" ]; then + if [ -n "$f" ]; then + cmd+=(--format="$f") + fi + + cmd+=($b) + + ${cmd[@]} + fi +} \ No newline at end of file diff --git a/addons/mogdb/scripts/setup.sh b/addons/mogdb/scripts/setup.sh index 8752a3854..da216ae4d 100644 --- a/addons/mogdb/scripts/setup.sh +++ b/addons/mogdb/scripts/setup.sh @@ -46,6 +46,9 @@ docker_create_db_directories() { mkdir -p "$PGDATA" chmod 700 "$PGDATA" + mkdir -p $PGHOST + chmod 700 "$PGHOST" + # ignore failure since it will be fine when using the image provided directory; mkdir -p /var/run/mogdb || : chmod 775 /var/run/mogdb || : @@ -62,6 +65,7 @@ docker_create_db_directories() { # allow the container to be started with `--user` if [ "$user" = '0' ]; then find "$PGDATA" \! -user omm -exec chown omm '{}' + + find "$PGHOST" \! -user omm -exec chown omm '{}' + find /var/run/mogdb \! -user omm -exec chown omm '{}' + fi } @@ -272,6 +276,12 @@ docker_setup_env() { # default authentication method is md5 : "${GS_HOST_AUTH_METHOD:=md5}" + # defult OG_SUBNET is + : "${OG_SUBNET:=0.0.0.0/0}" + + # default archive dest + : "${ARCHIVE_DEST:=/var/lib/mogdb/archives}" + declare -g DATABASE_ALREADY_EXISTS # look specifically for OG_VERSION, as it is expected in the DB dir if [ -s "$PGDATA/PG_VERSION" ]; then @@ -317,6 +327,9 @@ mogdb_setup_postgresql_conf() { echo "password_encryption_type = 1" echo "wal_level = logical" echo "unix_socket_directory = '$PGHOST'" + echo "archive_mode = on" + echo "archive_dest = '$ARCHIVE_DEST'" + echo "enable_cbm_tracking = on" if [ -n "$GS_PORT" ]; then echo "port = $GS_PORT" diff --git a/addons/mogdb/templates/_helpers.tpl b/addons/mogdb/templates/_helpers.tpl index feabd9849..57eaf4eeb 100644 --- a/addons/mogdb/templates/_helpers.tpl +++ b/addons/mogdb/templates/_helpers.tpl @@ -59,3 +59,17 @@ Generate scripts configmap {{- $.Files.Get $path | nindent 2 }} {{- end }} {{- end }} + +{{/* +Generate reloader scripts configmap +*/}} +{{- define "mogdb.extend.reload.scripts" -}} +{{- range $path, $_ := $.Files.Glob "reloader/**" }} +{{ $path | base }}: |- +{{- $.Files.Get $path | nindent 2 }} +{{- end }} +{{- end }} + +{{- define "mogdb-release.name" }} +{{- print "mogdb" }} +{{- end }} \ No newline at end of file diff --git a/addons/mogdb/templates/actionset-brm-full.yaml b/addons/mogdb/templates/actionset-brm-full.yaml new file mode 100644 index 000000000..26ccd8286 --- /dev/null +++ b/addons/mogdb/templates/actionset-brm-full.yaml @@ -0,0 +1,58 @@ +apiVersion: dataprotection.kubeblocks.io/v1alpha1 +kind: ActionSet +metadata: + name: mogdb-brm-full + labels: + clusterdefinition.kubeblocks.io/name: mogdb + {{- include "mogdb.labels" . | nindent 4 }} +spec: + backupType: Full + env: + - name: DATA_DIR + value: {{ .Values.dataMountPath }}/mogdb/data + - name: IMAGE_TAG + value: 5.0.5 + - name: GAUSSHOME + value: /usr/local/mogdb + - name: LD_LIBRARY_PATH + value: /usr/local/mogdb/lib + - name: PATH + value: /usr/local/mogdb/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin + - name: PGPORT + value: "26000" + - name: PGHOST + value: /var/lib/mogdb/tmp + - name: SSH_RSA + valueFrom: + secretKeyRef: + name: mogdb-ssh-rsa-secret + key: id_rsa + backup: + preBackup: [] + postBackup: [] + backupData: + image: {{ .Values.image.registry | default "docker.io" }}/{{ .Values.image.repository }}:$(IMAGE_TAG) + runOnTargetPodNode: true + command: + - bash + - -c + - | + set -x + {{- .Files.Get "scripts/library.sh" | nindent 8 }} + {{- .Files.Get "dataprotection/ssh.sh" | nindent 8 }} + {{- .Files.Get "dataprotection/brm-info-collector.sh" | nindent 8 }} + {{- .Files.Get "dataprotection/brm-common.sh" | nindent 8 }} + {{- .Files.Get "dataprotection/brm-full-backup.sh" | nindent 8 }} + syncProgress: + enabled: true + intervalSeconds: 5 + restore: + prepareData: + image: {{ .Values.image.registry | default "docker.io" }}/{{ .Values.image.repository }}:$(IMAGE_TAG) + command: + - bash + - -c + - | + set -x + {{- .Files.Get "dataprotection/brm-full-restore.sh" | nindent 8 }} + postReady: [] diff --git a/addons/mogdb/templates/actionset-brm-ptrack.yaml b/addons/mogdb/templates/actionset-brm-ptrack.yaml new file mode 100644 index 000000000..f79d044c1 --- /dev/null +++ b/addons/mogdb/templates/actionset-brm-ptrack.yaml @@ -0,0 +1,58 @@ +apiVersion: dataprotection.kubeblocks.io/v1alpha1 +kind: ActionSet +metadata: + name: mogdb-brm-ptrack + labels: + clusterdefinition.kubeblocks.io/name: mogdb + {{- include "mogdb.labels" . | nindent 4 }} +spec: + backupType: Incremental + env: + - name: DATA_DIR + value: {{ .Values.dataMountPath }}/mogdb/data + - name: IMAGE_TAG + value: 5.0.5 + - name: GAUSSHOME + value: /usr/local/mogdb + - name: LD_LIBRARY_PATH + value: /usr/local/mogdb/lib + - name: PATH + value: /usr/local/mogdb/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin + - name: PGPORT + value: "26000" + - name: PGHOST + value: /var/lib/mogdb/tmp + - name: SSH_RSA + valueFrom: + secretKeyRef: + name: mogdb-ssh-rsa-secret + key: id_rsa + backup: + preBackup: [] + postBackup: [] + backupData: + image: {{ .Values.image.registry | default "docker.io" }}/{{ .Values.image.repository }}:$(IMAGE_TAG) + runOnTargetPodNode: true + command: + - bash + - -c + - | + set -x + {{- .Files.Get "scripts/library.sh" | nindent 8 }} + {{- .Files.Get "dataprotection/ssh.sh" | nindent 8 }} + {{- .Files.Get "dataprotection/brm-info-collector.sh" | nindent 8 }} + {{- .Files.Get "dataprotection/brm-common.sh" | nindent 8 }} + {{- .Files.Get "dataprotection/brm-ptrack-backup.sh" | nindent 8 }} + syncProgress: + enabled: true + intervalSeconds: 5 + restore: + prepareData: + image: {{ .Values.image.registry | default "docker.io" }}/{{ .Values.image.repository }}:$(IMAGE_TAG) + command: + - bash + - -c + - | + set -x + {{- .Files.Get "dataprotection/brm-ptrack-restore.sh" | nindent 8 }} + postReady: [] diff --git a/addons/mogdb/templates/actionset-brm-wal.yaml b/addons/mogdb/templates/actionset-brm-wal.yaml new file mode 100644 index 000000000..d1e9e4e51 --- /dev/null +++ b/addons/mogdb/templates/actionset-brm-wal.yaml @@ -0,0 +1,58 @@ +apiVersion: dataprotection.kubeblocks.io/v1alpha1 +kind: ActionSet +metadata: + name: mogdb-brm-wal + labels: + clusterdefinition.kubeblocks.io/name: mogdb + {{- include "mogdb.labels" . | nindent 4 }} +spec: + backupType: Continuous + env: + - name: DATA_DIR + value: {{ .Values.dataMountPath }}/mogdb/data + - name: IMAGE_TAG + value: 5.0.5 + - name: GAUSSHOME + value: /usr/local/mogdb + - name: LD_LIBRARY_PATH + value: /usr/local/mogdb/lib + - name: PATH + value: /usr/local/mogdb/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin + - name: PGPORT + value: "26000" + - name: PGHOST + value: /var/lib/mogdb/tmp + - name: SSH_RSA + valueFrom: + secretKeyRef: + name: mogdb-ssh-rsa-secret + key: id_rsa + backup: + preBackup: [] + postBackup: [] + backupData: + image: {{ .Values.image.registry | default "docker.io" }}/{{ .Values.image.repository }}:$(IMAGE_TAG) + runOnTargetPodNode: true + syncProgress: + enabled: true + intervalSeconds: 5 + command: + - bash + - -c + - | + set -x + {{- .Files.Get "scripts/library.sh" | nindent 8 }} + {{- .Files.Get "dataprotection/ssh.sh" | nindent 8 }} + {{- .Files.Get "dataprotection/brm-info-collector.sh" | nindent 8 }} + {{- .Files.Get "dataprotection/brm-common.sh" | nindent 8 }} + {{- .Files.Get "dataprotection/brm-wal-backup.sh" | nindent 8 }} + restore: + prepareData: + image: {{ .Values.image.registry | default "docker.io" }}/{{ .Values.image.repository }}:$(IMAGE_TAG) + command: + - bash + - -c + - | + set -x + {{- .Files.Get "dataprotection/brm-ptrack-restore.sh" | nindent 8 }} + postReady: [] diff --git a/addons/mogdb/templates/backuppolicytemplate.yaml b/addons/mogdb/templates/backuppolicytemplate.yaml index 780f44859..0d0c0c5ca 100644 --- a/addons/mogdb/templates/backuppolicytemplate.yaml +++ b/addons/mogdb/templates/backuppolicytemplate.yaml @@ -25,6 +25,41 @@ spec: volumeMounts: - name: data mountPath: {{ .Values.dataMountPath }} + - name: mogdb-brm-full + snapshotVolumes: false + actionSetName: mogdb-brm-full + envMapping: + - key: IMAGE_TAG + valueFrom: + clusterVersionRef: + - names: [mogdb-5.0.5] + mappingValue: "5.0.5" + targetVolumes: + volumeMounts: + - name: data + mountPath: {{ .Values.dataMountPath }} + - name: mogdb-brm-ptrack + snapshotVolumes: false + actionSetName: mogdb-brm-ptrack + envMapping: + - key: IMAGE_TAG + valueFrom: + clusterVersionRef: + - names: [mogdb-5.0.5] + mappingValue: "5.0.5" + targetVolumes: + volumeMounts: + - name: data + mountPath: {{ .Values.dataMountPath }} + - name: mogdb-brm-wal + target: + role: Primary + actionSetName: mogdb-brm-wal + snapshotVolumes: false + targetVolumes: + volumeMounts: + - name: data + mountPath: {{ .Values.dataMountPath }} - name: volume-snapshot snapshotVolumes: true targetVolumes: diff --git a/addons/mogdb/templates/clusterdefinition.yaml b/addons/mogdb/templates/clusterdefinition.yaml index 29983ed89..b421edcb3 100644 --- a/addons/mogdb/templates/clusterdefinition.yaml +++ b/addons/mogdb/templates/clusterdefinition.yaml @@ -17,10 +17,10 @@ spec: workloadType: Stateful rsmSpec: roles: - - name: primary + - name: Primary accessMode: ReadWrite isLeader: true - - name: secondary + - name: Standby accessMode: Readonly isLeader: false roleProbe: @@ -31,10 +31,10 @@ spec: - -c - | role=$(gsql -h 127.0.0.1 -p 26000 -U ${MOGDB_USER} -W "${MOGDB_PASSWORD}" -dpostgres -t -c "select local_role from pg_stat_get_stream_replications() limit 1" | xargs echo -n) - if [[ "$role"x == "Normal"x || "$role"x == "Primary"x ]]; then - echo -n "primary" + if [ "$role"x == "Normal"x ]; then + echo -n "Primary" else - echo -n "secondary" + echo -n $role fi characterType: mogdb configSpecs: @@ -46,6 +46,16 @@ spec: namespace: {{ .Release.Namespace }} volumeName: mogdb-config defaultMode: 0777 + - name: mogdb-custom-metrics + templateRef: mogdb-custom-metrics + namespace: {{ .Release.Namespace }} + volumeName: mogdb-custom-metrics + defaultMode: 0777 + - name: agamotto-configuration + templateRef: mogdb-agamotto-configuration + namespace: {{ .Release.Namespace }} + volumeName: agamotto-configuration + defaultMode: 0777 scriptSpecs: - name: mogdb-scripts templateRef: mogdb-scripts @@ -53,7 +63,7 @@ spec: volumeName: scripts defaultMode: 0777 monitor: - builtIn: false + buildIn: false exporterConfig: scrapePath: /metrics scrapePort: {{ .Values.metrics.service.port }} @@ -77,59 +87,24 @@ spec: securityContext: runAsUser: 0 runAsGroup: 0 + initContainers: + - name: mogdb-tools + image: {{ .Values.tools.image.registry | default .Values.tools.image.registry }}/{{ .Values.tools.image.repository }}:{{ .Values.tools.image.tag }} + command: + - bash + - -c + - | + cp /bin/mscli /bin/gojq /mogdb_tools + imagePullPolicy: {{ .Values.agent.image.pullPolicy | quote }} + volumeMounts: + - name: mogdb-tools + mountPath: /mogdb_tools containers: - name: mogdb imagePullPolicy: {{ default .Values.image.pullPolicy "IfNotPresent" }} command: - bash - - -c - - | - set -ex - MogDB_Role= - REPL_CONN_INFO= - - cat >>/home/omm/.profile <<-EOF - export OG_SUBNET="0.0.0.0/0" - export PGHOST="/var/lib/mogdb/tmp" - export PGPORT="$PGPORT" - EOF - [[ -d "$PGHOST" ]] || (mkdir -p $PGHOST && chown omm $PGHOST) - - hostname=`hostname` - [[ "$hostname" =~ -([0-9]+)$ ]] || exit 1 - ordinal=${BASH_REMATCH[1]} - if [[ $ordinal -eq 0 ]];then - MogDB_Role="primary" - else - MogDB_Role="standby" - - pgport="5432" - if [ -n "$PGPORT" ];then - pgport="$PGPORT" - fi - ha_port=$(expr $pgport + 1) - ha_service_port=$(expr $pgport + 2) - - cat >/tmp/replconninfo.conf - for ((i=0; i<$ordinal; i++)); do - echo "$hostname $PodIP" |ncat --send-only ${KB_CLUSTER_COMP_NAME}-${i}.${KB_CLUSTER_COMP_NAME}-headless 6543 - remote_ip=`ping ${KB_CLUSTER_COMP_NAME}-${i}.${KB_CLUSTER_COMP_NAME}-headless -c 1 | sed '1{s/[^(]*(//;s/).*//;q}'` - - echo "replconninfo$((i+1)) = 'localhost=$PodIP localport=${ha_port} localservice=${ha_service_port} remotehost=$remote_ip remoteport=${ha_port} remoteservice=${ha_service_port}'" >> /tmp/replconninfo.conf - done - - #echo "$hostname $PodIP" |ncat --send-only ${KB_CLUSTER_COMP_NAME}-0.${KB_CLUSTER_COMP_NAME}-headless 6543 - #remote_ip=`ping ${KB_CLUSTER_COMP_NAME}-0.${KB_CLUSTER_COMP_NAME}-headless -c 1 | sed '1{s/[^(]*(//;s/).*//;q}'` - - # REPL_CONN_INFO="replconninfo${ordinal} = 'localhost=$PodIP localport=${ha_port} localservice=${ha_service_port} remotehost=$remote_ip remoteport=${ha_port} remoteservice=${ha_service_port}'" - fi - - [[ -n "$REPL_CONN_INFO" ]] && export REPL_CONN_INFO - source /home/omm/.profile - - cp /home/omm/conf/* /tmp/ - chmod 777 /tmp/postgresql.conf /tmp/pg_hba.conf - exec bash /kb-scripts/setup.sh -M "$MogDB_Role" + - /kb-scripts/entrypoint-mogdb.sh securityContext: runAsUser: 0 ports: @@ -185,6 +160,10 @@ spec: mountPath: /kb-scripts - name: mogdb-config mountPath: /home/omm/conf + - name: mogdb-tools + mountPath: /mogdb_tools + - name: ssh-key + mountPath: /home/omm/ssh livenessProbe: exec: command: @@ -205,44 +184,29 @@ spec: initialDelaySeconds: 30 periodSeconds: 3 timeoutSeconds: 5 - - name: helper - imagePullPolicy: {{ default .Values.image.pullPolicy "IfNotPresent" }} + - name: agent + image: {{ .Values.agent.image.registry | default .Values.agent.image.registry }}/{{ .Values.agent.image.repository }}:{{ .Values.agent.image.tag }} + imagePullPolicy: {{ .Values.agent.image.pullPolicy | quote }} + securityContext: + runAsUser: 70 + runAsGroup: 70 ports: - - name: helper - containerPort: 6543 - command: - - bash - - /kb-scripts/helper.sh - env: - - name: PodIP - valueFrom: - fieldRef: - apiVersion: v1 - fieldPath: status.podIP - - name: PGDATA - value: "/var/lib/mogdb/data" - - name: PGHOST - value: "/var/lib/mogdb/tmp" - - name: PGPORT - value: "26000" + - name: agent-exporter + containerPort: {{ .Values.agent.service.port }} volumeMounts: - name: data mountPath: /var/lib/mogdb subPath: mogdb - - name: scripts - mountPath: /kb-scripts - resources: - requests: - cpu: 500m - memory: 64Mi + env: + - name: PGHOST + value: {{ .Values.envs.PGHOST }} + - name: PGDATA + value: {{ .Values.envs.PGDATA }} + - name: PGPORT + value: {{ .Values.envs.PGPORT | quote }} - name: exporter image: {{ .Values.metrics.image.registry | default .Values.image.registry }}/{{ .Values.metrics.image.repository }}:{{ .Values.metrics.image.tag }} imagePullPolicy: {{ .Values.metrics.image.pullPolicy | quote }} -# command: -# - bash -# - -c -# - | -# sleep 36000 securityContext: runAsUser: 70 ports: @@ -261,8 +225,6 @@ spec: value: "26000" - name: PGDATA value: "/var/lib/mogdb/data" - - name: SERVICE_PORT - value: "{{ .Values.metrics.service.port }}" resources: requests: cpu: 100m @@ -276,4 +238,9 @@ spec: medium: Memory {{- with .Values.shmVolume.sizeLimit }} sizeLimit: {{ . }} - {{- end }} \ No newline at end of file + {{- end }} + - name: mogdb-tools + emptyDir: {} + - name: ssh-key + secret: + secretName: mogdb-ssh-rsa-secret \ No newline at end of file diff --git a/addons/mogdb/templates/clusterversion.yaml b/addons/mogdb/templates/clusterversion.yaml index ddb1de84a..cfdfce4f7 100644 --- a/addons/mogdb/templates/clusterversion.yaml +++ b/addons/mogdb/templates/clusterversion.yaml @@ -13,8 +13,6 @@ spec: containers: - name: mogdb image: {{ .Values.image.registry | default "docker.io" }}/{{ .Values.image.repository }}:{{ .Values.image.tag }} - - name: helper - image: {{ .Values.image.registry | default "docker.io" }}/{{ .Values.image.repository }}:{{ .Values.image.tag }} systemAccountSpec: cmdExecutorConfig: image: {{ .Values.image.registry | default "docker.io" }}/{{ .Values.image.repository }}:{{ .Values.image.tag }} \ No newline at end of file diff --git a/addons/mogdb/templates/configconstraint.yaml b/addons/mogdb/templates/configconstraint.yaml index c74aef552..c126ef054 100644 --- a/addons/mogdb/templates/configconstraint.yaml +++ b/addons/mogdb/templates/configconstraint.yaml @@ -2,10 +2,30 @@ apiVersion: apps.kubeblocks.io/v1beta1 kind: ConfigConstraint metadata: - name: mogdb-cc + name: {{ printf "%s-cc" (include "mogdb-release.name" .) }} labels: {{- include "mogdb.labels" . | nindent 4 }} spec: + reloadOptions: + shellTrigger: + sync: true + command: + - "update-parameters.sh" + + scriptConfigs: + - scriptConfigMapRef: {{ printf "%s-reload-tools-script" (include "mogdb-release.name" .) }} + namespace: {{ .Release.Namespace }} + + toolsImageSpec: + mountPoint: /kb_tools + toolConfigs: + - name: kb-tools + command: + - cp + - /bin/mscli + - /kb_tools/mscli + image: {{ .Values.tools.image.registry | default "docker.io" }}/{{ .Values.tools.image.repository }}:{{ .Values.tools.image.tag }} + # top level pg configuration type configSchemaTopLevelKey: PGParameter @@ -35,8 +55,6 @@ spec: {{- end }} {{- end}} - - # configuration file format formatterConfig: - format: properties + format: ini diff --git a/addons/mogdb/templates/reloader-configmap.yaml b/addons/mogdb/templates/reloader-configmap.yaml new file mode 100644 index 000000000..6129952bb --- /dev/null +++ b/addons/mogdb/templates/reloader-configmap.yaml @@ -0,0 +1,8 @@ +apiVersion: v1 +kind: ConfigMap +metadata: + name: {{ printf "%s-reload-tools-script" (include "mogdb.name" .) }} + labels: + {{- include "mogdb.labels" . | nindent 4 }} +data: + {{- include "mogdb.extend.reload.scripts" . | nindent 2 }} \ No newline at end of file diff --git a/addons/mogdb/templates/scripts.yaml b/addons/mogdb/templates/scripts-configmap.yaml similarity index 100% rename from addons/mogdb/templates/scripts.yaml rename to addons/mogdb/templates/scripts-configmap.yaml diff --git a/addons/mogdb/templates/secret.yaml b/addons/mogdb/templates/secret.yaml new file mode 100644 index 000000000..699c85ddf --- /dev/null +++ b/addons/mogdb/templates/secret.yaml @@ -0,0 +1,8 @@ +apiVersion: v1 +kind: Secret +type: Opaque +metadata: + name: mogdb-ssh-rsa-secret +data: + id_rsa: LS0tLS1CRUdJTiBPUEVOU1NIIFBSSVZBVEUgS0VZLS0tLS0KYjNCbGJuTnphQzFyWlhrdGRqRUFBQUFBQkc1dmJtVUFBQUFFYm05dVpRQUFBQUFBQUFBQkFBQUJsd0FBQUFkemMyZ3RjbgpOaEFBQUFBd0VBQVFBQUFZRUEzZGo2VjY0ODFBYkNqR0IxQmFDelppNzJLN3pqV1pOYVkyL1hYZkhka1o0QXBVVHpVNUM1CklFMDBlRGF1VVdWVVgrTE9IRjNaYkh5YjVKRUdscjhoM0tOdWwwRVRIMUVDUDlnUFR1Mlowa3BHTGovQytlVCtybVpNbi8KRGo5NmswdW12U3NkdFEwaTVGd1cwNDBoNXhZQjkwWWFUbmU0SkR5WFgwaXlld1psT2hMM1pDay9EU2tJSFVQWVlMYTArdApieGhHNGUyY1NwOWtxSXhLUHZVc1plVkdOT1Q5MmNNdmFUYjZuUllNaDh1M0tKQkF3RlFER1FlRy84UjdiSm9ER2p1VWY3ClVHL1FtZmxkUi84S2JFSFlZYXppRXNESm9yOXdZdGJ5eGhrK2srZHBNOW1KYzR5bWlzaXV4d1gyK01Qd2Q5SFZQUytLem8KUmxvNy9xbXc1aE9aRnpzMHU2c0hXck1JOWl2NFgwRXFHbVptbG9NSDNhRCtnOG9qTEtPblVCZXQ5Q3ptb0NER0dVVjNYdAorYVhlbXJRMmE5dGRnUlhhT08xVmhreWtyR29PYmlEZjk4YkNEeUlhZFhiZFBER2I0aFhjWEFOZFBneGdFVzU2Z1d4ditnCmJpaWpEYWwvb0VJL2l2emsrQlY3aU1KRDJwN1BTZ0tySC8vMm5pbDFBQUFGaURPL2xYSXp2NVZ5QUFBQUIzTnphQzF5YzIKRUFBQUdCQU4zWStsZXVQTlFHd294Z2RRV2dzMll1OWl1ODQxbVRXbU52MTEzeDNaR2VBS1ZFODFPUXVTQk5OSGcycmxGbApWRi9pemh4ZDJXeDhtK1NSQnBhL0lkeWpicGRCRXg5UkFqL1lEMDd0bWRKS1JpNC93dm5rL3E1bVRKL3c0L2VwTkxwcjByCkhiVU5JdVJjRnRPTkllY1dBZmRHR2s1M3VDUThsMTlJc25zR1pUb1M5MlFwUHcwcENCMUQyR0MydFByVzhZUnVIdG5FcWYKWktpTVNqNzFMR1hsUmpUay9kbkRMMmsyK3AwV0RJZkx0eWlRUU1CVUF4a0hodi9FZTJ5YUF4bzdsSCsxQnYwSm41WFVmLwpDbXhCMkdHczRoTEF5YUsvY0dMVzhzWVpQcFBuYVRQWmlYT01wb3JJcnNjRjl2akQ4SGZSMVQwdmlzNkVaYU8vNnBzT1lUCm1SYzdOTHVyQjFxekNQWXIrRjlCS2hwbVpwYURCOTJnL29QS0l5eWpwMUFYcmZRczVxQWd4aGxGZDE3Zm1sM3BxME5tdmIKWFlFVjJqanRWWVpNcEt4cURtNGczL2ZHd2c4aUduVjIzVHd4bStJVjNGd0RYVDRNWUJGdWVvRnNiL29HNG9vdzJwZjZCQwpQNHI4NVBnVmU0akNROXFlejBvQ3F4Ly85cDRwZFFBQUFBTUJBQUVBQUFHQkFJcVVBVDFJSDhNcVBkakdZQk1WNFRxUlYwCkRYQ3dWbllHMEE3ZjFIR21yZDBmVnE3cnhpaU9HK21Hb0hiamgySFpDUDhzUVJjOEdxelE2bjhQKzFnUWQ4SjViZ0ZYdlkKZEpsQTg3OFArS2c5c1QwdW96TEtjclNxUG04aVlLVFIwNWdueGtOSGhtTGtlTHBzNmJPSFJMY1FydmhYdENtWW81TnkxVQpFZmw3Y3p3bG9OZTJWQ1o2WFJFNjBpMEh0R0dFWnZXY2ZEVDMvbHRWRDc0VjBXZFpkbzhzUVR6dVo2WUdGTzhKbXpyandkCmF0b3gwZURTR2VWR3FIT1lYcWptUXFPQzF0K2plbFZXMnBMS3FHTHZveXZZN08vaCtrdVpua3REWEtTM29xZjJqaWovRkYKNEUwaVloa1Q3QjltWTNId1luc1BHQnFla2s2Qmx3MG9aODJwcUhodE9QVGYzRGI2bEhJR0RqZ3grQjhDMXBjVXlpQVVDcQpJaFNvdisvekxGSDZXUnN6R0ltNW5nMGZJVWlCOElDVk1qSFpya3JyWVUwZmlZSzIrSmc3Qm1pYk9LSlBUMDhIU043RmlhCnRnMUpoL0g2eWtrcS9ZQnNjeFhkQkRoWmpKdVdkM05tdTgrZ2VTd0wvWGQrS1prN3N4NUt6TlRTbGZHcnFvQWwyVWVRQUEKQU1BMVVEWS9hTDMzTDgxYndlc2ZQV3BlblRzVU1XTFdPUENINkloQXo5T2hIUFRMVG1GRkpnbTRWZ0RjWUVDSkxKRWZyVApLRm5McWw2R2VzSDlNOTYrRitoLzY3eWZRNTVCMk5VdGxHZDkwRGZvaldqdlVLdklvdEw2SlZLNDczTVpaYlhXUlliTGlsCnR3VFJNc0RWb2R0TW84a0Z6ZVFGVStEeXR6T2JIL05KTks3cnFYSkFlbjQ1cUlxbGxxTkpkMmZ4a0d4MzRZamlvQmxxYUoKeFFEUWQxQWp6V0FRS3M1ZjF6VEZyb0hhaTZCWlhRNU9adFpyclFPcXlqVklIdC9FRUFBQURCQVA1SU4zb2dxNEFPTVA0eQo3bXdMWjdrcnNZSTJXWUdyVFZvOFpVWEM4RGdsdi9EWDZTaXhRZW15OG5UMVJGZzB1RGdIeGI0NkV2VnhucGNuMFNNMTk4Clh1M0puUzJ4dTZFVmJoQTVpTW43UHJhM2NrNFRRd21vK3RMOFFaZmkyT0V0UmNkYnBVYnRiT1VxMldBTGh2ZEJqTFJUMkQKVVZRZmtqcVhGN2ZDVUdlMjYveER2SHA3V2NRMzJGRCt0RWkyZU5NQ0xjZCtNRHdQNlVrU2ZESWZtaU4zaExSallCT3c1Mwp5NU8wM05Ob1gyS0ptV2pQdFlZbVpRNHc2U2JvYU1od0FBQU1FQTMxaXFWZGh1ZmttMlM2aGFLbklnSm42TkFyd1lvZ3ZKCktHMkliVkpWbFdNVVJLT1lsNE1jTjRWUk9qbzV6QW5iVDQ3eTZKSVVzTWcrUnF3cnB4QzJrTWMzRDdrUENtQ0RFdCtoWXcKMFJWa3VOdlpLTUwrL1A3YVJaQjlZSkx2RElsM1JjdjVkVnBvUFE5MTJVVithWUkvQzRHUmwyeUpjcU0xMWVCb2lLQnpzYQpONUdLeFdGN1RTaDVGMFRrdVhkSjVJN211QlZxSnhrTy9qYU1sMkkwWmVjZTRlYVh2YlI0dmxhbVpidE80YXhTbDMwUEVMCkIxSUl6c2NHbHBGelVqQUFBQUMzSnZiM1JBYW5saU1EQTNBUUlEQkFVR0J3PT0KLS0tLS1FTkQgT1BFTlNTSCBQUklWQVRFIEtFWS0tLS0tCg== + id_rsa.pub: c3NoLXJzYSBBQUFBQjNOemFDMXljMkVBQUFBREFRQUJBQUFCZ1FEZDJQcFhyanpVQnNLTVlIVUZvTE5tTHZZcnZPTlprMXBqYjlkZDhkMlJuZ0NsUlBOVGtMa2dUVFI0TnE1UlpWUmY0czRjWGRsc2ZKdmtrUWFXdnlIY28yNlhRUk1mVVFJLzJBOU83Wm5TU2tZdVA4TDU1UDZ1Wmt5ZjhPUDNxVFM2YTlLeDIxRFNMa1hCYlRqU0huRmdIM1JocE9kN2drUEpkZlNMSjdCbVU2RXZka0tUOE5LUWdkUTloZ3RyVDYxdkdFYmg3WnhLbjJTb2pFbys5U3hsNVVZMDVQM1p3eTlwTnZxZEZneUh5N2Nva0VEQVZBTVpCNGIveEh0c21nTWFPNVIvdFFiOUNaK1YxSC93cHNRZGhock9JU3dNbWl2M0JpMXZMR0dUNlQ1Mmt6MllsempLYUt5SzdIQmZiNHcvQjMwZFU5TDRyT2hHV2p2K3FiRG1FNWtYT3pTN3F3ZGFzd2oySy9oZlFTb2FabWFXZ3dmZG9QNkR5aU1zbzZkUUY2MzBMT2FnSU1ZWlJYZGUzNXBkNmF0RFpyMjEyQkZkbzQ3VldHVEtTc2FnNXVJTi8zeHNJUElocDFkdDA4TVp2aUZkeGNBMTArREdBUmJucUJiRy82QnVLS01OcVgrZ1FqK0svT1Q0Rlh1SXdrUGFuczlLQXFzZi8vYWVLWFU9IHJvb3RAanliMDA3Cg== diff --git a/addons/mogdb/values.yaml b/addons/mogdb/values.yaml index 1b216c746..b9c6d1228 100644 --- a/addons/mogdb/values.yaml +++ b/addons/mogdb/values.yaml @@ -6,12 +6,11 @@ replicaCount: 1 image: registry: swr.cn-north-4.myhuaweicloud.com - repository: mogdb/mogdb + repository: mogdb-cloud/mogdb-rich pullPolicy: IfNotPresent # Overrides the image tag whose default is the chart appVersion. tag: 5.0.5 - dataMountPath: /var/lib/mogdb @@ -45,4 +44,25 @@ metrics: tag: 3.1.0 pullPolicy: IfNotPresent service: - port: 9187 \ No newline at end of file + port: 9187 + +agent: + image: + registry: swr.cn-north-4.myhuaweicloud.com + repository: mogdb-cloud/mogdb-agent + tag: 0.0.1-alpha.01 + pullPolicy: Always + service: + port: 6688 + +envs: + PGHOST: /var/lib/mogdb/tmp + PGDATA: /var/lib/mogdb/data + PGPORT: 26000 + +tools: + image: + registry: swr.cn-north-4.myhuaweicloud.com + repository: mogdb-cloud/mogdb-tools + tag: 0.0.1-alpha.01 + pullPolicy: Always \ No newline at end of file