11NAMESPACE=central
2- VERSION=2.10.1
3-
4- kubectl apply -f - <<EOF
5- apiVersion: v1
6- kind: Namespace
7- metadata:
8- name: central
9- ---
10- apiVersion: v1
11- kind: Secret
12- metadata:
13- name: pxc-credentials
14- namespace: central
15- data:
16- mongodb-px-backup-password: UDBydHdvcnhCYWNrdXA=
17- mongodb-root-password: UDBydHdvcnhCYWNrdXA=
18- mongodb-replica-set-key: UDBydHdvcnhCYWNrdXA=
19- postgresql-password: UDBydHdvcnhCYWNrdXA=
20- mysql-password: UDBydHdvcnhCYWNrdXA=
21- EOF
2+ VERSION=2.10.2
3+
4+ kubectl apply -f /assets/helm-backup/namespace.yml
225
236curl -O https://raw.githubusercontent.com/portworx/helm/master/stable/px-central-$VERSION.tgz
247helm install px-central px-central-$VERSION.tgz --namespace $NAMESPACE --create-namespace --version $VERSION --set persistentStorage.enabled=true,persistentStorage.storageClassName="px-csi-db",pxbackup.enabled=true,oidc.centralOIDC.updateAdminProfile=false,installCRDs=true
@@ -44,6 +27,51 @@ kubectl delete job pxcentral-post-install-hook --namespace $NAMESPACE
4427helm upgrade px-central px-central-$VERSION.tgz --namespace $NAMESPACE --version $VERSION --reuse-values --set pxmonitor.enabled=true --set pxmonitor.pxCentralEndpoint=$pubIP:$backupPort
4528until (kubectl get po -n $NAMESPACE -ljob-name=pxcentral-post-install-hook -o wide | awk '{print $1, $2, $3}' |grep "Completed"); do echo "Waiting for post install hook";sleep 3; done
4629
47- #BACKUP_POD_NAME=$(kubectl get pods -n $NAMESPACE -l app=px-backup -o jsonpath='{.items[0].metadata.name}' 2>/dev/null)
48- #kubectl cp -n $NAMESPACE $BACKUP_POD_NAME:pxbackupctl/linux/pxbackupctl /usr/bin/pxbackupctl
49- #chmod +x /usr/bin/pxbackupctl
30+ ADMIN_PW=$(kubectl get secret pxcentral-keycloak-http -n central -o jsonpath="{.data.password}" | base64 --decode)
31+
32+ while [ ! -f /usr/local/bin/px ]; do
33+ echo "missing px cli. please install manually in /usr/local/bin to proceed"
34+ sleep 30
35+ done
36+
37+ if [ "$platform" = ocp4 ]; then
38+ # create ocp route for backup UI
39+ kubectl apply -f /assets/helm-backup/ocp-backup-ui-route.yml
40+ kubectl apply -f /assets/helm-backup/ocp-central-ui-route.yml
41+
42+ # expose px-backup service to run pxbackupctl
43+ kubectl patch svc px-backup -n central -p '{"spec":{"type":"LoadBalancer"}}'
44+ backupIP=$(kubectl get svc px-backup -n central -o json | jq -r ".status.loadBalancer.ingress[0].hostname")
45+
46+ while [ $backupIP = "null" ]; do
47+ sleep 2
48+ echo "PX Backup grpc LB not assigned"
49+ backupIP=$(kubectl get svc px-backup -n central -o json | jq -r ".status.loadBalancer.ingress[0].hostname")
50+ done
51+ echo "PX Backup grpc LB assigned: $backupIP"
52+
53+ backupPort=10002
54+ authIP=$(kubectl get route px-central-ui -n central -o json |jq -r ".status.ingress[0].host")
55+ authPort=80
56+ PXB_URL=$(kubectl get route px-backup-ui -n central -o json |jq -r ".status.ingress[0].host")
57+
58+ else # platform is k8s on aws
59+ IMDSTOKEN=$(curl -s -X PUT 'http://169.254.169.254/latest/api/token' -H 'X-aws-ec2-metadata-token-ttl-seconds: 120')
60+ backupIP=$(curl -H "X-aws-ec2-metadata-token: $IMDSTOKEN" -s http://169.254.169.254/latest/meta-data/public-ipv4)
61+ authIP=$backupIP
62+ authPort=$(kubectl get svc px-central-ui -n central -o=jsonpath='{.spec.ports[?(@.port==80)].nodePort}')
63+ #expose px-backup api grpc endpoint
64+ kubectl apply -f /assets/helm-backup/backup-grpc-api-svc.yml
65+ backupPort=$(kubectl get svc px-backup-api-grpc -n central -o=jsonpath='{.spec.ports[?(@.port==10002)].nodePort}')
66+ PXB_URL=$(kubectl get svc px-backup-ui -n central -o=jsonpath='{.status.loadBalancer.ingress[0].hostname}')
67+ fi
68+
69+ px pxb init config --px-backup-api-url http://$backupIP:$backupPort --pxcentral-auth-url http://$authIP:$authPort
70+ px pxb set config --pxcentral-verify-ssl false
71+ px pxb login --username admin --password $ADMIN_PW
72+
73+ while ! px pxb version; do
74+ echo "waiting for grpc availability"
75+ sleep 2
76+ done
77+
0 commit comments