@@ -223,7 +223,7 @@ actions:
223223 kubectl create -f ${baseUrl}/addons/metrics-server/metrics-server-deployment.yaml
224224 kubectl create -f ${baseUrl}/addons/metrics-server/metrics-server-service.yaml
225225 kubectl create -f ${baseUrl}/addons/metrics-server/resource-reader.yaml
226- kubectl create -f ${baseUrl}/addons/create- admin.yaml
226+ kubectl create -f ${baseUrl}/addons/admin-account .yaml
227227 /root/wait-deployment.sh metrics-server kube-system 1 720
228228
229229 - if ('${settings.dashboard}' == 'version1'):
@@ -525,6 +525,87 @@ addons:
525525 settings:
526526 version: ${this.next}
527527
528+ - id: gitlab-k8s-addon
529+ type: update
530+ baseUrl: https://raw.githubusercontent.com/jelastic-jps/kubernetes/v1.16.3
531+ name: Kubernetes GitLab Integration
532+ description: Add Kubernetes GitLab integrations
533+ logo: /images/k8s-logo.png
534+ settings:
535+ fields:
536+ - type: displayfield
537+ hideLabel: true
538+ markup: This addon provides Kubernetes and GitLab integration. Please select the Gitlab environment from the list, and specify Gitlab 'root' password.
539+ - type: displayfield
540+ hideLabel: true
541+ - type: envlist
542+ name: envlist
543+ caption: GitLab environment
544+ - type: string
545+ caption: Root password
546+ name: gitlab_pass
547+
548+ buttons:
549+ - caption: Configure
550+ settings: gitlab
551+ action: addon-gitlab-config
552+ loadingText: Configuration...
553+ confirmText: Are you sure?
554+ successText: Gitlab environment successfully configured!
555+
556+ actions:
557+ addon-gitlab-config:
558+ - log: '${settings.envlist}'
559+ - log: '${user.email}'
560+ - cmd[${nodes.k8sm.master.id}]: |-
561+ api_url=$(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}')
562+ ca_cert=$(kubectl get secret $(kubectl get secrets | grep default-token | cut -d " " -f 1) -o jsonpath="{['data']['ca\.crt']}" | base64 --decode)
563+ kubectl apply -f ${baseUrl}/addons/gitlab-service-account.yaml
564+ gitlab_token=$(kubectl -n kube-system describe secret $(kubectl -n kube-system get secret | grep gitlab-admin | awk '{print $1}') | grep '^token:' | awk '{print $2}')
565+ page_content=$(curl -sk -c gitlab-jar.txt 'https://${settings.envlist}:4848/users/sign_in')
566+ csrf_token=$(echo ${page_content} | perl -ne 'print "$1\n" if /new_user.*?authenticity_token"[[:blank:]]value="(.+?)"/' | sed -n 1p)
567+ echo "Sign-in CSRF token: ${csrf_token}"
568+ [ -n "${csrf_token}" ] || exit 1
569+ 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' || exit 1
570+ page_content=$(curl -sk -b gitlab-jar.txt -c gitlab-jar.txt 'https://${settings.envlist}:4848/admin/application_settings/network')
571+ csrf_token=$(echo ${page_content} | perl -ne 'print "$1\n" if /meta[[:blank:]]name="csrf-token"[[:blank:]]content="(.+?)"/' | sed -n 1p)
572+ echo "Application settings CSRF token: ${csrf_token}"
573+ [ -n "${csrf_token}" ] || exit 2
574+ 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
575+ page_content=$(curl -sk -b gitlab-jar.txt -c gitlab-jar.txt 'https://${settings.envlist}:4848/admin/clusters/new')
576+ csrf_token=$(echo ${page_content} | perl -ne 'print "$1\n" if /new_cluster.*?authenticity_token"[[:blank:]]value="(.+?)"/' | sed -n 1p)
577+ echo "Add cluster CSRF token: ${csrf_token}"
578+ [ -n "${csrf_token}" ] || exit 3
579+ 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]=${api_url}" --data-urlencode "cluster[platform_kubernetes_attributes][ca_cert]=${ca_cert}" --data-urlencode "cluster[platform_kubernetes_attributes][token]=${gitlab_token}" --data-urlencode "authenticity_token=${csrf_token}" 'https://${settings.envlist}:4848/admin/clusters/create_user')
580+ echo "${page_content}"
581+ cluster_url=$(echo ${page_content} | perl -ne 'print "$1\n" if /You[[:blank:]]are[[:blank:]]being[[:blank:]]\<a[[:blank:]]href="(.+?)"\>redirected/' | sed -n 1p)
582+ echo "Kubernetes GitLab cluster: ${cluster_url}"
583+ [ -n "${cluster_url}" ] || exit 4
584+ sleep 5
585+ page_content=$(curl -sk -b gitlab-jar.txt -c gitlab-jar.txt "${cluster_url}")
586+ csrf_token=$(echo ${page_content} | perl -ne 'print "$1\n" if /csrf-param.*?csrf-token"[[:blank:]]content="(.+?)"/' | sed -n 1p)
587+ echo "Helm CSRF token: ${csrf_token}"
588+ [ -n "${csrf_token}" ] || exit 5
589+ curl -X POST -sk -b gitlab-jar.txt -c gitlab-jar.txt -f -H "X-CSRF-Token: ${csrf_token}" "${cluster_url}/applications/helm" || exit 5
590+ /root/wait-deployment.sh tiller-deploy gitlab-managed-apps 1 720
591+ page_content=$(curl -sk -b gitlab-jar.txt -c gitlab-jar.txt "${cluster_url}")
592+ csrf_token=$(echo ${page_content} | perl -ne 'print "$1\n" if /csrf-param.*?csrf-token"[[:blank:]]content="(.+?)"/' | sed -n 1p)
593+ echo "Ingress CSRF token: ${csrf_token}"
594+ [ -n "${csrf_token}" ] || exit 5
595+ curl -X POST -sk -b gitlab-jar.txt -c gitlab-jar.txt -f -H "X-CSRF-Token: ${csrf_token}" "${cluster_url}/applications/ingress" || exit 5
596+ /root/wait-deployment.sh ingress-nginx-ingress-controller gitlab-managed-apps 1 720
597+ page_content=$(curl -sk -b gitlab-jar.txt -c gitlab-jar.txt "${cluster_url}")
598+ csrf_token=$(echo ${page_content} | perl -ne 'print "$1\n" if /csrf-param.*?csrf-token"[[:blank:]]content="(.+?)"/' | sed -n 1p)
599+ echo "Cert-manager CSRF token: ${csrf_token}"
600+ [ -n "${csrf_token}" ] || exit 5
601+ 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}"}' "${cluster_url}/applications/cert_manager" || exit 5
602+ /root/wait-deployment.sh certmanager-webhook gitlab-managed-apps 1 720
603+ page_content=$(curl -sk -b gitlab-jar.txt -c gitlab-jar.txt "${cluster_url}")
604+ csrf_token=$(echo ${page_content} | perl -ne 'print "$1\n" if /csrf-param.*?csrf-token"[[:blank:]]content="(.+?)"/' | sed -n 1p)
605+ echo "Runner CSRF token: ${csrf_token}"
606+ [ -n "${csrf_token}" ] || exit 5
607+ curl -X POST -sk -b gitlab-jar.txt -c gitlab-jar.txt -f -H "X-CSRF-Token: ${csrf_token}" "${cluster_url}/applications/runner" || exit 5
608+ /root/wait-deployment.sh runner-gitlab-runner gitlab-managed-apps 1 720
528609
529610success: |
530611 ${globals.default_success:}
0 commit comments