From 3c4201d27a18b4bca0132e55ccff1af268b42d6d Mon Sep 17 00:00:00 2001 From: jfelten Date: Wed, 19 Dec 2018 22:35:14 -0800 Subject: [PATCH 01/67] initial commit --- .drone.yml | 44 +++++++ .helmignore | 23 ++++ Chart.yaml | 19 +++ NOTES.txt | 33 ++++++ OWNERS | 4 + README.md | 141 ++++++++++++++++++++++- _helpers.tpl | 26 +++++ deployment-server.yaml | 102 ++++++++++++++++ ingress.yaml | 40 +++++++ pvc.yaml | 19 +++ role-binding.yaml | 19 +++ role.yaml | 21 ++++ secrets.yaml | 16 +++ service-account.yaml | 11 ++ service.yaml | 33 ++++++ templates/NOTES.txt | 33 ++++++ templates/_helpers.tpl | 26 +++++ templates/deployment-server.yaml | 102 ++++++++++++++++ templates/ingress.yaml | 40 +++++++ templates/pvc.yaml | 19 +++ templates/role-binding.yaml | 19 +++ templates/role.yaml | 21 ++++ templates/secrets.yaml | 16 +++ templates/service-account.yaml | 11 ++ templates/service.yaml | 33 ++++++ values.yaml | 192 +++++++++++++++++++++++++++++++ 26 files changed, 1062 insertions(+), 1 deletion(-) create mode 100644 .drone.yml create mode 100644 .helmignore create mode 100644 Chart.yaml create mode 100644 NOTES.txt create mode 100644 OWNERS create mode 100644 _helpers.tpl create mode 100644 deployment-server.yaml create mode 100644 ingress.yaml create mode 100644 pvc.yaml create mode 100644 role-binding.yaml create mode 100644 role.yaml create mode 100644 secrets.yaml create mode 100644 service-account.yaml create mode 100644 service.yaml create mode 100644 templates/NOTES.txt create mode 100644 templates/_helpers.tpl create mode 100644 templates/deployment-server.yaml create mode 100644 templates/ingress.yaml create mode 100644 templates/pvc.yaml create mode 100644 templates/role-binding.yaml create mode 100644 templates/role.yaml create mode 100644 templates/secrets.yaml create mode 100644 templates/service-account.yaml create mode 100644 templates/service.yaml create mode 100644 values.yaml diff --git a/.drone.yml b/.drone.yml new file mode 100644 index 0000000..2f3a3d4 --- /dev/null +++ b/.drone.yml @@ -0,0 +1,44 @@ +kind: pipeline +name: helm +workspace: +base: / +steps: +- name: helm lint + image: dtzar/helm-kubectl + commands: + - helm lint + +- name: dry run + image: dtzar/helm-kubectl + commands: + - helm install . -n ${DRONE_REPO_NAME}-${DRONE_COMMIT_SHA} --namespace: helm-test --dry-run + - go build -o output + - chmod +x output + +- name: install + image: dtzar/helm-kubectl + commands: + - helm delete ${DRONE_REPO_NAME}-${DRONE_COMMIT_SHA} --purge + - helm install . -n ${DRONE_REPO_NAME}-${DRONE_COMMIT_SHA} + +- name: helm test + image: dtzar/helm-kubectl + commands: + - helm test ${DRONE_REPO_NAME}-${DRONE_COMMIT_SHA} --cleanup + +- name: helm update + image: dtzar/helm-kubectl + commands: + - helm update ${DRONE_REPO_NAME}-${DRONE_COMMIT_SHA} . + +- name: cleanup + image: dtzar/helm-kubectl + commands: + - helm delete ${DRONE_REPO_NAME}-${DRONE_COMMIT_SHA} --purge + +- name: publish + image: keyporttech/chart_publisher + environment: + CHART_NAME: drone_helm_chart + commands: + - publish diff --git a/.helmignore b/.helmignore new file mode 100644 index 0000000..46fd899 --- /dev/null +++ b/.helmignore @@ -0,0 +1,23 @@ +# Patterns to ignore when building packages. +# This supports shell glob matching, relative path matching, and +# negation (prefixed with !). Only one pattern per line. +.DS_Store +# Common VCS dirs +.git/ +.gitignore +.bzr/ +.bzrignore +.hg/ +.hgignore +.svn/ +# Common backup files +*.swp +*.bak +*.tmp +*~ +# Various IDEs +.project +.idea/ +*.tmproj +# OWNERS file for Kubernetes +OWNERS diff --git a/Chart.yaml b/Chart.yaml new file mode 100644 index 0000000..402b960 --- /dev/null +++ b/Chart.yaml @@ -0,0 +1,19 @@ +name: drone +home: https://drone.io/ +icon: https://drone.io/apple-touch-icon.png +version: 1.7.5 +appVersion: 0.8.9 +description: Drone is a Continuous Delivery system built on container technology +keywords: +- continuous-delivery +- continuous-deployment +- continuous-integration +- docker +- drone +- drone.io +- go +sources: +- https://github.com/drone/drone +maintainers: +- name: christian-roggia + email: christian.roggia@gmail.com diff --git a/NOTES.txt b/NOTES.txt new file mode 100644 index 0000000..c562096 --- /dev/null +++ b/NOTES.txt @@ -0,0 +1,33 @@ + +********************************************************************************* +*** PLEASE BE PATIENT: drone may take a few minutes to install *** +********************************************************************************* + +{{- if .Values.ingress.enabled }} +From outside the cluster, the server URL(s) are: +{{- range .Values.ingress.hosts }} + http://{{ . }} +{{- end }} + +{{- else if contains "NodePort" .Values.service.type }} + +Get the Drone URL by running: + export NODE_PORT=$(kubectl get -o jsonpath="{.spec.ports[0].nodePort}" services {{ template "drone.fullname" . }}) + export NODE_IP=$(kubectl get nodes -o jsonpath="{.items[0].status.addresses[0].address}") + echo http://$NODE_IP:$NODE_PORT/ + +{{- else if contains "LoadBalancer" .Values.service.type }} + + NOTE: It may take a few minutes for the LoadBalancer IP to be available. + Watch the status with: 'kubectl get svc -w {{ template "drone.fullname" . }}' + +Get the Drone URL by running: + export SERVICE_IP=$(kubectl get svc {{ template "drone.fullname" . }} -o jsonpath='{.status.loadBalancer.ingress[0].ip}') + echo http://$SERVICE_IP/ +{{- else if contains "ClusterIP" .Values.service.type }} + +Get the Drone URL by running: + export POD_NAME=$(kubectl get pods -n {{ .Release.Namespace }} -l "component=server,app={{ template "drone.name" . }},release={{ .Release.Name }}" -o jsonpath="{.items[0].metadata.name}") + echo http://127.0.0.1:8000/ + kubectl -n {{ .Release.Namespace }} port-forward $POD_NAME 8000:8000 +{{- end }} diff --git a/OWNERS b/OWNERS new file mode 100644 index 0000000..ce90a4a --- /dev/null +++ b/OWNERS @@ -0,0 +1,4 @@ +approvers: +- christian-roggia +reviewers: +- christian-roggia diff --git a/README.md b/README.md index 29f4f06..f80c464 100644 --- a/README.md +++ b/README.md @@ -1 +1,140 @@ -# drone-helm-chart \ No newline at end of file +# Drone.io + +[Drone](http://readme.drone.io/) is a Continuous Integration platform built on container technology. + +This is a rework of the official [https://github.com/helm/charts/tree/master/stable/drone](https://github.com/helm/charts/tree/master/stable/drone) chart to support drone 1.0. This was necessary, because changes 1.0 changes made it incompatible with the current chart. THIS IS USING an PRERELEASE version (like much of kubernetes) so use at your own risk. + +## TL;DR; + +```console +$ helm install jfelten/drone +``` + +## Installing the Chart + +To install the chart with the release name `my-release`: + +```console +$ helm install --name my-release stable/drone +``` + +local install + +## Customizing the chart example + +Use a custom values file: +```console +$ helm install --name my-release stable/drone --values customValues.yaml +``` +customValues.yaml: +```yaml +images: + server: + tag: 1.0.0-rc.3 + agent: + tag: 1.0.0-rc.3 + +server: + host: "https://drone.lab2.keyporttech.com:8243" + env: + DRONE_KUBERNETES_NAMESPACE: drone + DRONE_GITHUB_SERVER: https://github.com + #DRONE_SERVER_HOST: drone.lab2.keyporttech.com:8243 + DRONE_SERVER_PROTO: http + DRONE_DATABASE_DRIVER: postgres + envSecrets: + DRONE_DATABASE_DATASOURCE: postgres://postgres:password@host:5432/postgres?sslmode=disable + DRONE_GITHUB_CLIENT_ID: abcdefghijklmnopqrstuvwxyz + DRONE_GITHUB_CLIENT_SECRET: abcdefghijklmnopqrstuvwxyz + DRONE_RPC_SECRET: 1234567890abcdefg + +ingress: + enabled: true + + ## annotations used by the ingress - ex for k8s nginx ingress controller: + hosts: + - drone.example.com + annotations: + kubernetes.io/ingress.class: nginx + kubernetes.io/ingress.allow-http: "false" + nginx.ingress.kubernetes.io/proxy-body-size: "0" + nginx.ingress.kubernetes.io/proxy-read-timeout: "600" + nginx.ingress.kubernetes.io/proxy-send-timeout: "600" + nginx.ingress.kubernetes.io/auth-type: basic + nginx.ingress.kubernetes.io/auth-secret: basic-auth + nginx.ingress.kubernetes.io/auth-realm: "Authentication Required - foo" + nginx.ingress.kubernetes.io/force-ssl-redirect: "true" + tls: + - secretName: tls-drone + hosts: + - 'drone.example.com' + + # TODO:// create a permanent volume for this +persistence: + enabled: true + storageClass: myStorageClass +``` +## Persistent storage + +Persistent Storage works similar to other charts where if a storage class is specified it generates a pvc. The chart can also use an existing claim created outside of the chart via persistence.existingClaim. + +For bare metal environments it may be preferable to attach directly to a storage volume. This can be done via persistence.directVolumeMount. Example: + +```yaml +persistence: + enabled: true + directVolumeMount: |- + glusterfs: + endpoints: glusterfs + path: drone +``` + +## Uninstalling the Chart + +To uninstall/delete the `my-release` deployment: + +```console +$ helm delete my-release +``` + +The command removes nearly all the Kubernetes components associated with the +chart and deletes the release. + +## Configuration + +The following table lists the configurable parameters of the drone charts and their default values. + +| Parameter | Description | Default | +|-----------------------------|-----------------------------------------------------------------------------------------------|-----------------------------| +| `images.server.repository` | Drone **server** image | `docker.io/drone/drone` | +| `images.server.tag` | Drone **server** image tag | `0.8.9` | +| `images.server.pullPolicy` | Drone **server** image pull policy | `IfNotPresent` | +| `service.annotations` | Service annotations | `{}` | +| `service.httpPort` | Drone's Web GUI HTTP port | `80` | +| `service.nodePort` | If `service.type` is `NodePort` and this is non-empty, sets the http node port of the service | `32015` | +| `service.type` | Service type (ClusterIP, NodePort or LoadBalancer) | `ClusterIP` | +| `ingress.enabled` | Enables Ingress for Drone | `false` | +| `ingress.annotations` | Ingress annotations | `{}` | +| `ingress.hosts` | Ingress accepted hostnames | `nil` | +| `ingress.tls` | Ingress TLS configuration | `[]` | +| `server.host` | Drone **server** scheme and hostname | `(internal hostname)` | +| `server.env` | Drone **server** environment variables | `(default values)` | +| `server.envSecrets`        | Drone **server** secret environment variables                                                 | `(default values)`         | +| `server.annotations` | Drone **server** annotations | `{}` | +| `server.resources` | Drone **server** pod resource requests & limits | `{}` | +| `server.schedulerName` | Drone **server** alternate scheduler name | `nil` | +| `server.affinity` | Drone **server** scheduling preferences | `{}` | +| `server.nodeSelector` | Drone **server** node labels for pod assignment | `{}` | +| `server.extraContainers` | Additional sidecar containers | `""` | +| `server.extraVolumes` | Additional volumes for use in extraContainers | `""` | | +| `metrics.prometheus.enabled` | Enable Prometheus metrics endpoint | `false` | +| `persistence.enabled` | Use a PVC to persist data | `true` | +| `persistence.existingClaim` | Use an existing PVC to persist data | `nil` | +| `persistence.storageClass` | Storage class of backing PVC | `nil` | +| `persistence.accessMode` | Use volume as ReadOnly or ReadWrite | `ReadWriteOnce` | +| `persistence.size` | Size of data volume | `1Gi` | +| `persistence.directVolumeMount` | yaml config to connect directly to storage instead of creating a pvc - see example volume | `1Gi` | +| `rbac.create` | Specifies whether RBAC resources should be created. | `true` | +| `rbac.apiVersion` | RBAC API version | `v1` | +| `serviceAccount.create` | Specifies whether a ServiceAccount should be created. | `true` | +| `serviceAccount.name` | The name of the ServiceAccount to use. If not set and create is true, a name is generated using the fullname template. | `(fullname template)` | diff --git a/_helpers.tpl b/_helpers.tpl new file mode 100644 index 0000000..4c0c112 --- /dev/null +++ b/_helpers.tpl @@ -0,0 +1,26 @@ +{{/* vim: set filetype=mustache: */}} +{{/* +Expand the name of the chart. +*/}} +{{ define "drone.name" }}{{ default "drone" .Values.nameOverride | trunc 63 }}{{ end }} + +{{/* +Create a default fully qualified app name. +We truncate at 63 chars because some Kubernetes name fields are limited to this +(by the DNS naming spec). +*/}} +{{ define "drone.fullname" }} +{{- $name := default "drone" .Values.nameOverride -}} +{{ printf "%s-%s" .Release.Name $name | trunc 63 -}} +{{ end }} + +{{/* +Create the name of the service account to use +*/}} +{{- define "drone.serviceAccountName" -}} +{{- if .Values.serviceAccount.create -}} + {{ default (include "drone.fullname" .) .Values.serviceAccount.name }} +{{- else -}} + {{ default "default" .Values.serviceAccount.name }} +{{- end -}} +{{- end -}} diff --git a/deployment-server.yaml b/deployment-server.yaml new file mode 100644 index 0000000..c1025bf --- /dev/null +++ b/deployment-server.yaml @@ -0,0 +1,102 @@ +apiVersion: extensions/v1beta1 +kind: Deployment +metadata: + name: {{ template "drone.fullname" . }}-server + labels: + app: {{ template "drone.name" . }} + chart: "{{ .Chart.Name }}-{{ .Chart.Version }}" + release: "{{ .Release.Name }}" + heritage: "{{ .Release.Service }}" + component: server +spec: + replicas: 1 + template: + metadata: + annotations: + checksum/secrets: {{ include (print $.Template.BasePath "/secrets.yaml") . | sha256sum }} +{{- if .Values.metrics.prometheus.enabled }} + prometheus.io/scrape: "true" + prometheus.io/port: "8000" +{{- end }} +{{- if .Values.server.annotations }} +{{ toYaml .Values.server.annotations | indent 8 }} +{{- end }} + labels: + app: {{ template "drone.name" . }} + release: "{{ .Release.Name }}" + component: server + spec: +{{- if .Values.server.schedulerName }} + schedulerName: "{{ .Values.server.schedulerName }}" +{{- end }} +{{- if .Values.server.affinity }} + affinity: +{{ toYaml .Values.server.affinity | indent 8 }} +{{- end }} +{{- if .Values.server.nodeSelector }} + nodeSelector: +{{ toYaml .Values.server.nodeSelector | indent 8 }} +{{- end }} + serviceAccountName: {{ template "drone.serviceAccountName" . }} + containers: + - name: {{ template "drone.fullname" . }}-server + image: "{{ .Values.images.server.repository }}:{{ .Values.images.server.tag }}" + imagePullPolicy: {{ .Values.images.server.pullPolicy }} + env: + - name: DRONE_KUBERNETES_ENABLED + value: "true" + {{- if not (.Values.server.env.DRONE_KUBERNETES_NAMESPACE) }} + - name: DRONE_KUBERNETES_NAMESPACE + value: {{ .Release.Namespace }} + {{ end -}} + + {{- range $key, $value := .Values.server.envSecrets }} + - name: {{ $key }} + valueFrom: + secretKeyRef: + {{- if $.Values.existingSecret }} + name: {{ $.Values.existingSecret }} + {{ else }} + name: {{ template "drone.fullname" $ }} + {{ end -}} + key: {{ $key }} + {{- end }} + {{- range $key, $value := .Values.server.env }} + - name: {{ $key }} + value: {{ $value | quote }} + {{- end }} + ports: + - name: http + {{- if not (.Values.server.env.DRONE_SERVER_PORT) }} + containerPort: 80 + {{ else }} + containerPort: {{ .Values.server.env.DRONE_SERVER_PORT }} + {{ end -}} + protocol: TCP + livenessProbe: + httpGet: + path: / + port: http + resources: +{{ toYaml .Values.server.resources | indent 10 }} + volumeMounts: + - name: data + mountPath: /var/lib/drone +{{- with .Values.server.extraContainers }} +{{ tpl . $ | indent 6 }} +{{- end }} + volumes: + - name: data + {{- if .Values.persistence.enabled }} + {{- if .Values.persistence.directVolumeMount }} +{{ tpl .Values.persistence.directVolumeMount . | indent 8 }} + {{- else }} + persistentVolumeClaim: + claimName: {{ .Values.persistence.existingClaim | default (include "drone.fullname" .) }} + {{- end }} + {{- else }} + emptyDir: {} + {{- end -}} +{{- with .Values.server.extraVolumes }} +{{ tpl . $ | indent 6 }} +{{- end }} diff --git a/ingress.yaml b/ingress.yaml new file mode 100644 index 0000000..08883b7 --- /dev/null +++ b/ingress.yaml @@ -0,0 +1,40 @@ +{{- if .Values.ingress.enabled -}} +{{- $fullName := include "drone.fullname" . }} +{{- $httpPort := .Values.service.httpPort }} +apiVersion: extensions/v1beta1 +kind: Ingress +metadata: + annotations: + {{- range $key, $value := .Values.ingress.annotations }} + {{ $key }}: {{ $value | quote }} + {{- end }} + labels: + app: {{ template "drone.name" . }} + heritage: "{{ .Release.Service }}" + release: "{{ .Release.Name }}" + chart: "{{ .Chart.Name }}-{{ .Chart.Version }}" + name: {{ template "drone.fullname" . }} +spec: + rules: + {{- range .Values.ingress.hosts }} + - host: {{ . }} + http: + paths: + {{- if index $.Values.ingress "annotations" }} + {{- if eq (index $.Values.ingress.annotations "kubernetes.io/ingress.class" | default "") "gce" "alb" }} + - path: /* + {{- else }}{{/* Has annotations but ingress class is not "gce" nor "alb" */}} + - path: / + {{- end }} + {{- else}}{{/* Has no annotations */}} + - path: / + {{- end }} + backend: + serviceName: {{ $fullName }} + servicePort: {{ $httpPort }} + {{- end -}} + {{- if .Values.ingress.tls }} + tls: +{{ toYaml .Values.ingress.tls | indent 4 }} + {{- end -}} +{{- end -}} diff --git a/pvc.yaml b/pvc.yaml new file mode 100644 index 0000000..22c4cbf --- /dev/null +++ b/pvc.yaml @@ -0,0 +1,19 @@ +{{- if and .Values.persistence.enabled (not .Values.persistence.existingClaim) }} +kind: PersistentVolumeClaim +apiVersion: v1 +metadata: + name: {{ template "drone.fullname" . }} +spec: + accessModes: + - {{ .Values.persistence.accessMode | quote }} + resources: + requests: + storage: {{ .Values.persistence.size | quote }} +{{- if .Values.persistence.storageClass }} +{{- if (eq "-" .Values.persistence.storageClass) }} + storageClassName: "" +{{- else }} + storageClassName: "{{ .Values.persistence.storageClass }}" +{{- end }} +{{- end }} +{{- end }} diff --git a/role-binding.yaml b/role-binding.yaml new file mode 100644 index 0000000..b1f6547 --- /dev/null +++ b/role-binding.yaml @@ -0,0 +1,19 @@ +{{ if .Values.rbac.create }} +apiVersion: rbac.authorization.k8s.io/{{ required "A valid .Values.rbac.apiVersion entry required!" .Values.rbac.apiVersion }} +kind: RoleBinding +metadata: + name: {{ template "drone.fullname" . }} + labels: + app: {{ template "drone.name" . }} + chart: "{{ .Chart.Name }}-{{ .Chart.Version }}" + release: "{{ .Release.Name }}" + heritage: "{{ .Release.Service }}" +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: Role + name: {{ template "drone.fullname" . }} +subjects: +- kind: ServiceAccount + name: {{ template "drone.serviceAccountName" . }} + namespace: {{ .Release.Namespace }} +{{ end }} diff --git a/role.yaml b/role.yaml new file mode 100644 index 0000000..f69b4a7 --- /dev/null +++ b/role.yaml @@ -0,0 +1,21 @@ +{{ if .Values.rbac.create }} +apiVersion: rbac.authorization.k8s.io/{{ required "A valid .Values.rbac.apiVersion entry required!" .Values.rbac.apiVersion }} +kind: Role +metadata: + name: {{ template "drone.fullname" . }} + labels: + app: {{ template "drone.name" . }} + chart: "{{ .Chart.Name }}-{{ .Chart.Version }}" + release: "{{ .Release.Name }}" + heritage: "{{ .Release.Service }}" +rules: + - apiGroups: + - extensions + resources: + - deployments + verbs: + - get + - list + - patch + - update +{{ end }} diff --git a/secrets.yaml b/secrets.yaml new file mode 100644 index 0000000..a105a33 --- /dev/null +++ b/secrets.yaml @@ -0,0 +1,16 @@ +{{- if (not .Values.existingSecret) }} +apiVersion: v1 +kind: Secret +metadata: + name: {{ template "drone.fullname" . }} + labels: + app: {{ template "drone.name" . }} + chart: "{{ .Chart.Name }}-{{ .Chart.Version }}" + release: "{{ .Release.Name }}" + heritage: "{{ .Release.Service }}" +type: Opaque +data: + {{- range $key, $value := .Values.server.envSecrets }} + {{ $key }}: {{ $value | b64enc }} + {{- end }} +{{ end }} diff --git a/service-account.yaml b/service-account.yaml new file mode 100644 index 0000000..068b0dc --- /dev/null +++ b/service-account.yaml @@ -0,0 +1,11 @@ +{{ if .Values.serviceAccount.create }} +apiVersion: v1 +kind: ServiceAccount +metadata: + name: {{ template "drone.serviceAccountName" . }} + labels: + app: {{ template "drone.name" . }} + chart: "{{ .Chart.Name }}-{{ .Chart.Version }}" + release: "{{ .Release.Name }}" + heritage: "{{ .Release.Service }}" +{{ end }} diff --git a/service.yaml b/service.yaml new file mode 100644 index 0000000..d89e391 --- /dev/null +++ b/service.yaml @@ -0,0 +1,33 @@ +apiVersion: v1 +kind: Service +metadata: + name: {{ template "drone.fullname" . }} + annotations: + {{- range $key, $value := .Values.service.annotations }} + {{ $key }}: {{ $value | quote }} + {{- end }} + labels: + app: {{ template "drone.name" . }} + chart: "{{ .Chart.Name }}-{{ .Chart.Version }}" + release: "{{ .Release.Name }}" + heritage: "{{ .Release.Service }}" +spec: + type: {{ .Values.service.type }} + ports: + - name: http + port: {{ .Values.service.httpPort }} + {{- if not (.Values.server.env.DRONE_SERVER_PORT) }} + targetPort: 80 + {{ else }} + targetPort: {{ .Values.server.env.DRONE_SERVER_PORT }} + {{ end -}} +{{- if hasKey .Values.service "nodePort" }} + nodePort: {{ .Values.service.nodePort }} +{{- end }} + - name: grpc + port: 9000 + targetPort: 9000 + selector: + app: {{ template "drone.name" . }} + release: {{ .Release.Name | quote }} + component: server diff --git a/templates/NOTES.txt b/templates/NOTES.txt new file mode 100644 index 0000000..c562096 --- /dev/null +++ b/templates/NOTES.txt @@ -0,0 +1,33 @@ + +********************************************************************************* +*** PLEASE BE PATIENT: drone may take a few minutes to install *** +********************************************************************************* + +{{- if .Values.ingress.enabled }} +From outside the cluster, the server URL(s) are: +{{- range .Values.ingress.hosts }} + http://{{ . }} +{{- end }} + +{{- else if contains "NodePort" .Values.service.type }} + +Get the Drone URL by running: + export NODE_PORT=$(kubectl get -o jsonpath="{.spec.ports[0].nodePort}" services {{ template "drone.fullname" . }}) + export NODE_IP=$(kubectl get nodes -o jsonpath="{.items[0].status.addresses[0].address}") + echo http://$NODE_IP:$NODE_PORT/ + +{{- else if contains "LoadBalancer" .Values.service.type }} + + NOTE: It may take a few minutes for the LoadBalancer IP to be available. + Watch the status with: 'kubectl get svc -w {{ template "drone.fullname" . }}' + +Get the Drone URL by running: + export SERVICE_IP=$(kubectl get svc {{ template "drone.fullname" . }} -o jsonpath='{.status.loadBalancer.ingress[0].ip}') + echo http://$SERVICE_IP/ +{{- else if contains "ClusterIP" .Values.service.type }} + +Get the Drone URL by running: + export POD_NAME=$(kubectl get pods -n {{ .Release.Namespace }} -l "component=server,app={{ template "drone.name" . }},release={{ .Release.Name }}" -o jsonpath="{.items[0].metadata.name}") + echo http://127.0.0.1:8000/ + kubectl -n {{ .Release.Namespace }} port-forward $POD_NAME 8000:8000 +{{- end }} diff --git a/templates/_helpers.tpl b/templates/_helpers.tpl new file mode 100644 index 0000000..4c0c112 --- /dev/null +++ b/templates/_helpers.tpl @@ -0,0 +1,26 @@ +{{/* vim: set filetype=mustache: */}} +{{/* +Expand the name of the chart. +*/}} +{{ define "drone.name" }}{{ default "drone" .Values.nameOverride | trunc 63 }}{{ end }} + +{{/* +Create a default fully qualified app name. +We truncate at 63 chars because some Kubernetes name fields are limited to this +(by the DNS naming spec). +*/}} +{{ define "drone.fullname" }} +{{- $name := default "drone" .Values.nameOverride -}} +{{ printf "%s-%s" .Release.Name $name | trunc 63 -}} +{{ end }} + +{{/* +Create the name of the service account to use +*/}} +{{- define "drone.serviceAccountName" -}} +{{- if .Values.serviceAccount.create -}} + {{ default (include "drone.fullname" .) .Values.serviceAccount.name }} +{{- else -}} + {{ default "default" .Values.serviceAccount.name }} +{{- end -}} +{{- end -}} diff --git a/templates/deployment-server.yaml b/templates/deployment-server.yaml new file mode 100644 index 0000000..c1025bf --- /dev/null +++ b/templates/deployment-server.yaml @@ -0,0 +1,102 @@ +apiVersion: extensions/v1beta1 +kind: Deployment +metadata: + name: {{ template "drone.fullname" . }}-server + labels: + app: {{ template "drone.name" . }} + chart: "{{ .Chart.Name }}-{{ .Chart.Version }}" + release: "{{ .Release.Name }}" + heritage: "{{ .Release.Service }}" + component: server +spec: + replicas: 1 + template: + metadata: + annotations: + checksum/secrets: {{ include (print $.Template.BasePath "/secrets.yaml") . | sha256sum }} +{{- if .Values.metrics.prometheus.enabled }} + prometheus.io/scrape: "true" + prometheus.io/port: "8000" +{{- end }} +{{- if .Values.server.annotations }} +{{ toYaml .Values.server.annotations | indent 8 }} +{{- end }} + labels: + app: {{ template "drone.name" . }} + release: "{{ .Release.Name }}" + component: server + spec: +{{- if .Values.server.schedulerName }} + schedulerName: "{{ .Values.server.schedulerName }}" +{{- end }} +{{- if .Values.server.affinity }} + affinity: +{{ toYaml .Values.server.affinity | indent 8 }} +{{- end }} +{{- if .Values.server.nodeSelector }} + nodeSelector: +{{ toYaml .Values.server.nodeSelector | indent 8 }} +{{- end }} + serviceAccountName: {{ template "drone.serviceAccountName" . }} + containers: + - name: {{ template "drone.fullname" . }}-server + image: "{{ .Values.images.server.repository }}:{{ .Values.images.server.tag }}" + imagePullPolicy: {{ .Values.images.server.pullPolicy }} + env: + - name: DRONE_KUBERNETES_ENABLED + value: "true" + {{- if not (.Values.server.env.DRONE_KUBERNETES_NAMESPACE) }} + - name: DRONE_KUBERNETES_NAMESPACE + value: {{ .Release.Namespace }} + {{ end -}} + + {{- range $key, $value := .Values.server.envSecrets }} + - name: {{ $key }} + valueFrom: + secretKeyRef: + {{- if $.Values.existingSecret }} + name: {{ $.Values.existingSecret }} + {{ else }} + name: {{ template "drone.fullname" $ }} + {{ end -}} + key: {{ $key }} + {{- end }} + {{- range $key, $value := .Values.server.env }} + - name: {{ $key }} + value: {{ $value | quote }} + {{- end }} + ports: + - name: http + {{- if not (.Values.server.env.DRONE_SERVER_PORT) }} + containerPort: 80 + {{ else }} + containerPort: {{ .Values.server.env.DRONE_SERVER_PORT }} + {{ end -}} + protocol: TCP + livenessProbe: + httpGet: + path: / + port: http + resources: +{{ toYaml .Values.server.resources | indent 10 }} + volumeMounts: + - name: data + mountPath: /var/lib/drone +{{- with .Values.server.extraContainers }} +{{ tpl . $ | indent 6 }} +{{- end }} + volumes: + - name: data + {{- if .Values.persistence.enabled }} + {{- if .Values.persistence.directVolumeMount }} +{{ tpl .Values.persistence.directVolumeMount . | indent 8 }} + {{- else }} + persistentVolumeClaim: + claimName: {{ .Values.persistence.existingClaim | default (include "drone.fullname" .) }} + {{- end }} + {{- else }} + emptyDir: {} + {{- end -}} +{{- with .Values.server.extraVolumes }} +{{ tpl . $ | indent 6 }} +{{- end }} diff --git a/templates/ingress.yaml b/templates/ingress.yaml new file mode 100644 index 0000000..08883b7 --- /dev/null +++ b/templates/ingress.yaml @@ -0,0 +1,40 @@ +{{- if .Values.ingress.enabled -}} +{{- $fullName := include "drone.fullname" . }} +{{- $httpPort := .Values.service.httpPort }} +apiVersion: extensions/v1beta1 +kind: Ingress +metadata: + annotations: + {{- range $key, $value := .Values.ingress.annotations }} + {{ $key }}: {{ $value | quote }} + {{- end }} + labels: + app: {{ template "drone.name" . }} + heritage: "{{ .Release.Service }}" + release: "{{ .Release.Name }}" + chart: "{{ .Chart.Name }}-{{ .Chart.Version }}" + name: {{ template "drone.fullname" . }} +spec: + rules: + {{- range .Values.ingress.hosts }} + - host: {{ . }} + http: + paths: + {{- if index $.Values.ingress "annotations" }} + {{- if eq (index $.Values.ingress.annotations "kubernetes.io/ingress.class" | default "") "gce" "alb" }} + - path: /* + {{- else }}{{/* Has annotations but ingress class is not "gce" nor "alb" */}} + - path: / + {{- end }} + {{- else}}{{/* Has no annotations */}} + - path: / + {{- end }} + backend: + serviceName: {{ $fullName }} + servicePort: {{ $httpPort }} + {{- end -}} + {{- if .Values.ingress.tls }} + tls: +{{ toYaml .Values.ingress.tls | indent 4 }} + {{- end -}} +{{- end -}} diff --git a/templates/pvc.yaml b/templates/pvc.yaml new file mode 100644 index 0000000..22c4cbf --- /dev/null +++ b/templates/pvc.yaml @@ -0,0 +1,19 @@ +{{- if and .Values.persistence.enabled (not .Values.persistence.existingClaim) }} +kind: PersistentVolumeClaim +apiVersion: v1 +metadata: + name: {{ template "drone.fullname" . }} +spec: + accessModes: + - {{ .Values.persistence.accessMode | quote }} + resources: + requests: + storage: {{ .Values.persistence.size | quote }} +{{- if .Values.persistence.storageClass }} +{{- if (eq "-" .Values.persistence.storageClass) }} + storageClassName: "" +{{- else }} + storageClassName: "{{ .Values.persistence.storageClass }}" +{{- end }} +{{- end }} +{{- end }} diff --git a/templates/role-binding.yaml b/templates/role-binding.yaml new file mode 100644 index 0000000..b1f6547 --- /dev/null +++ b/templates/role-binding.yaml @@ -0,0 +1,19 @@ +{{ if .Values.rbac.create }} +apiVersion: rbac.authorization.k8s.io/{{ required "A valid .Values.rbac.apiVersion entry required!" .Values.rbac.apiVersion }} +kind: RoleBinding +metadata: + name: {{ template "drone.fullname" . }} + labels: + app: {{ template "drone.name" . }} + chart: "{{ .Chart.Name }}-{{ .Chart.Version }}" + release: "{{ .Release.Name }}" + heritage: "{{ .Release.Service }}" +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: Role + name: {{ template "drone.fullname" . }} +subjects: +- kind: ServiceAccount + name: {{ template "drone.serviceAccountName" . }} + namespace: {{ .Release.Namespace }} +{{ end }} diff --git a/templates/role.yaml b/templates/role.yaml new file mode 100644 index 0000000..f69b4a7 --- /dev/null +++ b/templates/role.yaml @@ -0,0 +1,21 @@ +{{ if .Values.rbac.create }} +apiVersion: rbac.authorization.k8s.io/{{ required "A valid .Values.rbac.apiVersion entry required!" .Values.rbac.apiVersion }} +kind: Role +metadata: + name: {{ template "drone.fullname" . }} + labels: + app: {{ template "drone.name" . }} + chart: "{{ .Chart.Name }}-{{ .Chart.Version }}" + release: "{{ .Release.Name }}" + heritage: "{{ .Release.Service }}" +rules: + - apiGroups: + - extensions + resources: + - deployments + verbs: + - get + - list + - patch + - update +{{ end }} diff --git a/templates/secrets.yaml b/templates/secrets.yaml new file mode 100644 index 0000000..a105a33 --- /dev/null +++ b/templates/secrets.yaml @@ -0,0 +1,16 @@ +{{- if (not .Values.existingSecret) }} +apiVersion: v1 +kind: Secret +metadata: + name: {{ template "drone.fullname" . }} + labels: + app: {{ template "drone.name" . }} + chart: "{{ .Chart.Name }}-{{ .Chart.Version }}" + release: "{{ .Release.Name }}" + heritage: "{{ .Release.Service }}" +type: Opaque +data: + {{- range $key, $value := .Values.server.envSecrets }} + {{ $key }}: {{ $value | b64enc }} + {{- end }} +{{ end }} diff --git a/templates/service-account.yaml b/templates/service-account.yaml new file mode 100644 index 0000000..068b0dc --- /dev/null +++ b/templates/service-account.yaml @@ -0,0 +1,11 @@ +{{ if .Values.serviceAccount.create }} +apiVersion: v1 +kind: ServiceAccount +metadata: + name: {{ template "drone.serviceAccountName" . }} + labels: + app: {{ template "drone.name" . }} + chart: "{{ .Chart.Name }}-{{ .Chart.Version }}" + release: "{{ .Release.Name }}" + heritage: "{{ .Release.Service }}" +{{ end }} diff --git a/templates/service.yaml b/templates/service.yaml new file mode 100644 index 0000000..d89e391 --- /dev/null +++ b/templates/service.yaml @@ -0,0 +1,33 @@ +apiVersion: v1 +kind: Service +metadata: + name: {{ template "drone.fullname" . }} + annotations: + {{- range $key, $value := .Values.service.annotations }} + {{ $key }}: {{ $value | quote }} + {{- end }} + labels: + app: {{ template "drone.name" . }} + chart: "{{ .Chart.Name }}-{{ .Chart.Version }}" + release: "{{ .Release.Name }}" + heritage: "{{ .Release.Service }}" +spec: + type: {{ .Values.service.type }} + ports: + - name: http + port: {{ .Values.service.httpPort }} + {{- if not (.Values.server.env.DRONE_SERVER_PORT) }} + targetPort: 80 + {{ else }} + targetPort: {{ .Values.server.env.DRONE_SERVER_PORT }} + {{ end -}} +{{- if hasKey .Values.service "nodePort" }} + nodePort: {{ .Values.service.nodePort }} +{{- end }} + - name: grpc + port: 9000 + targetPort: 9000 + selector: + app: {{ template "drone.name" . }} + release: {{ .Release.Name | quote }} + component: server diff --git a/values.yaml b/values.yaml new file mode 100644 index 0000000..83c08d4 --- /dev/null +++ b/values.yaml @@ -0,0 +1,192 @@ +appVersion: "0.8.6" + +images: + ## The official drone (server) image, change tag to use a different version. + ## ref: https://hub.docker.com/r/drone/drone/tags/ + ## + server: + repository: "docker.io/drone/drone" + tag: 0.8.9 + pullPolicy: IfNotPresent + + ## The official drone (agent) image, change tag to use a different version. + ## ref: https://hub.docker.com/r/drone/agent/tags/ + ## + agent: + repository: "docker.io/drone/agent" + tag: 0.8.9 + pullPolicy: IfNotPresent + + ## The official docker (dind) image, change tag to use a different version. + ## ref: https://hub.docker.com/r/library/docker/tags/ + ## + dind: + repository: "docker.io/library/docker" + tag: 18.06.1-ce-dind + pullPolicy: IfNotPresent + +service: + httpPort: 80 + + ## If service.type is not set to NodePort, the following statement + ## will be ignored. + ## + # nodePort: 32015 + + ## Service type can be set to ClusterIP, NodePort or LoadBalancer. + ## + type: ClusterIP + + ## Drone Service annotations + ## + # annotations: + # service.beta.kubernetes.io/aws-load-balancer-backend-protocol: http + # service.beta.kubernetes.io/aws-load-balancer-ssl-cert: arn:aws:acm:xx-xxxx-x:xxxxxxxxxxx:certificate/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx + # external-dns.alpha.kubernetes.io/hostname: drone.domain.tld. + +ingress: + ## If true, Drone Ingress will be created. + ## + enabled: false + + ## Drone Ingress annotations + ## + # annotations: + # kubernetes.io/ingress.class: nginx + # kubernetes.io/tls-acme: 'true' + + ## Drone hostnames must be provided if Ingress is enabled + ## + # hosts: + # - drone.domain.io + + ## Drone Ingress TLS configuration secrets + ## Must be manually created in the namespace + ## + # tls: + # - secretName: drone-tls + # hosts: + # - drone.domain.io + +server: + ## If not set, it will be autofilled with the cluster host. + ## Host must be in "://" format. + ## + # host: "https://drone.domain.io" + + ## Drone server configuration. + ## Values in here get injected as environment variables. + ## ref: http://readme.drone.io/admin/installation-reference + ## + env: + DRONE_DEBUG: "false" + + + ## Drone requires some environment variables to bootstrap the + ## git service or it won't start up. + ## Uncomment this and add your own custom configuration. + ## + # DRONE_PROVIDER: "github" + # DRONE_OPEN: "true" + # DRONE_GITHUB: "true" + # DRONE_ORGS: "my-github-org,my-other-github-org" + # DRONE_ADMIN:"admin-1,admin-2" + # DRONE_GITHUB_CLIENT: "github-oauth2-client-id" + + ## Secret environment variables are configured in `server.envSecrets`. + ## Each item in `server.envSecrets` references a Kubernetes Secret. + ## These Secrets should be created before they are referenced. + ## +# to use this existing Secrets if this is active the values in envSecrets is ignored +# exstingSecret: + +## Uncomment or add to these to create a secret used by the drone deployment. For those inclined for better security let the chart genreate the secret copy it to a different secret outside then then remove the senistive values but keep the keys then set the exisitng secret value. +envSecrets: + DRONE_DATABASE_DRIVER: "sqlite3" + DRONE_DATABASE_DATASOURCE: "/var/lib/drone/drone.sqlite" +# DRONE_RPC_SECRET: +# +# if using github Authentication +# DRONE_GITHUB_CLIENT_ID: +# DRONE_GITHUB_CLIENT_SECRET: +# +# if using gitea +# DRONE_GITEA_SERVER: +# +# if you want drone to authenticate git always (ex: for private repos) +# DRONE_GIT_ALWAYS_AUTH: "" +#If using postgres +# DRONE_DATABASE_DATASOURCE: postgres://user:password@postgres-db-postgresql.dev.svc.cluster.local:5432/postgres?sslmode=disable + + annotations: {} + + ## CPU and memory limits for drone server + ## + resources: {} + # requests: + # memory: 32Mi + # cpu: 40m + # limits: + # memory: 2Gi + # cpu: 1 + + ## Use an alternate scheduler, e.g. "stork". + ## ref: https://kubernetes.io/docs/tasks/administer-cluster/configure-multiple-schedulers/ + ## + # schedulerName: + + ## Pod scheduling preferences. + ## ref: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#affinity-and-anti-affinity + ## + affinity: {} + + ## Node labels for pod assignment + ## ref: https://kubernetes.io/docs/user-guide/node-selection + ## + nodeSelector: {} + + ## additional siecar containers, e. g. for a database proxy, such as Google's cloudsql-proxy. + ## ex: https://github.com/kubernetes/charts/tree/master/stable/keycloak + ## + extraContainers: | + + ## additional volumes, e. g. for secrets used in an extraContainers. + ## + extraVolumes: | + +## Enable scraping of the /metrics endpoint for Prometheus +metrics: + prometheus: + enabled: false + +persistence: + enabled: false + + ## A manually managed Persistent Volume and Claim + ## Requires persistence.enabled: true + ## If defined, PVC must be created manually before volume will be bound + #existingClaim: + + ## rabbitmq data Persistent Volume Storage Class + ## If defined, storageClassName: + ## If set to "-", storageClassName: "", which disables dynamic provisioning + ## If undefined (the default) or set to null, no storageClassName spec is + ## set, choosing the default provisioner. (gp2 on AWS, standard on + ## GKE, AWS & OpenStack) + ## + # storageClass: "-" + accessMode: ReadWriteOnce + size: 1Gi + +rbac: + ## Specifies whether RBAC resources should be created + create: true + ## RBAC api version (v1, v1beta1, or v1alpha1) + apiVersion: v1 + +serviceAccount: + ## Specifies whether a ServiceAccount should be created + create: true + ## The name of the ServiceAccount to use. + ## If not set and create is true, a name is generated using the fullname template + name: From bd37fec3574ae20ea69b073e551bbcf274c878c8 Mon Sep 17 00:00:00 2001 From: jfelten Date: Thu, 20 Dec 2018 09:41:57 -0800 Subject: [PATCH 02/67] fix formatting --- .drone.yml | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/.drone.yml b/.drone.yml index 2f3a3d4..d7f99a1 100644 --- a/.drone.yml +++ b/.drone.yml @@ -1,7 +1,7 @@ kind: pipeline name: helm workspace: -base: / +base: "/" steps: - name: helm lint image: dtzar/helm-kubectl @@ -11,34 +11,34 @@ steps: - name: dry run image: dtzar/helm-kubectl commands: - - helm install . -n ${DRONE_REPO_NAME}-${DRONE_COMMIT_SHA} --namespace: helm-test --dry-run + - "helm install . -n ${DRONE_REPO_NAME}-${DRONE_COMMIT_SHA} --namespace: helm-test --dry-run" - go build -o output - chmod +x output - name: install image: dtzar/helm-kubectl commands: - - helm delete ${DRONE_REPO_NAME}-${DRONE_COMMIT_SHA} --purge - - helm install . -n ${DRONE_REPO_NAME}-${DRONE_COMMIT_SHA} + - "helm delete ${DRONE_REPO_NAME}-${DRONE_COMMIT_SHA} --purge" + - "helm install . -n ${DRONE_REPO_NAME}-${DRONE_COMMIT_SHA}" - name: helm test image: dtzar/helm-kubectl commands: - - helm test ${DRONE_REPO_NAME}-${DRONE_COMMIT_SHA} --cleanup + - "helm test ${DRONE_REPO_NAME}-${DRONE_COMMIT_SHA} --cleanup" - name: helm update image: dtzar/helm-kubectl commands: - - helm update ${DRONE_REPO_NAME}-${DRONE_COMMIT_SHA} . + - "helm update ${DRONE_REPO_NAME}-${DRONE_COMMIT_SHA} ." - name: cleanup image: dtzar/helm-kubectl commands: - - helm delete ${DRONE_REPO_NAME}-${DRONE_COMMIT_SHA} --purge + - "helm delete ${DRONE_REPO_NAME}-${DRONE_COMMIT_SHA} --purge" -- name: publish - image: keyporttech/chart_publisher - environment: - CHART_NAME: drone_helm_chart - commands: - - publish +# - name: publish +# image: keyporttech/chart_publisher +# environment: +# CHART_NAME: drone_helm_chart +# commands: +# - publish From b829580877631ef45c25a54dff1c6197664eafe3 Mon Sep 17 00:00:00 2001 From: jfelten Date: Thu, 20 Dec 2018 09:44:54 -0800 Subject: [PATCH 03/67] for ci script --- .drone.yml | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) diff --git a/.drone.yml b/.drone.yml index d7f99a1..e486a7d 100644 --- a/.drone.yml +++ b/.drone.yml @@ -3,35 +3,33 @@ name: helm workspace: base: "/" steps: -- name: helm lint +- name: "helm lint" image: dtzar/helm-kubectl commands: - - helm lint + - "helm lint" -- name: dry run +- name: "dry run" image: dtzar/helm-kubectl commands: - "helm install . -n ${DRONE_REPO_NAME}-${DRONE_COMMIT_SHA} --namespace: helm-test --dry-run" - - go build -o output - - chmod +x output -- name: install +- name: "install" image: dtzar/helm-kubectl commands: - "helm delete ${DRONE_REPO_NAME}-${DRONE_COMMIT_SHA} --purge" - "helm install . -n ${DRONE_REPO_NAME}-${DRONE_COMMIT_SHA}" -- name: helm test +- name: "helm test" image: dtzar/helm-kubectl commands: - "helm test ${DRONE_REPO_NAME}-${DRONE_COMMIT_SHA} --cleanup" -- name: helm update +- name: "helm update" image: dtzar/helm-kubectl commands: - "helm update ${DRONE_REPO_NAME}-${DRONE_COMMIT_SHA} ." -- name: cleanup +- name: "cleanup" image: dtzar/helm-kubectl commands: - "helm delete ${DRONE_REPO_NAME}-${DRONE_COMMIT_SHA} --purge" From de4787ca25d786de4803b9bb268303e6bd851440 Mon Sep 17 00:00:00 2001 From: jfelten Date: Thu, 20 Dec 2018 22:51:01 -0800 Subject: [PATCH 04/67] add rbac permissions when setting namespace --- .drone.yml | 2 +- role-binding.yaml | 6 ++++++ role.yaml | 2 ++ 3 files changed, 9 insertions(+), 1 deletion(-) diff --git a/.drone.yml b/.drone.yml index e486a7d..b824a47 100644 --- a/.drone.yml +++ b/.drone.yml @@ -1,5 +1,5 @@ kind: pipeline -name: helm +name: "helm check" workspace: base: "/" steps: diff --git a/role-binding.yaml b/role-binding.yaml index b1f6547..720ddb0 100644 --- a/role-binding.yaml +++ b/role-binding.yaml @@ -13,7 +13,13 @@ roleRef: kind: Role name: {{ template "drone.fullname" . }} subjects: +{{- if .Values.env.DRONE_NAMESPACE }} +- kind: ServiceAccount + name: {{ template "drone.serviceAccountName" . }} + namespace: {{ .Values.env.DRONE_NAMESPACE }} +{{ else }} - kind: ServiceAccount name: {{ template "drone.serviceAccountName" . }} namespace: {{ .Release.Namespace }} +{{ end -}} {{ end }} diff --git a/role.yaml b/role.yaml index f69b4a7..f90f9b2 100644 --- a/role.yaml +++ b/role.yaml @@ -11,8 +11,10 @@ metadata: rules: - apiGroups: - extensions + - batch resources: - deployments + - jobs verbs: - get - list From 3975183834d8ab6442d0ee15d37d87b02aff1b4e Mon Sep 17 00:00:00 2001 From: jfelten Date: Thu, 20 Dec 2018 23:06:26 -0800 Subject: [PATCH 05/67] fix roles for namespace --- role-binding.yaml | 4 ++-- role.yaml | 1 + service-account.yaml | 3 +++ 3 files changed, 6 insertions(+), 2 deletions(-) diff --git a/role-binding.yaml b/role-binding.yaml index 720ddb0..631226e 100644 --- a/role-binding.yaml +++ b/role-binding.yaml @@ -13,10 +13,10 @@ roleRef: kind: Role name: {{ template "drone.fullname" . }} subjects: -{{- if .Values.env.DRONE_NAMESPACE }} +{{- if .Values.server.env.DRONE_NAMESPACE }} - kind: ServiceAccount name: {{ template "drone.serviceAccountName" . }} - namespace: {{ .Values.env.DRONE_NAMESPACE }} + namespace: {{ .Values.server.env.DRONE_NAMESPACE }} {{ else }} - kind: ServiceAccount name: {{ template "drone.serviceAccountName" . }} diff --git a/role.yaml b/role.yaml index f90f9b2..c04d5da 100644 --- a/role.yaml +++ b/role.yaml @@ -16,6 +16,7 @@ rules: - deployments - jobs verbs: + - create - get - list - patch diff --git a/service-account.yaml b/service-account.yaml index 068b0dc..c8add0f 100644 --- a/service-account.yaml +++ b/service-account.yaml @@ -3,6 +3,9 @@ apiVersion: v1 kind: ServiceAccount metadata: name: {{ template "drone.serviceAccountName" . }} + {{- if .Values.server.env.DRONE_NAMESPACE }} + namespace: {{ .Values.server.env.DRONE_NAMESPACE }} + {{- end }} labels: app: {{ template "drone.name" . }} chart: "{{ .Chart.Name }}-{{ .Chart.Version }}" From a570768b133c8d65a59ec0fd11d5225430e87648 Mon Sep 17 00:00:00 2001 From: jfelten Date: Thu, 20 Dec 2018 23:23:45 -0800 Subject: [PATCH 06/67] change to clusterrole --- role-binding.yaml | 9 +-------- role.yaml | 2 +- service-account.yaml | 3 --- 3 files changed, 2 insertions(+), 12 deletions(-) diff --git a/role-binding.yaml b/role-binding.yaml index 631226e..91b6401 100644 --- a/role-binding.yaml +++ b/role-binding.yaml @@ -1,6 +1,6 @@ {{ if .Values.rbac.create }} apiVersion: rbac.authorization.k8s.io/{{ required "A valid .Values.rbac.apiVersion entry required!" .Values.rbac.apiVersion }} -kind: RoleBinding +kind: ClusterRoleBinding metadata: name: {{ template "drone.fullname" . }} labels: @@ -13,13 +13,6 @@ roleRef: kind: Role name: {{ template "drone.fullname" . }} subjects: -{{- if .Values.server.env.DRONE_NAMESPACE }} - kind: ServiceAccount name: {{ template "drone.serviceAccountName" . }} - namespace: {{ .Values.server.env.DRONE_NAMESPACE }} -{{ else }} -- kind: ServiceAccount - name: {{ template "drone.serviceAccountName" . }} - namespace: {{ .Release.Namespace }} -{{ end -}} {{ end }} diff --git a/role.yaml b/role.yaml index c04d5da..9825088 100644 --- a/role.yaml +++ b/role.yaml @@ -1,6 +1,6 @@ {{ if .Values.rbac.create }} apiVersion: rbac.authorization.k8s.io/{{ required "A valid .Values.rbac.apiVersion entry required!" .Values.rbac.apiVersion }} -kind: Role +kind: ClusterRole metadata: name: {{ template "drone.fullname" . }} labels: diff --git a/service-account.yaml b/service-account.yaml index c8add0f..068b0dc 100644 --- a/service-account.yaml +++ b/service-account.yaml @@ -3,9 +3,6 @@ apiVersion: v1 kind: ServiceAccount metadata: name: {{ template "drone.serviceAccountName" . }} - {{- if .Values.server.env.DRONE_NAMESPACE }} - namespace: {{ .Values.server.env.DRONE_NAMESPACE }} - {{- end }} labels: app: {{ template "drone.name" . }} chart: "{{ .Chart.Name }}-{{ .Chart.Version }}" From edf2aedbc892f32a9818f86ed86a34a706f9c207 Mon Sep 17 00:00:00 2001 From: jfelten Date: Thu, 20 Dec 2018 23:32:47 -0800 Subject: [PATCH 07/67] correct data path --- deployment-server.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/deployment-server.yaml b/deployment-server.yaml index c1025bf..7730cf7 100644 --- a/deployment-server.yaml +++ b/deployment-server.yaml @@ -81,7 +81,7 @@ spec: {{ toYaml .Values.server.resources | indent 10 }} volumeMounts: - name: data - mountPath: /var/lib/drone + mountPath: /data {{- with .Values.server.extraContainers }} {{ tpl . $ | indent 6 }} {{- end }} From 0881bde38526a2e3f7a576ad7663d48e57bb032b Mon Sep 17 00:00:00 2001 From: jfelten Date: Thu, 20 Dec 2018 23:34:30 -0800 Subject: [PATCH 08/67] rename --- role-binding.yaml => clusterrole-binding.yaml | 0 role.yaml => clusterrole.yaml | 0 2 files changed, 0 insertions(+), 0 deletions(-) rename role-binding.yaml => clusterrole-binding.yaml (100%) rename role.yaml => clusterrole.yaml (100%) diff --git a/role-binding.yaml b/clusterrole-binding.yaml similarity index 100% rename from role-binding.yaml rename to clusterrole-binding.yaml diff --git a/role.yaml b/clusterrole.yaml similarity index 100% rename from role.yaml rename to clusterrole.yaml From 38ceb6fb21b1661ebf6d0bd7ac773ef75d480772 Mon Sep 17 00:00:00 2001 From: jfelten Date: Fri, 21 Dec 2018 00:03:46 -0800 Subject: [PATCH 09/67] change back to clusterrole --- Chart.yaml | 4 ++-- OWNERS | 6 ++++-- clusterrole-binding.yaml | 2 +- clusterrole.yaml | 8 +++----- values.yaml | 20 ++------------------ 5 files changed, 12 insertions(+), 28 deletions(-) diff --git a/Chart.yaml b/Chart.yaml index 402b960..4191cf3 100644 --- a/Chart.yaml +++ b/Chart.yaml @@ -1,8 +1,8 @@ name: drone home: https://drone.io/ icon: https://drone.io/apple-touch-icon.png -version: 1.7.5 -appVersion: 0.8.9 +version: 1.0.0-rc.3 +appVersion: 1.0.0-rc.3 description: Drone is a Continuous Delivery system built on container technology keywords: - continuous-delivery diff --git a/OWNERS b/OWNERS index ce90a4a..3b987ae 100644 --- a/OWNERS +++ b/OWNERS @@ -1,4 +1,6 @@ approvers: -- christian-roggia +- jfelten +- peter-lamanna reviewers: -- christian-roggia +- jfelten +- peter-lamanna diff --git a/clusterrole-binding.yaml b/clusterrole-binding.yaml index 91b6401..324f96d 100644 --- a/clusterrole-binding.yaml +++ b/clusterrole-binding.yaml @@ -1,6 +1,6 @@ {{ if .Values.rbac.create }} apiVersion: rbac.authorization.k8s.io/{{ required "A valid .Values.rbac.apiVersion entry required!" .Values.rbac.apiVersion }} -kind: ClusterRoleBinding +kind: RoleBinding metadata: name: {{ template "drone.fullname" . }} labels: diff --git a/clusterrole.yaml b/clusterrole.yaml index 9825088..eeb3a0b 100644 --- a/clusterrole.yaml +++ b/clusterrole.yaml @@ -1,6 +1,6 @@ {{ if .Values.rbac.create }} apiVersion: rbac.authorization.k8s.io/{{ required "A valid .Values.rbac.apiVersion entry required!" .Values.rbac.apiVersion }} -kind: ClusterRole +kind: Role metadata: name: {{ template "drone.fullname" . }} labels: @@ -9,11 +9,8 @@ metadata: release: "{{ .Release.Name }}" heritage: "{{ .Release.Service }}" rules: - - apiGroups: - - extensions - - batch + - apiGroups: [""] resources: - - deployments - jobs verbs: - create @@ -21,4 +18,5 @@ rules: - list - patch - update + - delete {{ end }} diff --git a/values.yaml b/values.yaml index 83c08d4..5674614 100644 --- a/values.yaml +++ b/values.yaml @@ -1,4 +1,4 @@ -appVersion: "0.8.6" +appVersion: "1.0.0-rc.3" images: ## The official drone (server) image, change tag to use a different version. @@ -6,23 +6,7 @@ images: ## server: repository: "docker.io/drone/drone" - tag: 0.8.9 - pullPolicy: IfNotPresent - - ## The official drone (agent) image, change tag to use a different version. - ## ref: https://hub.docker.com/r/drone/agent/tags/ - ## - agent: - repository: "docker.io/drone/agent" - tag: 0.8.9 - pullPolicy: IfNotPresent - - ## The official docker (dind) image, change tag to use a different version. - ## ref: https://hub.docker.com/r/library/docker/tags/ - ## - dind: - repository: "docker.io/library/docker" - tag: 18.06.1-ce-dind + tag: 1.0.0-rc.3 pullPolicy: IfNotPresent service: From 5e22b246e850530fadbc3193d73a13be1ec56188 Mon Sep 17 00:00:00 2001 From: jfelten Date: Fri, 21 Dec 2018 00:14:14 -0800 Subject: [PATCH 10/67] rename --- clusterrole-binding.yaml => role-binding.yaml | 0 clusterrole.yaml => role.yaml | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) rename clusterrole-binding.yaml => role-binding.yaml (100%) rename clusterrole.yaml => role.yaml (95%) diff --git a/clusterrole-binding.yaml b/role-binding.yaml similarity index 100% rename from clusterrole-binding.yaml rename to role-binding.yaml diff --git a/clusterrole.yaml b/role.yaml similarity index 95% rename from clusterrole.yaml rename to role.yaml index eeb3a0b..6d0d93b 100644 --- a/clusterrole.yaml +++ b/role.yaml @@ -9,7 +9,7 @@ metadata: release: "{{ .Release.Name }}" heritage: "{{ .Release.Service }}" rules: - - apiGroups: [""] + - apiGroups: ["batch"] resources: - jobs verbs: From f256eb579b8b6cba88607ee8f1e8164fbe721aca Mon Sep 17 00:00:00 2001 From: jfelten Date: Fri, 21 Dec 2018 00:25:21 -0800 Subject: [PATCH 11/67] clean up --- deployment-server.yaml | 102 ------------------------------------ ingress.yaml | 40 -------------- pvc.yaml | 19 ------- role-binding.yaml | 18 ------- role.yaml | 22 -------- secrets.yaml | 16 ------ service-account.yaml | 11 ---- service.yaml | 33 ------------ templates/role-binding.yaml | 1 - templates/role.yaml | 7 +-- 10 files changed, 4 insertions(+), 265 deletions(-) delete mode 100644 deployment-server.yaml delete mode 100644 ingress.yaml delete mode 100644 pvc.yaml delete mode 100644 role-binding.yaml delete mode 100644 role.yaml delete mode 100644 secrets.yaml delete mode 100644 service-account.yaml delete mode 100644 service.yaml diff --git a/deployment-server.yaml b/deployment-server.yaml deleted file mode 100644 index 7730cf7..0000000 --- a/deployment-server.yaml +++ /dev/null @@ -1,102 +0,0 @@ -apiVersion: extensions/v1beta1 -kind: Deployment -metadata: - name: {{ template "drone.fullname" . }}-server - labels: - app: {{ template "drone.name" . }} - chart: "{{ .Chart.Name }}-{{ .Chart.Version }}" - release: "{{ .Release.Name }}" - heritage: "{{ .Release.Service }}" - component: server -spec: - replicas: 1 - template: - metadata: - annotations: - checksum/secrets: {{ include (print $.Template.BasePath "/secrets.yaml") . | sha256sum }} -{{- if .Values.metrics.prometheus.enabled }} - prometheus.io/scrape: "true" - prometheus.io/port: "8000" -{{- end }} -{{- if .Values.server.annotations }} -{{ toYaml .Values.server.annotations | indent 8 }} -{{- end }} - labels: - app: {{ template "drone.name" . }} - release: "{{ .Release.Name }}" - component: server - spec: -{{- if .Values.server.schedulerName }} - schedulerName: "{{ .Values.server.schedulerName }}" -{{- end }} -{{- if .Values.server.affinity }} - affinity: -{{ toYaml .Values.server.affinity | indent 8 }} -{{- end }} -{{- if .Values.server.nodeSelector }} - nodeSelector: -{{ toYaml .Values.server.nodeSelector | indent 8 }} -{{- end }} - serviceAccountName: {{ template "drone.serviceAccountName" . }} - containers: - - name: {{ template "drone.fullname" . }}-server - image: "{{ .Values.images.server.repository }}:{{ .Values.images.server.tag }}" - imagePullPolicy: {{ .Values.images.server.pullPolicy }} - env: - - name: DRONE_KUBERNETES_ENABLED - value: "true" - {{- if not (.Values.server.env.DRONE_KUBERNETES_NAMESPACE) }} - - name: DRONE_KUBERNETES_NAMESPACE - value: {{ .Release.Namespace }} - {{ end -}} - - {{- range $key, $value := .Values.server.envSecrets }} - - name: {{ $key }} - valueFrom: - secretKeyRef: - {{- if $.Values.existingSecret }} - name: {{ $.Values.existingSecret }} - {{ else }} - name: {{ template "drone.fullname" $ }} - {{ end -}} - key: {{ $key }} - {{- end }} - {{- range $key, $value := .Values.server.env }} - - name: {{ $key }} - value: {{ $value | quote }} - {{- end }} - ports: - - name: http - {{- if not (.Values.server.env.DRONE_SERVER_PORT) }} - containerPort: 80 - {{ else }} - containerPort: {{ .Values.server.env.DRONE_SERVER_PORT }} - {{ end -}} - protocol: TCP - livenessProbe: - httpGet: - path: / - port: http - resources: -{{ toYaml .Values.server.resources | indent 10 }} - volumeMounts: - - name: data - mountPath: /data -{{- with .Values.server.extraContainers }} -{{ tpl . $ | indent 6 }} -{{- end }} - volumes: - - name: data - {{- if .Values.persistence.enabled }} - {{- if .Values.persistence.directVolumeMount }} -{{ tpl .Values.persistence.directVolumeMount . | indent 8 }} - {{- else }} - persistentVolumeClaim: - claimName: {{ .Values.persistence.existingClaim | default (include "drone.fullname" .) }} - {{- end }} - {{- else }} - emptyDir: {} - {{- end -}} -{{- with .Values.server.extraVolumes }} -{{ tpl . $ | indent 6 }} -{{- end }} diff --git a/ingress.yaml b/ingress.yaml deleted file mode 100644 index 08883b7..0000000 --- a/ingress.yaml +++ /dev/null @@ -1,40 +0,0 @@ -{{- if .Values.ingress.enabled -}} -{{- $fullName := include "drone.fullname" . }} -{{- $httpPort := .Values.service.httpPort }} -apiVersion: extensions/v1beta1 -kind: Ingress -metadata: - annotations: - {{- range $key, $value := .Values.ingress.annotations }} - {{ $key }}: {{ $value | quote }} - {{- end }} - labels: - app: {{ template "drone.name" . }} - heritage: "{{ .Release.Service }}" - release: "{{ .Release.Name }}" - chart: "{{ .Chart.Name }}-{{ .Chart.Version }}" - name: {{ template "drone.fullname" . }} -spec: - rules: - {{- range .Values.ingress.hosts }} - - host: {{ . }} - http: - paths: - {{- if index $.Values.ingress "annotations" }} - {{- if eq (index $.Values.ingress.annotations "kubernetes.io/ingress.class" | default "") "gce" "alb" }} - - path: /* - {{- else }}{{/* Has annotations but ingress class is not "gce" nor "alb" */}} - - path: / - {{- end }} - {{- else}}{{/* Has no annotations */}} - - path: / - {{- end }} - backend: - serviceName: {{ $fullName }} - servicePort: {{ $httpPort }} - {{- end -}} - {{- if .Values.ingress.tls }} - tls: -{{ toYaml .Values.ingress.tls | indent 4 }} - {{- end -}} -{{- end -}} diff --git a/pvc.yaml b/pvc.yaml deleted file mode 100644 index 22c4cbf..0000000 --- a/pvc.yaml +++ /dev/null @@ -1,19 +0,0 @@ -{{- if and .Values.persistence.enabled (not .Values.persistence.existingClaim) }} -kind: PersistentVolumeClaim -apiVersion: v1 -metadata: - name: {{ template "drone.fullname" . }} -spec: - accessModes: - - {{ .Values.persistence.accessMode | quote }} - resources: - requests: - storage: {{ .Values.persistence.size | quote }} -{{- if .Values.persistence.storageClass }} -{{- if (eq "-" .Values.persistence.storageClass) }} - storageClassName: "" -{{- else }} - storageClassName: "{{ .Values.persistence.storageClass }}" -{{- end }} -{{- end }} -{{- end }} diff --git a/role-binding.yaml b/role-binding.yaml deleted file mode 100644 index 324f96d..0000000 --- a/role-binding.yaml +++ /dev/null @@ -1,18 +0,0 @@ -{{ if .Values.rbac.create }} -apiVersion: rbac.authorization.k8s.io/{{ required "A valid .Values.rbac.apiVersion entry required!" .Values.rbac.apiVersion }} -kind: RoleBinding -metadata: - name: {{ template "drone.fullname" . }} - labels: - app: {{ template "drone.name" . }} - chart: "{{ .Chart.Name }}-{{ .Chart.Version }}" - release: "{{ .Release.Name }}" - heritage: "{{ .Release.Service }}" -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: Role - name: {{ template "drone.fullname" . }} -subjects: -- kind: ServiceAccount - name: {{ template "drone.serviceAccountName" . }} -{{ end }} diff --git a/role.yaml b/role.yaml deleted file mode 100644 index 6d0d93b..0000000 --- a/role.yaml +++ /dev/null @@ -1,22 +0,0 @@ -{{ if .Values.rbac.create }} -apiVersion: rbac.authorization.k8s.io/{{ required "A valid .Values.rbac.apiVersion entry required!" .Values.rbac.apiVersion }} -kind: Role -metadata: - name: {{ template "drone.fullname" . }} - labels: - app: {{ template "drone.name" . }} - chart: "{{ .Chart.Name }}-{{ .Chart.Version }}" - release: "{{ .Release.Name }}" - heritage: "{{ .Release.Service }}" -rules: - - apiGroups: ["batch"] - resources: - - jobs - verbs: - - create - - get - - list - - patch - - update - - delete -{{ end }} diff --git a/secrets.yaml b/secrets.yaml deleted file mode 100644 index a105a33..0000000 --- a/secrets.yaml +++ /dev/null @@ -1,16 +0,0 @@ -{{- if (not .Values.existingSecret) }} -apiVersion: v1 -kind: Secret -metadata: - name: {{ template "drone.fullname" . }} - labels: - app: {{ template "drone.name" . }} - chart: "{{ .Chart.Name }}-{{ .Chart.Version }}" - release: "{{ .Release.Name }}" - heritage: "{{ .Release.Service }}" -type: Opaque -data: - {{- range $key, $value := .Values.server.envSecrets }} - {{ $key }}: {{ $value | b64enc }} - {{- end }} -{{ end }} diff --git a/service-account.yaml b/service-account.yaml deleted file mode 100644 index 068b0dc..0000000 --- a/service-account.yaml +++ /dev/null @@ -1,11 +0,0 @@ -{{ if .Values.serviceAccount.create }} -apiVersion: v1 -kind: ServiceAccount -metadata: - name: {{ template "drone.serviceAccountName" . }} - labels: - app: {{ template "drone.name" . }} - chart: "{{ .Chart.Name }}-{{ .Chart.Version }}" - release: "{{ .Release.Name }}" - heritage: "{{ .Release.Service }}" -{{ end }} diff --git a/service.yaml b/service.yaml deleted file mode 100644 index d89e391..0000000 --- a/service.yaml +++ /dev/null @@ -1,33 +0,0 @@ -apiVersion: v1 -kind: Service -metadata: - name: {{ template "drone.fullname" . }} - annotations: - {{- range $key, $value := .Values.service.annotations }} - {{ $key }}: {{ $value | quote }} - {{- end }} - labels: - app: {{ template "drone.name" . }} - chart: "{{ .Chart.Name }}-{{ .Chart.Version }}" - release: "{{ .Release.Name }}" - heritage: "{{ .Release.Service }}" -spec: - type: {{ .Values.service.type }} - ports: - - name: http - port: {{ .Values.service.httpPort }} - {{- if not (.Values.server.env.DRONE_SERVER_PORT) }} - targetPort: 80 - {{ else }} - targetPort: {{ .Values.server.env.DRONE_SERVER_PORT }} - {{ end -}} -{{- if hasKey .Values.service "nodePort" }} - nodePort: {{ .Values.service.nodePort }} -{{- end }} - - name: grpc - port: 9000 - targetPort: 9000 - selector: - app: {{ template "drone.name" . }} - release: {{ .Release.Name | quote }} - component: server diff --git a/templates/role-binding.yaml b/templates/role-binding.yaml index b1f6547..324f96d 100644 --- a/templates/role-binding.yaml +++ b/templates/role-binding.yaml @@ -15,5 +15,4 @@ roleRef: subjects: - kind: ServiceAccount name: {{ template "drone.serviceAccountName" . }} - namespace: {{ .Release.Namespace }} {{ end }} diff --git a/templates/role.yaml b/templates/role.yaml index f69b4a7..6d0d93b 100644 --- a/templates/role.yaml +++ b/templates/role.yaml @@ -9,13 +9,14 @@ metadata: release: "{{ .Release.Name }}" heritage: "{{ .Release.Service }}" rules: - - apiGroups: - - extensions + - apiGroups: ["batch"] resources: - - deployments + - jobs verbs: + - create - get - list - patch - update + - delete {{ end }} From 98830e09c4957414cc69a899bb7688cc129a50ae Mon Sep 17 00:00:00 2001 From: jfelten Date: Fri, 21 Dec 2018 00:47:42 -0800 Subject: [PATCH 12/67] simplify --- .drone.yml | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/.drone.yml b/.drone.yml index b824a47..87e9786 100644 --- a/.drone.yml +++ b/.drone.yml @@ -1,7 +1,6 @@ kind: pipeline -name: "helm check" -workspace: -base: "/" +name: helm-check + steps: - name: "helm lint" image: dtzar/helm-kubectl From 7e2a052bc16c648969738cbb178b08cf14cbf609 Mon Sep 17 00:00:00 2001 From: jfelten Date: Fri, 21 Dec 2018 07:17:43 -0800 Subject: [PATCH 13/67] add rpc env variables --- templates/deployment-server.yaml | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/templates/deployment-server.yaml b/templates/deployment-server.yaml index c1025bf..b555e58 100644 --- a/templates/deployment-server.yaml +++ b/templates/deployment-server.yaml @@ -48,8 +48,11 @@ spec: {{- if not (.Values.server.env.DRONE_KUBERNETES_NAMESPACE) }} - name: DRONE_KUBERNETES_NAMESPACE value: {{ .Release.Namespace }} - {{ end -}} - + {{ end }} + - name: DRONE_RPC_PROTO + value: http + - name: DRONE_RPC_HOST + value: "{{ template "drone.fullname" . }}.{{ .Release.Namespace }}.svc.cluster.local" {{- range $key, $value := .Values.server.envSecrets }} - name: {{ $key }} valueFrom: From 3cf6ce9220f2c775dff3d2aacc50021ec2252673 Mon Sep 17 00:00:00 2001 From: jfelten Date: Fri, 21 Dec 2018 09:12:38 -0800 Subject: [PATCH 14/67] changed chart name to match dir --- Chart.yaml | 2 +- drone-cluster-role.yaml | 14 ++++++++++++++ templates/drone-cluster-role.yaml | 18 ++++++++++++++++++ 3 files changed, 33 insertions(+), 1 deletion(-) create mode 100644 drone-cluster-role.yaml create mode 100644 templates/drone-cluster-role.yaml diff --git a/Chart.yaml b/Chart.yaml index 4191cf3..95ff0d7 100644 --- a/Chart.yaml +++ b/Chart.yaml @@ -1,4 +1,4 @@ -name: drone +name: drone-helm-chart home: https://drone.io/ icon: https://drone.io/apple-touch-icon.png version: 1.0.0-rc.3 diff --git a/drone-cluster-role.yaml b/drone-cluster-role.yaml new file mode 100644 index 0000000..fcd61be --- /dev/null +++ b/drone-cluster-role.yaml @@ -0,0 +1,14 @@ +apiVersion: rbac.authorization.k8s.io/v1beta1 +kind: ClusterRoleBinding +metadata: + name: drone-runner +subjects: + - kind: ServiceAccount + # Reference to upper's `metadata.name` + name: default + # Reference to upper's `metadata.namespace` + namespace: tools +roleRef: + kind: ClusterRole + name: cluster-admin + apiGroup: rbac.authorization.k8s.io diff --git a/templates/drone-cluster-role.yaml b/templates/drone-cluster-role.yaml new file mode 100644 index 0000000..5ab8dca --- /dev/null +++ b/templates/drone-cluster-role.yaml @@ -0,0 +1,18 @@ +apiVersion: rbac.authorization.k8s.io/v1beta1 +kind: ClusterRoleBinding + name: {{ template "drone.fullname" . }} + labels: + app: {{ template "drone.name" . }} + chart: "{{ .Chart.Name }}-{{ .Chart.Version }}" + release: "{{ .Release.Name }}" + heritage: "{{ .Release.Service }}" +subjects: + - kind: ServiceAccount + # Reference to upper's `metadata.name` + name: {{ template "drone.fullname" . }} + # Reference to upper's `metadata.namespace` + namespace: "{{ .Release.Namespace }}" +roleRef: + kind: ClusterRole + name: cluster-admin + apiGroup: rbac.authorization.k8s.io From 39543f073da2b4fdcb38ca7d8552d00a9d72ea0b Mon Sep 17 00:00:00 2001 From: jfelten Date: Fri, 21 Dec 2018 09:28:11 -0800 Subject: [PATCH 15/67] use most recent helm --- .drone.yml | 10 +++++----- Chart.yaml | 6 +++--- templates/drone-cluster-role.yaml | 18 ------------------ 3 files changed, 8 insertions(+), 26 deletions(-) delete mode 100644 templates/drone-cluster-role.yaml diff --git a/.drone.yml b/.drone.yml index 87e9786..5a495b4 100644 --- a/.drone.yml +++ b/.drone.yml @@ -3,23 +3,23 @@ name: helm-check steps: - name: "helm lint" - image: dtzar/helm-kubectl + image: dtzar/helm-kubectl:2.12.0 commands: - "helm lint" - name: "dry run" - image: dtzar/helm-kubectl + image: dtzar/helm-kubectl:2.12.0 commands: - "helm install . -n ${DRONE_REPO_NAME}-${DRONE_COMMIT_SHA} --namespace: helm-test --dry-run" - name: "install" - image: dtzar/helm-kubectl + image: dtzar/helm-kubectl:2.12.0 commands: - "helm delete ${DRONE_REPO_NAME}-${DRONE_COMMIT_SHA} --purge" - "helm install . -n ${DRONE_REPO_NAME}-${DRONE_COMMIT_SHA}" - name: "helm test" - image: dtzar/helm-kubectl + image: dtzar/helm-kubectl:2.12.0 commands: - "helm test ${DRONE_REPO_NAME}-${DRONE_COMMIT_SHA} --cleanup" @@ -29,7 +29,7 @@ steps: - "helm update ${DRONE_REPO_NAME}-${DRONE_COMMIT_SHA} ." - name: "cleanup" - image: dtzar/helm-kubectl + image: dtzar/helm-kubectl:2.12.0 commands: - "helm delete ${DRONE_REPO_NAME}-${DRONE_COMMIT_SHA} --purge" diff --git a/Chart.yaml b/Chart.yaml index 95ff0d7..bc1a616 100644 --- a/Chart.yaml +++ b/Chart.yaml @@ -1,4 +1,4 @@ -name: drone-helm-chart +name: drone home: https://drone.io/ icon: https://drone.io/apple-touch-icon.png version: 1.0.0-rc.3 @@ -15,5 +15,5 @@ keywords: sources: - https://github.com/drone/drone maintainers: -- name: christian-roggia - email: christian.roggia@gmail.com +- name: jfelten + email: john.felten@gmail.com diff --git a/templates/drone-cluster-role.yaml b/templates/drone-cluster-role.yaml deleted file mode 100644 index 5ab8dca..0000000 --- a/templates/drone-cluster-role.yaml +++ /dev/null @@ -1,18 +0,0 @@ -apiVersion: rbac.authorization.k8s.io/v1beta1 -kind: ClusterRoleBinding - name: {{ template "drone.fullname" . }} - labels: - app: {{ template "drone.name" . }} - chart: "{{ .Chart.Name }}-{{ .Chart.Version }}" - release: "{{ .Release.Name }}" - heritage: "{{ .Release.Service }}" -subjects: - - kind: ServiceAccount - # Reference to upper's `metadata.name` - name: {{ template "drone.fullname" . }} - # Reference to upper's `metadata.namespace` - namespace: "{{ .Release.Namespace }}" -roleRef: - kind: ClusterRole - name: cluster-admin - apiGroup: rbac.authorization.k8s.io From b51d9b876e45d1abfa1c0f8ab68392e2da79e5ad Mon Sep 17 00:00:00 2001 From: jfelten Date: Fri, 21 Dec 2018 09:36:31 -0800 Subject: [PATCH 16/67] conversion of helm --- .drone.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.drone.yml b/.drone.yml index 5a495b4..68e209b 100644 --- a/.drone.yml +++ b/.drone.yml @@ -5,6 +5,7 @@ steps: - name: "helm lint" image: dtzar/helm-kubectl:2.12.0 commands: + - "helm version" - "helm lint" - name: "dry run" From 6cc283c19a64d665d35e57a5adb3040e7089dbc3 Mon Sep 17 00:00:00 2001 From: jfelten Date: Fri, 21 Dec 2018 10:44:32 -0800 Subject: [PATCH 17/67] switch to our own docker image --- .drone.yml | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/.drone.yml b/.drone.yml index 68e209b..f2a69a6 100644 --- a/.drone.yml +++ b/.drone.yml @@ -3,34 +3,34 @@ name: helm-check steps: - name: "helm lint" - image: dtzar/helm-kubectl:2.12.0 + image: keyporttech/helm-builder:2.12.1 commands: - "helm version" - "helm lint" - name: "dry run" - image: dtzar/helm-kubectl:2.12.0 + image: keyporttech/helm-builder:2.12.1 commands: - "helm install . -n ${DRONE_REPO_NAME}-${DRONE_COMMIT_SHA} --namespace: helm-test --dry-run" - name: "install" - image: dtzar/helm-kubectl:2.12.0 + image: keyporttech/helm-builder:2.12.1 commands: - "helm delete ${DRONE_REPO_NAME}-${DRONE_COMMIT_SHA} --purge" - "helm install . -n ${DRONE_REPO_NAME}-${DRONE_COMMIT_SHA}" - name: "helm test" - image: dtzar/helm-kubectl:2.12.0 + image: keyporttech/helm-builder:2.12.1 commands: - "helm test ${DRONE_REPO_NAME}-${DRONE_COMMIT_SHA} --cleanup" - name: "helm update" - image: dtzar/helm-kubectl + image: keyporttech/helm-builder:2.12.1 commands: - "helm update ${DRONE_REPO_NAME}-${DRONE_COMMIT_SHA} ." - name: "cleanup" - image: dtzar/helm-kubectl:2.12.0 + image: keyporttech/helm-builder:2.12.1 commands: - "helm delete ${DRONE_REPO_NAME}-${DRONE_COMMIT_SHA} --purge" From 90bd9f9a12e4ad83ba2ccf1bd151ffdc84e823b2 Mon Sep 17 00:00:00 2001 From: jfelten Date: Fri, 21 Dec 2018 13:56:44 -0800 Subject: [PATCH 18/67] add kubectl proxy --- .drone.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.drone.yml b/.drone.yml index f2a69a6..b8b3aef 100644 --- a/.drone.yml +++ b/.drone.yml @@ -5,6 +5,7 @@ steps: - name: "helm lint" image: keyporttech/helm-builder:2.12.1 commands: + - "kubectl proxy" - "helm version" - "helm lint" From bbba938a7ed3b46781a99d1487c3a64e86f760fe Mon Sep 17 00:00:00 2001 From: jfelten Date: Fri, 21 Dec 2018 14:03:42 -0800 Subject: [PATCH 19/67] run proxy in background --- .drone.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.drone.yml b/.drone.yml index b8b3aef..beaafbb 100644 --- a/.drone.yml +++ b/.drone.yml @@ -5,7 +5,7 @@ steps: - name: "helm lint" image: keyporttech/helm-builder:2.12.1 commands: - - "kubectl proxy" + - "kubectl proxy &" - "helm version" - "helm lint" From 43f8d0bc7c7df115f6a1279f4080736e7c0412a7 Mon Sep 17 00:00:00 2001 From: jfelten Date: Fri, 21 Dec 2018 14:06:22 -0800 Subject: [PATCH 20/67] run on port 8080 --- .drone.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.drone.yml b/.drone.yml index beaafbb..eb36b09 100644 --- a/.drone.yml +++ b/.drone.yml @@ -5,7 +5,7 @@ steps: - name: "helm lint" image: keyporttech/helm-builder:2.12.1 commands: - - "kubectl proxy &" + - "kubectl proxy --port=8080 &" - "helm version" - "helm lint" From ea8637e5b62af5961164f83344061415589bc39f Mon Sep 17 00:00:00 2001 From: jfelten Date: Fri, 21 Dec 2018 14:30:41 -0800 Subject: [PATCH 21/67] add library for helm --- .drone.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.drone.yml b/.drone.yml index eb36b09..70cebf0 100644 --- a/.drone.yml +++ b/.drone.yml @@ -3,7 +3,7 @@ name: helm-check steps: - name: "helm lint" - image: keyporttech/helm-builder:2.12.1 + image: keyporttech/helm-builder:2.12.1-1 commands: - "kubectl proxy --port=8080 &" - "helm version" From 8e15c80003a78176d0966afae1c796bc3eeb215d Mon Sep 17 00:00:00 2001 From: jfelten Date: Fri, 21 Dec 2018 14:47:58 -0800 Subject: [PATCH 22/67] remove proxy --- .drone.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.drone.yml b/.drone.yml index 70cebf0..c736c9a 100644 --- a/.drone.yml +++ b/.drone.yml @@ -5,7 +5,6 @@ steps: - name: "helm lint" image: keyporttech/helm-builder:2.12.1-1 commands: - - "kubectl proxy --port=8080 &" - "helm version" - "helm lint" From 6e84576687e63cd8fd4a99677ad46f26f68e6780 Mon Sep 17 00:00:00 2001 From: jfelten Date: Sat, 22 Dec 2018 10:55:20 -0800 Subject: [PATCH 23/67] add kubernetes environment variables to runner pods --- templates/deployment-server.yaml | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/templates/deployment-server.yaml b/templates/deployment-server.yaml index b555e58..bf75f6c 100644 --- a/templates/deployment-server.yaml +++ b/templates/deployment-server.yaml @@ -45,14 +45,12 @@ spec: env: - name: DRONE_KUBERNETES_ENABLED value: "true" - {{- if not (.Values.server.env.DRONE_KUBERNETES_NAMESPACE) }} - - name: DRONE_KUBERNETES_NAMESPACE - value: {{ .Release.Namespace }} - {{ end }} - name: DRONE_RPC_PROTO value: http - name: DRONE_RPC_HOST value: "{{ template "drone.fullname" . }}.{{ .Release.Namespace }}.svc.cluster.local" + - name: DRONE_RUNNER_ENVIRON + value: "KUBERNETES_PORT_443_TCP_PROTO:${KUBERNETES_PORT_443_TCP_PROTO},KUBERNETES_PORT_443_TCP_ADDR:${KUBERNETES_PORT_443_TCP_ADDR},KUBERNETES_PORT:${KUBERNETES_PORT},KUBERNETES_SERVICE_PORT_HTTPS:${KUBERNETES_SERVICE_PORT_HTTPS},KUBERNETES_PORT_443_TCP_PORT:${KUBERNETES_PORT_443_TCP_PORT},KUBERNETES_PORT_443_TCP=${KUBERNETES_PORT_443_TCP},KUBERNETES_SERVICE_PORT:${KUBERNETES_SERVICE_PORT},KUBERNETES_SERVICE_HOST:${KUBERNETES_SERVICE_HOST}" {{- range $key, $value := .Values.server.envSecrets }} - name: {{ $key }} valueFrom: From 23427a60361c7259712c9efca7532e75cf0d2830 Mon Sep 17 00:00:00 2001 From: jfelten Date: Sat, 22 Dec 2018 10:55:50 -0800 Subject: [PATCH 24/67] print out environment variables --- .drone.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.drone.yml b/.drone.yml index c736c9a..13f33bf 100644 --- a/.drone.yml +++ b/.drone.yml @@ -5,6 +5,7 @@ steps: - name: "helm lint" image: keyporttech/helm-builder:2.12.1-1 commands: + - "env" - "helm version" - "helm lint" From dfcade49dc59eb330016a0fac21e030f4383d773 Mon Sep 17 00:00:00 2001 From: jfelten Date: Sat, 22 Dec 2018 11:03:03 -0800 Subject: [PATCH 25/67] fix runner env --- templates/deployment-server.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/templates/deployment-server.yaml b/templates/deployment-server.yaml index bf75f6c..eeadf23 100644 --- a/templates/deployment-server.yaml +++ b/templates/deployment-server.yaml @@ -50,7 +50,7 @@ spec: - name: DRONE_RPC_HOST value: "{{ template "drone.fullname" . }}.{{ .Release.Namespace }}.svc.cluster.local" - name: DRONE_RUNNER_ENVIRON - value: "KUBERNETES_PORT_443_TCP_PROTO:${KUBERNETES_PORT_443_TCP_PROTO},KUBERNETES_PORT_443_TCP_ADDR:${KUBERNETES_PORT_443_TCP_ADDR},KUBERNETES_PORT:${KUBERNETES_PORT},KUBERNETES_SERVICE_PORT_HTTPS:${KUBERNETES_SERVICE_PORT_HTTPS},KUBERNETES_PORT_443_TCP_PORT:${KUBERNETES_PORT_443_TCP_PORT},KUBERNETES_PORT_443_TCP=${KUBERNETES_PORT_443_TCP},KUBERNETES_SERVICE_PORT:${KUBERNETES_SERVICE_PORT},KUBERNETES_SERVICE_HOST:${KUBERNETES_SERVICE_HOST}" + value: "KUBERNETES_PORT_443_TCP_PROTO:${KUBERNETES_PORT_443_TCP_PROTO},KUBERNETES_PORT_443_TCP_ADDR:${KUBERNETES_PORT_443_TCP_ADDR},KUBERNETES_PORT:${KUBERNETES_PORT},KUBERNETES_SERVICE_PORT_HTTPS:${KUBERNETES_SERVICE_PORT_HTTPS},KUBERNETES_PORT_443_TCP_PORT:${KUBERNETES_PORT_443_TCP_PORT},KUBERNETES_PORT_443_TCP:${KUBERNETES_PORT_443_TCP},KUBERNETES_SERVICE_PORT:${KUBERNETES_SERVICE_PORT},KUBERNETES_SERVICE_HOST:${KUBERNETES_SERVICE_HOST}" {{- range $key, $value := .Values.server.envSecrets }} - name: {{ $key }} valueFrom: From dfa34ad1c9ee0e53ff103a47e1254fa39add26b7 Mon Sep 17 00:00:00 2001 From: jfelten Date: Sat, 22 Dec 2018 15:05:56 -0800 Subject: [PATCH 26/67] add kube api secret to runner containers --- templates/deployment-server.yaml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/templates/deployment-server.yaml b/templates/deployment-server.yaml index eeadf23..6a1e97a 100644 --- a/templates/deployment-server.yaml +++ b/templates/deployment-server.yaml @@ -51,6 +51,8 @@ spec: value: "{{ template "drone.fullname" . }}.{{ .Release.Namespace }}.svc.cluster.local" - name: DRONE_RUNNER_ENVIRON value: "KUBERNETES_PORT_443_TCP_PROTO:${KUBERNETES_PORT_443_TCP_PROTO},KUBERNETES_PORT_443_TCP_ADDR:${KUBERNETES_PORT_443_TCP_ADDR},KUBERNETES_PORT:${KUBERNETES_PORT},KUBERNETES_SERVICE_PORT_HTTPS:${KUBERNETES_SERVICE_PORT_HTTPS},KUBERNETES_PORT_443_TCP_PORT:${KUBERNETES_PORT_443_TCP_PORT},KUBERNETES_PORT_443_TCP:${KUBERNETES_PORT_443_TCP},KUBERNETES_SERVICE_PORT:${KUBERNETES_SERVICE_PORT},KUBERNETES_SERVICE_HOST:${KUBERNETES_SERVICE_HOST}" + name: DRONE_RUNNER_VOLUMES + value: /var/run/secrets/kubernetes.io/serviceaccount/token:/var/run/secrets/kubernetes.io/serviceaccount/token {{- range $key, $value := .Values.server.envSecrets }} - name: {{ $key }} valueFrom: From 4e0f2d277f08b2d39c718ac41641d179b8a97dc3 Mon Sep 17 00:00:00 2001 From: jfelten Date: Sat, 22 Dec 2018 15:15:55 -0800 Subject: [PATCH 27/67] correctly mlunt service account dir --- templates/deployment-server.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/templates/deployment-server.yaml b/templates/deployment-server.yaml index 6a1e97a..d289e96 100644 --- a/templates/deployment-server.yaml +++ b/templates/deployment-server.yaml @@ -52,7 +52,7 @@ spec: - name: DRONE_RUNNER_ENVIRON value: "KUBERNETES_PORT_443_TCP_PROTO:${KUBERNETES_PORT_443_TCP_PROTO},KUBERNETES_PORT_443_TCP_ADDR:${KUBERNETES_PORT_443_TCP_ADDR},KUBERNETES_PORT:${KUBERNETES_PORT},KUBERNETES_SERVICE_PORT_HTTPS:${KUBERNETES_SERVICE_PORT_HTTPS},KUBERNETES_PORT_443_TCP_PORT:${KUBERNETES_PORT_443_TCP_PORT},KUBERNETES_PORT_443_TCP:${KUBERNETES_PORT_443_TCP},KUBERNETES_SERVICE_PORT:${KUBERNETES_SERVICE_PORT},KUBERNETES_SERVICE_HOST:${KUBERNETES_SERVICE_HOST}" name: DRONE_RUNNER_VOLUMES - value: /var/run/secrets/kubernetes.io/serviceaccount/token:/var/run/secrets/kubernetes.io/serviceaccount/token + value: /var/run/secrets/kubernetes.io/serviceaccount:/var/run/secrets/kubernetes.io/serviceaccount {{- range $key, $value := .Values.server.envSecrets }} - name: {{ $key }} valueFrom: From 2628687dad4ca3dd1886d32e3119051d051a0340 Mon Sep 17 00:00:00 2001 From: jfelten Date: Sat, 22 Dec 2018 15:17:59 -0800 Subject: [PATCH 28/67] print contents of mounted dir --- .drone.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.drone.yml b/.drone.yml index 13f33bf..da421de 100644 --- a/.drone.yml +++ b/.drone.yml @@ -5,7 +5,8 @@ steps: - name: "helm lint" image: keyporttech/helm-builder:2.12.1-1 commands: - - "env" + - "la -lA /var/run/secrets/kubernetes.io/serviceaccount" + - "env" - "helm version" - "helm lint" From de915ff81019eb5fc8cd736f3961e4cc1c086ee9 Mon Sep 17 00:00:00 2001 From: jfelten Date: Sat, 22 Dec 2018 15:19:09 -0800 Subject: [PATCH 29/67] list dir contents --- .drone.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.drone.yml b/.drone.yml index da421de..8d118fa 100644 --- a/.drone.yml +++ b/.drone.yml @@ -5,7 +5,7 @@ steps: - name: "helm lint" image: keyporttech/helm-builder:2.12.1-1 commands: - - "la -lA /var/run/secrets/kubernetes.io/serviceaccount" + - "ls -lA /var/run/secrets/kubernetes.io/serviceaccount" - "env" - "helm version" - "helm lint" From 45606e847868361d093bd76f655f756c7974d4e5 Mon Sep 17 00:00:00 2001 From: jfelten Date: Sat, 22 Dec 2018 15:35:10 -0800 Subject: [PATCH 30/67] fix drone runner dir --- templates/deployment-server.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/templates/deployment-server.yaml b/templates/deployment-server.yaml index d289e96..8ae2625 100644 --- a/templates/deployment-server.yaml +++ b/templates/deployment-server.yaml @@ -52,7 +52,7 @@ spec: - name: DRONE_RUNNER_ENVIRON value: "KUBERNETES_PORT_443_TCP_PROTO:${KUBERNETES_PORT_443_TCP_PROTO},KUBERNETES_PORT_443_TCP_ADDR:${KUBERNETES_PORT_443_TCP_ADDR},KUBERNETES_PORT:${KUBERNETES_PORT},KUBERNETES_SERVICE_PORT_HTTPS:${KUBERNETES_SERVICE_PORT_HTTPS},KUBERNETES_PORT_443_TCP_PORT:${KUBERNETES_PORT_443_TCP_PORT},KUBERNETES_PORT_443_TCP:${KUBERNETES_PORT_443_TCP},KUBERNETES_SERVICE_PORT:${KUBERNETES_SERVICE_PORT},KUBERNETES_SERVICE_HOST:${KUBERNETES_SERVICE_HOST}" name: DRONE_RUNNER_VOLUMES - value: /var/run/secrets/kubernetes.io/serviceaccount:/var/run/secrets/kubernetes.io/serviceaccount + value: "/var/run/secrets/kubernetes.io/serviceaccount:/var/run/secrets/kubernetes.io/serviceaccount" {{- range $key, $value := .Values.server.envSecrets }} - name: {{ $key }} valueFrom: From 8239da3ecbc2c41f354826871515f72c0256356c Mon Sep 17 00:00:00 2001 From: jfelten Date: Sat, 22 Dec 2018 15:47:56 -0800 Subject: [PATCH 31/67] fix typo --- templates/deployment-server.yaml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/templates/deployment-server.yaml b/templates/deployment-server.yaml index 8ae2625..dc6f9fd 100644 --- a/templates/deployment-server.yaml +++ b/templates/deployment-server.yaml @@ -51,8 +51,9 @@ spec: value: "{{ template "drone.fullname" . }}.{{ .Release.Namespace }}.svc.cluster.local" - name: DRONE_RUNNER_ENVIRON value: "KUBERNETES_PORT_443_TCP_PROTO:${KUBERNETES_PORT_443_TCP_PROTO},KUBERNETES_PORT_443_TCP_ADDR:${KUBERNETES_PORT_443_TCP_ADDR},KUBERNETES_PORT:${KUBERNETES_PORT},KUBERNETES_SERVICE_PORT_HTTPS:${KUBERNETES_SERVICE_PORT_HTTPS},KUBERNETES_PORT_443_TCP_PORT:${KUBERNETES_PORT_443_TCP_PORT},KUBERNETES_PORT_443_TCP:${KUBERNETES_PORT_443_TCP},KUBERNETES_SERVICE_PORT:${KUBERNETES_SERVICE_PORT},KUBERNETES_SERVICE_HOST:${KUBERNETES_SERVICE_HOST}" - name: DRONE_RUNNER_VOLUMES + - name: DRONE_RUNNER_VOLUMES value: "/var/run/secrets/kubernetes.io/serviceaccount:/var/run/secrets/kubernetes.io/serviceaccount" + {{- range $key, $value := .Values.server.envSecrets }} - name: {{ $key }} valueFrom: From 0f70f7176bd39c6f465452585986125bf824d19a Mon Sep 17 00:00:00 2001 From: jfelten Date: Sat, 22 Dec 2018 15:59:27 -0800 Subject: [PATCH 32/67] run container as privilieged --- templates/deployment-server.yaml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/templates/deployment-server.yaml b/templates/deployment-server.yaml index dc6f9fd..09e460b 100644 --- a/templates/deployment-server.yaml +++ b/templates/deployment-server.yaml @@ -53,6 +53,8 @@ spec: value: "KUBERNETES_PORT_443_TCP_PROTO:${KUBERNETES_PORT_443_TCP_PROTO},KUBERNETES_PORT_443_TCP_ADDR:${KUBERNETES_PORT_443_TCP_ADDR},KUBERNETES_PORT:${KUBERNETES_PORT},KUBERNETES_SERVICE_PORT_HTTPS:${KUBERNETES_SERVICE_PORT_HTTPS},KUBERNETES_PORT_443_TCP_PORT:${KUBERNETES_PORT_443_TCP_PORT},KUBERNETES_PORT_443_TCP:${KUBERNETES_PORT_443_TCP},KUBERNETES_SERVICE_PORT:${KUBERNETES_SERVICE_PORT},KUBERNETES_SERVICE_HOST:${KUBERNETES_SERVICE_HOST}" - name: DRONE_RUNNER_VOLUMES value: "/var/run/secrets/kubernetes.io/serviceaccount:/var/run/secrets/kubernetes.io/serviceaccount" + - name: DRONE_RUNNER_PRIVILEGED_IMAGES + value: "plugins/docker,plugins/ecr,keyporttech/helm-builder" {{- range $key, $value := .Values.server.envSecrets }} - name: {{ $key }} From 0d18932cd64daad8e66412b492237d16c31eebbc Mon Sep 17 00:00:00 2001 From: jfelten Date: Sat, 22 Dec 2018 20:14:20 -0800 Subject: [PATCH 33/67] add kube secrets --- .drone.yml | 3 +++ templates/deployment-server.yaml | 5 +---- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.drone.yml b/.drone.yml index 8d118fa..c21086a 100644 --- a/.drone.yml +++ b/.drone.yml @@ -4,6 +4,9 @@ name: helm-check steps: - name: "helm lint" image: keyporttech/helm-builder:2.12.1-1 + volumes: + - name: kubernetes-secrets + path: /var/run/secrets/kubernetes.io commands: - "ls -lA /var/run/secrets/kubernetes.io/serviceaccount" - "env" diff --git a/templates/deployment-server.yaml b/templates/deployment-server.yaml index 09e460b..5fd8c01 100644 --- a/templates/deployment-server.yaml +++ b/templates/deployment-server.yaml @@ -50,12 +50,9 @@ spec: - name: DRONE_RPC_HOST value: "{{ template "drone.fullname" . }}.{{ .Release.Namespace }}.svc.cluster.local" - name: DRONE_RUNNER_ENVIRON - value: "KUBERNETES_PORT_443_TCP_PROTO:${KUBERNETES_PORT_443_TCP_PROTO},KUBERNETES_PORT_443_TCP_ADDR:${KUBERNETES_PORT_443_TCP_ADDR},KUBERNETES_PORT:${KUBERNETES_PORT},KUBERNETES_SERVICE_PORT_HTTPS:${KUBERNETES_SERVICE_PORT_HTTPS},KUBERNETES_PORT_443_TCP_PORT:${KUBERNETES_PORT_443_TCP_PORT},KUBERNETES_PORT_443_TCP:${KUBERNETES_PORT_443_TCP},KUBERNETES_SERVICE_PORT:${KUBERNETES_SERVICE_PORT},KUBERNETES_SERVICE_HOST:${KUBERNETES_SERVICE_HOST}" - - name: DRONE_RUNNER_VOLUMES - value: "/var/run/secrets/kubernetes.io/serviceaccount:/var/run/secrets/kubernetes.io/serviceaccount" + value: "KUBERNETES_PORT_443_TCP_PROTO:${KUBERNETES_PORT_443_TCP_PROTO},KUBERNETES_PORT_443_TCP_ADDR:${KUBERNETES_PORT_443_TCP_ADDR},KUBERNETES_PORT:${KUBERNETES_PORT},KUBERNETES_SERVICE_PORT_HTTPS:${KUBERNETES_SERVICE_PORT_HTTPS},KUBERNETES_PORT_443_TCP_PORT:${KUBERNETES_PORT_443_TCP_PORT},KUBERNETES_PORT_443_TCP:${KUBERNETES_PORT_443_TCP},KUBERNETES_SERVICE_PORT:${KUBERNETES_SERVICE_PORT},KUBERNETES_SERVICE_HOST:${KUBERNETES_SERVICE_HOST},KUBE_API_TOKEN:$(cat /var/run/secrets/kubernetes.io/serviceaccount/token),CA_CRT:$(cat /var/run/secrets/kubernetes.io/serviceaccount/ca.crt" - name: DRONE_RUNNER_PRIVILEGED_IMAGES value: "plugins/docker,plugins/ecr,keyporttech/helm-builder" - {{- range $key, $value := .Values.server.envSecrets }} - name: {{ $key }} valueFrom: From 978ad0930ea5debf56acbf77da0ce590f45aa79f Mon Sep 17 00:00:00 2001 From: jfelten Date: Sat, 22 Dec 2018 20:18:19 -0800 Subject: [PATCH 34/67] add volume --- .drone.yml | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/.drone.yml b/.drone.yml index c21086a..cb94625 100644 --- a/.drone.yml +++ b/.drone.yml @@ -6,8 +6,10 @@ steps: image: keyporttech/helm-builder:2.12.1-1 volumes: - name: kubernetes-secrets - path: /var/run/secrets/kubernetes.io + path: /var/run/secrets/kubernetes.io/serviceaccount commands: + - "echo $KUBE_API_TOKEN >/var/run/secrets/kubernetes.io/serviceaccount/ca.crt" + - "echo $CA_CRT >/var/run/secrets/kubernetes.io/serviceaccount/token" - "ls -lA /var/run/secrets/kubernetes.io/serviceaccount" - "env" - "helm version" @@ -45,3 +47,6 @@ steps: # CHART_NAME: drone_helm_chart # commands: # - publish +volumes: +- name: kubernetes-secrets + temp: {} From e204f0ab7948000753565b22fddd851600dc0da5 Mon Sep 17 00:00:00 2001 From: jfelten Date: Sat, 22 Dec 2018 22:12:12 -0800 Subject: [PATCH 35/67] inject runner k8s runner env on startup --- templates/deployment-server.yaml | 8 ++++++-- values.yaml | 6 ++---- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/templates/deployment-server.yaml b/templates/deployment-server.yaml index 5fd8c01..bf7c1ee 100644 --- a/templates/deployment-server.yaml +++ b/templates/deployment-server.yaml @@ -49,8 +49,6 @@ spec: value: http - name: DRONE_RPC_HOST value: "{{ template "drone.fullname" . }}.{{ .Release.Namespace }}.svc.cluster.local" - - name: DRONE_RUNNER_ENVIRON - value: "KUBERNETES_PORT_443_TCP_PROTO:${KUBERNETES_PORT_443_TCP_PROTO},KUBERNETES_PORT_443_TCP_ADDR:${KUBERNETES_PORT_443_TCP_ADDR},KUBERNETES_PORT:${KUBERNETES_PORT},KUBERNETES_SERVICE_PORT_HTTPS:${KUBERNETES_SERVICE_PORT_HTTPS},KUBERNETES_PORT_443_TCP_PORT:${KUBERNETES_PORT_443_TCP_PORT},KUBERNETES_PORT_443_TCP:${KUBERNETES_PORT_443_TCP},KUBERNETES_SERVICE_PORT:${KUBERNETES_SERVICE_PORT},KUBERNETES_SERVICE_HOST:${KUBERNETES_SERVICE_HOST},KUBE_API_TOKEN:$(cat /var/run/secrets/kubernetes.io/serviceaccount/token),CA_CRT:$(cat /var/run/secrets/kubernetes.io/serviceaccount/ca.crt" - name: DRONE_RUNNER_PRIVILEGED_IMAGES value: "plugins/docker,plugins/ecr,keyporttech/helm-builder" {{- range $key, $value := .Values.server.envSecrets }} @@ -68,6 +66,12 @@ spec: - name: {{ $key }} value: {{ $value | quote }} {{- end }} + {{if .Values.server.injectK8sEnvOnRunner }} + command: ["/bin/sh","-c"] + args: [" + export DRONE_RUNNER_ENVIRON=${DRONE_RUNNER_ENVIRON}:KUBERNETES_PORT_443_TCP_PROTO:${KUBERNETES_PORT_443_TCP_PROTO},KUBERNETES_PORT_443_TCP_ADDR:${KUBERNETES_PORT_443_TCP_ADDR},KUBERNETES_PORT:${KUBERNETES_PORT},KUBERNETES_SERVICE_PORT_HTTPS:${KUBERNETES_SERVICE_PORT_HTTPS},KUBERNETES_PORT_443_TCP_PORT:${KUBERNETES_PORT_443_TCP_PORT},KUBERNETES_PORT_443_TCP:${KUBERNETES_PORT_443_TCP},KUBERNETES_SERVICE_PORT:${KUBERNETES_SERVICE_PORT},KUBERNETES_SERVICE_HOST:${KUBERNETES_SERVICE_HOST},KUBE_API_TOKEN:$(cat /var/run/secrets/kubernetes.io/serviceaccount/token),CA_CRT:$(cat /var/run/secrets/kubernetes.io/serviceaccount/ca.crt; + /bin/drone-server"] + {{ end }} ports: - name: http {{- if not (.Values.server.env.DRONE_SERVER_PORT) }} diff --git a/values.yaml b/values.yaml index 5674614..8533f96 100644 --- a/values.yaml +++ b/values.yaml @@ -53,10 +53,8 @@ ingress: # - drone.domain.io server: - ## If not set, it will be autofilled with the cluster host. - ## Host must be in "://" format. - ## - # host: "https://drone.domain.io" + ## If true injects kubenretes environment variables needed to run kubectl commands on runnners. + #injectK8sEnvOnRunners: true ## Drone server configuration. ## Values in here get injected as environment variables. From 809b4fca9b1cbce26b63f271766f884c66d26549 Mon Sep 17 00:00:00 2001 From: jfelten Date: Sat, 22 Dec 2018 23:04:46 -0800 Subject: [PATCH 36/67] inject k8s --- templates/deployment-server.yaml | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/templates/deployment-server.yaml b/templates/deployment-server.yaml index bf7c1ee..b39dd1e 100644 --- a/templates/deployment-server.yaml +++ b/templates/deployment-server.yaml @@ -66,11 +66,10 @@ spec: - name: {{ $key }} value: {{ $value | quote }} {{- end }} - {{if .Values.server.injectK8sEnvOnRunner }} + {{if .Values.server.injectK8sEnvOnRunners }} command: ["/bin/sh","-c"] args: [" - export DRONE_RUNNER_ENVIRON=${DRONE_RUNNER_ENVIRON}:KUBERNETES_PORT_443_TCP_PROTO:${KUBERNETES_PORT_443_TCP_PROTO},KUBERNETES_PORT_443_TCP_ADDR:${KUBERNETES_PORT_443_TCP_ADDR},KUBERNETES_PORT:${KUBERNETES_PORT},KUBERNETES_SERVICE_PORT_HTTPS:${KUBERNETES_SERVICE_PORT_HTTPS},KUBERNETES_PORT_443_TCP_PORT:${KUBERNETES_PORT_443_TCP_PORT},KUBERNETES_PORT_443_TCP:${KUBERNETES_PORT_443_TCP},KUBERNETES_SERVICE_PORT:${KUBERNETES_SERVICE_PORT},KUBERNETES_SERVICE_HOST:${KUBERNETES_SERVICE_HOST},KUBE_API_TOKEN:$(cat /var/run/secrets/kubernetes.io/serviceaccount/token),CA_CRT:$(cat /var/run/secrets/kubernetes.io/serviceaccount/ca.crt; - /bin/drone-server"] + export DRONE_RUNNER_ENVIRON=KUBERNETES_PORT_443_TCP_PROTO:${KUBERNETES_PORT_443_TCP_PROTO},KUBERNETES_PORT_443_TCP_ADDR:${KUBERNETES_PORT_443_TCP_ADDR},KUBERNETES_SERVICE_PORT_HTTPS:${KUBERNETES_SERVICE_PORT_HTTPS},KUBERNETES_PORT_443_TCP_PORT:${KUBERNETES_PORT_443_TCP_PORT},KUBERNETES_SERVICE_PORT:${KUBERNETES_SERVICE_PORT},KUBERNETES_SERVICE_HOST:${KUBERNETES_SERVICE_HOST},KUBE_API_TOKEN:\"$(cat /var/run/secrets/kubernetes.io/serviceaccount/token)\",CA_CRT:\"$(cat /var/run/secrets/kubernetes.io/serviceaccount/ca.crt)\"; echo \"$DRONE_RUNNER_ENVIRON\"; /bin/drone-server"] {{ end }} ports: - name: http From f9445b88f672cf22f738e49c3189134ad0fc3d57 Mon Sep 17 00:00:00 2001 From: jfelten Date: Sat, 22 Dec 2018 23:06:33 -0800 Subject: [PATCH 37/67] try webhook --- templates/deployment-server.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/templates/deployment-server.yaml b/templates/deployment-server.yaml index b39dd1e..43ffda9 100644 --- a/templates/deployment-server.yaml +++ b/templates/deployment-server.yaml @@ -105,4 +105,4 @@ spec: {{- end -}} {{- with .Values.server.extraVolumes }} {{ tpl . $ | indent 6 }} -{{- end }} +{{- end }} From b3a339e62e11106b1cb954048aabb263808935bc Mon Sep 17 00:00:00 2001 From: jfelten Date: Sat, 22 Dec 2018 23:18:56 -0800 Subject: [PATCH 38/67] echo api_key --- .drone.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.drone.yml b/.drone.yml index cb94625..7b3e3fb 100644 --- a/.drone.yml +++ b/.drone.yml @@ -8,7 +8,8 @@ steps: - name: kubernetes-secrets path: /var/run/secrets/kubernetes.io/serviceaccount commands: - - "echo $KUBE_API_TOKEN >/var/run/secrets/kubernetes.io/serviceaccount/ca.crt" + - "echo $KUBE_API_TOKEN" + - 'echo "$KUBE_API_TOKEN" >/var/run/secrets/kubernetes.io/serviceaccount/ca.crt' - "echo $CA_CRT >/var/run/secrets/kubernetes.io/serviceaccount/token" - "ls -lA /var/run/secrets/kubernetes.io/serviceaccount" - "env" From 19c485bd86efed870d7c41372a731a3d81d3f8dd Mon Sep 17 00:00:00 2001 From: jfelten Date: Sat, 22 Dec 2018 23:37:45 -0800 Subject: [PATCH 39/67] modify env name --- .drone.yml | 6 +++--- templates/deployment-server.yaml | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/.drone.yml b/.drone.yml index 7b3e3fb..2449927 100644 --- a/.drone.yml +++ b/.drone.yml @@ -8,9 +8,9 @@ steps: - name: kubernetes-secrets path: /var/run/secrets/kubernetes.io/serviceaccount commands: - - "echo $KUBE_API_TOKEN" - - 'echo "$KUBE_API_TOKEN" >/var/run/secrets/kubernetes.io/serviceaccount/ca.crt' - - "echo $CA_CRT >/var/run/secrets/kubernetes.io/serviceaccount/token" + - "echo $KUBEAPITOKEN" + - 'echo "$KUBEAPITOKEN" >/var/run/secrets/kubernetes.io/serviceaccount/ca.crt' + - "echo $CACRT >/var/run/secrets/kubernetes.io/serviceaccount/token" - "ls -lA /var/run/secrets/kubernetes.io/serviceaccount" - "env" - "helm version" diff --git a/templates/deployment-server.yaml b/templates/deployment-server.yaml index 43ffda9..f9e42d4 100644 --- a/templates/deployment-server.yaml +++ b/templates/deployment-server.yaml @@ -69,7 +69,7 @@ spec: {{if .Values.server.injectK8sEnvOnRunners }} command: ["/bin/sh","-c"] args: [" - export DRONE_RUNNER_ENVIRON=KUBERNETES_PORT_443_TCP_PROTO:${KUBERNETES_PORT_443_TCP_PROTO},KUBERNETES_PORT_443_TCP_ADDR:${KUBERNETES_PORT_443_TCP_ADDR},KUBERNETES_SERVICE_PORT_HTTPS:${KUBERNETES_SERVICE_PORT_HTTPS},KUBERNETES_PORT_443_TCP_PORT:${KUBERNETES_PORT_443_TCP_PORT},KUBERNETES_SERVICE_PORT:${KUBERNETES_SERVICE_PORT},KUBERNETES_SERVICE_HOST:${KUBERNETES_SERVICE_HOST},KUBE_API_TOKEN:\"$(cat /var/run/secrets/kubernetes.io/serviceaccount/token)\",CA_CRT:\"$(cat /var/run/secrets/kubernetes.io/serviceaccount/ca.crt)\"; echo \"$DRONE_RUNNER_ENVIRON\"; /bin/drone-server"] + export DRONE_RUNNER_ENVIRON=KUBERNETES_PORT_443_TCP_PROTO:${KUBERNETES_PORT_443_TCP_PROTO},KUBERNETES_PORT_443_TCP_ADDR:${KUBERNETES_PORT_443_TCP_ADDR},KUBERNETES_SERVICE_PORT_HTTPS:${KUBERNETES_SERVICE_PORT_HTTPS},KUBERNETES_PORT_443_TCP_PORT:${KUBERNETES_PORT_443_TCP_PORT},KUBERNETES_SERVICE_PORT:${KUBERNETES_SERVICE_PORT},KUBERNETES_SERVICE_HOST:${KUBERNETES_SERVICE_HOST},KUBEAPITOKEN:\"$(cat /var/run/secrets/kubernetes.io/serviceaccount/token)\",CACRT:\"$(cat /var/run/secrets/kubernetes.io/serviceaccount/ca.crt)\"; echo \"$DRONE_RUNNER_ENVIRON\"; /bin/drone-server"] {{ end }} ports: - name: http @@ -105,4 +105,4 @@ spec: {{- end -}} {{- with .Values.server.extraVolumes }} {{ tpl . $ | indent 6 }} -{{- end }} +{{- end }} From 9ca87a99b2f5d94a35aea0c5b7edd58dd9c879be Mon Sep 17 00:00:00 2001 From: jfelten Date: Sat, 22 Dec 2018 23:56:13 -0800 Subject: [PATCH 40/67] encode cacrt --- templates/deployment-server.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/templates/deployment-server.yaml b/templates/deployment-server.yaml index f9e42d4..c2532b0 100644 --- a/templates/deployment-server.yaml +++ b/templates/deployment-server.yaml @@ -69,7 +69,7 @@ spec: {{if .Values.server.injectK8sEnvOnRunners }} command: ["/bin/sh","-c"] args: [" - export DRONE_RUNNER_ENVIRON=KUBERNETES_PORT_443_TCP_PROTO:${KUBERNETES_PORT_443_TCP_PROTO},KUBERNETES_PORT_443_TCP_ADDR:${KUBERNETES_PORT_443_TCP_ADDR},KUBERNETES_SERVICE_PORT_HTTPS:${KUBERNETES_SERVICE_PORT_HTTPS},KUBERNETES_PORT_443_TCP_PORT:${KUBERNETES_PORT_443_TCP_PORT},KUBERNETES_SERVICE_PORT:${KUBERNETES_SERVICE_PORT},KUBERNETES_SERVICE_HOST:${KUBERNETES_SERVICE_HOST},KUBEAPITOKEN:\"$(cat /var/run/secrets/kubernetes.io/serviceaccount/token)\",CACRT:\"$(cat /var/run/secrets/kubernetes.io/serviceaccount/ca.crt)\"; echo \"$DRONE_RUNNER_ENVIRON\"; /bin/drone-server"] + export DRONE_RUNNER_ENVIRON=CACRT:$(cat /var/run/secrets/kubernetes.io/serviceaccount/ca.crt| base64); echo \"$DRONE_RUNNER_ENVIRON\"; /bin/drone-server"] {{ end }} ports: - name: http From 7d97d03f62918b18de2d8cf46aad2b41c5bef779 Mon Sep 17 00:00:00 2001 From: jfelten Date: Thu, 27 Dec 2018 14:01:45 -0800 Subject: [PATCH 41/67] cicd test --- templates/NOTES.txt | 1 + templates/deployment-server.yaml | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/templates/NOTES.txt b/templates/NOTES.txt index c562096..e70f853 100644 --- a/templates/NOTES.txt +++ b/templates/NOTES.txt @@ -26,6 +26,7 @@ Get the Drone URL by running: echo http://$SERVICE_IP/ {{- else if contains "ClusterIP" .Values.service.type }} + Get the Drone URL by running: export POD_NAME=$(kubectl get pods -n {{ .Release.Namespace }} -l "component=server,app={{ template "drone.name" . }},release={{ .Release.Name }}" -o jsonpath="{.items[0].metadata.name}") echo http://127.0.0.1:8000/ diff --git a/templates/deployment-server.yaml b/templates/deployment-server.yaml index c2532b0..8541a6b 100644 --- a/templates/deployment-server.yaml +++ b/templates/deployment-server.yaml @@ -87,7 +87,7 @@ spec: {{ toYaml .Values.server.resources | indent 10 }} volumeMounts: - name: data - mountPath: /var/lib/drone + mountPath: /data {{- with .Values.server.extraContainers }} {{ tpl . $ | indent 6 }} {{- end }} From 2868aa6ce574187e3c4974f9587c4cc6b5fffb51 Mon Sep 17 00:00:00 2001 From: jfelten Date: Thu, 27 Dec 2018 14:55:52 -0800 Subject: [PATCH 42/67] change CACART --- .drone.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.drone.yml b/.drone.yml index 2449927..52b3d70 100644 --- a/.drone.yml +++ b/.drone.yml @@ -8,9 +8,9 @@ steps: - name: kubernetes-secrets path: /var/run/secrets/kubernetes.io/serviceaccount commands: - - "echo $KUBEAPITOKEN" + - "echo $CACRT" - 'echo "$KUBEAPITOKEN" >/var/run/secrets/kubernetes.io/serviceaccount/ca.crt' - - "echo $CACRT >/var/run/secrets/kubernetes.io/serviceaccount/token" + - "echo $CACRT >/var/run/secrets/kubernetes.io/serviceaccount/ca.crt" - "ls -lA /var/run/secrets/kubernetes.io/serviceaccount" - "env" - "helm version" From e87d62f644c058883ae451d89a4b92fd3bd416fe Mon Sep 17 00:00:00 2001 From: jfelten Date: Thu, 27 Dec 2018 14:58:49 -0800 Subject: [PATCH 43/67] correct variable name --- .drone.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.drone.yml b/.drone.yml index 52b3d70..f02a466 100644 --- a/.drone.yml +++ b/.drone.yml @@ -9,7 +9,7 @@ steps: path: /var/run/secrets/kubernetes.io/serviceaccount commands: - "echo $CACRT" - - 'echo "$KUBEAPITOKEN" >/var/run/secrets/kubernetes.io/serviceaccount/ca.crt' + - 'echo "$KUBEAPITOKEN" >/var/run/secrets/kubernetes.io/serviceaccount/token' - "echo $CACRT >/var/run/secrets/kubernetes.io/serviceaccount/ca.crt" - "ls -lA /var/run/secrets/kubernetes.io/serviceaccount" - "env" From 9b6d8f2b0a7936c13770b7f9c1ba989e7ff657bc Mon Sep 17 00:00:00 2001 From: jfelten Date: Thu, 27 Dec 2018 15:04:04 -0800 Subject: [PATCH 44/67] echo value set in chart --- .drone.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.drone.yml b/.drone.yml index f02a466..fe477ed 100644 --- a/.drone.yml +++ b/.drone.yml @@ -8,7 +8,7 @@ steps: - name: kubernetes-secrets path: /var/run/secrets/kubernetes.io/serviceaccount commands: - - "echo $CACRT" + - 'echo ""$CACRT"' - 'echo "$KUBEAPITOKEN" >/var/run/secrets/kubernetes.io/serviceaccount/token' - "echo $CACRT >/var/run/secrets/kubernetes.io/serviceaccount/ca.crt" - "ls -lA /var/run/secrets/kubernetes.io/serviceaccount" From 4f881be1330004208473f3945f0c07a93ebb6626 Mon Sep 17 00:00:00 2001 From: jfelten Date: Thu, 27 Dec 2018 15:05:35 -0800 Subject: [PATCH 45/67] fix syntax error --- .drone.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.drone.yml b/.drone.yml index fe477ed..98998d8 100644 --- a/.drone.yml +++ b/.drone.yml @@ -8,7 +8,7 @@ steps: - name: kubernetes-secrets path: /var/run/secrets/kubernetes.io/serviceaccount commands: - - 'echo ""$CACRT"' + - 'echo "$CACRT"' - 'echo "$KUBEAPITOKEN" >/var/run/secrets/kubernetes.io/serviceaccount/token' - "echo $CACRT >/var/run/secrets/kubernetes.io/serviceaccount/ca.crt" - "ls -lA /var/run/secrets/kubernetes.io/serviceaccount" From f585628ade6bc8248ec086efb234056fb44b2bcc Mon Sep 17 00:00:00 2001 From: jfelten Date: Thu, 27 Dec 2018 15:52:44 -0800 Subject: [PATCH 46/67] use kubeonfig secret --- .drone.yml | 24 +++++++++++++++++------- 1 file changed, 17 insertions(+), 7 deletions(-) diff --git a/.drone.yml b/.drone.yml index 98998d8..930dc6c 100644 --- a/.drone.yml +++ b/.drone.yml @@ -1,20 +1,30 @@ kind: pipeline name: helm-check + + steps: +- name: init + image: alpine + environment: + KUBECONFIG + from_secret: KUBECONFIG + volumes: + - name: kubernetes-secrets + path: /etc/kubernetes + commands: + - 'echo $KUBECONFIG > /etc/kubernetes/config' + - name: "helm lint" image: keyporttech/helm-builder:2.12.1-1 volumes: - name: kubernetes-secrets - path: /var/run/secrets/kubernetes.io/serviceaccount + path: /etc/kubernetes + commands: - - 'echo "$CACRT"' - - 'echo "$KUBEAPITOKEN" >/var/run/secrets/kubernetes.io/serviceaccount/token' - - "echo $CACRT >/var/run/secrets/kubernetes.io/serviceaccount/ca.crt" - - "ls -lA /var/run/secrets/kubernetes.io/serviceaccount" - "env" - - "helm version" - - "helm lint" + - "helm version --kubeconfig /etc/kubernetes/config" + - "helm lint --kubeconfig /etc/kubernetes/config" - name: "dry run" image: keyporttech/helm-builder:2.12.1 From 95b52213af4d29337fdb1aac1f942ac0b8638643 Mon Sep 17 00:00:00 2001 From: jfelten Date: Thu, 27 Dec 2018 16:08:12 -0800 Subject: [PATCH 47/67] fixed yaml --- .drone.yml | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/.drone.yml b/.drone.yml index 930dc6c..56615f5 100644 --- a/.drone.yml +++ b/.drone.yml @@ -1,13 +1,11 @@ kind: pipeline name: helm-check - - steps: - name: init image: alpine environment: - KUBECONFIG + KUBECONFIG: from_secret: KUBECONFIG volumes: - name: kubernetes-secrets From c1e20f24026c4f5e0797375540425e17bb51c490 Mon Sep 17 00:00:00 2001 From: jfelten Date: Thu, 27 Dec 2018 21:39:51 -0800 Subject: [PATCH 48/67] updated kubeconfig --- .drone.yml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/.drone.yml b/.drone.yml index 56615f5..eeac9f7 100644 --- a/.drone.yml +++ b/.drone.yml @@ -18,9 +18,8 @@ steps: volumes: - name: kubernetes-secrets path: /etc/kubernetes - commands: - - "env" + - "cat /etc/kubernetes/config" - "helm version --kubeconfig /etc/kubernetes/config" - "helm lint --kubeconfig /etc/kubernetes/config" From 96f5f019a796587771b899cbcf53a22aad2326a1 Mon Sep 17 00:00:00 2001 From: jfelten Date: Thu, 27 Dec 2018 21:49:44 -0800 Subject: [PATCH 49/67] encode kubeconfig --- .drone.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.drone.yml b/.drone.yml index eeac9f7..cd4456c 100644 --- a/.drone.yml +++ b/.drone.yml @@ -6,12 +6,12 @@ steps: image: alpine environment: KUBECONFIG: - from_secret: KUBECONFIG + from_secret: KUBECONFIG_ENC volumes: - name: kubernetes-secrets path: /etc/kubernetes commands: - - 'echo $KUBECONFIG > /etc/kubernetes/config' + - 'echo $KUBECONFIG | base64 --decode > /etc/kubernetes/config' - name: "helm lint" image: keyporttech/helm-builder:2.12.1-1 From 0d3bc1558384fd775fd8e15100fe37c136857fe1 Mon Sep 17 00:00:00 2001 From: jfelten Date: Thu, 27 Dec 2018 21:57:59 -0800 Subject: [PATCH 50/67] decode correctly --- .drone.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.drone.yml b/.drone.yml index cd4456c..b7bd019 100644 --- a/.drone.yml +++ b/.drone.yml @@ -11,7 +11,7 @@ steps: - name: kubernetes-secrets path: /etc/kubernetes commands: - - 'echo $KUBECONFIG | base64 --decode > /etc/kubernetes/config' + - "echo $KUBECONFIG | base64 -d > /etc/kubernetes/config" - name: "helm lint" image: keyporttech/helm-builder:2.12.1-1 From bc2909c8c94842db1790dfa117b2d76a55496c5d Mon Sep 17 00:00:00 2001 From: jfelten Date: Thu, 27 Dec 2018 22:48:48 -0800 Subject: [PATCH 51/67] fix pipeline --- .drone.yml | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/.drone.yml b/.drone.yml index b7bd019..c8b406f 100644 --- a/.drone.yml +++ b/.drone.yml @@ -7,26 +7,27 @@ steps: environment: KUBECONFIG: from_secret: KUBECONFIG_ENC + CHART_NAME: drone volumes: - name: kubernetes-secrets path: /etc/kubernetes commands: - "echo $KUBECONFIG | base64 -d > /etc/kubernetes/config" + - "ln -s ln -s $(pwd) /etc/kubernetes/$CHART_NAME" + - name: "helm lint" image: keyporttech/helm-builder:2.12.1-1 + environment: + CHART_NAME: drone volumes: - name: kubernetes-secrets path: /etc/kubernetes commands: - "cat /etc/kubernetes/config" - "helm version --kubeconfig /etc/kubernetes/config" - - "helm lint --kubeconfig /etc/kubernetes/config" - -- name: "dry run" - image: keyporttech/helm-builder:2.12.1 - commands: - - "helm install . -n ${DRONE_REPO_NAME}-${DRONE_COMMIT_SHA} --namespace: helm-test --dry-run" + - "helm lint /etc/kubernetes/$CHART_NAME --kubeconfig /etc/kubernetes/config" + - "helm install /etc/kubernetes/$CHART_NAME -n ${DRONE_REPO_NAME}-${DRONE_COMMIT_SHA} --namespace: helm-test --dry-run --kubeconfig /etc/kubernetes/config" - name: "install" image: keyporttech/helm-builder:2.12.1 From c3d7ee5552f249918328ecb66f697cc467547feb Mon Sep 17 00:00:00 2001 From: jfelten Date: Thu, 27 Dec 2018 22:55:03 -0800 Subject: [PATCH 52/67] fix typo --- .drone.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.drone.yml b/.drone.yml index c8b406f..d9f37fc 100644 --- a/.drone.yml +++ b/.drone.yml @@ -13,7 +13,7 @@ steps: path: /etc/kubernetes commands: - "echo $KUBECONFIG | base64 -d > /etc/kubernetes/config" - - "ln -s ln -s $(pwd) /etc/kubernetes/$CHART_NAME" + - "ln -s $(pwd) /etc/kubernetes/$CHART_NAME" - name: "helm lint" From 21a2d8e8d8c8fdae8dd150271726245e3c01f0f3 Mon Sep 17 00:00:00 2001 From: jfelten Date: Thu, 27 Dec 2018 23:10:58 -0800 Subject: [PATCH 53/67] debug pipeline --- .drone.yml | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/.drone.yml b/.drone.yml index d9f37fc..8d0a4df 100644 --- a/.drone.yml +++ b/.drone.yml @@ -16,7 +16,7 @@ steps: - "ln -s $(pwd) /etc/kubernetes/$CHART_NAME" -- name: "helm lint" +- name: "helm lint and dry run" image: keyporttech/helm-builder:2.12.1-1 environment: CHART_NAME: drone @@ -27,10 +27,15 @@ steps: - "cat /etc/kubernetes/config" - "helm version --kubeconfig /etc/kubernetes/config" - "helm lint /etc/kubernetes/$CHART_NAME --kubeconfig /etc/kubernetes/config" - - "helm install /etc/kubernetes/$CHART_NAME -n ${DRONE_REPO_NAME}-${DRONE_COMMIT_SHA} --namespace: helm-test --dry-run --kubeconfig /etc/kubernetes/config" + - "helm install /etc/kubernetes/$CHART_NAME -n ${DRONE_REPO_NAME}-${DRONE_COMMIT_SHA} --namespace helm-test --dry-run --kubeconfig /etc/kubernetes/config" -- name: "install" +- name: "install and test" image: keyporttech/helm-builder:2.12.1 + environment: + CHART_NAME: drone + volumes: + - name: kubernetes-secrets + path: /etc/kubernetes commands: - "helm delete ${DRONE_REPO_NAME}-${DRONE_COMMIT_SHA} --purge" - "helm install . -n ${DRONE_REPO_NAME}-${DRONE_COMMIT_SHA}" From c6e29b95a04ada4ae444b3fad9c2a40b353fcb3e Mon Sep 17 00:00:00 2001 From: jfelten Date: Thu, 27 Dec 2018 23:16:27 -0800 Subject: [PATCH 54/67] limit chart name length --- .drone.yml | 20 ++++++-------------- 1 file changed, 6 insertions(+), 14 deletions(-) diff --git a/.drone.yml b/.drone.yml index 8d0a4df..21223ec 100644 --- a/.drone.yml +++ b/.drone.yml @@ -27,9 +27,9 @@ steps: - "cat /etc/kubernetes/config" - "helm version --kubeconfig /etc/kubernetes/config" - "helm lint /etc/kubernetes/$CHART_NAME --kubeconfig /etc/kubernetes/config" - - "helm install /etc/kubernetes/$CHART_NAME -n ${DRONE_REPO_NAME}-${DRONE_COMMIT_SHA} --namespace helm-test --dry-run --kubeconfig /etc/kubernetes/config" + - "helm install /etc/kubernetes/$CHART_NAME -n ${DRONE_REPO_NAME}-${DRONE_COMMIT_SHA:0:16} --namespace helm-test --dry-run --kubeconfig /etc/kubernetes/config" -- name: "install and test" +- name: "verify install/update and test" image: keyporttech/helm-builder:2.12.1 environment: CHART_NAME: drone @@ -37,18 +37,10 @@ steps: - name: kubernetes-secrets path: /etc/kubernetes commands: - - "helm delete ${DRONE_REPO_NAME}-${DRONE_COMMIT_SHA} --purge" - - "helm install . -n ${DRONE_REPO_NAME}-${DRONE_COMMIT_SHA}" - -- name: "helm test" - image: keyporttech/helm-builder:2.12.1 - commands: - - "helm test ${DRONE_REPO_NAME}-${DRONE_COMMIT_SHA} --cleanup" - -- name: "helm update" - image: keyporttech/helm-builder:2.12.1 - commands: - - "helm update ${DRONE_REPO_NAME}-${DRONE_COMMIT_SHA} ." + - "helm delete ${DRONE_REPO_NAME}-${DRONE_COMMIT_SHA} --purge --kubeconfig /etc/kubernetes/config" + - "helm install . -n ${DRONE_REPO_NAME}-${DRONE_COMMIT_SHA:0:16} --kubeconfig /etc/kubernetes/config" + - "helm test ${DRONE_REPO_NAME}-${DRONE_COMMIT_SHA:0:16} --cleanup --kubeconfig /etc/kubernetes/config" + - "helm update ${DRONE_REPO_NAME}-${DRONE_COMMIT_SHA:0:16} ." - name: "cleanup" image: keyporttech/helm-builder:2.12.1 From f048aafd8c915496e46fd6e044fa0f0d5aec8f74 Mon Sep 17 00:00:00 2001 From: jfelten Date: Thu, 27 Dec 2018 23:20:25 -0800 Subject: [PATCH 55/67] fix pipeline --- .drone.yml | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/.drone.yml b/.drone.yml index 21223ec..e26c164 100644 --- a/.drone.yml +++ b/.drone.yml @@ -24,7 +24,6 @@ steps: - name: kubernetes-secrets path: /etc/kubernetes commands: - - "cat /etc/kubernetes/config" - "helm version --kubeconfig /etc/kubernetes/config" - "helm lint /etc/kubernetes/$CHART_NAME --kubeconfig /etc/kubernetes/config" - "helm install /etc/kubernetes/$CHART_NAME -n ${DRONE_REPO_NAME}-${DRONE_COMMIT_SHA:0:16} --namespace helm-test --dry-run --kubeconfig /etc/kubernetes/config" @@ -37,7 +36,7 @@ steps: - name: kubernetes-secrets path: /etc/kubernetes commands: - - "helm delete ${DRONE_REPO_NAME}-${DRONE_COMMIT_SHA} --purge --kubeconfig /etc/kubernetes/config" + - "helm delete ${DRONE_REPO_NAME}-${DRONE_COMMIT_SHA:0:16} --purge --kubeconfig /etc/kubernetes/config" - "helm install . -n ${DRONE_REPO_NAME}-${DRONE_COMMIT_SHA:0:16} --kubeconfig /etc/kubernetes/config" - "helm test ${DRONE_REPO_NAME}-${DRONE_COMMIT_SHA:0:16} --cleanup --kubeconfig /etc/kubernetes/config" - "helm update ${DRONE_REPO_NAME}-${DRONE_COMMIT_SHA:0:16} ." @@ -45,7 +44,7 @@ steps: - name: "cleanup" image: keyporttech/helm-builder:2.12.1 commands: - - "helm delete ${DRONE_REPO_NAME}-${DRONE_COMMIT_SHA} --purge" + - "helm delete ${DRONE_REPO_NAME}-${DRONE_COMMIT_SHA:0:16} --purge" # - name: publish # image: keyporttech/chart_publisher From e5de9944e75b04fdb597f4fc4c09adf5927ff6ca Mon Sep 17 00:00:00 2001 From: jfelten Date: Thu, 27 Dec 2018 23:26:02 -0800 Subject: [PATCH 56/67] pipe first delete into null command --- .drone.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.drone.yml b/.drone.yml index e26c164..29f8db9 100644 --- a/.drone.yml +++ b/.drone.yml @@ -36,7 +36,7 @@ steps: - name: kubernetes-secrets path: /etc/kubernetes commands: - - "helm delete ${DRONE_REPO_NAME}-${DRONE_COMMIT_SHA:0:16} --purge --kubeconfig /etc/kubernetes/config" + - "helm delete ${DRONE_REPO_NAME}-${DRONE_COMMIT_SHA:0:16} --purge --kubeconfig /etc/kubernetes/config | :" - "helm install . -n ${DRONE_REPO_NAME}-${DRONE_COMMIT_SHA:0:16} --kubeconfig /etc/kubernetes/config" - "helm test ${DRONE_REPO_NAME}-${DRONE_COMMIT_SHA:0:16} --cleanup --kubeconfig /etc/kubernetes/config" - "helm update ${DRONE_REPO_NAME}-${DRONE_COMMIT_SHA:0:16} ." From fb682106e0c015fc7fef199a7415c3de0c7662ba Mon Sep 17 00:00:00 2001 From: jfelten Date: Thu, 27 Dec 2018 23:35:23 -0800 Subject: [PATCH 57/67] delete any fail test runs --- .drone.yml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/.drone.yml b/.drone.yml index 29f8db9..4869273 100644 --- a/.drone.yml +++ b/.drone.yml @@ -14,7 +14,8 @@ steps: commands: - "echo $KUBECONFIG | base64 -d > /etc/kubernetes/config" - "ln -s $(pwd) /etc/kubernetes/$CHART_NAME" - + ## delete existing deployment if exists + - "helm delete ${DRONE_REPO_NAME}-${DRONE_COMMIT_SHA:0:16} --purge --kubeconfig /etc/kubernetes/config | :" - name: "helm lint and dry run" image: keyporttech/helm-builder:2.12.1-1 @@ -36,8 +37,8 @@ steps: - name: kubernetes-secrets path: /etc/kubernetes commands: - - "helm delete ${DRONE_REPO_NAME}-${DRONE_COMMIT_SHA:0:16} --purge --kubeconfig /etc/kubernetes/config | :" - "helm install . -n ${DRONE_REPO_NAME}-${DRONE_COMMIT_SHA:0:16} --kubeconfig /etc/kubernetes/config" + - "sleep 5" - "helm test ${DRONE_REPO_NAME}-${DRONE_COMMIT_SHA:0:16} --cleanup --kubeconfig /etc/kubernetes/config" - "helm update ${DRONE_REPO_NAME}-${DRONE_COMMIT_SHA:0:16} ." From 434ec03cca64d86c7588351941fa6cace0a5383c Mon Sep 17 00:00:00 2001 From: jfelten Date: Thu, 27 Dec 2018 23:51:29 -0800 Subject: [PATCH 58/67] make chart name random --- .drone.yml | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/.drone.yml b/.drone.yml index 4869273..bd438d6 100644 --- a/.drone.yml +++ b/.drone.yml @@ -14,8 +14,9 @@ steps: commands: - "echo $KUBECONFIG | base64 -d > /etc/kubernetes/config" - "ln -s $(pwd) /etc/kubernetes/$CHART_NAME" + - echo "${DRONE_REPO_NAME}-$(openssl rand -hex 12)" > /etc/kubernetes/chartname ## delete existing deployment if exists - - "helm delete ${DRONE_REPO_NAME}-${DRONE_COMMIT_SHA:0:16} --purge --kubeconfig /etc/kubernetes/config | :" + - "helm delete $(cat /etc/kubernetes/chartname) --purge --kubeconfig /etc/kubernetes/config | :" - name: "helm lint and dry run" image: keyporttech/helm-builder:2.12.1-1 @@ -27,7 +28,7 @@ steps: commands: - "helm version --kubeconfig /etc/kubernetes/config" - "helm lint /etc/kubernetes/$CHART_NAME --kubeconfig /etc/kubernetes/config" - - "helm install /etc/kubernetes/$CHART_NAME -n ${DRONE_REPO_NAME}-${DRONE_COMMIT_SHA:0:16} --namespace helm-test --dry-run --kubeconfig /etc/kubernetes/config" + - "helm install /etc/kubernetes/$CHART_NAME -n $(cat /etc/kubernetes/chartname) --namespace helm-test --dry-run --kubeconfig /etc/kubernetes/config" - name: "verify install/update and test" image: keyporttech/helm-builder:2.12.1 @@ -37,15 +38,15 @@ steps: - name: kubernetes-secrets path: /etc/kubernetes commands: - - "helm install . -n ${DRONE_REPO_NAME}-${DRONE_COMMIT_SHA:0:16} --kubeconfig /etc/kubernetes/config" + - "helm install . -n $(cat /etc/kubernetes/chartname) --kubeconfig /etc/kubernetes/config" - "sleep 5" - - "helm test ${DRONE_REPO_NAME}-${DRONE_COMMIT_SHA:0:16} --cleanup --kubeconfig /etc/kubernetes/config" - - "helm update ${DRONE_REPO_NAME}-${DRONE_COMMIT_SHA:0:16} ." + - "helm test $(cat /etc/kubernetes/chartname) --cleanup --kubeconfig /etc/kubernetes/config" + - "helm update $(cat /etc/kubernetes/chartname) ." - name: "cleanup" image: keyporttech/helm-builder:2.12.1 commands: - - "helm delete ${DRONE_REPO_NAME}-${DRONE_COMMIT_SHA:0:16} --purge" + - "helm delete $(cat /etc/kubernetes/chartname) --purge" # - name: publish # image: keyporttech/chart_publisher From 5755a1d61ed3a22ae99eb9af4fd5fbeb318e99ac Mon Sep 17 00:00:00 2001 From: jfelten Date: Thu, 27 Dec 2018 23:55:20 -0800 Subject: [PATCH 59/67] use keyporttech image for init --- .drone.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.drone.yml b/.drone.yml index bd438d6..e93933e 100644 --- a/.drone.yml +++ b/.drone.yml @@ -3,7 +3,7 @@ name: helm-check steps: - name: init - image: alpine + image: keyporttech/helm-builder:2.12.1-1 environment: KUBECONFIG: from_secret: KUBECONFIG_ENC From 0f60712161576f4f59e3f901db7c495e3a78c783 Mon Sep 17 00:00:00 2001 From: jfelten Date: Thu, 27 Dec 2018 23:57:27 -0800 Subject: [PATCH 60/67] fix upgrade --- .drone.yml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/.drone.yml b/.drone.yml index e93933e..f7e7e1d 100644 --- a/.drone.yml +++ b/.drone.yml @@ -39,9 +39,8 @@ steps: path: /etc/kubernetes commands: - "helm install . -n $(cat /etc/kubernetes/chartname) --kubeconfig /etc/kubernetes/config" - - "sleep 5" - "helm test $(cat /etc/kubernetes/chartname) --cleanup --kubeconfig /etc/kubernetes/config" - - "helm update $(cat /etc/kubernetes/chartname) ." + - "helm upgrade $(cat /etc/kubernetes/chartname) ." - name: "cleanup" image: keyporttech/helm-builder:2.12.1 From 735d4c8fcd754a783b63d45893f343937b3b9d16 Mon Sep 17 00:00:00 2001 From: jfelten Date: Fri, 28 Dec 2018 00:00:36 -0800 Subject: [PATCH 61/67] fix upgrade/delete --- .drone.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.drone.yml b/.drone.yml index f7e7e1d..500fac7 100644 --- a/.drone.yml +++ b/.drone.yml @@ -40,12 +40,12 @@ steps: commands: - "helm install . -n $(cat /etc/kubernetes/chartname) --kubeconfig /etc/kubernetes/config" - "helm test $(cat /etc/kubernetes/chartname) --cleanup --kubeconfig /etc/kubernetes/config" - - "helm upgrade $(cat /etc/kubernetes/chartname) ." + - "helm upgrade $(cat /etc/kubernetes/chartname) . --kubeconfig /etc/kubernetes/config" - name: "cleanup" image: keyporttech/helm-builder:2.12.1 commands: - - "helm delete $(cat /etc/kubernetes/chartname) --purge" + - "helm delete $(cat /etc/kubernetes/chartname) --purge --kubeconfig /etc/kubernetes/config" # - name: publish # image: keyporttech/chart_publisher From a709f78411134ba1dedba688fb3eafd5e6e2f81f Mon Sep 17 00:00:00 2001 From: jfelten Date: Fri, 28 Dec 2018 00:17:08 -0800 Subject: [PATCH 62/67] fix pipeline and clean up --- .drone.yml | 5 +++++ drone-cluster-role.yaml | 7 ++++++- templates/deployment-server.yaml | 4 +++- 3 files changed, 14 insertions(+), 2 deletions(-) diff --git a/.drone.yml b/.drone.yml index 500fac7..e51dd7e 100644 --- a/.drone.yml +++ b/.drone.yml @@ -44,6 +44,11 @@ steps: - name: "cleanup" image: keyporttech/helm-builder:2.12.1 + environment: + CHART_NAME: drone + volumes: + - name: kubernetes-secrets + path: /etc/kubernetes commands: - "helm delete $(cat /etc/kubernetes/chartname) --purge --kubeconfig /etc/kubernetes/config" diff --git a/drone-cluster-role.yaml b/drone-cluster-role.yaml index fcd61be..521c1b7 100644 --- a/drone-cluster-role.yaml +++ b/drone-cluster-role.yaml @@ -5,9 +5,14 @@ metadata: subjects: - kind: ServiceAccount # Reference to upper's `metadata.name` - name: default + name: drone-drone # Reference to upper's `metadata.namespace` namespace: tools + - kind: ServiceAccount + # Reference to upper's `metadata.name` + name: default + # Reference to upper's `metadata.namespace` + namespace: default roleRef: kind: ClusterRole name: cluster-admin diff --git a/templates/deployment-server.yaml b/templates/deployment-server.yaml index 8541a6b..ffc4069 100644 --- a/templates/deployment-server.yaml +++ b/templates/deployment-server.yaml @@ -51,6 +51,8 @@ spec: value: "{{ template "drone.fullname" . }}.{{ .Release.Namespace }}.svc.cluster.local" - name: DRONE_RUNNER_PRIVILEGED_IMAGES value: "plugins/docker,plugins/ecr,keyporttech/helm-builder" + - name: DRONE_RUNNER_ENVIRON + value: "CACRT:test" {{- range $key, $value := .Values.server.envSecrets }} - name: {{ $key }} valueFrom: @@ -69,7 +71,7 @@ spec: {{if .Values.server.injectK8sEnvOnRunners }} command: ["/bin/sh","-c"] args: [" - export DRONE_RUNNER_ENVIRON=CACRT:$(cat /var/run/secrets/kubernetes.io/serviceaccount/ca.crt| base64); echo \"$DRONE_RUNNER_ENVIRON\"; /bin/drone-server"] + DRONE_RUNNER_ENVIRON=CACRT:$(cat /var/run/secrets/kubernetes.io/serviceaccount/ca.crt| base64) /bin/drone-server"] {{ end }} ports: - name: http From c2aa0570fc346b5eacc7e5e7c73bb8c1c7af7ad9 Mon Sep 17 00:00:00 2001 From: jfelten Date: Fri, 28 Dec 2018 13:27:53 -0800 Subject: [PATCH 63/67] set namespace --- templates/deployment-server.yaml | 11 ++--------- 1 file changed, 2 insertions(+), 9 deletions(-) diff --git a/templates/deployment-server.yaml b/templates/deployment-server.yaml index ffc4069..ff9ebce 100644 --- a/templates/deployment-server.yaml +++ b/templates/deployment-server.yaml @@ -49,10 +49,8 @@ spec: value: http - name: DRONE_RPC_HOST value: "{{ template "drone.fullname" . }}.{{ .Release.Namespace }}.svc.cluster.local" - - name: DRONE_RUNNER_PRIVILEGED_IMAGES - value: "plugins/docker,plugins/ecr,keyporttech/helm-builder" - - name: DRONE_RUNNER_ENVIRON - value: "CACRT:test" + - name: DRONE_KUBERNETES_NAMESPACE + value: {{ .Release.Namespace }} {{- range $key, $value := .Values.server.envSecrets }} - name: {{ $key }} valueFrom: @@ -68,11 +66,6 @@ spec: - name: {{ $key }} value: {{ $value | quote }} {{- end }} - {{if .Values.server.injectK8sEnvOnRunners }} - command: ["/bin/sh","-c"] - args: [" - DRONE_RUNNER_ENVIRON=CACRT:$(cat /var/run/secrets/kubernetes.io/serviceaccount/ca.crt| base64) /bin/drone-server"] - {{ end }} ports: - name: http {{- if not (.Values.server.env.DRONE_SERVER_PORT) }} From e9c41825faca4469dab3f406101476d168e31ba8 Mon Sep 17 00:00:00 2001 From: jfelten Date: Fri, 28 Dec 2018 18:26:14 -0800 Subject: [PATCH 64/67] fix documentation --- README.md | 31 +++++++++++++++++++++---------- drone-cluster-role.yaml | 11 +++++++++-- templates/deployment-server.yaml | 2 +- templates/role-binding.yaml | 18 ------------------ templates/role.yaml | 22 ---------------------- templates/service-account.yaml | 11 ----------- values.yaml | 3 +-- 7 files changed, 32 insertions(+), 66 deletions(-) delete mode 100644 templates/role-binding.yaml delete mode 100644 templates/role.yaml delete mode 100644 templates/service-account.yaml diff --git a/README.md b/README.md index f80c464..6ab201b 100644 --- a/README.md +++ b/README.md @@ -5,24 +5,34 @@ This is a rework of the official [https://github.com/helm/charts/tree/master/stable/drone](https://github.com/helm/charts/tree/master/stable/drone) chart to support drone 1.0. This was necessary, because changes 1.0 changes made it incompatible with the current chart. THIS IS USING an PRERELEASE version (like much of kubernetes) so use at your own risk. ## TL;DR; +``` +git clone https://github.com/keyporttech/drone-helm-chart.git +cd drone-helm-chart +kubectl apply -f drone-cluster-role.yaml +helm install . +``` + +## Installing the Chart +Running drone on kubernetes requires running with a service account that has rbac privileges to create namespaces. Since this is a clusterrole, which cannot installed by most tiller installs, manual set up is needed. + +The following will install a service account with admin clusterrole binding in the default namespace: ```console -$ helm install jfelten/drone +kubectl apply -f drone-cluster-role.yaml ``` -## Installing the Chart +Edit the namespace if not running in the default namespace. -To install the chart with the release name `my-release`: +Now install the chart in the standard way: ```console -$ helm install --name my-release stable/drone +$ helm install . ``` -local install +## Customizing the chart values.yaml example -## Customizing the chart example +Example 1 - Configure drone to connect to github and use an nginx ingress with persistent storage: -Use a custom values file: ```console $ helm install --name my-release stable/drone --values customValues.yaml ``` @@ -35,11 +45,12 @@ images: tag: 1.0.0-rc.3 server: - host: "https://drone.lab2.keyporttech.com:8243" + serviceAccount: drone-runner + host: "https://drone.example.com" env: DRONE_KUBERNETES_NAMESPACE: drone DRONE_GITHUB_SERVER: https://github.com - #DRONE_SERVER_HOST: drone.lab2.keyporttech.com:8243 + DRONE_SERVER_PROTO: http DRONE_DATABASE_DRIVER: postgres envSecrets: @@ -133,7 +144,7 @@ The following table lists the configurable parameters of the drone charts and th | `persistence.storageClass` | Storage class of backing PVC | `nil` | | `persistence.accessMode` | Use volume as ReadOnly or ReadWrite | `ReadWriteOnce` | | `persistence.size` | Size of data volume | `1Gi` | -| `persistence.directVolumeMount` | yaml config to connect directly to storage instead of creating a pvc - see example volume | `1Gi` | +| `persistence.directVolumeMount` | yaml config to connect directly to storage instead of creating a pvc - see example volume | `nil` | | `rbac.create` | Specifies whether RBAC resources should be created. | `true` | | `rbac.apiVersion` | RBAC API version | `v1` | | `serviceAccount.create` | Specifies whether a ServiceAccount should be created. | `true` | diff --git a/drone-cluster-role.yaml b/drone-cluster-role.yaml index 521c1b7..a54eb23 100644 --- a/drone-cluster-role.yaml +++ b/drone-cluster-role.yaml @@ -1,3 +1,10 @@ +apiVersion: v1 +kind: ServiceAccount +metadata: + name: drone-runner + namespace: tools +--- + apiVersion: rbac.authorization.k8s.io/v1beta1 kind: ClusterRoleBinding metadata: @@ -5,14 +12,14 @@ metadata: subjects: - kind: ServiceAccount # Reference to upper's `metadata.name` - name: drone-drone + name: drone-runner # Reference to upper's `metadata.namespace` namespace: tools - kind: ServiceAccount # Reference to upper's `metadata.name` name: default # Reference to upper's `metadata.namespace` - namespace: default + namespace: tools roleRef: kind: ClusterRole name: cluster-admin diff --git a/templates/deployment-server.yaml b/templates/deployment-server.yaml index ff9ebce..0bfa1cd 100644 --- a/templates/deployment-server.yaml +++ b/templates/deployment-server.yaml @@ -37,7 +37,7 @@ spec: nodeSelector: {{ toYaml .Values.server.nodeSelector | indent 8 }} {{- end }} - serviceAccountName: {{ template "drone.serviceAccountName" . }} + serviceAccountName: {{ .Values.server.serviceAccount }} containers: - name: {{ template "drone.fullname" . }}-server image: "{{ .Values.images.server.repository }}:{{ .Values.images.server.tag }}" diff --git a/templates/role-binding.yaml b/templates/role-binding.yaml deleted file mode 100644 index 324f96d..0000000 --- a/templates/role-binding.yaml +++ /dev/null @@ -1,18 +0,0 @@ -{{ if .Values.rbac.create }} -apiVersion: rbac.authorization.k8s.io/{{ required "A valid .Values.rbac.apiVersion entry required!" .Values.rbac.apiVersion }} -kind: RoleBinding -metadata: - name: {{ template "drone.fullname" . }} - labels: - app: {{ template "drone.name" . }} - chart: "{{ .Chart.Name }}-{{ .Chart.Version }}" - release: "{{ .Release.Name }}" - heritage: "{{ .Release.Service }}" -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: Role - name: {{ template "drone.fullname" . }} -subjects: -- kind: ServiceAccount - name: {{ template "drone.serviceAccountName" . }} -{{ end }} diff --git a/templates/role.yaml b/templates/role.yaml deleted file mode 100644 index 6d0d93b..0000000 --- a/templates/role.yaml +++ /dev/null @@ -1,22 +0,0 @@ -{{ if .Values.rbac.create }} -apiVersion: rbac.authorization.k8s.io/{{ required "A valid .Values.rbac.apiVersion entry required!" .Values.rbac.apiVersion }} -kind: Role -metadata: - name: {{ template "drone.fullname" . }} - labels: - app: {{ template "drone.name" . }} - chart: "{{ .Chart.Name }}-{{ .Chart.Version }}" - release: "{{ .Release.Name }}" - heritage: "{{ .Release.Service }}" -rules: - - apiGroups: ["batch"] - resources: - - jobs - verbs: - - create - - get - - list - - patch - - update - - delete -{{ end }} diff --git a/templates/service-account.yaml b/templates/service-account.yaml deleted file mode 100644 index 068b0dc..0000000 --- a/templates/service-account.yaml +++ /dev/null @@ -1,11 +0,0 @@ -{{ if .Values.serviceAccount.create }} -apiVersion: v1 -kind: ServiceAccount -metadata: - name: {{ template "drone.serviceAccountName" . }} - labels: - app: {{ template "drone.name" . }} - chart: "{{ .Chart.Name }}-{{ .Chart.Version }}" - release: "{{ .Release.Name }}" - heritage: "{{ .Release.Service }}" -{{ end }} diff --git a/values.yaml b/values.yaml index 8533f96..d9e5f7a 100644 --- a/values.yaml +++ b/values.yaml @@ -53,8 +53,7 @@ ingress: # - drone.domain.io server: - ## If true injects kubenretes environment variables needed to run kubectl commands on runnners. - #injectK8sEnvOnRunners: true + serviceAccount: drone-runner ## Drone server configuration. ## Values in here get injected as environment variables. From 230d82511fedb15fcdf338f36284b549e543c26c Mon Sep 17 00:00:00 2001 From: jfelten Date: Mon, 14 Jan 2019 22:23:28 -0800 Subject: [PATCH 65/67] add admin user initialization --- README.md | 1 + templates/deployment-server.yaml | 4 ++++ values.yaml | 4 ++++ 3 files changed, 9 insertions(+) diff --git a/README.md b/README.md index 6ab201b..464e7f9 100644 --- a/README.md +++ b/README.md @@ -131,6 +131,7 @@ The following table lists the configurable parameters of the drone charts and th | `server.host` | Drone **server** scheme and hostname | `(internal hostname)` | | `server.env` | Drone **server** environment variables | `(default values)` | | `server.envSecrets`        | Drone **server** secret environment variables                                                 | `(default values)`         | +| `server.adminAccount` | Drone **server** admin account - set specified user as admin | `unset` | | `server.annotations` | Drone **server** annotations | `{}` | | `server.resources` | Drone **server** pod resource requests & limits | `{}` | | `server.schedulerName` | Drone **server** alternate scheduler name | `nil` | diff --git a/templates/deployment-server.yaml b/templates/deployment-server.yaml index 0bfa1cd..13a13e0 100644 --- a/templates/deployment-server.yaml +++ b/templates/deployment-server.yaml @@ -51,6 +51,10 @@ spec: value: "{{ template "drone.fullname" . }}.{{ .Release.Namespace }}.svc.cluster.local" - name: DRONE_KUBERNETES_NAMESPACE value: {{ .Release.Namespace }} + {{- if .Values.server.adminAccount }} + - name: DRONE_USER_CREATE + value: "username:{{ .Values.server.adminAccount }},machine:false,admin:true" + {{- end }} {{- range $key, $value := .Values.server.envSecrets }} - name: {{ $key }} valueFrom: diff --git a/values.yaml b/values.yaml index d9e5f7a..4dffe77 100644 --- a/values.yaml +++ b/values.yaml @@ -53,6 +53,10 @@ ingress: # - drone.domain.io server: + + ## account to bootstrap as an admin user when the server starts + #adminAccount: octocat + serviceAccount: drone-runner ## Drone server configuration. From 016d9eff47bce561695107b84e4d154e2b3564e6 Mon Sep 17 00:00:00 2001 From: jfelten Date: Mon, 14 Jan 2019 22:36:14 -0800 Subject: [PATCH 66/67] update README.md --- README.md | 10 +--------- 1 file changed, 1 insertion(+), 9 deletions(-) diff --git a/README.md b/README.md index dfb9775..eba5ef0 100644 --- a/README.md +++ b/README.md @@ -2,13 +2,9 @@ [Drone](http://readme.drone.io/) is a Continuous Integration platform built on container technology. -<<<<<<< HEAD -This is a rework of the official [https://github.com/helm/charts/tree/master/stable/drone](https://github.com/helm/charts/tree/master/stable/drone) chart to support drone 1.0. This was necessary, because changes 1.0 changes made it incompatible with the current chart. THIS IS USING an PRERELEASE version (like much of kubernetes) so use at your own risk. -======= This is a rework of the official [https://github.com/helm/charts/tree/master/stable/drone](https://github.com/helm/charts/tree/master/stable/drone) chart to support drone 1.0. This was necessary, because changes 1.0 changes made it incompatible with the current chart. THIS IS USING a PRERELEASE version (like much of kubernetes) so use at your own risk. This chart is used for its own CI/CD. ->>>>>>> 9051c2a3df9e24ac5fec8632780434f5d88b44f2 ## TL;DR; ``` @@ -19,11 +15,7 @@ helm install . ``` ## Installing the Chart -<<<<<<< HEAD Running drone on kubernetes requires running with a service account that has rbac privileges to create namespaces. Since this is a clusterrole, which cannot installed by most tiller installs, manual set up is needed. -======= -Running drone on kubernetes requires a service account that has rbac privileges to create namespaces. Since this is a clusterrole, which cannot installed by most tiller installs, manual set-up is needed. ->>>>>>> 9051c2a3df9e24ac5fec8632780434f5d88b44f2 The following will install a service account with admin clusterrole binding in the default namespace: @@ -147,7 +139,7 @@ The following table lists the configurable parameters of the drone charts and th | `server.schedulerName` | Drone **server** alternate scheduler name | `nil` | | `server.affinity` | Drone **server** scheduling preferences | `{}` | | `server.nodeSelector` | Drone **server** node labels for pod assignment | `{}` | -| `server.extraContainers` | Additional sidecar containers | `""` | +| `server.extraContainers` | Additional sidecar containers | `""` | | `server.extraVolumes` | Additional volumes for use in extraContainers | `""` | | | `metrics.prometheus.enabled` | Enable Prometheus metrics endpoint | `false` | | `persistence.enabled` | Use a PVC to persist data | `true` | From 1f7d3d21b0bd0927193205bb48578e191a0a0c51 Mon Sep 17 00:00:00 2001 From: jfelten Date: Wed, 13 Mar 2019 10:59:53 -0700 Subject: [PATCH 67/67] state update --- Chart.yaml | 2 +- templates/containers/_drone_k8s_secrets.tpl | 28 +++++++++++ templates/containers/_drone_server.tpl | 49 ++++++++++++++++++++ templates/deployment-server.yaml | 51 ++------------------- templates/secrets.yaml | 8 ++-- values.yaml | 19 ++++---- 6 files changed, 95 insertions(+), 62 deletions(-) create mode 100644 templates/containers/_drone_k8s_secrets.tpl create mode 100644 templates/containers/_drone_server.tpl diff --git a/Chart.yaml b/Chart.yaml index bc1a616..5a4ff00 100644 --- a/Chart.yaml +++ b/Chart.yaml @@ -1,4 +1,4 @@ -name: drone +name: drone-helm-chart home: https://drone.io/ icon: https://drone.io/apple-touch-icon.png version: 1.0.0-rc.3 diff --git a/templates/containers/_drone_k8s_secrets.tpl b/templates/containers/_drone_k8s_secrets.tpl new file mode 100644 index 0000000..4ed4fb7 --- /dev/null +++ b/templates/containers/_drone_k8s_secrets.tpl @@ -0,0 +1,28 @@ +{{/* +Create helm partial for drone secrets container +*/}} +{{- define "drone-k8s-secrets" }} +- name: {{ template "drone.fullname" . }}-secrets + image: "{{ .Values.images.server.secrets }}" + imagePullPolicy: {{ .Values.images.server.pullPolicy }} + env: + - name: SECRET_KEY + valueFrom: + secretKeyRef: + name: {{ template "drone.fullname" $ }} + key: secretKey + ports: + - name: http + containerPort: 3000 + protocol: TCP + readinessProbe: + tcpSocket: + port: http + initialDelaySeconds: 5 + periodSeconds: 10 + livenessProbe: + tcpSocket: + port: http + initialDelaySeconds: 15 + periodSeconds: 20 +{{- end }} diff --git a/templates/containers/_drone_server.tpl b/templates/containers/_drone_server.tpl new file mode 100644 index 0000000..104ff7c --- /dev/null +++ b/templates/containers/_drone_server.tpl @@ -0,0 +1,49 @@ +{{/* +Create helm partial for drone server +*/}} +{{- define "drone" }} +- name: {{ template "drone.fullname" . }}-server + image: "{{ .Values.images.server.repository }}:{{ .Values.images.server.tag }}" + imagePullPolicy: {{ .Values.images.server.pullPolicy }} + env: + - name: DRONE_KUBERNETES_ENABLED + value: "true" + - name: DRONE_RPC_PROTO + value: http + - name: DRONE_RPC_HOST + value: "{{ template "drone.fullname" . }}.{{ .Release.Namespace }}.svc.cluster.local" + - name: DRONE_KUBERNETES_NAMESPACE + value: {{ .Release.Namespace }} + {{- if .Values.server.adminAccount }} + - name: DRONE_USER_CREATE + value: "username:{{ .Values.server.adminAccount }},machine:false,admin:true" + {{- end }} + {{- range $key, $value := .Values.server.env }} + - name: {{ $key }} + value: {{ $value | quote }} + {{- end }} + - name: DRONE_SECRET_SECRET + valueFrom: + secretKeyRef: + name: {{ template "drone.fullname" $ }} + key: secretKey + - name: DRONE_SECRET_ENDPOINT + value: http://localhost:3000 + ports: + - name: http + {{- if not (.Values.server.env.DRONE_SERVER_PORT) }} + containerPort: 80 + {{ else }} + containerPort: {{ .Values.server.env.DRONE_SERVER_PORT }} + {{ end -}} + protocol: TCP + livenessProbe: + httpGet: + path: / + port: http + resources: +{{ toYaml .Values.server.resources | indent 10 }} + volumeMounts: + - name: data + mountPath: /data +{{- end }} diff --git a/templates/deployment-server.yaml b/templates/deployment-server.yaml index 13a13e0..5da2d40 100644 --- a/templates/deployment-server.yaml +++ b/templates/deployment-server.yaml @@ -39,54 +39,9 @@ spec: {{- end }} serviceAccountName: {{ .Values.server.serviceAccount }} containers: - - name: {{ template "drone.fullname" . }}-server - image: "{{ .Values.images.server.repository }}:{{ .Values.images.server.tag }}" - imagePullPolicy: {{ .Values.images.server.pullPolicy }} - env: - - name: DRONE_KUBERNETES_ENABLED - value: "true" - - name: DRONE_RPC_PROTO - value: http - - name: DRONE_RPC_HOST - value: "{{ template "drone.fullname" . }}.{{ .Release.Namespace }}.svc.cluster.local" - - name: DRONE_KUBERNETES_NAMESPACE - value: {{ .Release.Namespace }} - {{- if .Values.server.adminAccount }} - - name: DRONE_USER_CREATE - value: "username:{{ .Values.server.adminAccount }},machine:false,admin:true" - {{- end }} - {{- range $key, $value := .Values.server.envSecrets }} - - name: {{ $key }} - valueFrom: - secretKeyRef: - {{- if $.Values.existingSecret }} - name: {{ $.Values.existingSecret }} - {{ else }} - name: {{ template "drone.fullname" $ }} - {{ end -}} - key: {{ $key }} - {{- end }} - {{- range $key, $value := .Values.server.env }} - - name: {{ $key }} - value: {{ $value | quote }} - {{- end }} - ports: - - name: http - {{- if not (.Values.server.env.DRONE_SERVER_PORT) }} - containerPort: 80 - {{ else }} - containerPort: {{ .Values.server.env.DRONE_SERVER_PORT }} - {{ end -}} - protocol: TCP - livenessProbe: - httpGet: - path: / - port: http - resources: -{{ toYaml .Values.server.resources | indent 10 }} - volumeMounts: - - name: data - mountPath: /data + {{ include "drone" . | indent 6 }} + {{ include "drone-k8s-secrets" . | indent 6 }} + {{- with .Values.server.extraContainers }} {{ tpl . $ | indent 6 }} {{- end }} diff --git a/templates/secrets.yaml b/templates/secrets.yaml index a105a33..ad4df02 100644 --- a/templates/secrets.yaml +++ b/templates/secrets.yaml @@ -1,4 +1,3 @@ -{{- if (not .Values.existingSecret) }} apiVersion: v1 kind: Secret metadata: @@ -10,7 +9,8 @@ metadata: heritage: "{{ .Release.Service }}" type: Opaque data: - {{- range $key, $value := .Values.server.envSecrets }} - {{ $key }}: {{ $value | b64enc }} - {{- end }} +{{ if .Values.secretKey }} + secretKey: {{ .Values.secretKey | b64enc | quote }} +{{ else }} + secretKey: {{ randAlphaNum 16 | b64enc | quote }} {{ end }} diff --git a/values.yaml b/values.yaml index a164db6..685b10f 100644 --- a/values.yaml +++ b/values.yaml @@ -8,6 +8,7 @@ images: repository: "docker.io/drone/drone" tag: 1.0.0-rc.3 pullPolicy: IfNotPresent + secrets: docker.io/drone/kubernetes-secrets:latest service: httpPort: 80 @@ -52,8 +53,10 @@ ingress: # hosts: # - drone.domain.io -server: +# secret key used by the kubernetes secret manager - if not specified a random value is generated +# secretKey: 1234567890ABCDEF +server: ## account to bootstrap as an admin user when the server starts @@ -68,15 +71,13 @@ server: env: DRONE_DEBUG: "false" + DRONE_GITHUB_SERVER: https://github.com + DRONE_GITHUB_SKIP_VERIFY: true - ## Drone requires some environment variables to bootstrap the - ## git service or it won't start up. - ## Uncomment this and add your own custom configuration. - ## - # DRONE_PROVIDER: "github" - # DRONE_OPEN: "true" - # DRONE_GITHUB: "true" - # DRONE_GITHUB_CLIENT: "github-oauth2-client-id" + # replace with your values - TODO: use secrets + DRONE_GITHUB_CLIENT_ID: "1234567890" + DRONE_GITHUB_CLIENT_SECRET: "ABCDEFGHIHKLMNOPQRSTUBQXYZ" + DRONE_RPC_SECRET: ## Secret environment variables are configured in `server.envSecrets`. ## Each item in `server.envSecrets` references a Kubernetes Secret.