@@ -435,9 +435,9 @@ addons:
435435 - id: conf-k8s-addon
436436 type: update
437437 baseUrl: https://raw.githubusercontent.com/jelastic-jps/kubernetes/v1.16.6
438- name: Kubernetes Cluster Configuration
438+ name: Cluster Configuration
439439 description: Configure remote API access and install complementary tools
440- logo: /images/k8s-logo .png
440+ logo: /images/k8s-config .png
441441 settings:
442442 fields:
443443 - type: displayfield
@@ -487,9 +487,9 @@ addons:
487487 - id: upgrade-k8s-addon
488488 type: update
489489 baseUrl: https://raw.githubusercontent.com/jelastic-jps/kubernetes/v1.16.6
490- name: Kubernetes Cluster Upgrade
490+ name: Cluster Upgrade
491491 description: Upgrade Kubernetes cluster to a newer version
492- logo: /images/k8s-logo .png
492+ logo: /images/k8s-upgrade .png
493493
494494 buttons:
495495 - caption: Start Cluster Upgrade
@@ -558,76 +558,99 @@ addons:
558558 - id: gitlab-k8s-addon
559559 type: update
560560 baseUrl: https://raw.githubusercontent.com/jelastic-jps/kubernetes/v1.16.6
561- name: Kubernetes GitLab Integration
561+ name: GitLab Integration
562562 description: Add Kubernetes GitLab integrations
563- logo: /images/k8s-logo .png
563+ logo: /images/k8s-gitlab .png
564564 settings:
565565 fields:
566566 - type: displayfield
567567 hideLabel: true
568- markup: This addon provides Kubernetes and GitLab integration. Please select the Gitlab environment from the list, and specify Gitlab 'root' password.
568+ markup: This addon provides Kubernetes and GitLab integration. Please select the GitLab environment from the list:
569569 - type: displayfield
570570 hideLabel: true
571571 - type: envlist
572572 name: envlist
573+ valueField: shortdomain
573574 caption: GitLab environment
574- - type: string
575- caption: Root password
576- name: gitlab_pass
577575
578576 buttons:
579577 - caption: Configure
580578 settings: gitlab
581579 action: addon-gitlab-config
582580 loadingText: Configuration...
583581 confirmText: Are you sure?
584- successText: Gitlab environment successfully configured!
582+ successText: GitLab environment successfully configured!
583+ - caption: Remove Integration
584+ action: addon-gitlab-remove
585+ confirmText: Any existing Kubernetes and GitLab integration will be removed. Continue?
586+ successText: GitLab integration successfully removed!
585587
586588 actions:
587589 addon-gitlab-config:
588590 - log: '${settings.envlist}'
589591 - cmd[${nodes.k8sm.master.id}]: kubectl get configmaps -n gitlab-managed-apps gitlab-configuration &>/dev/null && echo "true" || echo "false"
590- - setGlobals :
592+ - set :
591593 gitlab_installed: ${response.out}
592- - if ('${globals .gitlab_installed}' == 'true'):
594+ - if ('${this .gitlab_installed}' == 'true'):
593595 return:
594596 type: info
595597 message: This cluster already has GitLab integration!
598+ - env.control.GetEnvInfo:
599+ envName: ${settings.envlist}
600+ - set:
601+ gitlab_domain: ${response.env.domain}
602+ - env.control.ExecCmdByGroup [cp]:
603+ envName: ${settings.envlist}
604+ commandList:
605+ - command: echo ${ROOT_PASSWORD}
606+ - set:
607+ gitlab_pass: ${response.out}
608+ - env.control.ExecCmdByGroup [cp]:
609+ envName: ${settings.envlist}
610+ commandList:
611+ - command: echo ${HTTPS_PORT}
612+ - set:
613+ gitlab_port: ${response.out}
614+ gitlab_http_endpoint: "https://${this.gitlab_domain}:${this.gitlab_port}"
615+ - if ('${this.gitlab_pass}' == '' || '${this.gitlab_port}' == ''):
616+ return:
617+ type: warning
618+ message: Cannot determine GitLab credentials!
596619 - cmd[${nodes.k8sm.master.id}]: kubectl apply -f ${baseUrl}/addons/gitlab-service-account.yaml
597620 - cmd[${nodes.k8sm.master.id}]: kubectl -n kube-system describe secret $(kubectl -n kube-system get secret | grep gitlab-admin | awk '{print $1}') | grep '^token:' | awk '{print $2}'
598- - setGlobals :
621+ - set :
599622 gitlab_token: ${response.out}
600623 - cmd[${nodes.k8sm.master.id}]: kubectl cluster-info | sed -r "s/\x1B\[([0-9]{1,3}((;[0-9]{1,3})*)?)?[m|K]//g" | grep 'Kubernetes master' | awk '/http/ {print $NF}'
601- - setGlobals :
624+ - set :
602625 gitlab_api_url: ${response.out}
603626 - cmd[${nodes.k8sm.master.id}]: kubectl get secret $(kubectl get secrets | grep default-token | cut -d " " -f 1) -o jsonpath="{['data']['ca\.crt']}" | base64 --decode
604- - setGlobals :
627+ - set :
605628 gitlab_ca_cert: ${response.out}
606629 - cmd[${nodes.k8sm.master.id}]: |-
607630 # Login
608- page_content=$(curl -sk -c gitlab-jar.txt 'https://${settings.envlist}:4848 /users/sign_in')
631+ page_content=$(curl -sk -c gitlab-jar.txt '${this.gitlab_http_endpoint} /users/sign_in')
609632 csrf_token=$(echo ${page_content} | perl -ne 'print "$1\n" if /new_user.*?authenticity_token"[[:blank:]]value="(.+?)"/' | sed -n 1p)
610633 echo "Sign-in CSRF token: ${csrf_token}"
611634 [ -n "${csrf_token}" ] || exit 1
612- curl -X POST -sk -b gitlab-jar.txt -c gitlab-jar.txt -f -d "user[login]=root&user[password]=${settings .gitlab_pass}" --data-urlencode "authenticity_token=${csrf_token}" 'https://${settings.envlist}:4848 /users/sign_in'
635+ curl -X POST -sk -b gitlab-jar.txt -c gitlab-jar.txt -f -d "user[login]=root&user[password]=${this .gitlab_pass}" --data-urlencode "authenticity_token=${csrf_token}" '${this.gitlab_http_endpoint} /users/sign_in'
613636 - cmd[${nodes.k8sm.master.id}]: |-
614637 # Settings
615- page_content=$(curl -sk -b gitlab-jar.txt -c gitlab-jar.txt 'https://${settings.envlist}:4848 /admin/application_settings/network')
638+ page_content=$(curl -sk -b gitlab-jar.txt -c gitlab-jar.txt '${this.gitlab_http_endpoint} /admin/application_settings/network')
616639 csrf_token=$(echo ${page_content} | perl -ne 'print "$1\n" if /meta[[:blank:]]name="csrf-token"[[:blank:]]content="(.+?)"/' | sed -n 1p)
617640 echo "Application settings CSRF token: ${csrf_token}"
618641 [ -n "${csrf_token}" ] || exit 2
619- curl -X POST -sk -b gitlab-jar.txt -c gitlab-jar.txt -f -d "_method=patch&application_setting[allow_local_requests_from_web_hooks_and_services]=1&application_setting[allow_local_requests_from_system_hooks]=1&application_setting[dns_rebinding_protection_enabled]=1" --data-urlencode "authenticity_token=${csrf_token}" 'https://${settings.envlist}:4848 /admin/application_settings/network' || exit 2
620- curl -sk -b gitlab-jar.txt -c gitlab-jar.txt -f 'https://${settings.envlist}:4848 /admin/application_settings/network' &>/dev/null
642+ curl -X POST -sk -b gitlab-jar.txt -c gitlab-jar.txt -f -d "_method=patch&application_setting[allow_local_requests_from_web_hooks_and_services]=1&application_setting[allow_local_requests_from_system_hooks]=1&application_setting[dns_rebinding_protection_enabled]=1" --data-urlencode "authenticity_token=${csrf_token}" '${this.gitlab_http_endpoint} /admin/application_settings/network' || exit 2
643+ curl -sk -b gitlab-jar.txt -c gitlab-jar.txt -f '${this.gitlab_http_endpoint} /admin/application_settings/network' &>/dev/null
621644 - cmd[${nodes.k8sm.master.id}]: |-
622645 # Cluster
623646 for i in {1..5}; do
624647 sleep 10
625648 echo "Attempt ${i} of GitLab Kubernetes cluster creation"
626- page_content=$(curl -sk -b gitlab-jar.txt -c gitlab-jar.txt 'https://${settings.envlist}:4848 /admin/clusters/new')
649+ page_content=$(curl -sk -b gitlab-jar.txt -c gitlab-jar.txt '${this.gitlab_http_endpoint} /admin/clusters/new')
627650 csrf_token=$(echo ${page_content} | perl -ne 'print "$1\n" if /new_cluster.*?authenticity_token"[[:blank:]]value="(.+?)"/' | sed -n 1p)
628651 echo "Add cluster CSRF token: ${csrf_token}"
629652 [ -n "${csrf_token}" ] || continue
630- page_content=$(curl -X POST -sk -b gitlab-jar.txt -c gitlab-jar.txt -d "cluster[name]=Kubernetes&cluster[platform_kubernetes_attributes][authorization_type]=rbac&cluster[managed]=1" --data-urlencode "cluster[platform_kubernetes_attributes][api_url]=${globals .gitlab_api_url}" --data-urlencode "cluster[platform_kubernetes_attributes][ca_cert]=${globals .gitlab_ca_cert}" --data-urlencode "cluster[platform_kubernetes_attributes][token]=${globals .gitlab_token}" --data-urlencode "authenticity_token=${csrf_token}" 'https://${settings.envlist}:4848 /admin/clusters/create_user')
653+ page_content=$(curl -X POST -sk -b gitlab-jar.txt -c gitlab-jar.txt -d "cluster[name]=Kubernetes&cluster[platform_kubernetes_attributes][authorization_type]=rbac&cluster[managed]=1" --data-urlencode "cluster[platform_kubernetes_attributes][api_url]=${this .gitlab_api_url}" --data-urlencode "cluster[platform_kubernetes_attributes][ca_cert]=${this .gitlab_ca_cert}" --data-urlencode "cluster[platform_kubernetes_attributes][token]=${this .gitlab_token}" --data-urlencode "authenticity_token=${csrf_token}" '${this.gitlab_http_endpoint} /admin/clusters/create_user')
631654 cluster_url=$(echo ${page_content} | perl -ne 'print "$1\n" if /You[[:blank:]]are[[:blank:]]being[[:blank:]]\<a[[:blank:]]href="(.+?)"\>redirected/' | sed -n 1p)
632655 echo "Kubernetes GitLab cluster: ${cluster_url}"
633656 [ -n "${cluster_url}" ] && break || continue
@@ -637,49 +660,61 @@ addons:
637660 kubectl create ns gitlab-managed-apps
638661 kubectl create configmap gitlab-configuration --from-literal cluster_url="${cluster_url}" -n gitlab-managed-apps
639662 - cmd[${nodes.k8sm.master.id}]: kubectl get configmaps -n gitlab-managed-apps gitlab-configuration -o jsonpath='{.data.cluster_url}'
640- - setGlobals :
663+ - set :
641664 gitlab_cluster_url: ${response.out}
642665 - cmd[${nodes.k8sm.master.id}]: |-
643666 # Helm
644667 sleep 5
645- page_content=$(curl -sk -b gitlab-jar.txt -c gitlab-jar.txt "${globals .gitlab_cluster_url}")
668+ page_content=$(curl -sk -b gitlab-jar.txt -c gitlab-jar.txt "${this .gitlab_cluster_url}")
646669 csrf_token=$(echo ${page_content} | perl -ne 'print "$1\n" if /csrf-param.*?csrf-token"[[:blank:]]content="(.+?)"/' | sed -n 1p)
647670 echo "Helm CSRF token: ${csrf_token}"
648671 [ -n "${csrf_token}" ] || exit 5
649- curl -X POST -sk -b gitlab-jar.txt -c gitlab-jar.txt -f -H "X-CSRF-Token: ${csrf_token}" "${globals .gitlab_cluster_url}/applications/helm" || exit 5
672+ curl -X POST -sk -b gitlab-jar.txt -c gitlab-jar.txt -f -H "X-CSRF-Token: ${csrf_token}" "${this .gitlab_cluster_url}/applications/helm" || exit 5
650673 wait-deployment.sh tiller-deploy gitlab-managed-apps 1 720
651674 - cmd[${nodes.k8sm.master.id}]: |-
652675 # Ingress
653- page_content=$(curl -sk -b gitlab-jar.txt -c gitlab-jar.txt "${globals .gitlab_cluster_url}")
676+ page_content=$(curl -sk -b gitlab-jar.txt -c gitlab-jar.txt "${this .gitlab_cluster_url}")
654677 csrf_token=$(echo ${page_content} | perl -ne 'print "$1\n" if /csrf-param.*?csrf-token"[[:blank:]]content="(.+?)"/' | sed -n 1p)
655678 echo "Ingress CSRF token: ${csrf_token}"
656679 [ -n "${csrf_token}" ] || exit 5
657- curl -X POST -sk -b gitlab-jar.txt -c gitlab-jar.txt -f -H "X-CSRF-Token: ${csrf_token}" "${globals .gitlab_cluster_url}/applications/ingress" || exit 5
680+ curl -X POST -sk -b gitlab-jar.txt -c gitlab-jar.txt -f -H "X-CSRF-Token: ${csrf_token}" "${this .gitlab_cluster_url}/applications/ingress" || exit 5
658681 wait-deployment.sh ingress-nginx-ingress-controller gitlab-managed-apps 1 720
659682 - cmd[${nodes.k8sm.master.id}]: |-
660683 # Cert manager
661- page_content=$(curl -sk -b gitlab-jar.txt -c gitlab-jar.txt "${globals .gitlab_cluster_url}")
684+ page_content=$(curl -sk -b gitlab-jar.txt -c gitlab-jar.txt "${this .gitlab_cluster_url}")
662685 csrf_token=$(echo ${page_content} | perl -ne 'print "$1\n" if /csrf-param.*?csrf-token"[[:blank:]]content="(.+?)"/' | sed -n 1p)
663686 echo "Cert-manager CSRF token: ${csrf_token}"
664687 [ -n "${csrf_token}" ] || exit 5
665- curl -X POST -sk -b gitlab-jar.txt -c gitlab-jar.txt -f -H "Content-Type: application/json" -H "X-CSRF-Token: ${csrf_token}" -d '{"email":"${user.email}"}' "${globals .gitlab_cluster_url}/applications/cert_manager" || exit 5
688+ curl -X POST -sk -b gitlab-jar.txt -c gitlab-jar.txt -f -H "Content-Type: application/json" -H "X-CSRF-Token: ${csrf_token}" -d '{"email":"${user.email}"}' "${this .gitlab_cluster_url}/applications/cert_manager" || exit 5
666689 wait-deployment.sh certmanager-webhook gitlab-managed-apps 1 720
667690 - cmd[${nodes.k8sm.master.id}]: |-
668691 # Runner
669- page_content=$(curl -sk -b gitlab-jar.txt -c gitlab-jar.txt "${globals .gitlab_cluster_url}")
692+ page_content=$(curl -sk -b gitlab-jar.txt -c gitlab-jar.txt "${this .gitlab_cluster_url}")
670693 csrf_token=$(echo ${page_content} | perl -ne 'print "$1\n" if /csrf-param.*?csrf-token"[[:blank:]]content="(.+?)"/' | sed -n 1p)
671694 echo "Runner CSRF token: ${csrf_token}"
672695 [ -n "${csrf_token}" ] || exit 5
673- curl -X POST -sk -b gitlab-jar.txt -c gitlab-jar.txt -f -H "X-CSRF-Token: ${csrf_token}" "${globals .gitlab_cluster_url}/applications/runner" || exit 5
696+ curl -X POST -sk -b gitlab-jar.txt -c gitlab-jar.txt -f -H "X-CSRF-Token: ${csrf_token}" "${this .gitlab_cluster_url}/applications/runner" || exit 5
674697 wait-deployment.sh runner-gitlab-runner gitlab-managed-apps 1 720
675698
699+ addon-gitlab-remove:
700+ - cmd[${nodes.k8sm.master.id}]: kubectl get ns gitlab-managed-apps &>/dev/null && echo "true" || echo "false"
701+ - setGlobals:
702+ gitlab_installed: ${response.out}
703+ - if ('${globals.gitlab_installed}' == 'false'):
704+ return:
705+ type: info
706+ message: This cluster has no active GitLab integration!
707+ - cmd[${nodes.k8sm.master.id}]: |-
708+ kubectl delete ns gitlab-managed-apps
709+ kubectl delete -f ${baseUrl}/addons/gitlab-service-account.yaml
710+
676711 - id: certman-k8s-addon
677712 type: update
678713 requiredFeatures: extip
679714 baseUrl: https://raw.githubusercontent.com/jelastic-jps/kubernetes/v1.16.6
680- name: Kubernetes Certificate Manager
715+ name: Certificate Manager
681716 description: Kubernetes SSL Certificate Manager
682- logo: /images/k8s-logo .png
717+ logo: /images/k8s-cert .png
683718 settings:
684719 fields:
685720 - type: displayfield
@@ -724,6 +759,7 @@ addons:
724759 sed -i 's/example\.com/${settings.certificate_domain}/g' /tmp/helloworld-ingress.yaml
725760 kubectl apply -f /tmp/helloworld-ingress.yaml
726761
762+
727763success: |
728764 ${globals.default_success:}
729765 ${globals.monitoring_success:}
0 commit comments