From 8a7f4c5fd0b350982422a10fa64e3e97b856f37f Mon Sep 17 00:00:00 2001 From: Luca Cattani <luca.cattani@eurac.edu> Date: Fri, 29 Sep 2017 10:04:28 +0200 Subject: [PATCH] copy of https://gitlab.scientificnet.org/kube/helm @ 724824ff --- kubernetes/helm/dspace/.gitignore | 2 + kubernetes/helm/dspace/.helmignore | 21 +++ kubernetes/helm/dspace/Chart.yaml | 4 + kubernetes/helm/dspace/README.md | 79 +++++++++++ .../helm/dspace/charts/postgresql/Chart.yaml | 18 +++ .../helm/dspace/charts/postgresql/README.md | 132 ++++++++++++++++++ .../charts/postgresql/templates/NOTES.txt | 35 +++++ .../charts/postgresql/templates/_helpers.tpl | 27 ++++ .../postgresql/templates/deployment.yaml | 114 +++++++++++++++ .../postgresql/templates/networkpolicy.yaml | 28 ++++ .../charts/postgresql/templates/pvc.yaml | 23 +++ .../charts/postgresql/templates/secrets.yaml | 19 +++ .../charts/postgresql/templates/svc.yaml | 26 ++++ .../helm/dspace/charts/postgresql/values.yaml | 91 ++++++++++++ kubernetes/helm/dspace/dspace.png | Bin 0 -> 80292 bytes kubernetes/helm/dspace/requirements.yaml | 4 + .../helm/dspace/templates/apache-certs.yaml | 14 ++ ...rvices.kubernetes.eurac.commul.dspace.yaml | 7 + .../dspace/templates/dockerconfigjson.yaml | 9 ++ .../dspace/templates/dspace-deployment.yaml | 77 ++++++++++ .../helm/dspace/templates/dspace-service.yaml | 19 +++ .../dspace/templates/postgres-service.yaml | 20 +++ kubernetes/helm/dspace/templates/rbd.yaml | 8 ++ kubernetes/helm/dspace/templates/secrets.yaml | 7 + .../templates/webserver-deployment.yaml | 44 ++++++ kubernetes/helm/dspace/values.yaml | 51 +++++++ 26 files changed, 879 insertions(+) create mode 100644 kubernetes/helm/dspace/.gitignore create mode 100644 kubernetes/helm/dspace/.helmignore create mode 100644 kubernetes/helm/dspace/Chart.yaml create mode 100644 kubernetes/helm/dspace/README.md create mode 100755 kubernetes/helm/dspace/charts/postgresql/Chart.yaml create mode 100755 kubernetes/helm/dspace/charts/postgresql/README.md create mode 100755 kubernetes/helm/dspace/charts/postgresql/templates/NOTES.txt create mode 100755 kubernetes/helm/dspace/charts/postgresql/templates/_helpers.tpl create mode 100755 kubernetes/helm/dspace/charts/postgresql/templates/deployment.yaml create mode 100755 kubernetes/helm/dspace/charts/postgresql/templates/networkpolicy.yaml create mode 100755 kubernetes/helm/dspace/charts/postgresql/templates/pvc.yaml create mode 100755 kubernetes/helm/dspace/charts/postgresql/templates/secrets.yaml create mode 100755 kubernetes/helm/dspace/charts/postgresql/templates/svc.yaml create mode 100755 kubernetes/helm/dspace/charts/postgresql/values.yaml create mode 100644 kubernetes/helm/dspace/dspace.png create mode 100644 kubernetes/helm/dspace/requirements.yaml create mode 100644 kubernetes/helm/dspace/templates/apache-certs.yaml create mode 100644 kubernetes/helm/dspace/templates/client.fs.services.kubernetes.eurac.commul.dspace.yaml create mode 100644 kubernetes/helm/dspace/templates/dockerconfigjson.yaml create mode 100644 kubernetes/helm/dspace/templates/dspace-deployment.yaml create mode 100644 kubernetes/helm/dspace/templates/dspace-service.yaml create mode 100644 kubernetes/helm/dspace/templates/postgres-service.yaml create mode 100644 kubernetes/helm/dspace/templates/rbd.yaml create mode 100644 kubernetes/helm/dspace/templates/secrets.yaml create mode 100644 kubernetes/helm/dspace/templates/webserver-deployment.yaml create mode 100644 kubernetes/helm/dspace/values.yaml diff --git a/kubernetes/helm/dspace/.gitignore b/kubernetes/helm/dspace/.gitignore new file mode 100644 index 0000000..8f2ea6b --- /dev/null +++ b/kubernetes/helm/dspace/.gitignore @@ -0,0 +1,2 @@ +config.yaml +.DS_Store diff --git a/kubernetes/helm/dspace/.helmignore b/kubernetes/helm/dspace/.helmignore new file mode 100644 index 0000000..f0c1319 --- /dev/null +++ b/kubernetes/helm/dspace/.helmignore @@ -0,0 +1,21 @@ +# 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 diff --git a/kubernetes/helm/dspace/Chart.yaml b/kubernetes/helm/dspace/Chart.yaml new file mode 100644 index 0000000..f4bc22a --- /dev/null +++ b/kubernetes/helm/dspace/Chart.yaml @@ -0,0 +1,4 @@ +apiVersion: v1 +description: A Helm chart for Kubernetes +name: dspace +version: 0.1.0 diff --git a/kubernetes/helm/dspace/README.md b/kubernetes/helm/dspace/README.md new file mode 100644 index 0000000..2ba3894 --- /dev/null +++ b/kubernetes/helm/dspace/README.md @@ -0,0 +1,79 @@ +# Design Document + + +## PostgreSQL +PostgreSQL is deployed using official [helm](https://github.com/kubernetes/charts/tree/master/stable/postgresql "helm"). +Additional env variables are added : +- dspaceuser +- dspacepassword +- dspacedbname +- dspaceutilsdbname + +Other changes: +- added adapt_utilities_sql.sh to Dockerfile. +- modified commul-customization/init-dspace-dbs.sh to add env params + +### Kubertes cli +How to show **pv** (persistent volume), **pvc** (persistsne volume claim), **po** (pod) +```bash +$ kubectl -n dspace get pv,pvc,po -o wide +NAME CAPACITY ACCESSMODES RECLAIMPOLICY STATUS CLAIM STORAGECLASS REASON AGE +pv/pvc-e38405df-97b4-11e7-ba35-b60483de6a40 8Gi RWO Delete Bound dspace/dspace-postgresql auto 7d + +NAME STATUS VOLUME CAPACITY ACCESSMODES STORAGECLASS AGE +pvc/dspace-postgresql Bound pvc-e38405df-97b4-11e7-ba35-b60483de6a40 8Gi RWO auto 7d + +NAME READY STATUS RESTARTS AGE IP NODE +po/dspace-postgresql-4284405808-xfx5w 1/1 Running 0 6d 10.12.36.39 10.7.2.234 + + +``` +## Tomcat +configured two cephfs mount points, so container can scale +- /opt/lindat-dspace +- /opt/repository + +Other notes: +- installation is done manually [1] +- tomcat is started manually [2] + +```bash +$ kubectl -n dspace get po +NAME READY STATUS RESTARTS AGE +dspace-977584178-m9wsv 1/1 Running 16 16h +dspace-postgresql-4284405808-xfx5w 1/1 Running 0 1d +``` +### Kubertes cli +#### How to enable port forward +```bash +$ kubectl -n dspace port-forward dspace-977584178-m9wsv 8080:8080 +Forwarding from 127.0.0.1:8080 -> 8080 +Forwarding from [::1]:8080 -> 8080 +Handling connection for 8080 +Handling connection for 8080 +``` +now you can connect to http://localhost:8080/repository/xmlui/ + +#### How to connect into pod +```bash +$ kubectl -n dspace exec -it dspace-977584178-m9wsv bash +``` + +## Web Server +- Substitute Apache for Ngnix. +- added env variable SHIB_HOSTNAME (pod's hostname is a pretty different concept) +- Web server's certificates are injected via secrets +- Shibboleth config pushed into container [4] + +```bash +docker run -it -p 80:80 -p 443:443 -e SHIB_HOSTNAME="lindat-dev.eurac.edu" gitlab.scientificnet.org:4567/kube/kubernetes/dspace/apache:0.1 +``` + +# To Do +- [1] [PostgreSQL] we need/should automatize with a entrypoint..sh script + psudo-code: + if exist /path/file/installed, do nothing + else, install! +- [2] [Tomcat] write a entrypoint.sh to start tomcat +- [3] [Tomcat] use env variables in /opt/repository/sources/dspace/dspace/target/dspace-installer/config/dspace.cfg file +- [4] [Web Server] - use config map to supply Shibboleth config diff --git a/kubernetes/helm/dspace/charts/postgresql/Chart.yaml b/kubernetes/helm/dspace/charts/postgresql/Chart.yaml new file mode 100755 index 0000000..f799347 --- /dev/null +++ b/kubernetes/helm/dspace/charts/postgresql/Chart.yaml @@ -0,0 +1,18 @@ +description: Object-relational database management system (ORDBMS) with an emphasis + on extensibility and on standards-compliance. +engine: gotpl +home: https://www.postgresql.org/ +icon: https://www.postgresql.org/media/img/about/press/elephant.png +keywords: +- postgresql +- postgres +- database +- sql +maintainers: +- name: swordbeta +- name: databus23 +name: postgresql +sources: +- https://github.com/kubernetes/charts +- https://github.com/docker-library/postgres +version: 0.8.1 diff --git a/kubernetes/helm/dspace/charts/postgresql/README.md b/kubernetes/helm/dspace/charts/postgresql/README.md new file mode 100755 index 0000000..e213b2e --- /dev/null +++ b/kubernetes/helm/dspace/charts/postgresql/README.md @@ -0,0 +1,132 @@ +# PostgreSQL + +[PostgreSQL](https://postgresql.org) is a powerful, open source object-relational database system. It has more than 15 years of active development and a proven architecture that has earned it a strong reputation for reliability, data integrity, and correctness. + +## TL;DR; + +```bash +$ helm install stable/postgresql +``` + +## Introduction + +This chart bootstraps a [PostgreSQL](https://github.com/docker-library/postgres) deployment on a [Kubernetes](http://kubernetes.io) cluster using the [Helm](https://helm.sh) package manager. + +## Prerequisites + +- Kubernetes 1.4+ with Beta APIs enabled +- PV provisioner support in the underlying infrastructure (Only when persisting data) + +## Installing the Chart + +To install the chart with the release name `my-release`: + +```bash +$ helm install --name my-release stable/postgresql +``` + +The command deploys PostgreSQL on the Kubernetes cluster in the default configuration. The [configuration](#configuration) section lists the parameters that can be configured during installation. + +> **Tip**: List all releases using `helm list` + +## Uninstalling the Chart + +To uninstall/delete the `my-release` deployment: + +```bash +$ helm delete my-release +``` + +The command removes all the Kubernetes components associated with the chart and deletes the release. + +## Configuration + +The following tables lists the configurable parameters of the PostgresSQL chart and their default values. + +| Parameter | Description | Default | +| ----------------------- | --------------------------------------------- | ---------------------------------------------------------- | +| `image` | `postgres` image repository | `postgres` | +| `imageTag` | `postgres` image tag | `9.6.2` | +| `imagePullPolicy` | Image pull policy | `Always` if `imageTag` is `latest`, else `IfNotPresent` | +| `postgresUser` | Username of new user to create. | `postgres` | +| `postgresPassword` | Password for the new user. | random 10 characters | +| `postgresDatabase` | Name for new database to create. | `postgres` | +| `postgresInitdbArgs` | Initdb Arguments | `nil` | +| `persistence.enabled` | Use a PVC to persist data | `true` | +| `persistence.existingClaim`| Provide an existing PersistentVolumeClaim | `nil` | +| `persistence.storageClass` | Storage class of backing PVC | `nil` (uses alpha storage class annotation) | +| `persistence.accessMode` | Use volume as ReadOnly or ReadWrite | `ReadWriteOnce` | +| `persistence.size` | Size of data volume | `8Gi` | +| `persistence.subPath` | Subdirectory of the volume to mount at | `postgresql-db` | +| `resources` | CPU/Memory resource requests/limits | Memory: `256Mi`, CPU: `100m` | +| `metrics.enabled` | Start a side-car prometheus exporter | `false` | +| `metrics.image` | Exporter image | `wrouesnel/postgres_exporter` | +| `metrics.imageTag` | Exporter image | `v0.1.1` | +| `metrics.imagePullPolicy` | Exporter image pull policy | `IfNotPresent` | +| `metrics.resources` | Exporter resource requests/limit | Memory: `256Mi`, CPU: `100m` | +| `metrics.customMetrics` | Additional custom metrics | `nil` | +| `service.externalIPs` | External IPs to listen on | `[]` | +| `service.port` | TCP port | `5432` | +| `service.type` | k8s service type exposing ports, e.g. `NodePort`| `ClusterIP` | +| `networkPolicy.enabled` | Enable NetworkPolicy | `false` | +| `networkPolicy.allowExternal` | Don't require client label for connections | `true` | + +The above parameters map to the env variables defined in [postgres](http://github.com/docker-library/postgres). For more information please refer to the [postgres](http://github.com/docker-library/postgres) image documentation. + +Specify each parameter using the `--set key=value[,key=value]` argument to `helm install`. For example, + +```bash +$ helm install --name my-release \ + --set postgresUser=my-user,postgresPassword=secretpassword,postgresDatabase=my-database \ + stable/postgresql +``` + +The above command creates a PostgresSQL user named `root` with password `secretpassword`. Additionally it creates a database named `my-database`. + +Alternatively, a YAML file that specifies the values for the parameters can be provided while installing the chart. For example, + +```bash +$ helm install --name my-release -f values.yaml stable/postgresql +``` + +> **Tip**: You can use the default [values.yaml](values.yaml) + +## Persistence + +The [postgres](https://github.com/docker-library/postgres) image stores the PostgreSQL data and configurations at the `/var/lib/postgresql/data/pgdata` path of the container. + +The chart mounts a [Persistent Volume](http://kubernetes.io/docs/user-guide/persistent-volumes/) volume at this location. The volume is created using dynamic volume provisioning. If the PersistentVolumeClaim should not be managed by the chart, define `persistence.existingClaim`. + +### Existing PersistentVolumeClaims + +1. Create the PersistentVolume +1. Create the PersistentVolumeClaim +1. Install the chart +```bash +$ helm install --set persistence.existingClaim=PVC_NAME postgresql +``` + +The volume defaults to mount at a subdirectory of the volume instead of the volume root to avoid the volume's hidden directories from interfering with `initdb`. If you are upgrading this chart from before version `0.4.0`, set `persistence.subPath` to `""`. + +## Metrics +The chart optionally can start a metrics exporter for [prometheus](https://prometheus.io). The metrics endpoint (port 9187) is not exposed and it is expected that the metrics are collected from inside the k8s cluster using something similar as the described in the [example Prometheus scrape configuration](https://github.com/prometheus/prometheus/blob/master/documentation/examples/prometheus-kubernetes.yml). + +The exporter allows to create custom metrics from additional SQL queries. See the Chart's `values.yaml` for an example and consult the [exporters documentation](https://github.com/wrouesnel/postgres_exporter#adding-new-metrics-via-a-config-file) for more details. + +## NetworkPolicy + +To enable network policy for PostgreSQL, +install [a networking plugin that implements the Kubernetes +NetworkPolicy spec](https://kubernetes.io/docs/tasks/administer-cluster/declare-network-policy#before-you-begin), +and set `networkPolicy.enabled` to `true`. + +For Kubernetes v1.5 & v1.6, you must also turn on NetworkPolicy by setting +the DefaultDeny namespace annotation. Note: this will enforce policy for _all_ pods in the namespace: + + kubectl annotate namespace default "net.beta.kubernetes.io/network-policy={\"ingress\":{\"isolation\":\"DefaultDeny\"}}" + +With NetworkPolicy enabled, traffic will be limited to just port 5432. + +For more precise policy, set `networkPolicy.allowExternal=false`. This will +only allow pods with the generated client label to connect to PostgreSQL. +This label will be displayed in the output of a successful install. diff --git a/kubernetes/helm/dspace/charts/postgresql/templates/NOTES.txt b/kubernetes/helm/dspace/charts/postgresql/templates/NOTES.txt new file mode 100755 index 0000000..cb511f3 --- /dev/null +++ b/kubernetes/helm/dspace/charts/postgresql/templates/NOTES.txt @@ -0,0 +1,35 @@ +PostgreSQL can be accessed via port 5432 on the following DNS name from within your cluster: +{{ template "postgresql.fullname" . }}.{{ .Release.Namespace }}.svc.cluster.local + +To get your user password run: + + PGPASSWORD=$(kubectl get secret --namespace {{ .Release.Namespace }} {{ template "postgresql.fullname" . }} -o jsonpath="{.data.postgres-password}" | base64 --decode; echo) + +To connect to your database run the following command (using the env variable from above): + + kubectl run {{ template "postgresql.fullname" . }}-client --rm --tty -i --image postgres \ + --env "PGPASSWORD=$PGPASSWORD" \{{- if and (.Values.networkPolicy.enabled) (not .Values.networkPolicy.allowExternal) }} + --labels="{{ template "postgresql.fullname" . }}-client=true" \{{- end }} + --command -- psql -U {{ default "postgres" .Values.postgresUser }} \ + -h {{ template "postgresql.fullname" . }} {{ default "postgres" .Values.postgresDatabase }} + +{{ if and (.Values.networkPolicy.enabled) (not .Values.networkPolicy.allowExternal) }} +Note: Since NetworkPolicy is enabled, only pods with label +{{ template "postgresql.fullname" . }}-client=true" +will be able to connect to this PostgreSQL cluster. +{{- end }} + +To connect to your database directly from outside the K8s cluster: + {{- if contains "NodePort" .Values.service.type }} + PGHOST=$(kubectl get nodes --namespace {{ .Release.Namespace }} -o jsonpath='{.items[0].status.addresses[0].address}') + PGPORT=$(kubectl get svc --namespace {{ .Release.Namespace }} {{ template "postgresql.fullname" . }} -o jsonpath='{.spec.ports[0].nodePort}') + + {{- else if contains "ClusterIP" .Values.service.type }} + PGHOST=127.0.0.1 + PGPORT={{ default "5432" .Values.service.port }} + + # Execute the following commands to route the connection: + export POD_NAME=$(kubectl get pods --namespace {{ .Release.Namespace }} -l "app={{ template "postgresql.fullname" . }}" -o jsonpath="{.items[0].metadata.name}") + kubectl port-forward $POD_NAME {{ default "5432" .Values.service.port }}:{{ default "5432" .Values.service.port }} + + {{- end }} diff --git a/kubernetes/helm/dspace/charts/postgresql/templates/_helpers.tpl b/kubernetes/helm/dspace/charts/postgresql/templates/_helpers.tpl new file mode 100755 index 0000000..b652839 --- /dev/null +++ b/kubernetes/helm/dspace/charts/postgresql/templates/_helpers.tpl @@ -0,0 +1,27 @@ +{{/* vim: set filetype=mustache: */}} +{{/* +Expand the name of the chart. +*/}} +{{- define "postgresql.name" -}} +{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" -}} +{{- 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 "postgresql.fullname" -}} +{{- $name := default .Chart.Name .Values.nameOverride -}} +{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" -}} +{{- end -}} + +{{/* +Return the appropriate apiVersion for networkpolicy. +*/}} +{{- define "postgresql.networkPolicy.apiVersion" -}} +{{- if and (ge .Capabilities.KubeVersion.Minor "4") (le .Capabilities.KubeVersion.Minor "6") -}} +"extensions/v1beta1" +{{- else if ge .Capabilities.KubeVersion.Minor "7" -}} +"networking.k8s.io/v1" +{{- end -}} +{{- end -}} diff --git a/kubernetes/helm/dspace/charts/postgresql/templates/deployment.yaml b/kubernetes/helm/dspace/charts/postgresql/templates/deployment.yaml new file mode 100755 index 0000000..743679e --- /dev/null +++ b/kubernetes/helm/dspace/charts/postgresql/templates/deployment.yaml @@ -0,0 +1,114 @@ +apiVersion: extensions/v1beta1 +kind: Deployment +metadata: + name: {{ template "postgresql.fullname" . }} + labels: + app: {{ template "postgresql.fullname" . }} + chart: "{{ .Chart.Name }}-{{ .Chart.Version }}" + release: "{{ .Release.Name }}" + heritage: "{{ .Release.Service }}" +spec: + template: + metadata: + labels: + app: {{ template "postgresql.fullname" . }} + spec: + imagePullSecrets: + - name: gitlab-scientificnet-org-registry + containers: + - name: {{ template "postgresql.fullname" . }} + image: "{{ .Values.image }}:{{ .Values.imageTag }}" + imagePullPolicy: {{ default "" .Values.imagePullPolicy | quote }} + env: + - name: POSTGRES_USER + value: {{ default "postgres" .Values.postgresUser | quote }} + # Required for pg_isready in the health probes. + - name: PGUSER + value: {{ default "postgres" .Values.postgresUser | quote }} + - name: POSTGRES_DB + value: {{ default "" .Values.postgresDatabase | quote }} + - name: POSTGRES_INITDB_ARGS + value: {{ default "" .Values.postgresInitdbArgs | quote }} + - name: dspaceuser + value: {{ default "" .Values.global.dspace.user | quote }} + - name: dspacepassword + valueFrom: + secretKeyRef: + name: dspace-secrets + key: dspace.password + - name: dspacedbname + value: {{ default "" .Values.global.dspace.dbname | quote }} + - name: dspaceutilsdbname + value: {{ default "" .Values.global.dspaceutils.dbname | quote }} + - name: PGDATA + value: /var/lib/postgresql/data/pgdata + - name: POSTGRES_PASSWORD + valueFrom: + secretKeyRef: + name: {{ template "postgresql.fullname" . }} + key: postgres-password + - name: POD_IP + valueFrom: { fieldRef: { fieldPath: status.podIP } } + ports: + - name: postgresql + containerPort: 5432 + livenessProbe: + exec: + command: + - sh + - -c + - exec pg_isready --host $POD_IP + initialDelaySeconds: 60 + timeoutSeconds: 5 + failureThreshold: 6 + readinessProbe: + exec: + command: + - sh + - -c + - exec pg_isready --host $POD_IP + initialDelaySeconds: 5 + timeoutSeconds: 3 + periodSeconds: 5 + resources: +{{ toYaml .Values.resources | indent 10 }} + volumeMounts: + - name: data + mountPath: /var/lib/postgresql/data/pgdata + subPath: {{ .Values.persistence.subPath }} +{{- if .Values.metrics.enabled }} + - name: metrics + image: "{{ .Values.metrics.image }}:{{ .Values.metrics.imageTag }}" + imagePullPolicy: {{ default "" .Values.metrics.imagePullPolicy | quote }} + env: + - name: DATA_SOURCE_NAME + value: postgresql://postgres@127.0.0.1:5432?sslmode=disable + ports: + - name: metrics + containerPort: 9187 + {{- if .Values.metrics.customMetrics }} + args: ["-extend.query-path", "/conf/custom-metrics.yaml"] + volumeMounts: + - name: custom-metrics + mountPath: /conf + readOnly: true + {{- end }} + resources: +{{ toYaml .Values.metrics.resources | indent 10 }} +{{- end }} + volumes: + - name: data + {{- if .Values.persistence.enabled }} + persistentVolumeClaim: + claimName: {{ .Values.persistence.existingClaim | default (include "postgresql.fullname" .) }} + {{- else }} + emptyDir: {} + {{- end }} + {{- if and .Values.metrics.enabled .Values.metrics.customMetrics }} + - name: custom-metrics + secret: + secretName: {{ template "postgresql.fullname" . }} + items: + - key: custom-metrics.yaml + path: custom-metrics.yaml + {{- end }} diff --git a/kubernetes/helm/dspace/charts/postgresql/templates/networkpolicy.yaml b/kubernetes/helm/dspace/charts/postgresql/templates/networkpolicy.yaml new file mode 100755 index 0000000..92f3b71 --- /dev/null +++ b/kubernetes/helm/dspace/charts/postgresql/templates/networkpolicy.yaml @@ -0,0 +1,28 @@ +{{- if .Values.networkPolicy.enabled }} +kind: NetworkPolicy +apiVersion: {{ template "postgresql.networkPolicy.apiVersion" . }} +metadata: + name: "{{ template "postgresql.fullname" . }}" + labels: + app: {{ template "postgresql.fullname" . }} + chart: "{{ .Chart.Name }}-{{ .Chart.Version }}" + release: "{{ .Release.Name }}" + heritage: "{{ .Release.Service }}" +spec: + podSelector: + matchLabels: + app: "{{ template "postgresql.fullname" . }}" + ingress: + # Allow inbound connections + - ports: + - port: 5432 + {{- if not .Values.networkPolicy.allowExternal }} + from: + - podSelector: + matchLabels: + {{ template "postgresql.fullname" . }}-client: "true" + {{- end }} + # Allow prometheus scrapes + - ports: + - port: 9187 +{{- end }} diff --git a/kubernetes/helm/dspace/charts/postgresql/templates/pvc.yaml b/kubernetes/helm/dspace/charts/postgresql/templates/pvc.yaml new file mode 100755 index 0000000..12d8dc2 --- /dev/null +++ b/kubernetes/helm/dspace/charts/postgresql/templates/pvc.yaml @@ -0,0 +1,23 @@ +{{- if and .Values.persistence.enabled (not .Values.persistence.existingClaim) -}} +kind: PersistentVolumeClaim +apiVersion: v1 +metadata: + name: {{ template "postgresql.fullname" . }} + labels: + app: {{ template "postgresql.fullname" . }} + chart: "{{ .Chart.Name }}-{{ .Chart.Version }}" + release: "{{ .Release.Name }}" + heritage: "{{ .Release.Service }}" + annotations: + {{- if .Values.persistence.storageClass }} + volume.beta.kubernetes.io/storage-class: {{ .Values.persistence.storageClass | quote }} + {{- else }} + volume.alpha.kubernetes.io/storage-class: default + {{- end }} +spec: + accessModes: + - {{ .Values.persistence.accessMode | quote }} + resources: + requests: + storage: {{ .Values.persistence.size | quote }} +{{- end -}} diff --git a/kubernetes/helm/dspace/charts/postgresql/templates/secrets.yaml b/kubernetes/helm/dspace/charts/postgresql/templates/secrets.yaml new file mode 100755 index 0000000..6dd4c7d --- /dev/null +++ b/kubernetes/helm/dspace/charts/postgresql/templates/secrets.yaml @@ -0,0 +1,19 @@ +apiVersion: v1 +kind: Secret +metadata: + name: {{ template "postgresql.fullname" . }} + labels: + app: {{ template "postgresql.fullname" . }} + chart: "{{ .Chart.Name }}-{{ .Chart.Version }}" + release: "{{ .Release.Name }}" + heritage: "{{ .Release.Service }}" +type: Opaque +data: + {{ if .Values.postgresPassword }} + postgres-password: {{ .Values.postgresPassword | b64enc | quote }} + {{ else }} + postgres-password: {{ randAlphaNum 10 | b64enc | quote }} + {{ end }} + {{- if .Values.metrics.customMetrics }} + custom-metrics.yaml: {{ toYaml .Values.metrics.customMetrics | b64enc | quote }} + {{- end }} diff --git a/kubernetes/helm/dspace/charts/postgresql/templates/svc.yaml b/kubernetes/helm/dspace/charts/postgresql/templates/svc.yaml new file mode 100755 index 0000000..6446db5 --- /dev/null +++ b/kubernetes/helm/dspace/charts/postgresql/templates/svc.yaml @@ -0,0 +1,26 @@ +apiVersion: v1 +kind: Service +metadata: + name: {{ template "postgresql.fullname" . }} + labels: + app: {{ template "postgresql.fullname" . }} + chart: "{{ .Chart.Name }}-{{ .Chart.Version }}" + release: "{{ .Release.Name }}" + heritage: "{{ .Release.Service }}" +{{- if .Values.metrics.enabled }} + annotations: + prometheus.io/scrape: "true" + prometheus.io/port: "9187" +{{- end }} +spec: + type: {{ .Values.service.type }} + ports: + - name: postgresql + port: {{ .Values.service.port }} + targetPort: postgresql +{{- if .Values.service.externalIPs }} + externalIPs: +{{ toYaml .Values.service.externalIPs | indent 4 }} +{{- end }} + selector: + app: {{ template "postgresql.fullname" . }} \ No newline at end of file diff --git a/kubernetes/helm/dspace/charts/postgresql/values.yaml b/kubernetes/helm/dspace/charts/postgresql/values.yaml new file mode 100755 index 0000000..c092fe4 --- /dev/null +++ b/kubernetes/helm/dspace/charts/postgresql/values.yaml @@ -0,0 +1,91 @@ +## postgres image repository +image: "postgres" +## postgres image version +## ref: https://hub.docker.com/r/library/postgres/tags/ +## +imageTag: "9.6.2" + +## Specify a imagePullPolicy +## 'Always' if imageTag is 'latest', else set to 'IfNotPresent' +## ref: http://kubernetes.io/docs/user-guide/images/#pre-pulling-images +## +# imagePullPolicy: + +## Create a database user +## Default: postgres +# postgresUser: +## Default: random 10 character string +# postgresPassword: + +## Create a database +## Default: the postgres user +# postgresDatabase: + +## Specify initdb arguments, e.g. --data-checksums +## ref: https://github.com/docker-library/docs/blob/master/postgres/content.md#postgres_initdb_args +## ref: https://www.postgresql.org/docs/current/static/app-initdb.html +# postgresInitdbArgs: + +## Persist data to a persitent volume +persistence: + enabled: true + + ## A manually managed Persistent Volume and Claim + ## Requires persistence.enabled: true + ## If defined, PVC must be created manually before volume will be bound + # existingClaim: + + ## If defined, volume.beta.kubernetes.io/storage-class: <storageClass> + ## Default: volume.alpha.kubernetes.io/storage-class: default + ## + # storageClass: + accessMode: ReadWriteOnce + size: 8Gi + subPath: "postgresql-db" + +metrics: + enabled: false + image: wrouesnel/postgres_exporter + imageTag: v0.1.1 + imagePullPolicy: IfNotPresent + resources: + requests: + memory: 256Mi + cpu: 100m + ## Define additional custom metrics + ## ref: https://github.com/wrouesnel/postgres_exporter#adding-new-metrics-via-a-config-file + #customMetrics: + # pg_database: + # query: "SELECT d.datname AS name, CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') THEN pg_catalog.pg_database_size(d.datname) ELSE 0 END AS size FROM pg_catalog.pg_database d where datname not in ('template0', 'template1', 'postgres')" + # metrics: + # - name: + # usage: "LABEL" + # description: "Name of the database" + # - size_bytes: + # usage: "GAUGE" + # description: "Size of the database in bytes" + +## Configure resource requests and limits +## ref: http://kubernetes.io/docs/user-guide/compute-resources/ +## +resources: + requests: + memory: 256Mi + cpu: 100m + +service: + type: ClusterIP + port: 5432 + externalIPs: [] + +networkPolicy: + ## Enable creation of NetworkPolicy resources. + ## + enabled: false + + ## The Policy model to apply. When set to false, only pods with the correct + ## client label will have network access to the port PostgreSQL is listening + ## on. When true, PostgreSQL will accept connections from any source + ## (with the correct destination port). + ## + allowExternal: true diff --git a/kubernetes/helm/dspace/dspace.png b/kubernetes/helm/dspace/dspace.png new file mode 100644 index 0000000000000000000000000000000000000000..b0f02a4527bc702db500509184db473791bbbfb6 GIT binary patch literal 80292 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 NV}8=gglu#%<iD!j<M;po literal 0 HcmV?d00001 diff --git a/kubernetes/helm/dspace/requirements.yaml b/kubernetes/helm/dspace/requirements.yaml new file mode 100644 index 0000000..4f6af4a --- /dev/null +++ b/kubernetes/helm/dspace/requirements.yaml @@ -0,0 +1,4 @@ +dependencies: +- name: postgresql + version: 0.8.1 + repository: https://kubernetes-charts.storage.googleapis.com/ diff --git a/kubernetes/helm/dspace/templates/apache-certs.yaml b/kubernetes/helm/dspace/templates/apache-certs.yaml new file mode 100644 index 0000000..24bf332 --- /dev/null +++ b/kubernetes/helm/dspace/templates/apache-certs.yaml @@ -0,0 +1,14 @@ +apiVersion: v1 +metadata: + creationTimestamp: null + labels: + io.kompose.service: dspace + chart: "{{ .Chart.Name }}-{{ .Chart.Version }}" + release: "{{ .Release.Name }}" + heritage: "{{ .Release.Service }}" + name: apache-lindat-keys +data: + lindat-dev.eurac.edu.cert: {{ .Values.webserver.cert }} + lindat-dev.eurac.edu.key: {{ .Values.webserver.key }} +kind: Secret +type: Opaque \ No newline at end of file diff --git a/kubernetes/helm/dspace/templates/client.fs.services.kubernetes.eurac.commul.dspace.yaml b/kubernetes/helm/dspace/templates/client.fs.services.kubernetes.eurac.commul.dspace.yaml new file mode 100644 index 0000000..b8b134c --- /dev/null +++ b/kubernetes/helm/dspace/templates/client.fs.services.kubernetes.eurac.commul.dspace.yaml @@ -0,0 +1,7 @@ +apiVersion: v1 +kind: Secret +metadata: + name: client.fs.services.kubernetes.eurac.commul.dspace +type: Opaque +data: + key: {{ .Values.cephfs.key }} diff --git a/kubernetes/helm/dspace/templates/dockerconfigjson.yaml b/kubernetes/helm/dspace/templates/dockerconfigjson.yaml new file mode 100644 index 0000000..f8f9103 --- /dev/null +++ b/kubernetes/helm/dspace/templates/dockerconfigjson.yaml @@ -0,0 +1,9 @@ +apiVersion: v1 +data: + .dockerconfigjson: {{ .Values.dockerconfig.json | quote }} +kind: Secret +metadata: + creationTimestamp: 2017-06-23T13:05:27Z + name: gitlab-scientificnet-org-registry +type: kubernetes.io/dockerconfigjson + \ No newline at end of file diff --git a/kubernetes/helm/dspace/templates/dspace-deployment.yaml b/kubernetes/helm/dspace/templates/dspace-deployment.yaml new file mode 100644 index 0000000..47ab197 --- /dev/null +++ b/kubernetes/helm/dspace/templates/dspace-deployment.yaml @@ -0,0 +1,77 @@ +apiVersion: extensions/v1beta1 +kind: Deployment +metadata: + annotations: + kompose.cmd: kompose convert -f docker-compose.yml + kompose.version: 1.1.0 () + creationTimestamp: null + labels: + io.kompose.service: dspace + name: dspace +spec: + replicas: 1 + strategy: {} + template: + metadata: + creationTimestamp: null + labels: + io.kompose.service: dspace + spec: + containers: + - name: {{ .Chart.Name }} + image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}" + imagePullPolicy: {{ .Values.image.pullPolicy }} + command: ["sleep","360000"] + # command: ["/etc/init.d/tomcat8","start"] + env: + - name: dspaceuser + value: {{ default "" .Values.global.dspace.user | quote }} + - name: dspacepassword + valueFrom: + secretKeyRef: + name: dspace-secrets + key: dspace.password + - name: dspacedbname + value: {{ default "" .Values.global.dspace.dbname | quote }} + - name: dspaceutilsdbname + value: {{ default "" .Values.global.dspaceutils.dbname | quote }} + ports: + - containerPort: 8080 + resources: {} + volumeMounts: + - name: cephfs-repository + mountPath: /opt/repository + - name: cephfs-lindat + mountPath: /opt/lindat-dspace + imagePullSecrets: + - name: gitlab-scientificnet-org-registry + volumes: + - name: cephfs-repository + cephfs: + monitors: + - 10.8.55.201:6789 + - 10.8.55.202:6789 + - 10.8.55.203:6789 + - 10.7.55.201:6789 + - 10.7.55.202:6789 + path: /services/kubernetes/eurac/commul/dspace/dspace/repository + user: fs.services.kubernetes.eurac.commul.dspace + secretRef: + name: client.fs.services.kubernetes.eurac.commul.dspace + readOnly: false + - name: cephfs-lindat + cephfs: + monitors: + - 10.8.55.201:6789 + - 10.8.55.202:6789 + - 10.8.55.203:6789 + - 10.7.55.201:6789 + - 10.7.55.202:6789 + path: /services/kubernetes/eurac/commul/dspace/dspace/lindat-common + user: fs.services.kubernetes.eurac.commul.dspace + secretRef: + name: client.fs.services.kubernetes.eurac.commul.dspace + readOnly: false + + restartPolicy: Always +status: {} \ No newline at end of file diff --git a/kubernetes/helm/dspace/templates/dspace-service.yaml b/kubernetes/helm/dspace/templates/dspace-service.yaml new file mode 100644 index 0000000..c919cf3 --- /dev/null +++ b/kubernetes/helm/dspace/templates/dspace-service.yaml @@ -0,0 +1,19 @@ +apiVersion: v1 +kind: Service +metadata: + annotations: + kompose.cmd: kompose convert -f docker-compose.yml + kompose.version: 1.1.0 () + creationTimestamp: null + labels: + io.kompose.service: dspace + name: dspace +spec: + ports: + - name: "8080" + port: 8080 + targetPort: 8080 + selector: + io.kompose.service: dspace +status: + loadBalancer: {} diff --git a/kubernetes/helm/dspace/templates/postgres-service.yaml b/kubernetes/helm/dspace/templates/postgres-service.yaml new file mode 100644 index 0000000..1aa7bed --- /dev/null +++ b/kubernetes/helm/dspace/templates/postgres-service.yaml @@ -0,0 +1,20 @@ +papiVersion: v1 +kind: Service +metadata: + annotations: + kompose.cmd: kompose convert -f docker-compose.yml + kompose.version: 1.1.0 () + creationTimestamp: null + labels: + io.kompose.service: postgres + name: postgres +spec: + clusterIP: None + ports: + - name: headless + port: 55555 + targetPort: 0 + selector: + io.kompose.service: postgres +status: + loadBalancer: {} diff --git a/kubernetes/helm/dspace/templates/rbd.yaml b/kubernetes/helm/dspace/templates/rbd.yaml new file mode 100644 index 0000000..217ed30 --- /dev/null +++ b/kubernetes/helm/dspace/templates/rbd.yaml @@ -0,0 +1,8 @@ +kind: Secret +apiVersion: v1 +metadata: + name: ceph-rbd-secret +data: + key: {{ .Values.rbd.secretToken | b64enc | quote }} +type: kubernetes.io/rbd + diff --git a/kubernetes/helm/dspace/templates/secrets.yaml b/kubernetes/helm/dspace/templates/secrets.yaml new file mode 100644 index 0000000..f5a62cc --- /dev/null +++ b/kubernetes/helm/dspace/templates/secrets.yaml @@ -0,0 +1,7 @@ +apiVersion: v1 +kind: Secret +metadata: + name: dspace-secrets +type: Opaque +data: + dspace.password: {{ .Values.global.dspace.password | b64enc | quote }} diff --git a/kubernetes/helm/dspace/templates/webserver-deployment.yaml b/kubernetes/helm/dspace/templates/webserver-deployment.yaml new file mode 100644 index 0000000..c812f66 --- /dev/null +++ b/kubernetes/helm/dspace/templates/webserver-deployment.yaml @@ -0,0 +1,44 @@ +apiVersion: extensions/v1beta1 +kind: Deployment +metadata: + annotations: + kompose.cmd: kompose convert -f docker-compose.yml + kompose.version: 1.1.0 () + creationTimestamp: null + labels: + io.kompose.service: dspace + name: apache +spec: + replicas: 1 + strategy: {} + template: + metadata: + creationTimestamp: null + labels: + io.kompose.service: apache + spec: + containers: + - image: "{{ .Values.webserver.repository }}:{{ .Values.webserver.tag }}" + name: apache + command: ["sleep","3600"] + imagePullPolicy: {{ .Values.image.pullPolicy }} + env: + - name: SHIB_HOSTNAME + value: "{{ .Values.webserver.shib_hostname }}" + ports: + - containerPort: 80 + - containerPort: 443 + resources: {} + volumeMounts: + - name: apache-certs + mountPath: "/etc/httpd/certs/" + readOnly: true + imagePullSecrets: + - name: gitlab-scientificnet-org-registry + volumes: + - name: apache-certs + secret: + secretName: "apache-lindat-keys" + restartPolicy: Always +status: {} + \ No newline at end of file diff --git a/kubernetes/helm/dspace/values.yaml b/kubernetes/helm/dspace/values.yaml new file mode 100644 index 0000000..f1b62b8 --- /dev/null +++ b/kubernetes/helm/dspace/values.yaml @@ -0,0 +1,51 @@ +# Default values for dspace. +# This is a YAML-formatted file. +# Declare variables to be passed into your templates. +postgres: + password: "xxx" + repository: nginx + tag: stable + pullPolicy: IfNotPresent + +replicaCount: 1 +image: + repository: gitlab.scientificnet.org:4567/kube/kubernetes/dspace/dspace + tag: 0.2 + pullPolicy: IfNotPresent +service: + name: nginx + type: ClusterIP + externalPort: 80 + internalPort: 80 +ingress: + enabled: false + # Used to create Ingress record (should used with service.type: ClusterIP). + hosts: + - chart-example.local + annotations: + # kubernetes.io/ingress.class: nginx + # kubernetes.io/tls-acme: "true" + tls: + # Secrets must be manually created in the namespace. + # - secretName: chart-example-tls + # hosts: + # - chart-example.local +resources: {} + # We usually recommend not to specify default resources and to leave this as a conscious + # choice for the user. This also increases chances charts run on environments with little + # resources, such as Minikube. If you do want to specify resources, uncomment the following + # lines, adjust them as necessary, and remove the curly braces after 'resources:'. + # limits: + # cpu: 100m + # memory: 128Mi + #requests: + # cpu: 100m + # memory: 128Mi +dspace: + dbname : + password : + user : +dspaceutils: + dbname : +cephfs: + key: "" \ No newline at end of file -- GitLab