Skip to content

Commit cbad166

Browse files
committed
K8S-16 gitlab integration
1 parent 7351b38 commit cbad166

File tree

4 files changed

+101
-2
lines changed

4 files changed

+101
-2
lines changed
File renamed without changes.

addons/gitlab-service-account.yaml

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
apiVersion: v1
2+
kind: ServiceAccount
3+
metadata:
4+
name: gitlab-admin
5+
namespace: kube-system
6+
---
7+
apiVersion: rbac.authorization.k8s.io/v1beta1
8+
kind: ClusterRoleBinding
9+
metadata:
10+
name: gitlab-admin
11+
roleRef:
12+
apiGroup: rbac.authorization.k8s.io
13+
kind: ClusterRole
14+
name: cluster-admin
15+
subjects:
16+
- kind: ServiceAccount
17+
name: gitlab-admin
18+
namespace: kube-system

manifest.jps

Lines changed: 82 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -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

529610
success: |
530611
${globals.default_success:}

scripts/beforeinstall.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ var resp = {
1111
tag: tag,
1212
scalingMode: "stateless",
1313
nodeGroup: "k8sm",
14-
addons: ["conf-k8s-addon", "upgrade-k8s-addon"],
14+
addons: ["conf-k8s-addon", "upgrade-k8s-addon", "gitlab-k8s-addon"],
1515
displayName: "Master",
1616
extip: false,
1717
env: {

0 commit comments

Comments
 (0)