2023-05-10 06:19:45 +00:00
|
|
|
#!/bin/bash
|
|
|
|
|
|
|
|
UPGRADE_RESPONDER_REPO="https://github.com/longhorn/upgrade-responder.git"
|
2023-06-26 06:03:48 +00:00
|
|
|
UPGRADE_RESPONDER_REPO_BRANCH="master"
|
2023-05-10 06:19:45 +00:00
|
|
|
UPGRADE_RESPONDER_VALUE_YAML="upgrade-responder-value.yaml"
|
|
|
|
UPGRADE_RESPONDER_IMAGE_REPO="longhornio/upgrade-responder"
|
|
|
|
UPGRADE_RESPONDER_IMAGE_TAG="master-head"
|
|
|
|
|
|
|
|
INFLUXDB_URL="http://influxdb.default.svc.cluster.local:8086"
|
|
|
|
|
|
|
|
APP_NAME="longhorn"
|
|
|
|
|
|
|
|
DEPLOYMENT_TIMEOUT_SEC=300
|
|
|
|
DEPLOYMENT_WAIT_INTERVAL_SEC=5
|
|
|
|
|
|
|
|
temp_dir=$(mktemp -d)
|
|
|
|
trap 'rm -r "${temp_dir}"' EXIT
|
|
|
|
|
|
|
|
cp -a ./* ${temp_dir}
|
|
|
|
cd ${temp_dir}
|
|
|
|
|
|
|
|
wait_for_deployment() {
|
|
|
|
local deployment_name="$1"
|
|
|
|
local start_time=$(date +%s)
|
|
|
|
|
|
|
|
while true; do
|
|
|
|
status=$(kubectl rollout status deployment/${deployment_name})
|
|
|
|
if [[ ${status} == *"successfully rolled out"* ]]; then
|
|
|
|
echo "Deployment ${deployment_name} is running."
|
|
|
|
break
|
|
|
|
fi
|
|
|
|
|
|
|
|
elapsed_secs=$(($(date +%s) - ${start_time}))
|
|
|
|
if [[ ${elapsed_secs} -ge ${timeout_secs} ]]; then
|
|
|
|
echo "Timed out waiting for deployment ${deployment_name} to be running."
|
|
|
|
exit 1
|
|
|
|
fi
|
|
|
|
|
|
|
|
echo "Deployment ${deployment_name} is not running yet. Waiting..."
|
|
|
|
sleep ${DEPLOYMENT_WAIT_INTERVAL_SEC}
|
|
|
|
done
|
|
|
|
}
|
|
|
|
|
|
|
|
install_influxdb() {
|
|
|
|
kubectl apply -f ./manifests/influxdb.yaml
|
|
|
|
wait_for_deployment "influxdb"
|
|
|
|
}
|
|
|
|
|
|
|
|
install_grafana() {
|
|
|
|
kubectl apply -f ./manifests/grafana.yaml
|
|
|
|
wait_for_deployment "grafana"
|
|
|
|
}
|
|
|
|
|
|
|
|
install_upgrade_responder() {
|
|
|
|
cat << EOF > ${UPGRADE_RESPONDER_VALUE_YAML}
|
|
|
|
applicationName: ${APP_NAME}
|
|
|
|
secret:
|
|
|
|
name: upgrade-responder-secrets
|
|
|
|
managed: true
|
|
|
|
influxDBUrl: "${INFLUXDB_URL}"
|
|
|
|
influxDBUser: "root"
|
|
|
|
influxDBPassword: "root"
|
2023-06-26 06:03:48 +00:00
|
|
|
configMap:
|
|
|
|
responseConfig: |-
|
|
|
|
{
|
|
|
|
"versions": [{
|
|
|
|
"name": "v1.0.0",
|
|
|
|
"releaseDate": "2020-05-18T12:30:00Z",
|
|
|
|
"tags": ["latest"]
|
|
|
|
}]
|
|
|
|
}
|
|
|
|
requestSchema: |-
|
|
|
|
{
|
|
|
|
"appVersionSchema": {
|
|
|
|
"dataType": "string",
|
|
|
|
"maxLen": 200
|
|
|
|
},
|
|
|
|
"extraTagInfoSchema": {
|
|
|
|
"hostKernelRelease": {
|
|
|
|
"dataType": "string",
|
|
|
|
"maxLen": 200
|
|
|
|
},
|
|
|
|
"hostOsDistro": {
|
|
|
|
"dataType": "string",
|
|
|
|
"maxLen": 200
|
|
|
|
},
|
|
|
|
"kubernetesNodeProvider": {
|
|
|
|
"dataType": "string",
|
|
|
|
"maxLen": 200
|
|
|
|
},
|
|
|
|
"kubernetesVersion": {
|
|
|
|
"dataType": "string",
|
|
|
|
"maxLen": 200
|
|
|
|
},
|
|
|
|
"longhornSettingAllowRecurringJobWhileVolumeDetached": {
|
|
|
|
"dataType": "string",
|
|
|
|
"maxLen": 200
|
|
|
|
},
|
|
|
|
"longhornSettingAllowVolumeCreationWithDegradedAvailability": {
|
|
|
|
"dataType": "string",
|
|
|
|
"maxLen": 200
|
|
|
|
},
|
|
|
|
"longhornSettingAutoCleanupSystemGeneratedSnapshot": {
|
|
|
|
"dataType": "string",
|
|
|
|
"maxLen": 200
|
|
|
|
},
|
|
|
|
"longhornSettingAutoDeletePodWhenVolumeDetachedUnexpectedly": {
|
|
|
|
"dataType": "string",
|
|
|
|
"maxLen": 200
|
|
|
|
},
|
|
|
|
"longhornSettingAutoSalvage": {
|
|
|
|
"dataType": "string",
|
|
|
|
"maxLen": 200
|
|
|
|
},
|
|
|
|
"longhornSettingBackupCompressionMethod": {
|
|
|
|
"dataType": "string",
|
|
|
|
"maxLen": 200
|
|
|
|
},
|
|
|
|
"longhornSettingBackupTarget": {
|
|
|
|
"dataType": "string",
|
|
|
|
"maxLen": 200
|
|
|
|
},
|
|
|
|
"longhornSettingCrdApiVersion": {
|
|
|
|
"dataType": "string",
|
|
|
|
"maxLen": 200
|
|
|
|
},
|
|
|
|
"longhornSettingCreateDefaultDiskLabeledNodes": {
|
|
|
|
"dataType": "string",
|
|
|
|
"maxLen": 200
|
|
|
|
},
|
|
|
|
"longhornSettingDefaultDataLocality": {
|
|
|
|
"dataType": "string",
|
|
|
|
"maxLen": 200
|
|
|
|
},
|
|
|
|
"longhornSettingDisableRevisionCounter": {
|
|
|
|
"dataType": "string",
|
|
|
|
"maxLen": 200
|
|
|
|
},
|
|
|
|
"longhornSettingDisableSchedulingOnCordonedNode": {
|
|
|
|
"dataType": "string",
|
|
|
|
"maxLen": 200
|
|
|
|
},
|
|
|
|
"longhornSettingFastReplicaRebuildEnabled": {
|
|
|
|
"dataType": "string",
|
|
|
|
"maxLen": 200
|
|
|
|
},
|
|
|
|
"longhornSettingKubernetesClusterAutoscalerEnabled": {
|
|
|
|
"dataType": "string",
|
|
|
|
"maxLen": 200
|
|
|
|
},
|
|
|
|
"longhornSettingNodeDownPodDeletionPolicy": {
|
|
|
|
"dataType": "string",
|
|
|
|
"maxLen": 200
|
|
|
|
},
|
|
|
|
"longhornSettingNodeDrainPolicy": {
|
|
|
|
"dataType": "string",
|
|
|
|
"maxLen": 200
|
|
|
|
},
|
|
|
|
"longhornSettingOfflineReplicaRebuilding": {
|
|
|
|
"dataType": "string",
|
|
|
|
"maxLen": 200
|
|
|
|
},
|
|
|
|
"longhornSettingOrphanAutoDeletion": {
|
|
|
|
"dataType": "string",
|
|
|
|
"maxLen": 200
|
|
|
|
},
|
|
|
|
"longhornSettingPriorityClass": {
|
|
|
|
"dataType": "string",
|
|
|
|
"maxLen": 200
|
|
|
|
},
|
|
|
|
"longhornSettingRegistrySecret": {
|
|
|
|
"dataType": "string",
|
|
|
|
"maxLen": 200
|
|
|
|
},
|
|
|
|
"longhornSettingRemoveSnapshotsDuringFilesystemTrim": {
|
|
|
|
"dataType": "string",
|
|
|
|
"maxLen": 200
|
|
|
|
},
|
|
|
|
"longhornSettingReplicaAutoBalance": {
|
|
|
|
"dataType": "string",
|
|
|
|
"maxLen": 200
|
|
|
|
},
|
|
|
|
"longhornSettingReplicaSoftAntiAffinity": {
|
|
|
|
"dataType": "string",
|
|
|
|
"maxLen": 200
|
|
|
|
},
|
|
|
|
"longhornSettingReplicaZoneSoftAntiAffinity": {
|
|
|
|
"dataType": "string",
|
|
|
|
"maxLen": 200
|
|
|
|
},
|
|
|
|
"longhornSettingRestoreVolumeRecurringJobs": {
|
|
|
|
"dataType": "string",
|
|
|
|
"maxLen": 200
|
|
|
|
},
|
|
|
|
"longhornSettingSnapshotDataIntegrity": {
|
|
|
|
"dataType": "string",
|
|
|
|
"maxLen": 200
|
|
|
|
},
|
|
|
|
"longhornSettingSnapshotDataIntegrityCronjob": {
|
|
|
|
"dataType": "string",
|
|
|
|
"maxLen": 200
|
|
|
|
},
|
|
|
|
"longhornSettingSnapshotDataIntegrityImmediateCheckAfterSnapshotCreation": {
|
|
|
|
"dataType": "string",
|
|
|
|
"maxLen": 200
|
|
|
|
},
|
|
|
|
"longhornSettingStorageNetwork": {
|
|
|
|
"dataType": "string",
|
|
|
|
"maxLen": 200
|
|
|
|
},
|
|
|
|
"longhornSettingSystemManagedComponentsNodeSelector": {
|
|
|
|
"dataType": "string",
|
|
|
|
"maxLen": 200
|
|
|
|
},
|
|
|
|
"longhornSettingSystemManagedPodsImagePullPolicy": {
|
|
|
|
"dataType": "string",
|
|
|
|
"maxLen": 200
|
|
|
|
},
|
|
|
|
"longhornSettingTaintToleration": {
|
|
|
|
"dataType": "string",
|
|
|
|
"maxLen": 200
|
|
|
|
},
|
|
|
|
"longhornSettingV2DataEngine": {
|
|
|
|
"dataType": "string",
|
|
|
|
"maxLen": 200
|
|
|
|
}
|
|
|
|
},
|
|
|
|
"extraFieldInfoSchema": {
|
|
|
|
"longhornInstanceManagerAverageCpuUsageMilliCores": {
|
|
|
|
"dataType": "float"
|
|
|
|
},
|
|
|
|
"longhornInstanceManagerAverageMemoryUsageBytes": {
|
|
|
|
"dataType": "float"
|
|
|
|
},
|
|
|
|
"longhornManagerAverageCpuUsageMilliCores": {
|
|
|
|
"dataType": "float"
|
|
|
|
},
|
|
|
|
"longhornManagerAverageMemoryUsageBytes": {
|
|
|
|
"dataType": "float"
|
|
|
|
},
|
|
|
|
"longhornNamespaceUid": {
|
|
|
|
"dataType": "string",
|
|
|
|
"maxLen": 200
|
|
|
|
},
|
|
|
|
"longhornNodeCount": {
|
|
|
|
"dataType": "float"
|
|
|
|
},
|
|
|
|
"longhornNodeDiskHDDCount": {
|
|
|
|
"dataType": "float"
|
|
|
|
},
|
|
|
|
"longhornNodeDiskNVMeCount": {
|
|
|
|
"dataType": "float"
|
|
|
|
},
|
|
|
|
"longhornNodeDiskSSDCount": {
|
|
|
|
"dataType": "float"
|
|
|
|
},
|
|
|
|
"longhornSettingBackingImageCleanupWaitInterval": {
|
|
|
|
"dataType": "float"
|
|
|
|
},
|
|
|
|
"longhornSettingBackingImageRecoveryWaitInterval": {
|
|
|
|
"dataType": "float"
|
|
|
|
},
|
|
|
|
"longhornSettingBackupConcurrentLimit": {
|
|
|
|
"dataType": "float"
|
|
|
|
},
|
|
|
|
"longhornSettingBackupstorePollInterval": {
|
|
|
|
"dataType": "float"
|
|
|
|
},
|
|
|
|
"longhornSettingConcurrentAutomaticEngineUpgradePerNodeLimit": {
|
|
|
|
"dataType": "float"
|
|
|
|
},
|
|
|
|
"longhornSettingConcurrentReplicaRebuildPerNodeLimit": {
|
|
|
|
"dataType": "float"
|
|
|
|
},
|
|
|
|
"longhornSettingConcurrentVolumeBackupRestorePerNodeLimit": {
|
|
|
|
"dataType": "float"
|
|
|
|
},
|
|
|
|
"longhornSettingDefaultReplicaCount": {
|
|
|
|
"dataType": "float"
|
|
|
|
},
|
|
|
|
"longhornSettingEngineReplicaTimeout": {
|
|
|
|
"dataType": "float"
|
|
|
|
},
|
|
|
|
"longhornSettingFailedBackupTtl": {
|
|
|
|
"dataType": "float"
|
|
|
|
},
|
|
|
|
"longhornSettingGuaranteedInstanceManagerCpu": {
|
|
|
|
"dataType": "float"
|
|
|
|
},
|
|
|
|
"longhornSettingRecurringFailedJobsHistoryLimit": {
|
|
|
|
"dataType": "float"
|
|
|
|
},
|
|
|
|
"longhornSettingRecurringSuccessfulJobsHistoryLimit": {
|
|
|
|
"dataType": "float"
|
|
|
|
},
|
|
|
|
"longhornSettingReplicaFileSyncHttpClientTimeout": {
|
|
|
|
"dataType": "float"
|
|
|
|
},
|
|
|
|
"longhornSettingReplicaReplenishmentWaitInterval": {
|
|
|
|
"dataType": "float"
|
|
|
|
},
|
|
|
|
"longhornSettingRestoreConcurrentLimit": {
|
|
|
|
"dataType": "float"
|
|
|
|
},
|
|
|
|
"longhornSettingStorageMinimalAvailablePercentage": {
|
|
|
|
"dataType": "float"
|
|
|
|
},
|
|
|
|
"longhornSettingStorageOverProvisioningPercentage": {
|
|
|
|
"dataType": "float"
|
|
|
|
},
|
|
|
|
"longhornSettingStorageReservedPercentageForDefaultDisk": {
|
|
|
|
"dataType": "float"
|
|
|
|
},
|
|
|
|
"longhornSettingSupportBundleFailedHistoryLimit": {
|
|
|
|
"dataType": "float"
|
|
|
|
},
|
|
|
|
"longhornVolumeAccessModeRwoCount": {
|
|
|
|
"dataType": "float"
|
|
|
|
},
|
|
|
|
"longhornVolumeAccessModeRwxCount": {
|
|
|
|
"dataType": "float"
|
|
|
|
},
|
|
|
|
"longhornVolumeAccessModeUnknownCount": {
|
|
|
|
"dataType": "float"
|
|
|
|
},
|
|
|
|
"longhornVolumeAverageActualSizeBytes": {
|
|
|
|
"dataType": "float"
|
|
|
|
},
|
|
|
|
"longhornVolumeAverageNumberOfReplicas": {
|
|
|
|
"dataType": "float"
|
|
|
|
},
|
|
|
|
"longhornVolumeAverageSizeBytes": {
|
|
|
|
"dataType": "float"
|
|
|
|
},
|
|
|
|
"longhornVolumeAverageSnapshotCount": {
|
|
|
|
"dataType": "float"
|
|
|
|
},
|
|
|
|
"longhornVolumeDataLocalityBestEffortCount": {
|
|
|
|
"dataType": "float"
|
|
|
|
},
|
|
|
|
"longhornVolumeDataLocalityDisabledCount": {
|
|
|
|
"dataType": "float"
|
|
|
|
},
|
|
|
|
"longhornVolumeDataLocalityStrictLocalCount": {
|
|
|
|
"dataType": "float"
|
|
|
|
},
|
|
|
|
"longhornVolumeFrontendBlockdevCount": {
|
|
|
|
"dataType": "float"
|
|
|
|
},
|
|
|
|
"longhornVolumeFrontendIscsiCount": {
|
|
|
|
"dataType": "float"
|
|
|
|
},
|
|
|
|
"longhornVolumeOfflineReplicaRebuildingDisabledCount": {
|
|
|
|
"dataType": "float"
|
|
|
|
},
|
|
|
|
"longhornVolumeOfflineReplicaRebuildingEnabledCount": {
|
|
|
|
"dataType": "float"
|
|
|
|
},
|
|
|
|
"longhornVolumeReplicaAutoBalanceDisabledCount": {
|
|
|
|
"dataType": "float"
|
|
|
|
},
|
|
|
|
"longhornVolumeReplicaSoftAntiAffinityFalseCount": {
|
|
|
|
"dataType": "float"
|
|
|
|
},
|
|
|
|
"longhornVolumeReplicaZoneSoftAntiAffinityTrueCount": {
|
|
|
|
"dataType": "float"
|
|
|
|
},
|
|
|
|
"longhornVolumeRestoreVolumeRecurringJobFalseCount": {
|
|
|
|
"dataType": "float"
|
|
|
|
},
|
|
|
|
"longhornVolumeSnapshotDataIntegrityDisabledCount": {
|
|
|
|
"dataType": "float"
|
|
|
|
},
|
|
|
|
"longhornVolumeSnapshotDataIntegrityFastCheckCount": {
|
|
|
|
"dataType": "float"
|
|
|
|
},
|
|
|
|
"longhornVolumeUnmapMarkSnapChainRemovedFalseCount": {
|
|
|
|
"dataType": "float"
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
2023-05-10 06:19:45 +00:00
|
|
|
image:
|
|
|
|
repository: ${UPGRADE_RESPONDER_IMAGE_REPO}
|
|
|
|
tag: ${UPGRADE_RESPONDER_IMAGE_TAG}
|
|
|
|
EOF
|
|
|
|
|
2023-06-26 06:03:48 +00:00
|
|
|
git clone -b ${UPGRADE_RESPONDER_REPO_BRANCH} ${UPGRADE_RESPONDER_REPO}
|
2023-05-10 06:19:45 +00:00
|
|
|
helm upgrade --install ${APP_NAME}-upgrade-responder upgrade-responder/chart -f ${UPGRADE_RESPONDER_VALUE_YAML}
|
|
|
|
wait_for_deployment "${APP_NAME}-upgrade-responder"
|
|
|
|
}
|
|
|
|
|
|
|
|
output() {
|
|
|
|
local upgrade_responder_service_info=$(kubectl get svc/${APP_NAME}-upgrade-responder --no-headers)
|
|
|
|
local upgrade_responder_service_port=$(echo "${upgrade_responder_service_info}" | awk '{print $5}' | cut -d'/' -f1)
|
|
|
|
echo # a blank line to separate the installation outputs for better readability.
|
|
|
|
printf "[Upgrade Checker]\n"
|
|
|
|
printf "%-10s: http://${APP_NAME}-upgrade-responder.default.svc.cluster.local:${upgrade_responder_service_port}/v1/checkupgrade\n\n" "URL"
|
|
|
|
|
|
|
|
printf "[InfluxDB]\n"
|
|
|
|
printf "%-10s: ${INFLUXDB_URL}\n" "URL"
|
|
|
|
printf "%-10s: ${APP_NAME}_upgrade_responder\n" "Database"
|
|
|
|
printf "%-10s: root\n" "Username"
|
|
|
|
printf "%-10s: root\n\n" "Password"
|
|
|
|
|
|
|
|
local public_ip=$(curl -s https://ifconfig.me/ip)
|
|
|
|
local grafana_service_info=$(kubectl get svc/grafana --no-headers)
|
|
|
|
local grafana_service_port=$(echo "${grafana_service_info}" | awk '{print $5}' | cut -d':' -f2 | cut -d'/' -f1)
|
|
|
|
printf "[Grafana]\n"
|
|
|
|
printf "%-10s: http://${public_ip}:${grafana_service_port}\n" "Dashboard"
|
|
|
|
printf "%-10s: admin\n" "Username"
|
|
|
|
printf "%-10s: admin\n" "Password"
|
|
|
|
}
|
|
|
|
|
|
|
|
install_influxdb
|
|
|
|
install_upgrade_responder
|
|
|
|
install_grafana
|
|
|
|
output
|