diff --git a/README.md b/README.md index b08a939b57..3270d29f94 100644 --- a/README.md +++ b/README.md @@ -34,7 +34,6 @@ $ helm search bitnami - [RabbitMQ](https://github.com/helm/charts/tree/master/stable/rabbitmq) - [Redis](https://github.com/helm/charts/tree/master/stable/redis) - [Redmine](https://github.com/helm/charts/tree/master/stable/redmine) -- [SugarCRM](https://github.com/helm/charts/tree/master/stable/sugarcrm) - [SuiteCRM](https://github.com/helm/charts/tree/master/stable/suitecrm) - [TestLink](https://github.com/helm/charts/tree/master/stable/testlink) - [WordPress](https://github.com/helm/charts/tree/master/stable/wordpress) diff --git a/bitnami/consul/Chart.yaml b/bitnami/consul/Chart.yaml index 7aea1eb218..a3fcf3a35a 100755 --- a/bitnami/consul/Chart.yaml +++ b/bitnami/consul/Chart.yaml @@ -1,6 +1,6 @@ name: consul version: 3.0.0 -appVersion: 1.3.0 +appVersion: 1.4.0 description: Highly available and distributed service discovery and key-value store designed with support for the modern data center to make distributed systems and configuration easy. diff --git a/bitnami/consul/values-production.yaml b/bitnami/consul/values-production.yaml index e2fbce8e25..1341ffac9a 100644 --- a/bitnami/consul/values-production.yaml +++ b/bitnami/consul/values-production.yaml @@ -10,7 +10,7 @@ image: registry: docker.io repository: bitnami/consul - tag: 1.3.0 + tag: 1.4.0 ## Specify a imagePullPolicy ## Defaults to 'Always' if image tag is 'latest', else set to 'IfNotPresent' ## ref: http://kubernetes.io/docs/user-guide/images/#pre-pulling-images diff --git a/bitnami/consul/values.yaml b/bitnami/consul/values.yaml index ffdab758f0..b771c84eeb 100644 --- a/bitnami/consul/values.yaml +++ b/bitnami/consul/values.yaml @@ -10,7 +10,7 @@ image: registry: docker.io repository: bitnami/consul - tag: 1.3.0 + tag: 1.4.0 ## Specify a imagePullPolicy ## Defaults to 'Always' if image tag is 'latest', else set to 'IfNotPresent' ## ref: http://kubernetes.io/docs/user-guide/images/#pre-pulling-images diff --git a/bitnami/elasticsearch/Chart.yaml b/bitnami/elasticsearch/Chart.yaml index 72174c2bfa..8e0dd71b4b 100644 --- a/bitnami/elasticsearch/Chart.yaml +++ b/bitnami/elasticsearch/Chart.yaml @@ -1,6 +1,6 @@ name: elasticsearch -version: 4.2.0 -appVersion: 6.4.3 +version: 4.2.2 +appVersion: 6.5.1 description: A highly scalable open-source full-text search and analytics engine keywords: - elasticsearch diff --git a/bitnami/elasticsearch/values-production.yaml b/bitnami/elasticsearch/values-production.yaml index 1420d91e82..33358978a1 100644 --- a/bitnami/elasticsearch/values-production.yaml +++ b/bitnami/elasticsearch/values-production.yaml @@ -10,7 +10,7 @@ image: registry: docker.io repository: bitnami/elasticsearch - tag: 6.4.3 + tag: 6.5.1 ## Specify a imagePullPolicy ## Defaults to 'Always' if image tag is 'latest', else set to 'IfNotPresent' ## ref: http://kubernetes.io/docs/user-guide/images/#pre-pulling-images diff --git a/bitnami/elasticsearch/values.yaml b/bitnami/elasticsearch/values.yaml index dd77ed37d3..d34dccabed 100644 --- a/bitnami/elasticsearch/values.yaml +++ b/bitnami/elasticsearch/values.yaml @@ -10,7 +10,7 @@ image: registry: docker.io repository: bitnami/elasticsearch - tag: 6.4.3 + tag: 6.5.1 ## Specify a imagePullPolicy ## Defaults to 'Always' if image tag is 'latest', else set to 'IfNotPresent' ## ref: http://kubernetes.io/docs/user-guide/images/#pre-pulling-images diff --git a/bitnami/external-dns/Chart.yaml b/bitnami/external-dns/Chart.yaml index 6dd82b1d0a..d90bcccbff 100644 --- a/bitnami/external-dns/Chart.yaml +++ b/bitnami/external-dns/Chart.yaml @@ -1,5 +1,5 @@ name: external-dns -version: 1.1.1 +version: 1.1.2 appVersion: 0.5.8 description: ExternalDNS is a Kubernetes addon that configures public DNS servers with information about exposed Kubernetes services to make them discoverable. keywords: diff --git a/bitnami/external-dns/README.md b/bitnami/external-dns/README.md index 0285386ace..653f60f377 100644 --- a/bitnami/external-dns/README.md +++ b/bitnami/external-dns/README.md @@ -125,7 +125,23 @@ $ helm install --name my-release -f values.yaml bitnami/external-dns Find information about the requirements for each DNS provider on the link below: - - [ExternalDNS Tutorials](https://github.com/kubernetes-incubator/external-dns/tree/master/docs/tutorials) +- [ExternalDNS Tutorials](https://github.com/kubernetes-incubator/external-dns/tree/master/docs/tutorials) + +For instance, to install ExternalDNS on AWS, you need to: + +- Provide the K8s worker node which runs the cluster autoscaler with a minimum IAM policy (check [IAM permissions docs](https://github.com/kubernetes-incubator/external-dns/blob/master/docs/tutorials/aws.md#iam-permissions) for more information). +- Setup a hosted zone on Route53 and annotate the Hosted Zone ID and its associated "nameservers" as described on [these docs](https://github.com/kubernetes-incubator/external-dns/blob/master/docs/tutorials/aws.md#set-up-a-hosted-zone). +- Install ExternalDNS chart using the command below: + +> Note: replace the placeholder HOSTED_ZONE_NAME with your hosted zoned name. + +```bash +$ helm install --name my-release \ + --set provider=aws \ + --set aws.zoneType=public \ + --set domainFilters=HOSTED_ZONE_NAME \ + bitnami/external-dns +``` ## Upgrading diff --git a/bitnami/kafka/Chart.yaml b/bitnami/kafka/Chart.yaml index 8a37847752..2a8ae12354 100644 --- a/bitnami/kafka/Chart.yaml +++ b/bitnami/kafka/Chart.yaml @@ -1,5 +1,5 @@ name: kafka -version: 1.1.2 +version: 1.1.3 appVersion: 2.0.1 description: Apache Kafka is a distributed streaming platform. keywords: diff --git a/bitnami/kafka/templates/_helpers.tpl b/bitnami/kafka/templates/_helpers.tpl index bae197a23f..611dfeb9eb 100644 --- a/bitnami/kafka/templates/_helpers.tpl +++ b/bitnami/kafka/templates/_helpers.tpl @@ -69,5 +69,5 @@ We truncate at 63 chars because some Kubernetes name fields are limited to this */}} {{- define "kafka.zookeeper.fullname" -}} {{- $name := default "zookeeper" .Values.zookeeper.nameOverride -}} -{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" -}} +{{- printf "%s-%s" .Release.Name $name | trunc 24 | trimSuffix "-" -}} {{- end -}} diff --git a/bitnami/kubeapps/Chart.yaml b/bitnami/kubeapps/Chart.yaml index 0bbea75052..e5adf176d5 100644 --- a/bitnami/kubeapps/Chart.yaml +++ b/bitnami/kubeapps/Chart.yaml @@ -1,7 +1,7 @@ apiVersion: v1 name: kubeapps -version: 0.9.6 -appVersion: v1.0.0-beta.4 +version: 1.0.0 +appVersion: v1.0.0 description: Kubeapps is a dashboard for your Kubernetes cluster that makes it easy to deploy and manage applications in your cluster using Helm icon: https://raw.githubusercontent.com/kubeapps/kubeapps/master/docs/img/logo.png keywords: @@ -17,3 +17,5 @@ maintainers: email: containers@bitnami.com - name: prydonius email: adnan@bitnami.com +# 2.10+ required because we need the install-crd hook type +tillerVersion: ">=2.10.0" diff --git a/bitnami/kubeapps/README.md b/bitnami/kubeapps/README.md index 9bcd1283a5..3abf2d372c 100644 --- a/bitnami/kubeapps/README.md +++ b/bitnami/kubeapps/README.md @@ -27,7 +27,7 @@ It also packages the [Bitnami MongoDB chart](https://github.com/helm/charts/tree ## Prerequisites - Kubernetes 1.8+ (tested with Azure Kubernetes Service, Google Kubernetes Engine, minikube and Docker for Desktop Kubernetes) -- Helm 2.9.1+ +- Helm 2.10.0+ - PV provisioner support in the underlying infrastructure - Administrative access to the cluster to create and update RBAC ClusterRoles diff --git a/bitnami/kubeapps/requirements.lock b/bitnami/kubeapps/requirements.lock index 861eb9fe7d..fda687ef07 100644 --- a/bitnami/kubeapps/requirements.lock +++ b/bitnami/kubeapps/requirements.lock @@ -1,6 +1,6 @@ dependencies: - name: mongodb repository: https://kubernetes-charts.storage.googleapis.com - version: 4.3.7 + version: 4.9.0 digest: sha256:415440e73af7d4b02a10a15f28bb2fc095cbdffdc2e1676d76e0f0eaa1632d50 -generated: 2018-09-28T12:48:52.725939266+02:00 +generated: 2018-11-14T11:54:24.338893216Z diff --git a/bitnami/kubeapps/templates/apprepositories.yaml b/bitnami/kubeapps/templates/apprepositories.yaml new file mode 100644 index 0000000000..d279fd9be6 --- /dev/null +++ b/bitnami/kubeapps/templates/apprepositories.yaml @@ -0,0 +1,17 @@ +{{- range .Values.apprepository.initialRepos }} +apiVersion: kubeapps.com/v1alpha1 +kind: AppRepository +metadata: + name: {{ .name }} + labels: + app: {{ template "kubeapps.apprepository.fullname" $ }} + chart: {{ template "kubeapps.chart" $ }} + release: {{ $.Release.Name }} + heritage: {{ $.Release.Service }} +annotations: + helm.sh/hook: pre-install +spec: + type: helm + url: {{ .url }} +--- +{{ end -}} diff --git a/bitnami/kubeapps/templates/apprepository-crd.yaml b/bitnami/kubeapps/templates/apprepository-crd.yaml index abaeb86750..8f41324812 100644 --- a/bitnami/kubeapps/templates/apprepository-crd.yaml +++ b/bitnami/kubeapps/templates/apprepository-crd.yaml @@ -1,4 +1,4 @@ -{{- if or (not (.Capabilities.APIVersions.Has "kubeapps.com/v1alpha1")) (.Release.IsUpgrade) -}} +{{- if not (.Capabilities.APIVersions.Has "kubeapps.com/v1alpha1") -}} # The condition above will be true if another instance of Kubeapps is # already installed apiVersion: apiextensions.k8s.io/v1beta1 @@ -6,7 +6,7 @@ kind: CustomResourceDefinition metadata: name: apprepositories.kubeapps.com annotations: - "helm.sh/resource-policy": keep + "helm.sh/hook": crd-install labels: app: {{ template "kubeapps.apprepository.fullname" . }} chart: {{ template "kubeapps.chart" . }} diff --git a/bitnami/kubeapps/templates/apprepository-deployment.yaml b/bitnami/kubeapps/templates/apprepository-deployment.yaml index 6dc95d22ab..579a11c07d 100644 --- a/bitnami/kubeapps/templates/apprepository-deployment.yaml +++ b/bitnami/kubeapps/templates/apprepository-deployment.yaml @@ -27,6 +27,7 @@ spec: - /apprepository-controller args: - --logtostderr + - --user-agent-comment=kubeapps/{{ .Chart.AppVersion }} - --repo-sync-image={{ template "kubeapps.image" (list .Values.apprepository.syncImage .Values.global) }} - --namespace={{ .Release.Namespace }} - --mongo-url={{ template "kubeapps.mongodb.fullname" . }} diff --git a/bitnami/kubeapps/templates/apprepository-jobs-bootstrap-config.yaml b/bitnami/kubeapps/templates/apprepository-jobs-bootstrap-config.yaml deleted file mode 100644 index 400eabe588..0000000000 --- a/bitnami/kubeapps/templates/apprepository-jobs-bootstrap-config.yaml +++ /dev/null @@ -1,30 +0,0 @@ -apiVersion: v1 -kind: ConfigMap -metadata: - name: {{ template "kubeapps.apprepository-jobs-bootstrap.fullname" . }} - annotations: - helm.sh/hook: post-install - helm.sh/hook-delete-policy: hook-succeeded - helm.sh/hook-weight: "-10" - labels: - app: {{ template "kubeapps.apprepository-jobs-bootstrap.fullname" . }} - chart: {{ template "kubeapps.chart" . }} - release: {{ .Release.Name }} - heritage: {{ .Release.Service }} -data: - apprepositories.yaml: |- - {{- range .Values.apprepository.initialRepos }} - apiVersion: kubeapps.com/v1alpha1 - kind: AppRepository - metadata: - name: {{ .name }} - labels: - app: {{ template "kubeapps.apprepository.fullname" $ }} - chart: {{ template "kubeapps.chart" $ }} - release: {{ $.Release.Name }} - heritage: {{ $.Release.Service }} - spec: - type: helm - url: {{ .url }} - --- - {{ end -}} diff --git a/bitnami/kubeapps/templates/apprepository-jobs-bootstrap-rbac.yaml b/bitnami/kubeapps/templates/apprepository-jobs-bootstrap-rbac.yaml deleted file mode 100644 index dd1d7fcc24..0000000000 --- a/bitnami/kubeapps/templates/apprepository-jobs-bootstrap-rbac.yaml +++ /dev/null @@ -1,46 +0,0 @@ -{{- if .Values.rbac.create -}} -apiVersion: rbac.authorization.k8s.io/v1beta1 -kind: Role -metadata: - name: {{ template "kubeapps.apprepository-jobs-bootstrap.fullname" . }} - annotations: - helm.sh/hook: post-install - helm.sh/hook-delete-policy: hook-succeeded - helm.sh/hook-weight: "-10" - labels: - app: {{ template "kubeapps.apprepository-jobs-bootstrap.fullname" . }} - chart: {{ template "kubeapps.chart" . }} - release: {{ .Release.Name }} - heritage: {{ .Release.Service }} -rules: -- apiGroups: - - kubeapps.com - resources: - - apprepositories - verbs: - - get - - create - - delete ---- -apiVersion: rbac.authorization.k8s.io/v1beta1 -kind: RoleBinding -metadata: - name: {{ template "kubeapps.apprepository-jobs-bootstrap.fullname" . }} - annotations: - helm.sh/hook: post-install - helm.sh/hook-delete-policy: hook-succeeded - helm.sh/hook-weight: "-10" - labels: - app: {{ template "kubeapps.apprepository-jobs-bootstrap.fullname" . }} - chart: {{ template "kubeapps.chart" . }} - release: {{ .Release.Name }} - heritage: {{ .Release.Service }} -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: Role - name: {{ template "kubeapps.apprepository-jobs-bootstrap.fullname" . }} -subjects: -- kind: ServiceAccount - name: {{ template "kubeapps.apprepository-jobs-bootstrap.fullname" . }} - namespace: {{ .Release.Namespace }} -{{- end -}} diff --git a/bitnami/kubeapps/templates/apprepository-jobs-bootstrap-serviceaccount.yaml b/bitnami/kubeapps/templates/apprepository-jobs-bootstrap-serviceaccount.yaml deleted file mode 100644 index fb5527f588..0000000000 --- a/bitnami/kubeapps/templates/apprepository-jobs-bootstrap-serviceaccount.yaml +++ /dev/null @@ -1,13 +0,0 @@ -apiVersion: v1 -kind: ServiceAccount -metadata: - name: {{ template "kubeapps.apprepository-jobs-bootstrap.fullname" . }} - annotations: - helm.sh/hook: post-install - helm.sh/hook-delete-policy: hook-succeeded - helm.sh/hook-weight: "-10" - labels: - app: {{ template "kubeapps.apprepository-jobs-bootstrap.fullname" . }} - chart: {{ template "kubeapps.chart" . }} - release: {{ .Release.Name }} - heritage: {{ .Release.Service }} diff --git a/bitnami/kubeapps/templates/apprepository-jobs-bootstrap.yaml b/bitnami/kubeapps/templates/apprepository-jobs-bootstrap.yaml deleted file mode 100644 index c2a4ed2df7..0000000000 --- a/bitnami/kubeapps/templates/apprepository-jobs-bootstrap.yaml +++ /dev/null @@ -1,48 +0,0 @@ -apiVersion: batch/v1 -kind: Job -metadata: - name: {{ template "kubeapps.apprepository-jobs-bootstrap.fullname" . }} - annotations: - helm.sh/hook: post-install - helm.sh/hook-delete-policy: hook-succeeded - labels: - app: {{ template "kubeapps.apprepository-jobs-bootstrap.fullname" . }} - chart: {{ template "kubeapps.chart" . }} - release: {{ .Release.Name }} - heritage: {{ .Release.Service }} -spec: - template: - metadata: - labels: - app: {{ template "kubeapps.apprepository-jobs-bootstrap.fullname" . }} - release: {{ .Release.Name }} - spec: - containers: - - name: kubectl - image: {{ template "kubeapps.image" (list .Values.hooks.image .Values.global) }} - command: - - kubectl - - apply - - -f - - /tmp/apprepositories/apprepositories.yaml - volumeMounts: - - mountPath: /tmp/apprepositories - name: apprepositories-config - volumes: - - name: apprepositories-config - configMap: - name: {{ template "kubeapps.apprepository-jobs-bootstrap.fullname" . }} - restartPolicy: OnFailure - serviceAccountName: {{ template "kubeapps.apprepository-jobs-bootstrap.fullname" . }} - {{- with .Values.hooks.nodeSelector }} - nodeSelector: -{{ toYaml . | indent 8 }} - {{- end }} - {{- with .Values.hooks.affinity }} - affinity: -{{ toYaml . | indent 8 }} - {{- end }} - {{- with.Values.hooks.tolerations }} - tolerations: -{{ toYaml . | indent 8 }} - {{- end }} diff --git a/bitnami/kubeapps/templates/kubeapps-jobs-upgrade-rbac.yaml b/bitnami/kubeapps/templates/kubeapps-jobs-upgrade-rbac.yaml deleted file mode 100644 index 73880ffe2c..0000000000 --- a/bitnami/kubeapps/templates/kubeapps-jobs-upgrade-rbac.yaml +++ /dev/null @@ -1,57 +0,0 @@ -{{- if .Values.rbac.create -}} -apiVersion: rbac.authorization.k8s.io/v1beta1 -kind: Role -metadata: - name: {{ template "kubeapps.kubeapps-jobs-upgrade.fullname" . }} - annotations: - helm.sh/hook: post-upgrade - helm.sh/hook-delete-policy: hook-succeeded - helm.sh/hook-weight: "-10" - labels: - app: {{ template "kubeapps.kubeapps-jobs-upgrade.fullname" . }} - chart: {{ template "kubeapps.chart" . }} - release: {{ .Release.Name }} - heritage: {{ .Release.Service }} -rules: -- apiGroups: - - kubeapps.com - resources: - - apprepositories - verbs: - - get - - create - - patch - - delete -- apiGroups: - - "" - resources: - - secrets - - pods - verbs: - - get - - list - - create - - delete ---- -apiVersion: rbac.authorization.k8s.io/v1beta1 -kind: RoleBinding -metadata: - name: {{ template "kubeapps.kubeapps-jobs-upgrade.fullname" . }} - annotations: - helm.sh/hook: post-upgrade - helm.sh/hook-delete-policy: hook-succeeded - helm.sh/hook-weight: "-10" - labels: - app: {{ template "kubeapps.kubeapps-jobs-upgrade.fullname" . }} - chart: {{ template "kubeapps.chart" . }} - release: {{ .Release.Name }} - heritage: {{ .Release.Service }} -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: Role - name: {{ template "kubeapps.kubeapps-jobs-upgrade.fullname" . }} -subjects: -- kind: ServiceAccount - name: {{ template "kubeapps.kubeapps-jobs-upgrade.fullname" . }} - namespace: {{ .Release.Namespace }} -{{- end -}} diff --git a/bitnami/kubeapps/templates/kubeapps-jobs-upgrade-serviceaccount.yaml b/bitnami/kubeapps/templates/kubeapps-jobs-upgrade-serviceaccount.yaml deleted file mode 100644 index db65cc1572..0000000000 --- a/bitnami/kubeapps/templates/kubeapps-jobs-upgrade-serviceaccount.yaml +++ /dev/null @@ -1,13 +0,0 @@ -apiVersion: v1 -kind: ServiceAccount -metadata: - name: {{ template "kubeapps.kubeapps-jobs-upgrade.fullname" . }} - annotations: - helm.sh/hook: post-upgrade - helm.sh/hook-delete-policy: hook-succeeded - helm.sh/hook-weight: "-10" - labels: - app: {{ template "kubeapps.kubeapps-jobs-upgrade.fullname" . }} - chart: {{ template "kubeapps.chart" . }} - release: {{ .Release.Name }} - heritage: {{ .Release.Service }} diff --git a/bitnami/kubeapps/templates/kubeapps-jobs-upgrade.yaml b/bitnami/kubeapps/templates/kubeapps-jobs-upgrade.yaml deleted file mode 100644 index 8983832ba9..0000000000 --- a/bitnami/kubeapps/templates/kubeapps-jobs-upgrade.yaml +++ /dev/null @@ -1,58 +0,0 @@ -# This is a temporary upgrade hook for installating a version prior -# to 0.6 since the process of creating the mongodb secret changed -# It should be removed at https://github.com/kubeapps/kubeapps/issues/699 -# This Job creates the mongodb credentials secret if it doesn't exists -# and it resyncs the existing apprepositories. -apiVersion: batch/v1 -kind: Job -metadata: - name: {{ template "kubeapps.kubeapps-jobs-upgrade.fullname" . }} - annotations: - helm.sh/hook: post-upgrade - helm.sh/hook-delete-policy: hook-succeeded - labels: - app: {{ template "kubeapps.kubeapps-jobs-upgrade.fullname" . }} - chart: {{ template "kubeapps.chart" . }} - release: {{ .Release.Name }} - heritage: {{ .Release.Service }} -spec: - template: - metadata: - labels: - app: {{ template "kubeapps.kubeapps-jobs-upgrade.fullname" . }} - release: {{ .Release.Name }} - spec: - containers: - - name: kubectl - image: {{ template "kubeapps.image" (list .Values.hooks.image .Values.global) }} - command: - - /bin/sh - - -c - args: - - |- - # Recreate MongoDB secret if doesn't exists (happens for chart versions < 0.5.2) - if kubectl get secrets -n {{ .Release.Namespace }} {{ .Values.mongodb.existingSecret }}; then - # Secret exists, do nothing - echo "MongoDB secret found" - else - # Secret doesn't exists, create it and restart mongodb - kubectl create secret generic -n {{ .Release.Namespace }} {{ .Values.mongodb.existingSecret }} --from-literal mongodb-root-password=`cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w 32 | head -n 1` - kubectl delete pods -n {{ .Release.Namespace }} -l app=mongodb,release={{ .Release.Name }} - kubectl rollout status -n {{ .Release.Namespace }} deployment/{{ .Release.Name }}-mongodb - # Re-sync repositories reseting resyncRequests - kubectl get apprepositories -o=name -n kubeapps {{ .Release.Namespace }} | xargs kubectl patch $1 -n {{ .Release.Namespace }} --type merge -p '{ "spec": { "resyncRequests": 0 } }' - fi - restartPolicy: OnFailure - serviceAccountName: {{ template "kubeapps.kubeapps-jobs-upgrade.fullname" . }} - {{- with .Values.hooks.nodeSelector }} - nodeSelector: -{{ toYaml . | indent 8 }} - {{- end }} - {{- with .Values.hooks.affinity }} - affinity: -{{ toYaml . | indent 8 }} - {{- end }} - {{- with .Values.hooks.tolerations }} - tolerations: -{{ toYaml . | indent 8 }} - {{- end }} diff --git a/bitnami/kubeapps/templates/tiller-proxy-deployment.yaml b/bitnami/kubeapps/templates/tiller-proxy-deployment.yaml index 31e9c39e00..70ac060b12 100644 --- a/bitnami/kubeapps/templates/tiller-proxy-deployment.yaml +++ b/bitnami/kubeapps/templates/tiller-proxy-deployment.yaml @@ -27,6 +27,7 @@ spec: - /proxy args: - --host={{ .Values.tillerProxy.host }} + - --user-agent-comment=kubeapps/{{ .Chart.AppVersion }} {{- if .Values.tillerProxy.tls }} - --tls {{- if .Values.tillerProxy.tls.verify }} diff --git a/bitnami/kubeapps/values.yaml b/bitnami/kubeapps/values.yaml index 7cba0cde4a..3dee712326 100644 --- a/bitnami/kubeapps/values.yaml +++ b/bitnami/kubeapps/values.yaml @@ -92,12 +92,12 @@ apprepository: image: registry: docker.io repository: kubeapps/apprepository-controller - tag: v1.0.0-beta.4 + tag: v1.0.0 # Image used to perform chart repository syncs syncImage: registry: quay.io repository: helmpack/chart-repo - tag: v1.0.1 + tag: v1.0.2 initialRepos: - name: stable url: https://kubernetes-charts.storage.googleapis.com @@ -138,7 +138,7 @@ tillerProxy: image: registry: docker.io repository: kubeapps/tiller-proxy - tag: v1.0.0-beta.4 + tag: v1.0.0 service: port: 8080 host: tiller-deploy.kube-system:44134 @@ -165,7 +165,7 @@ chartsvc: image: registry: quay.io repository: helmpack/chartsvc - tag: v1.0.1 + tag: v1.0.2 service: port: 8080 # https://github.com/kubeapps/kubeapps/issues/478#issuecomment-422979262 @@ -200,7 +200,7 @@ dashboard: image: registry: docker.io repository: kubeapps/dashboard - tag: v1.0.0-beta.4 + tag: v1.0.0 service: port: 8080 livenessProbe: diff --git a/bitnami/node/Chart.yaml b/bitnami/node/Chart.yaml index b08eb00b73..077168d887 100644 --- a/bitnami/node/Chart.yaml +++ b/bitnami/node/Chart.yaml @@ -1,6 +1,6 @@ name: node -version: 6.3.0 -appVersion: 8.12.0 +version: 6.3.1 +appVersion: 8.13.0 description: Event-driven I/O server-side JavaScript environment based on V8 keywords: - node diff --git a/bitnami/node/values.yaml b/bitnami/node/values.yaml index 427fb04b64..9ee0c7f76a 100644 --- a/bitnami/node/values.yaml +++ b/bitnami/node/values.yaml @@ -10,7 +10,7 @@ image: registry: docker.io repository: bitnami/node - tag: 8.12.0-prod + tag: 8.13.0 ## Specify a imagePullPolicy ## Defaults to 'Always' if image tag is 'latest', else set to 'IfNotPresent' ## ref: http://kubernetes.io/docs/user-guide/images/#pre-pulling-images diff --git a/upstreamed/dokuwiki/Chart.yaml b/upstreamed/dokuwiki/Chart.yaml index 93ba4b189e..fba2585aa1 100644 --- a/upstreamed/dokuwiki/Chart.yaml +++ b/upstreamed/dokuwiki/Chart.yaml @@ -1,5 +1,5 @@ name: dokuwiki -version: 3.3.0 +version: 4.0.0 appVersion: 0.20180422.201805030840 description: DokuWiki is a standards-compliant, simple to use wiki optimized for creating documentation. It is targeted at developer teams, workgroups, and small companies. diff --git a/upstreamed/dokuwiki/README.md b/upstreamed/dokuwiki/README.md index 82895da766..1a5587f157 100644 --- a/upstreamed/dokuwiki/README.md +++ b/upstreamed/dokuwiki/README.md @@ -58,7 +58,10 @@ The following table lists the configurable parameters of the DokuWiki chart and | `dokuwikiPassword` | Application password | _random 10 character alphanumeric string_ | | `dokuwikiEmail` | User email | `user@example.com` | | `dokuwikiWikiName` | Wiki name | `My Wiki` | -| `service.loadBalancer` | Kubernetes LoadBalancerIP to request | `nil` | +| `service.type` | Kubernetes Service type | `LoadBalancer` | +| `service.port` | Service HTTP port | `80` | +| `service.httpsPort` | Service HTTPS port | `443` | +| `service.loadBalancerIP` | Kubernetes LoadBalancerIP to request | `nil` | | `service.externalTrafficPolicy` | Enable client source IP preservation | `Cluster` | | `service.nodePorts.http` | Kubernetes http node port | `""` | | `service.nodePorts.https` | Kubernetes https node port | `""` | @@ -130,7 +133,8 @@ $ helm install --name my-release -f values.yaml stable/dokuwiki The [Bitnami DokuWiki](https://github.com/bitnami/bitnami-docker-dokuwiki) image stores the DokuWiki data and configurations at the `/bitnami/dokuwiki` and `/bitnami/apache` paths of the container. -Persistent Volume Claims are used to keep the data across deployments. This is known to work in GCE, AWS, and minikube. +Persistent Volume Claims are used to keep the data across deployments. There is a [known issue](https://github.com/kubernetes/kubernetes/issues/39178) in Kubernetes Clusters with EBS in different availability zones. Ensure your cluster is configured properly to create Volumes in the same availability zone where the nodes are running. Kuberentes 1.12 solved this issue with the [Volume Binding Mode](https://kubernetes.io/docs/concepts/storage/storage-classes/#volume-binding-mode). + See the [Configuration](#configuration) section to configure the PVC or to disable persistence. ## Upgrading diff --git a/upstreamed/dokuwiki/templates/NOTES.txt b/upstreamed/dokuwiki/templates/NOTES.txt index 6b41468fe7..24b8e605b5 100644 --- a/upstreamed/dokuwiki/templates/NOTES.txt +++ b/upstreamed/dokuwiki/templates/NOTES.txt @@ -26,12 +26,14 @@ ** Watch the status using: kubectl get svc --namespace {{ .Release.Namespace }} -w {{ template "dokuwiki.fullname" . }} ** export SERVICE_IP=$(kubectl get svc --namespace {{ .Release.Namespace }} {{ template "dokuwiki.fullname" . }} --template "{{"{{ range (index .status.loadBalancer.ingress 0) }}{{.}}{{ end }}"}}") - echo "URL: http://$SERVICE_IP/" + +{{- $port:=.Values.service.port | toString }} + echo "URL: http://$SERVICE_IP{{- if ne $port "80" }}:{{ .Values.service.port }}{{ end }}/" {{- else if contains "ClusterIP" .Values.service.type }} echo "URL: http://127.0.0.1:8080/" - kubectl port-forward --namespace {{ .Release.Namespace }} svc/{{ template "dokuwiki.fullname" . }} 8080:80 + kubectl port-forward --namespace {{ .Release.Namespace }} svc/{{ template "dokuwiki.fullname" . }} 8080:{{ .Values.service.port }} {{- end }} {{- end }} diff --git a/upstreamed/dokuwiki/templates/svc.yaml b/upstreamed/dokuwiki/templates/svc.yaml index b50c263645..bfad4323d4 100644 --- a/upstreamed/dokuwiki/templates/svc.yaml +++ b/upstreamed/dokuwiki/templates/svc.yaml @@ -17,13 +17,13 @@ spec: {{- end }} ports: - name: http - port: 80 + port: {{ .Values.service.port }} targetPort: http {{- if (and (eq .Values.service.type "NodePort") (not (empty .Values.service.nodePorts.http)))}} nodePort: {{ .Values.service.nodePorts.http }} {{- end }} - name: https - port: 443 + port: {{ .Values.service.httpsPort }} targetPort: https {{- if (and (eq .Values.service.type "NodePort") (not (empty .Values.service.nodePorts.https)))}} nodePort: {{ .Values.service.nodePorts.https }} diff --git a/upstreamed/dokuwiki/values.yaml b/upstreamed/dokuwiki/values.yaml index 6bca1e2169..c1ce46d56c 100644 --- a/upstreamed/dokuwiki/values.yaml +++ b/upstreamed/dokuwiki/values.yaml @@ -59,6 +59,10 @@ service: ## otherwise leave blank ## # loadBalancerIP: + # HTTP Port + port: 80 + # HTTPS Port + httpsPort: 443 ## Use nodePorts to requets some specific ports when usin NodePort ## nodePorts: ## http: diff --git a/upstreamed/drupal/Chart.yaml b/upstreamed/drupal/Chart.yaml index b1a4ab59bb..c191df164d 100644 --- a/upstreamed/drupal/Chart.yaml +++ b/upstreamed/drupal/Chart.yaml @@ -1,5 +1,5 @@ name: drupal -version: 2.3.1 +version: 3.0.0 appVersion: 8.6.3 description: One of the most versatile open source content management systems. keywords: diff --git a/upstreamed/drupal/README.md b/upstreamed/drupal/README.md index 4dddc091ed..bc7867a9e6 100644 --- a/upstreamed/drupal/README.md +++ b/upstreamed/drupal/README.md @@ -80,7 +80,12 @@ The following table lists the configurable parameters of the Drupal chart and th | `mariadb.db.name` | Database name to create | `bitnami_drupal` | | `mariadb.db.user` | Database user to create | `bn_drupal` | | `mariadb.db.password` | Password for the database | _random 10 character long alphanumeric string_ | -| `serviceType` | Kubernetes Service type | `LoadBalancer` | +| `service.type` | Kubernetes Service type | `LoadBalancer` | +| `service.port` | Service HTTP port | `80` | +| `service.httpsPort` | Service HTTPS port | `443` | +| `service.externalTrafficPolicy` | Enable client source IP preservation | `Cluster` | +| `service.nodePorts.http` | Kubernetes http node port | `""` | +| `service.nodePorts.https` | Kubernetes https node port | `""` | | `persistence.enabled` | Enable persistence using PVC | `true` | | `persistence.apache.storageClass` | PVC Storage Class for Apache volume | `nil` (uses alpha storage class annotation) | | `persistence.apache.accessMode` | PVC Access Mode for Apache volume | `ReadWriteOnce` | diff --git a/upstreamed/drupal/templates/NOTES.txt b/upstreamed/drupal/templates/NOTES.txt index 811c6adbfc..c9bb8da493 100644 --- a/upstreamed/drupal/templates/NOTES.txt +++ b/upstreamed/drupal/templates/NOTES.txt @@ -11,22 +11,24 @@ http://{{- .Values.ingress.hostname }}/ -{{- else if contains "LoadBalancer" .Values.serviceType }} +{{- 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 --namespace {{ .Release.Namespace }} -w {{ template "drupal.fullname" . }}' export SERVICE_IP=$(kubectl get svc --namespace {{ .Release.Namespace }} {{ template "drupal.fullname" . }} --template "{{"{{ range (index .status.loadBalancer.ingress 0) }}{{.}}{{ end }}"}}") - echo "Drupal URL: http://$SERVICE_IP/" -{{- else if contains "ClusterIP" .Values.serviceType }} +{{- $port:=.Values.service.port | toString }} + echo "Drupal URL: http://$SERVICE_IP{{- if ne $port "80" }}:{{ .Values.service.port }}{{ end }}/" + +{{- else if contains "ClusterIP" .Values.service.type }} echo "Drupal URL: http://127.0.0.1:8080/" - kubectl port-forward --namespace {{ .Release.Namespace }} svc/{{ template "drupal.fullname" . }} 8080:80 + kubectl port-forward --namespace {{ .Release.Namespace }} svc/{{ template "drupal.fullname" . }} 8080:{{ .Values.service.port }} {{- end }} -{{- if contains "NodePort" .Values.serviceType }} +{{- if contains "NodePort" .Values.service.type }} Or running: diff --git a/upstreamed/drupal/templates/svc.yaml b/upstreamed/drupal/templates/svc.yaml index 222e9d5b8c..842b460a34 100644 --- a/upstreamed/drupal/templates/svc.yaml +++ b/upstreamed/drupal/templates/svc.yaml @@ -8,13 +8,22 @@ metadata: release: "{{ .Release.Name }}" heritage: "{{ .Release.Service }}" spec: - type: {{ .Values.serviceType }} + type: {{ .Values.service.type }} + {{- if (or (eq .Values.service.type "LoadBalancer") (eq .Values.service.type "NodePort")) }} + externalTrafficPolicy: {{ .Values.service.externalTrafficPolicy | quote }} + {{- end }} ports: - - name: http - port: 80 - targetPort: http - - name: https - port: 443 - targetPort: https + - name: http + port: {{ .Values.service.port }} + targetPort: http + {{- if (and (eq .Values.service.type "NodePort") (not (empty .Values.service.nodePorts.http)))}} + nodePort: {{ .Values.service.nodePorts.http }} + {{- end }} + - name: https + port: {{ .Values.service.httpsPort }} + targetPort: https + {{- if (and (eq .Values.service.type "NodePort") (not (empty .Values.service.nodePorts.https)))}} + nodePort: {{ .Values.service.nodePorts.https }} + {{- end }} selector: app: {{ template "drupal.fullname" . }} diff --git a/upstreamed/drupal/values.yaml b/upstreamed/drupal/values.yaml index b33599513a..94996e698a 100644 --- a/upstreamed/drupal/values.yaml +++ b/upstreamed/drupal/values.yaml @@ -113,7 +113,23 @@ mariadb: ## For minikube, set this to NodePort, elsewhere use LoadBalancer ## Use ClusterIP if your setup includes ingress controller ## -serviceType: LoadBalancer +service: + type: LoadBalancer + # HTTP Port + port: 80 + # HTTPS Port + httpsPort: 443 + ## + ## nodePorts: + ## http: + ## https: + nodePorts: + http: "" + https: "" + ## Enable client source IP preservation + ## ref http://kubernetes.io/docs/tasks/access-application-cluster/create-external-load-balancer/#preserving-the-client-source-ip + ## + externalTrafficPolicy: Cluster ## Configure the ingress resource that allows you to access the ## Drupal installation. Set up the URL diff --git a/upstreamed/ghost/Chart.yaml b/upstreamed/ghost/Chart.yaml index 3543269100..ef5cdd6735 100644 --- a/upstreamed/ghost/Chart.yaml +++ b/upstreamed/ghost/Chart.yaml @@ -1,6 +1,6 @@ name: ghost -version: 5.4.1 -appVersion: 2.5.0 +version: 6.0.0 +appVersion: 2.6.0 description: A simple, powerful publishing platform that allows you to share your stories with the world keywords: diff --git a/upstreamed/ghost/README.md b/upstreamed/ghost/README.md index 372a26e986..7b16b273de 100644 --- a/upstreamed/ghost/README.md +++ b/upstreamed/ghost/README.md @@ -61,8 +61,6 @@ The following table lists the configurable parameters of the Ghost chart and the | `volumePermissions.image.pullPolicy`| Init container volume-permissions image pull policy | `Always` | | `ghostHost` | Ghost host to create application URLs | `nil` | | `ghostPath` | Ghost path to create application URLs | `nil` | -| `ghostPort` | Ghost port to create application URLs along with host | `80` | -| `ghostLoadBalancerIP` | `loadBalancerIP` for the Ghost Service | `nil` | | `ghostUsername` | User of the application | `user@example.com` | | `ghostPassword` | Application password | Randomly generated | | `ghostEmail` | Admin email | `user@example.com` | @@ -72,6 +70,10 @@ The following table lists the configurable parameters of the Ghost chart and the | `securityContext.enabled` | Enable security context | `true` | | `securityContext.fsGroup` | Group ID for the container | `1001` | | `securityContext.runAsUser` | User ID for the container | `1001` | +| `service.type` | Kubernetes Service type | `LoadBalancer` | +| `service.port` | Service HTTP port | `80` | +| `service.nodePorts.http` | Kubernetes http node port | `""` | +| `service.externalTrafficPolicy` | Enable client source IP preservation | `Cluster` | | `ingress.enabled` | Enable ingress controller resource | `false` | | `ingress.hosts[0].name` | Hostname to your Ghost installation | `ghost.local` | | `ingress.hosts[0].path` | Path within the url structure | `/` | diff --git a/upstreamed/ghost/templates/NOTES.txt b/upstreamed/ghost/templates/NOTES.txt index 337bd69487..e8bfc24f62 100644 --- a/upstreamed/ghost/templates/NOTES.txt +++ b/upstreamed/ghost/templates/NOTES.txt @@ -8,11 +8,11 @@ host. To configure Ghost with the URL of your service: 1. Get the Ghost URL by running: - {{- if contains "NodePort" .Values.serviceType }} + {{- if contains "NodePort" .Values.service.type }} export APP_HOST=$(kubectl get nodes --namespace {{ .Release.Namespace }} -o jsonpath="{.items[0].status.addresses[0].address}") - {{- else if contains "LoadBalancer" .Values.serviceType }} + {{- 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 --namespace {{ .Release.Namespace }} -w {{ template "ghost.fullname" . }}' @@ -28,17 +28,17 @@ host. To configure Ghost with the URL of your service: 2. Complete your Ghost deployment by running: helm upgrade {{ .Release.Name }} stable/ghost\ - --set serviceType={{ .Values.serviceType }},ghostHost=$APP_HOST,ghostPassword=$APP_PASSWORD,{{ if .Values.mariadb.mariadbRootPassword }},mariadb.mariadbRootPassword=$DATABASE_ROOT_PASSWORD{{ end }}mariadb.db.password=$APP_DATABASE_PASSWORD + --set service.type={{ .Values.service.type }},ghostHost=$APP_HOST,ghostPassword=$APP_PASSWORD,{{ if .Values.mariadb.mariadbRootPassword }},mariadb.mariadbRootPassword=$DATABASE_ROOT_PASSWORD{{ end }}mariadb.db.password=$APP_DATABASE_PASSWORD {{- else -}} 1. Get the Ghost URL by running: -{{- if eq .Values.serviceType "ClusterIP" }} +{{- if eq .Values.service.type "ClusterIP" }} - echo Blog URL : http://127.0.0.1:{{ default "80" .Values.ghostPort }}{{ .Values.ghostPath }} - echo Admin URL : http://127.0.0.1:{{ default "80" .Values.ghostPort }}{{ .Values.ghostPath }}ghost - kubectl port-forward --namespace {{ .Release.Namespace }} svc/{{ template "ghost.fullname" . }} {{ default "80" .Values.ghostPort }}:2368 + echo Blog URL : http://127.0.0.1:{{ default "80" .Values.service.port }}{{ .Values.ghostPath }} + echo Admin URL : http://127.0.0.1:{{ default "80" .Values.service.port }}{{ .Values.ghostPath }}ghost + kubectl port-forward --namespace {{ .Release.Namespace }} svc/{{ template "ghost.fullname" . }} {{ default "80" .Values.service.port }}:2368 -{{- else if eq .Values.serviceType "NodePort" }} +{{- else if eq .Values.service.type "NodePort" }} export APP_HOST=$(kubectl get nodes --namespace {{ .Release.Namespace }} -o jsonpath="{.items[0].status.addresses[0].address}") export APP_PORT=$(kubectl get --namespace {{ .Release.Namespace }} -o jsonpath="{.spec.ports[0].nodePort}" services {{ template "ghost.fullname" . }}) diff --git a/upstreamed/ghost/templates/_helpers.tpl b/upstreamed/ghost/templates/_helpers.tpl index ccbf8d184b..993f0c149a 100644 --- a/upstreamed/ghost/templates/_helpers.tpl +++ b/upstreamed/ghost/templates/_helpers.tpl @@ -37,7 +37,7 @@ Get the user defined LoadBalancerIP for this release. Note, returns 127.0.0.1 if using ClusterIP. */}} {{- define "ghost.serviceIP" -}} -{{- if eq .Values.serviceType "ClusterIP" -}} +{{- if eq .Values.service.type "ClusterIP" -}} 127.0.0.1 {{- else -}} {{- index .Values (printf "%sLoadBalancerIP" .Chart.Name) | default "" -}} @@ -108,4 +108,4 @@ Also, we can't use a single if because lazy evaluation is not an option {{- else -}} {{- printf "%s/%s:%s" $registryName $repositoryName $tag -}} {{- end -}} -{{- end -}} \ No newline at end of file +{{- end -}} diff --git a/upstreamed/ghost/templates/deployment.yaml b/upstreamed/ghost/templates/deployment.yaml index 9d246c0d66..b828be447f 100644 --- a/upstreamed/ghost/templates/deployment.yaml +++ b/upstreamed/ghost/templates/deployment.yaml @@ -88,7 +88,7 @@ spec: - name: GHOST_HOST value: {{ include "ghost.host" . | quote }} - name: GHOST_PORT_NUMBER - value: {{ .Values.ghostPort | quote }} + value: {{ .Values.service.port | quote }} - name: GHOST_USERNAME value: {{ .Values.ghostUsername | quote }} - name: GHOST_PASSWORD diff --git a/upstreamed/ghost/templates/svc.yaml b/upstreamed/ghost/templates/svc.yaml index d3d7e26639..2cfcf9801a 100644 --- a/upstreamed/ghost/templates/svc.yaml +++ b/upstreamed/ghost/templates/svc.yaml @@ -8,13 +8,16 @@ metadata: release: "{{ .Release.Name }}" heritage: "{{ .Release.Service }}" spec: - type: {{ .Values.serviceType }} - {{- if eq .Values.serviceType "LoadBalancer" }} - loadBalancerIP: {{ .Values.ghostLoadBalancerIP }} + type: {{ .Values.service.type }} + {{- if (or (eq .Values.service.type "LoadBalancer") (eq .Values.service.type "NodePort")) }} + externalTrafficPolicy: {{ .Values.service.externalTrafficPolicy | quote }} {{- end }} ports: - - name: http - port: {{ .Values.ghostPort }} - targetPort: http + - name: http + port: {{ .Values.service.port }} + targetPort: http + {{- if (and (eq .Values.service.type "NodePort") (not (empty .Values.service.nodePorts.http)))}} + nodePort: {{ .Values.service.nodePorts.http }} + {{- end }} selector: app: {{ template "ghost.fullname" . }} diff --git a/upstreamed/ghost/values.yaml b/upstreamed/ghost/values.yaml index 81ee96a972..a9a5a3101e 100644 --- a/upstreamed/ghost/values.yaml +++ b/upstreamed/ghost/values.yaml @@ -10,7 +10,7 @@ image: registry: docker.io repository: bitnami/ghost - tag: 2.5.0 + tag: 2.6.0 ## Specify a imagePullPolicy ## Defaults to 'Always' if image tag is 'latest', else set to 'IfNotPresent' ## ref: http://kubernetes.io/docs/user-guide/images/#pre-pulling-images @@ -40,15 +40,6 @@ volumePermissions: # ghostHost: ghostPath: / -## Ghost port to create application URLs along with host. -## ref: https://github.com/bitnami/bitnami-docker-ghost#configuration -## -ghostPort: 80 - -## loadBalancerIP for the Ghost Service (optional, cloud specific) -## ref: http://kubernetes.io/docs/user-guide/services/#type-loadbalancer -## -ghostLoadBalancerIP: "" ## User of the application ## ref: https://github.com/bitnami/bitnami-docker-ghost#configuration @@ -151,7 +142,19 @@ mariadb: ## Kubernetes configuration ## For minikube, set this to NodePort, elsewhere use LoadBalancer ## -serviceType: LoadBalancer +service: + type: LoadBalancer + # HTTP Port + port: 80 + ## + ## nodePorts: + ## http: + nodePorts: + http: "" + ## Enable client source IP preservation + ## ref http://kubernetes.io/docs/tasks/access-application-cluster/create-external-load-balancer/#preserving-the-client-source-ip + ## + externalTrafficPolicy: Cluster ## Pod Security Context ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/ diff --git a/upstreamed/jasperreports/Chart.yaml b/upstreamed/jasperreports/Chart.yaml index 2c0f57c945..a4d1d41986 100644 --- a/upstreamed/jasperreports/Chart.yaml +++ b/upstreamed/jasperreports/Chart.yaml @@ -1,5 +1,5 @@ name: jasperreports -version: 3.1.1 +version: 4.0.0 appVersion: 7.1.0 description: The JasperReports server can be used as a stand-alone or embedded reporting and BI server that offers web-based reporting, analytic tools and visualization, diff --git a/upstreamed/jasperreports/README.md b/upstreamed/jasperreports/README.md index bde3363601..858f296574 100644 --- a/upstreamed/jasperreports/README.md +++ b/upstreamed/jasperreports/README.md @@ -75,7 +75,10 @@ The following table lists the configurable parameters of the JasperReports chart | `mariadb.db.user` | Database user to create | `bn_jasperreports` | | `mariadb.db.password` | Password for the database | `nil` | | `mariadb.rootUser.password` | MariaDB admin password | `nil` | -| `serviceType` | Kubernetes Service type | `LoadBalancer` | +| `service.type` | Kubernetes Service type | `LoadBalancer` | +| `service.externalTrafficPolicy` | Enable client source IP preservation | `Cluster` | +| `service.port` | Service HTTP port | `80` | +| `service.nodePorts.http` | Kubernetes http node port | `""` | | `persistence.enabled` | Enable persistence using PVC | `true` | | `persistence.storageClass` | PVC Storage Class for JasperReports volume | `nil` (uses alpha storage annotation) | | `persistence.accessMode` | PVC Access Mode for JasperReports volume | `ReadWriteOnce` | diff --git a/upstreamed/jasperreports/templates/NOTES.txt b/upstreamed/jasperreports/templates/NOTES.txt index c36d47d594..c7c9717b7d 100644 --- a/upstreamed/jasperreports/templates/NOTES.txt +++ b/upstreamed/jasperreports/templates/NOTES.txt @@ -3,24 +3,26 @@ 1. Get the JasperReports URL by running: -{{- if contains "NodePort" .Values.serviceType }} +{{- if contains "NodePort" .Values.service.type }} export NODE_PORT=$(kubectl get --namespace {{ .Release.Namespace }} -o jsonpath="{.spec.ports[0].nodePort}" services {{ template "jasperreports.fullname" . }}) export NODE_IP=$(kubectl get nodes --namespace {{ .Release.Namespace }} -o jsonpath="{.items[0].status.addresses[0].address}") echo "JasperReports URL: http://$NODE_IP:$NODE_PORT/" -{{- else if contains "LoadBalancer" .Values.serviceType }} +{{- else if contains "LoadBalancer" .Values.service.type }} ** Please ensure an external IP is associated to the {{ template "jasperreports.fullname" . }} service before proceeding ** ** Watch the status using: kubectl get svc --namespace {{ .Release.Namespace }} -w {{ template "jasperreports.fullname" . }} ** export SERVICE_IP=$(kubectl get svc --namespace {{ .Release.Namespace }} {{ template "jasperreports.fullname" . }} --template "{{"{{ range (index .status.loadBalancer.ingress 0) }}{{.}}{{ end }}"}}") - echo "JasperReports URL: http://$SERVICE_IP/jasperserver/" -{{- else if contains "ClusterIP" .Values.serviceType }} +{{- $port:=.Values.service.port | toString }} + echo "JasperReports URL: http://$SERVICE_IP{{- if ne $port "80" }}:{{ .Values.service.port }}{{ end }}/jasperserver/" + +{{- else if contains "ClusterIP" .Values.service.type }} echo "JasperReports URL: http://127.0.0.1:8080/jasperserver/" - kubectl port-forward --namespace {{ .Release.Namespace }} svc/{{ template "jasperreports.fullname" . }} 8080:8080 + kubectl port-forward --namespace {{ .Release.Namespace }} svc/{{ template "jasperreports.fullname" . }} 8080:{{ .Values.service.port }} {{- end }} @@ -41,6 +43,6 @@ host. To configure JasperReports to use and external database host: 1. Complete your JasperReports deployment by running: - helm upgrade {{ .Release.Name }} --set serviceType={{ .Values.serviceType }},mariadb.enabled=false,externalDatabase.host=YOUR_EXTERNAL_DATABASE_HOST stable/jasperreports + helm upgrade {{ .Release.Name }} --set service.type={{ .Values.service.type }},mariadb.enabled=false,externalDatabase.host=YOUR_EXTERNAL_DATABASE_HOST stable/jasperreports {{- end }} diff --git a/upstreamed/jasperreports/templates/svc.yaml b/upstreamed/jasperreports/templates/svc.yaml index 640df13ef1..d7aa3ed939 100644 --- a/upstreamed/jasperreports/templates/svc.yaml +++ b/upstreamed/jasperreports/templates/svc.yaml @@ -8,10 +8,16 @@ metadata: release: "{{ .Release.Name }}" heritage: "{{ .Release.Service }}" spec: - type: {{ .Values.serviceType }} + type: {{ .Values.service.type }} + {{- if (or (eq .Values.service.type "LoadBalancer") (eq .Values.service.type "NodePort")) }} + externalTrafficPolicy: {{ .Values.service.externalTrafficPolicy | quote }} + {{- end }} ports: - - name: http - port: 80 - targetPort: http + - name: http + port: {{ .Values.service.port }} + targetPort: http + {{- if (and (eq .Values.service.type "NodePort") (not (empty .Values.service.nodePorts.http)))}} + nodePort: {{ .Values.service.nodePorts.http }} + {{- end }} selector: app: {{ template "jasperreports.fullname" . }} diff --git a/upstreamed/jasperreports/values.yaml b/upstreamed/jasperreports/values.yaml index 1b064d302f..7745c3632b 100644 --- a/upstreamed/jasperreports/values.yaml +++ b/upstreamed/jasperreports/values.yaml @@ -121,7 +121,20 @@ mariadb: ## Kubernetes configuration ## For minikube, set this to NodePort, elsewhere use LoadBalancer ## -serviceType: LoadBalancer +service: + type: LoadBalancer + # HTTP Port + port: 80 + ## + ## nodePorts: + ## http: + ## https: + nodePorts: + http: "" + ## Enable client source IP preservation + ## ref http://kubernetes.io/docs/tasks/access-application-cluster/create-external-load-balancer/#preserving-the-client-source-ip + ## + externalTrafficPolicy: Cluster ## Enable persistence using Persistent Volume Claims ## ref: http://kubernetes.io/docs/user-guide/persistent-volumes/ diff --git a/upstreamed/joomla/Chart.yaml b/upstreamed/joomla/Chart.yaml index e374dc63d3..4869f77084 100644 --- a/upstreamed/joomla/Chart.yaml +++ b/upstreamed/joomla/Chart.yaml @@ -1,5 +1,5 @@ name: joomla -version: 3.4.0 +version: 4.0.0 appVersion: 3.9.0 description: PHP content management system (CMS) for publishing web content keywords: diff --git a/upstreamed/joomla/README.md b/upstreamed/joomla/README.md index bfaf3a8c0d..127b262c29 100644 --- a/upstreamed/joomla/README.md +++ b/upstreamed/joomla/README.md @@ -77,6 +77,8 @@ The following table lists the configurable parameters of the Joomla! chart and t | `mariadb.db.password` | Password for the database | `nil` | | `mariadb.root.password` | MariaDB admin password | `nil` | | `service.type` | Kubernetes Service type | `LoadBalancer` | +| `service.port` | Service HTTP port | `80` | +| `service.httpsPort` | Service HTTPS port | `443` | | `service.loadBalancer` | Kubernetes LoadBalancerIP to request | `nil` | | `service.externalTrafficPolicy` | Enable client source IP preservation | `Cluster` | | `service.nodePorts.http` | Kubernetes http node port | `""` | diff --git a/upstreamed/joomla/templates/NOTES.txt b/upstreamed/joomla/templates/NOTES.txt index 009d8f4465..fe3caeba4b 100644 --- a/upstreamed/joomla/templates/NOTES.txt +++ b/upstreamed/joomla/templates/NOTES.txt @@ -27,12 +27,14 @@ Watch the status with: 'kubectl get svc --namespace {{ .Release.Namespace }} -w {{ template "joomla.fullname" . }}' export SERVICE_IP=$(kubectl get svc --namespace {{ .Release.Namespace }} {{ template "joomla.fullname" . }} --template "{{"{{ range (index .status.loadBalancer.ingress 0) }}{{.}}{{ end }}"}}") - echo "Joomla! URL: http://$SERVICE_IP/" + +{{- $port:=.Values.service.port | toString }} + echo "Joomla! URL: http://$SERVICE_IP{{- if ne $port "80" }}:{{ .Values.service.port }}{{ end }}/" {{- else if contains "ClusterIP" .Values.service.type }} echo "Joomla! URL: http://127.0.0.1:8080/" - kubectl port-forward --namespace {{ .Release.Namespace }} svc/{{ template "joomla.fullname" . }} 8080:80 + kubectl port-forward --namespace {{ .Release.Namespace }} svc/{{ template "joomla.fullname" . }} 8080:{{ .Values.service.port }} {{- end }} {{- end }} diff --git a/upstreamed/joomla/templates/svc.yaml b/upstreamed/joomla/templates/svc.yaml index 885e1a3a84..4759953c49 100644 --- a/upstreamed/joomla/templates/svc.yaml +++ b/upstreamed/joomla/templates/svc.yaml @@ -17,13 +17,13 @@ spec: {{- end }} ports: - name: http - port: 80 + port: {{ .Values.service.port }} targetPort: http {{- if (and (eq .Values.service.type "NodePort") (not (empty .Values.service.nodePorts.http)))}} nodePort: {{ .Values.service.nodePorts.http }} {{- end }} - name: https - port: 443 + port: {{ .Values.service.httpsPort }} targetPort: https {{- if (and (eq .Values.service.type "NodePort") (not (empty .Values.service.nodePorts.https)))}} nodePort: {{ .Values.service.nodePorts.https }} diff --git a/upstreamed/joomla/values.yaml b/upstreamed/joomla/values.yaml index e7300be7ef..6bcb6eafa9 100644 --- a/upstreamed/joomla/values.yaml +++ b/upstreamed/joomla/values.yaml @@ -120,7 +120,7 @@ mariadb: ## Configure extra options for liveness and readiness probes ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-probes/#configure-probes) livenessProbe: - enbaled: true + enabled: true initialDelaySeconds: 120 periodSeconds: 10 timeoutSeconds: 5 @@ -144,6 +144,10 @@ service: ## Use serviceLoadBalancerIP to request a specific static IP, ## otherwise leave blank ## + # HTTP Port + port: 80 + # HTTPS Port + httpsPort: 443 # loadBalancerIP: ## Use nodePorts to requets some specific ports when usin NodePort ## nodePorts: diff --git a/upstreamed/magento/Chart.yaml b/upstreamed/magento/Chart.yaml index e8ce70881e..f0d8fd1380 100644 --- a/upstreamed/magento/Chart.yaml +++ b/upstreamed/magento/Chart.yaml @@ -1,5 +1,5 @@ name: magento -version: 3.3.0 +version: 4.0.0 appVersion: 2.2.6 description: A feature-rich flexible e-commerce solution. It includes transaction options, multi-store functionality, loyalty programs, product categorization and shopper filtering, promotion rules, and more. keywords: diff --git a/upstreamed/magento/templates/NOTES.txt b/upstreamed/magento/templates/NOTES.txt index 6f0a4ab2e4..65486ca547 100644 --- a/upstreamed/magento/templates/NOTES.txt +++ b/upstreamed/magento/templates/NOTES.txt @@ -10,12 +10,12 @@ host. To configure Magento with the URL of your service: 1. Get the Magento URL by running: - {{- if contains "NodePort" .Values.serviceType }} + {{- if contains "NodePort" .Values.service.type }} export APP_PORT=$(kubectl get svc --namespace {{ .Release.Namespace }} {{ template "magento.fullname" . }} -o jsonpath="{.spec.ports[0].nodePort}") export APP_HOST=$(kubectl get nodes --namespace {{ .Release.Namespace }} -o jsonpath="{.items[0].status.addresses[0].address}") - {{- else if contains "LoadBalancer" .Values.serviceType }} + {{- 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 --namespace {{ .Release.Namespace }} -w {{ template "magento.fullname" . }}' @@ -39,22 +39,23 @@ host. To configure Magento with the URL of your service: ## PLEASE UPDATE THE EXTERNAL DATABASE CONNECTION PARAMETERS IN THE FOLLOWING COMMAND AS NEEDED ## helm upgrade {{ .Release.Name }} stable/magento \ - --set magentoPassword=$APP_PASSWORD,magentoHost=$APP_HOST,serviceType={{ .Values.serviceType }},mariadb.enabled=false{{- if not (empty .Values.externalDatabase.host) }},externalDatabase.host={{ .Values.externalDatabase.host }}{{- end }}{{- if not (empty .Values.externalDatabase.user) }},externalDatabase.user={{ .Values.externalDatabase.user }}{{- end }}{{- if not (empty .Values.externalDatabase.password) }},externalDatabase.password={{ .Values.externalDatabase.password }}{{- end }}{{- if not (empty .Values.externalDatabase.database) }},externalDatabase.database={{ .Values.externalDatabase.database }}{{- end }} + --set magentoPassword=$APP_PASSWORD,magentoHost=$APP_HOST,service.type={{ .Values.service.type }},mariadb.enabled=false{{- if not (empty .Values.externalDatabase.host) }},externalDatabase.host={{ .Values.externalDatabase.host }}{{- end }}{{- if not (empty .Values.externalDatabase.user) }},externalDatabase.user={{ .Values.externalDatabase.user }}{{- end }}{{- if not (empty .Values.externalDatabase.password) }},externalDatabase.password={{ .Values.externalDatabase.password }}{{- end }}{{- if not (empty .Values.externalDatabase.database) }},externalDatabase.database={{ .Values.externalDatabase.database }}{{- end }} {{- end }} {{- else -}} 1. Get the Magento URL by running: -{{- if eq .Values.serviceType "ClusterIP" }} +{{- if eq .Values.service.type "ClusterIP" }} echo "Store URL: http://127.0.0.1:8080/" echo "Admin URL: http://127.0.0.1:8080/{{ .Values.magentoAdminUri }}" - kubectl port-forward --namespace {{ .Release.Namespace }} svc/{{ template "magento.fullname" . }} 8080:80 + kubectl port-forward --namespace {{ .Release.Namespace }} svc/{{ template "magento.fullname" . }} 8080:{{ .Values.service.port }} {{- else }} - echo Store URL : http://{{ include "magento.host" . }}/ - echo Admin URL : http://{{ include "magento.host" . }}/{{ .Values.magentoAdminUri }} +{{- $port:=.Values.service.port | toString }} + echo Store URL : http://{{ include "magento.host" . }}{{- if ne $port "80" }}:{{ .Values.service.port }}{{ end }}/ + echo Admin URL : http://{{ include "magento.host" . }}{{- if ne $port "80" }}:{{ .Values.service.port }}{{ end }}/{{ .Values.magentoAdminUri }} {{- end }} @@ -76,9 +77,9 @@ host. To configure Magento to use and external database host: 1. Complete your Magento deployment by running: -{{- if contains "NodePort" .Values.serviceType }} +{{- if contains "NodePort" .Values.service.type }} export APP_HOST=$(kubectl get nodes --namespace {{ .Release.Namespace }} -o jsonpath="{.items[0].status.addresses[0].address}") -{{- else if contains "LoadBalancer" .Values.serviceType }} +{{- 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 --namespace {{ .Release.Namespace }} -w {{ template "magento.fullname" . }}' @@ -93,5 +94,5 @@ host. To configure Magento to use and external database host: ## PLEASE UPDATE THE EXTERNAL DATABASE CONNECTION PARAMETERS IN THE FOLLOWING COMMAND AS NEEDED ## helm upgrade {{ .Release.Name }} stable/magento \ - --set magentoPassword=$APP_PASSWORD,magentoHost=$APP_HOST,serviceType={{ .Values.serviceType }},mariadb.enabled=false{{- if not (empty .Values.externalDatabase.user) }},externalDatabase.user={{ .Values.externalDatabase.user }}{{- end }}{{- if not (empty .Values.externalDatabase.password) }},externalDatabase.password={{ .Values.externalDatabase.password }}{{- end }}{{- if not (empty .Values.externalDatabase.database) }},externalDatabase.database={{ .Values.externalDatabase.database }}{{- end }},externalDatabase.host=YOUR_EXTERNAL_DATABASE_HOST + --set magentoPassword=$APP_PASSWORD,magentoHost=$APP_HOST,service.type={{ .Values.service.type }},mariadb.enabled=false{{- if not (empty .Values.externalDatabase.user) }},externalDatabase.user={{ .Values.externalDatabase.user }}{{- end }}{{- if not (empty .Values.externalDatabase.password) }},externalDatabase.password={{ .Values.externalDatabase.password }}{{- end }}{{- if not (empty .Values.externalDatabase.database) }},externalDatabase.database={{ .Values.externalDatabase.database }}{{- end }},externalDatabase.host=YOUR_EXTERNAL_DATABASE_HOST {{- end }} diff --git a/upstreamed/magento/templates/_helpers.tpl b/upstreamed/magento/templates/_helpers.tpl index 7fdce86d89..c032a3f24a 100644 --- a/upstreamed/magento/templates/_helpers.tpl +++ b/upstreamed/magento/templates/_helpers.tpl @@ -44,7 +44,7 @@ Get the user defined LoadBalancerIP for this release. Note, returns 127.0.0.1 if using ClusterIP. */}} {{- define "magento.serviceIP" -}} -{{- if eq .Values.serviceType "ClusterIP" -}} +{{- if eq .Values.service.type "ClusterIP" -}} 127.0.0.1 {{- else -}} {{- index .Values (printf "%sLoadBalancerIP" .Chart.Name) | default "" -}} diff --git a/upstreamed/magento/templates/deployment.yaml b/upstreamed/magento/templates/deployment.yaml index fa104f8d39..d3748050e4 100644 --- a/upstreamed/magento/templates/deployment.yaml +++ b/upstreamed/magento/templates/deployment.yaml @@ -78,8 +78,9 @@ spec: name: {{ template "magento.fullname" . }}-externaldb key: db-password {{- end }} + {{- $port:=.Values.service.port | toString }} - name: MAGENTO_HOST - value: {{ include "magento.host" . | quote }} + value: "{{ include "magento.host" . }}{{- if ne $port "80" }}:{{ .Values.service.port }}{{ end }}" - name: MAGENTO_USERNAME value: {{ .Values.magentoUsername | quote }} - name: MAGENTO_PASSWORD diff --git a/upstreamed/magento/templates/svc.yaml b/upstreamed/magento/templates/svc.yaml index 93f2438e93..d20d17a321 100644 --- a/upstreamed/magento/templates/svc.yaml +++ b/upstreamed/magento/templates/svc.yaml @@ -8,16 +8,16 @@ metadata: release: "{{ .Release.Name }}" heritage: "{{ .Release.Service }}" spec: - type: {{ .Values.serviceType }} - {{- if eq .Values.serviceType "LoadBalancer" }} - loadBalancerIP: {{ default "" .Values.magentoLoadBalancerIP }} + type: {{ .Values.service.type }} + {{- if (or (eq .Values.service.type "LoadBalancer") (eq .Values.service.type "NodePort")) }} + externalTrafficPolicy: {{ .Values.service.externalTrafficPolicy | quote }} {{- end }} ports: - - name: http - port: 80 - targetPort: http - - name: https - port: 443 - targetPort: https + - name: http + port: {{ .Values.service.port }} + targetPort: http + {{- if (and (eq .Values.service.type "NodePort") (not (empty .Values.service.nodePorts.http)))}} + nodePort: {{ .Values.service.nodePorts.http }} + {{- end }} selector: app: {{ template "magento.fullname" . }} diff --git a/upstreamed/magento/values.yaml b/upstreamed/magento/values.yaml index 11c4f4aa05..8459bd832f 100644 --- a/upstreamed/magento/values.yaml +++ b/upstreamed/magento/values.yaml @@ -140,7 +140,23 @@ mariadb: ## Kubernetes configuration ## For minikube, set this to NodePort, elsewhere use LoadBalancer ## -serviceType: LoadBalancer +service: + type: LoadBalancer + # HTTP Port + port: 80 + # HTTPS Port + httpsPort: 443 + ## + ## nodePorts: + ## http: + ## https: + nodePorts: + http: "" + https: "" + ## Enable client source IP preservation + ## ref http://kubernetes.io/docs/tasks/access-application-cluster/create-external-load-balancer/#preserving-the-client-source-ip + ## + externalTrafficPolicy: Cluster ## Configure liveness and readiness probes ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-probes/#configure-probes) diff --git a/upstreamed/mediawiki/Chart.yaml b/upstreamed/mediawiki/Chart.yaml index 0944a534af..49be0e54fa 100644 --- a/upstreamed/mediawiki/Chart.yaml +++ b/upstreamed/mediawiki/Chart.yaml @@ -1,5 +1,5 @@ name: mediawiki -version: 5.1.0 +version: 6.0.0 appVersion: 1.31.1 description: Extremely powerful, scalable software and a feature-rich wiki implementation that uses PHP to process and display data stored in a database. diff --git a/upstreamed/mediawiki/README.md b/upstreamed/mediawiki/README.md index 3c4d9723c1..0cd9c9610e 100644 --- a/upstreamed/mediawiki/README.md +++ b/upstreamed/mediawiki/README.md @@ -76,6 +76,8 @@ The following table lists the configurable parameters of the MediaWiki chart and | `mariadb.db.password` | Password for the database | _random 10 character long alphanumeric string_ | | `service.type` | Kubernetes Service type | `LoadBalancer` | | `service.loadBalancer` | Kubernetes LoadBalancerIP to request | `nil` | +| `service.port` | Service HTTP port | `80` | +| `service.httpsPort` | Service HTTPS port | `443` | | `service.externalTrafficPolicy` | Enable client source IP preservation | `Cluster` | | `service.nodePorts.http` | Kubernetes http node port | `""` | | `service.nodePorts.https` | Kubernetes https node port | `""` | diff --git a/upstreamed/mediawiki/templates/NOTES.txt b/upstreamed/mediawiki/templates/NOTES.txt index 5dd529089c..306ec85872 100644 --- a/upstreamed/mediawiki/templates/NOTES.txt +++ b/upstreamed/mediawiki/templates/NOTES.txt @@ -27,12 +27,14 @@ Watch the status with: 'kubectl get svc --namespace {{ .Release.Namespace }} -w {{ template "mediawiki.fullname" . }}' export SERVICE_IP=$(kubectl get svc --namespace {{ .Release.Namespace }} {{ template "mediawiki.fullname" . }} --template "{{"{{ range (index .status.loadBalancer.ingress 0) }}{{.}}{{ end }}"}}") - echo "Mediawiki URL: http://$SERVICE_IP/" + +{{- $port:=.Values.service.port | toString }} + echo "Mediawiki URL: http://$SERVICE_IP{{- if ne $port "80" }}:{{ .Values.service.port }}{{ end }}/" {{- else if contains "ClusterIP" .Values.service.type }} echo "Mediawiki URL: http://127.0.0.1:8080/" - kubectl port-forward --namespace {{ .Release.Namespace }} svc/{{ template "mediawiki.fullname" . }} 8080:80 + kubectl port-forward --namespace {{ .Release.Namespace }} svc/{{ template "mediawiki.fullname" . }} 8080:{{ .Values.service.port }} {{- end }} {{- end }} diff --git a/upstreamed/mediawiki/templates/svc.yaml b/upstreamed/mediawiki/templates/svc.yaml index a301366e38..f060d455c2 100644 --- a/upstreamed/mediawiki/templates/svc.yaml +++ b/upstreamed/mediawiki/templates/svc.yaml @@ -17,13 +17,13 @@ spec: {{- end }} ports: - name: http - port: 80 + port: {{ .Values.service.port }} targetPort: http {{- if (and (eq .Values.service.type "NodePort") (not (empty .Values.service.nodePorts.http)))}} nodePort: {{ .Values.service.nodePorts.http }} {{- end }} - name: https - port: 443 + port: {{ .Values.service.httpsPort }} targetPort: https {{- if (and (eq .Values.service.type "NodePort") (not (empty .Values.service.nodePorts.https)))}} nodePort: {{ .Values.service.nodePorts.https }} diff --git a/upstreamed/mediawiki/values.yaml b/upstreamed/mediawiki/values.yaml index dfbb1ad763..66706b5ec4 100644 --- a/upstreamed/mediawiki/values.yaml +++ b/upstreamed/mediawiki/values.yaml @@ -136,6 +136,10 @@ service: ## otherwise leave blank ## # loadBalancerIP: + # HTTP Port + port: 80 + # HTTPS Port + httpsPort: 443 ## Use nodePorts to requets some specific ports when usin NodePort ## nodePorts: ## http: diff --git a/upstreamed/mongodb/Chart.yaml b/upstreamed/mongodb/Chart.yaml index 9021ef88ed..ff9733ddd2 100644 --- a/upstreamed/mongodb/Chart.yaml +++ b/upstreamed/mongodb/Chart.yaml @@ -1,5 +1,5 @@ name: mongodb -version: 4.8.4 +version: 4.9.0 appVersion: 4.0.3 description: NoSQL document-oriented database that stores JSON-like documents with dynamic schemas, simplifying the integration of data in content-driven applications. keywords: diff --git a/upstreamed/mongodb/README.md b/upstreamed/mongodb/README.md index bb965b28aa..41b448a305 100644 --- a/upstreamed/mongodb/README.md +++ b/upstreamed/mongodb/README.md @@ -101,14 +101,20 @@ The following table lists the configurable parameters of the MongoDB chart and t | `readinessProbe.failureThreshold` | Minimum consecutive failures for the probe to be considered failed after having succeeded. | `6` | | `readinessProbe.successThreshold` | Minimum consecutive successes for the probe to be considered successful after having failed. | `1` | | `configmap` | MongoDB configuration file to be used | `nil` | -| `metrics.enabled` | Start a side-car prometheus exporter | `false` | -| `metrics.image.registry` | MongoDB exporter image registry | `docker.io` | -| `metrics.image.repository` | MongoDB exporter image name | `forekshub/percona-mongodb-exporter` | -| `metrics.image.tag` | MongoDB exporter image tag | `latest` | -| `metrics.image.pullPolicy` | Image pull policy | `IfNotPresent` | -| `metrics.image.pullSecrets` | Specify docker-registry secret names as an array | `nil` | -| `metrics.podAnnotations` | Additional annotations for Metrics exporter pod | {} | -| `metrics.resources` | Exporter resource requests/limit | Memory: `256Mi`, CPU: `100m` | +| `metrics.enabled` | Start a side-car prometheus exporter | `false` | +| `metrics.image.registry` | MongoDB exporter image registry | `docker.io` | +| `metrics.image.repository` | MongoDB exporter image name | `forekshub/percona-mongodb-exporter` | +| `metrics.image.tag` | MongoDB exporter image tag | `latest` | +| `metrics.image.pullPolicy` | Image pull policy | `IfNotPresent` | +| `metrics.image.pullSecrets` | Specify docker-registry secret names as an array | `nil` | +| `metrics.podAnnotations` | Additional annotations for Metrics exporter pod | {} | +| `metrics.resources` | Exporter resource requests/limit | Memory: `256Mi`, CPU: `100m` | +| `metrics.serviceMonitor.enabled` | Create ServiceMonitor Resource for scraping metrics using PrometheusOperator | `false` | +| `metrics.serviceMonitor.additionalLabels` | Used to pass Labels that are required by the Installed Prometheus Operator | {} | +| `metrics.serviceMonitor.relabellings` | Specify Metric Relabellings to add to the scrape endpoint | `nil` | +| `metrics.serviceMonitor.alerting.rules` | Define individual alerting rules as required | {} | +| `metrics.serviceMonitor.alerting.additionalLabels` | Used to pass Labels that are required by the Installed Prometheus Operator | {} | + Specify each parameter using the `--set key=value[,key=value]` argument to `helm install`. For example, diff --git a/upstreamed/mongodb/templates/headless-svc-rs.yaml b/upstreamed/mongodb/templates/headless-svc-rs.yaml index 29fcf34cc1..93b3b01e97 100644 --- a/upstreamed/mongodb/templates/headless-svc-rs.yaml +++ b/upstreamed/mongodb/templates/headless-svc-rs.yaml @@ -18,7 +18,12 @@ spec: ports: - name: mongodb port: {{ .Values.service.port }} +{{- if .Values.metrics.enabled }} + - name: metrics + port: 9216 + targetPort: metrics +{{- end }} selector: app: {{ template "mongodb.name" . }} release: {{ .Release.Name }} -{{- end }} \ No newline at end of file +{{- end }} diff --git a/upstreamed/mongodb/templates/prometheus-alerting-rule.yaml b/upstreamed/mongodb/templates/prometheus-alerting-rule.yaml new file mode 100644 index 0000000000..e6d4d4c688 --- /dev/null +++ b/upstreamed/mongodb/templates/prometheus-alerting-rule.yaml @@ -0,0 +1,17 @@ +{{- if and .Values.metrics.enabled .Values.metrics.serviceMonitor.enabled .Values.metrics.serviceMonitor.alerting.rules }} +apiVersion: monitoring.coreos.com/v1 +kind: PrometheusRule +metadata: + name: {{ template "mongodb.fullname" . }} + labels: + app: {{ template "mongodb.name" . }} + chart: {{ template "mongodb.chart" . }} + heritage: {{ .Release.Service }} + release: {{ .Release.Name }} + {{- if .Values.metrics.serviceMonitor.alerting.additionalLabels }} +{{ toYaml .Values.metrics.serviceMonitor.alerting.additionalLabels | indent 4 }} + {{- end }} +spec: + groups: +{{ toYaml .Values.metrics.serviceMonitor.alerting.rules | indent 4 }} +{{- end }} diff --git a/upstreamed/mongodb/templates/prometheus-service-monitor.yaml b/upstreamed/mongodb/templates/prometheus-service-monitor.yaml new file mode 100644 index 0000000000..7c33169238 --- /dev/null +++ b/upstreamed/mongodb/templates/prometheus-service-monitor.yaml @@ -0,0 +1,32 @@ +{{- if and .Values.metrics.enabled .Values.metrics.serviceMonitor.enabled }} +apiVersion: monitoring.coreos.com/v1 +kind: ServiceMonitor +metadata: + name: {{ template "mongodb.fullname" . }} + labels: + app: {{ template "mongodb.name" . }} + chart: {{ template "mongodb.chart" . }} + heritage: {{ .Release.Service }} + release: {{ .Release.Name }} + {{- if .Values.metrics.serviceMonitor.additionalLabels }} +{{ toYaml .Values.metrics.serviceMonitor.additionalLabels | indent 4 }} + {{- end }} +spec: + endpoints: + - interval: 30s + port: metrics + {{- if .Values.metrics.serviceMonitor.relabellings }} + metricRelabelings: +{{ toYaml .Values.metrics.serviceMonitor.relabellings | indent 4 }} + {{- end }} + jobLabel: {{ template "mongodb.fullname" . }} + namespaceSelector: + matchNames: + - "{{ $.Release.Namespace }}" + selector: + matchLabels: + app: {{ template "mongodb.name" . }} + chart: {{ template "mongodb.chart" . }} + release: "{{ .Release.Name }}" + heritage: "{{ .Release.Service }}" +{{- end }} diff --git a/upstreamed/mongodb/templates/statefulset-primary-rs.yaml b/upstreamed/mongodb/templates/statefulset-primary-rs.yaml index 74bb2088f1..9a3ab96a98 100644 --- a/upstreamed/mongodb/templates/statefulset-primary-rs.yaml +++ b/upstreamed/mongodb/templates/statefulset-primary-rs.yaml @@ -148,12 +148,16 @@ spec: image: {{ template "metrics.image" . }} imagePullPolicy: {{ .Values.metrics.image.pullPolicy | quote }} env: + {{- if .Values.usePassword }} - name: MONGODB_ROOT_PASSWORD valueFrom: secretKeyRef: name: {{ if .Values.existingSecret }}{{ .Values.existingSecret }}{{- else }}{{ template "mongodb.fullname" . }}{{- end }} key: mongodb-root-password command: [ 'sh', '-c', '/bin/mongodb_exporter --mongodb.uri mongodb://root:${MONGODB_ROOT_PASSWORD}@localhost:{{ .Values.service.port }}/admin' ] + {{- else }} + command: [ 'sh', '-c', '/bin/mongodb_exporter --mongodb.uri mongodb://localhost:{{ .Values.service.port }}' ] + {{- end }} ports: - name: metrics containerPort: 9216 diff --git a/upstreamed/mongodb/templates/statefulset-secondary-rs.yaml b/upstreamed/mongodb/templates/statefulset-secondary-rs.yaml index 60df963050..334e84bd90 100644 --- a/upstreamed/mongodb/templates/statefulset-secondary-rs.yaml +++ b/upstreamed/mongodb/templates/statefulset-secondary-rs.yaml @@ -136,12 +136,16 @@ spec: image: {{ template "metrics.image" . }} imagePullPolicy: {{ .Values.metrics.image.pullPolicy | quote }} env: + {{- if .Values.usePassword }} - name: MONGODB_ROOT_PASSWORD valueFrom: secretKeyRef: name: {{ if .Values.existingSecret }}{{ .Values.existingSecret }}{{- else }}{{ template "mongodb.fullname" . }}{{- end }} key: mongodb-root-password command: [ 'sh', '-c', '/bin/mongodb_exporter --mongodb.uri mongodb://root:${MONGODB_ROOT_PASSWORD}@localhost:{{ .Values.service.port }}/admin' ] + {{- else }} + command: [ 'sh', '-c', '/bin/mongodb_exporter --mongodb.uri mongodb://localhost:{{ .Values.service.port }}' ] + {{- end }} ports: - name: metrics containerPort: 9216 diff --git a/upstreamed/mongodb/values-production.yaml b/upstreamed/mongodb/values-production.yaml index 57c64cd93c..14c2b0c3a1 100644 --- a/upstreamed/mongodb/values-production.yaml +++ b/upstreamed/mongodb/values-production.yaml @@ -243,3 +243,26 @@ metrics: prometheus.io/scrape: "true" prometheus.io/port: "9216" + ## Prometheus Service Monitor + ## ref: https://github.com/coreos/prometheus-operator + ## https://github.com/coreos/prometheus-operator/blob/master/Documentation/api.md + serviceMonitor: + ## If the operator is installed in your cluster, set to true to create a Service Monitor Entry + enabled: false + ## Used to pass Labels that are used by the Prometheus installed in your cluster to select Service Monitors to work with + ## ref: https://github.com/coreos/prometheus-operator/blob/master/Documentation/api.md#prometheusspec + additionalLabels: {} + + ## Specify Metric Relabellings to add to the scrape endpoint + ## ref: https://github.com/coreos/prometheus-operator/blob/master/Documentation/api.md#endpoint + # relabellings: + + alerting: + ## Define individual alerting rules as required + ## ref: https://github.com/coreos/prometheus-operator/blob/master/Documentation/api.md#rulegroup + ## https://prometheus.io/docs/prometheus/latest/configuration/alerting_rules/ + rules: {} + + ## Used to pass Labels that are used by the Prometheus installed in your cluster to select Prometheus Rules to work with + ## ref: https://github.com/coreos/prometheus-operator/blob/master/Documentation/api.md#prometheusspec + additionalLabels: {} diff --git a/upstreamed/mongodb/values.yaml b/upstreamed/mongodb/values.yaml index 37fc2d583b..2479befd37 100644 --- a/upstreamed/mongodb/values.yaml +++ b/upstreamed/mongodb/values.yaml @@ -242,3 +242,27 @@ metrics: podAnnotations: prometheus.io/scrape: "true" prometheus.io/port: "9216" + + ## Prometheus Service Monitor + ## ref: https://github.com/coreos/prometheus-operator + ## https://github.com/coreos/prometheus-operator/blob/master/Documentation/api.md + serviceMonitor: + ## If the operator is installed in your cluster, set to true to create a Service Monitor Entry + enabled: false + ## Used to pass Labels that are used by the Prometheus installed in your cluster to select Service Monitors to work with + ## ref: https://github.com/coreos/prometheus-operator/blob/master/Documentation/api.md#prometheusspec + additionalLabels: {} + + ## Specify Metric Relabellings to add to the scrape endpoint + ## ref: https://github.com/coreos/prometheus-operator/blob/master/Documentation/api.md#endpoint + # relabellings: + + alerting: + ## Define individual alerting rules as required + ## ref: https://github.com/coreos/prometheus-operator/blob/master/Documentation/api.md#rulegroup + ## https://prometheus.io/docs/prometheus/latest/configuration/alerting_rules/ + rules: {} + + ## Used to pass Labels that are used by the Prometheus installed in your cluster to select Prometheus Rules to work with + ## ref: https://github.com/coreos/prometheus-operator/blob/master/Documentation/api.md#prometheusspec + additionalLabels: {} diff --git a/upstreamed/moodle/Chart.yaml b/upstreamed/moodle/Chart.yaml index 20847a7410..473450d826 100644 --- a/upstreamed/moodle/Chart.yaml +++ b/upstreamed/moodle/Chart.yaml @@ -1,5 +1,5 @@ name: moodle -version: 3.3.1 +version: 4.0.0 appVersion: 3.5.3 description: Moodle is a learning platform designed to provide educators, administrators and learners with a single robust, secure and integrated system to create personalised diff --git a/upstreamed/moodle/README.md b/upstreamed/moodle/README.md index 7b765c3856..030330926c 100644 --- a/upstreamed/moodle/README.md +++ b/upstreamed/moodle/README.md @@ -63,7 +63,12 @@ The following table lists the configurable parameters of the Moodle chart and th | `smtpProtocol` | SMTP Protocol (options: ssl,tls, nil) | `nil` | | `smtpUser` | SMTP user | `nil` | | `smtpPassword` | SMTP password | `nil` | -| `serviceType` | Kubernetes Service type | `LoadBalancer` | +| `service.type` | Kubernetes Service type | `LoadBalancer` | +| `service.port` | Service HTTP port | `80` | +| `service.httpsPort` | Service HTTPS port | `443` | +| `service.externalTrafficPolicy` | Enable client source IP preservation | `Cluster` | +| `service.nodePorts.http` | Kubernetes http node port | `""` | +| `service.nodePorts.https` | Kubernetes https node port | `""` | | `ingress.enabled` | Enable ingress controller resource | `false` | | `ingress.hosts[0].name` | Hostname to your Moodle installation | `moodle.local` | | `ingress.hosts[0].path` | Path within the url structure | `/` | diff --git a/upstreamed/moodle/templates/NOTES.txt b/upstreamed/moodle/templates/NOTES.txt index 42d464300a..7f6f63cc25 100644 --- a/upstreamed/moodle/templates/NOTES.txt +++ b/upstreamed/moodle/templates/NOTES.txt @@ -1,8 +1,8 @@ {{- if or .Values.mariadb.enabled .Values.externalDatabase.host -}} ** Please be patient while the chart is being deployed ** -{{- if and .Values.ingress.enabled (ne .Values.serviceType "ClusterIP") }} -** Notice : Usually with ingress the serviceType should be set to ClusterIP, which is not the case to this deployment! ** +{{- if and .Values.ingress.enabled (ne .Values.service.type "ClusterIP") }} +** Notice : Usually with ingress the service.type should be set to ClusterIP, which is not the case to this deployment! ** {{- end }} 1. Access you Moodle instance with: @@ -17,22 +17,24 @@ - http://{{ . }} {{- end }} {{- end }} -{{- else if contains "NodePort" .Values.serviceType }} +{{- else if contains "NodePort" .Values.service.type }} export NODE_PORT=$(kubectl get --namespace {{ .Release.Namespace }} -o jsonpath="{.spec.ports[0].nodePort}" services {{ template "moodle.fullname" . }}) export NODE_IP=$(kubectl get nodes --namespace {{ .Release.Namespace }} -o jsonpath="{.items[0].status.addresses[0].address}") echo "Moodle URL: http://$NODE_IP:$NODE_PORT/" -{{- else if contains "LoadBalancer" .Values.serviceType }} +{{- else if contains "LoadBalancer" .Values.service.type }} ** Please ensure an external IP is associated to the {{ template "moodle.fullname" . }} service before proceeding ** ** Watch the status using: kubectl get svc --namespace {{ .Release.Namespace }} -w {{ template "moodle.fullname" . }} ** export SERVICE_IP=$(kubectl get svc --namespace {{ .Release.Namespace }} {{ template "moodle.fullname" . }} --template "{{"{{ range (index .status.loadBalancer.ingress 0) }}{{.}}{{ end }}"}}") - echo "Moodle URL: http://$SERVICE_IP/" -{{- else if contains "ClusterIP" .Values.serviceType }} +{{- $port:=.Values.service.port | toString }} + echo "Moodle URL: http://$SERVICE_IP{{- if ne $port "80" }}:{{ .Values.service.port }}{{ end }}/" - kubectl port-forward --namespace {{ .Release.Namespace }} svc/{{ template "moodle.fullname" . }} 8080:80 +{{- else if contains "ClusterIP" .Values.service.type }} + + kubectl port-forward --namespace {{ .Release.Namespace }} svc/{{ template "moodle.fullname" . }} 8080:{{ .Values.service.port }} echo "Moodle URL: http://127.0.0.1:8080/" {{- end }} @@ -54,6 +56,6 @@ host. To configure Moodle to use and external database host: 1. Complete your Moodle deployment by running: - helm upgrade {{ .Release.Name }} --set serviceType={{ .Values.serviceType }},mariadb.enabled=false,externalDatabase.host=YOUR_EXTERNAL_DATABASE_HOST stable/moodle + helm upgrade {{ .Release.Name }} --set service.type={{ .Values.service.type }},mariadb.enabled=false,externalDatabase.host=YOUR_EXTERNAL_DATABASE_HOST stable/moodle {{- end }} diff --git a/upstreamed/moodle/templates/svc.yaml b/upstreamed/moodle/templates/svc.yaml index 2a69ef447e..247019ee0a 100644 --- a/upstreamed/moodle/templates/svc.yaml +++ b/upstreamed/moodle/templates/svc.yaml @@ -8,13 +8,22 @@ metadata: release: "{{ .Release.Name }}" heritage: "{{ .Release.Service }}" spec: - type: {{ .Values.serviceType }} + type: {{ .Values.service.type }} + {{- if (or (eq .Values.service.type "LoadBalancer") (eq .Values.service.type "NodePort")) }} + externalTrafficPolicy: {{ .Values.service.externalTrafficPolicy | quote }} + {{- end }} ports: - - name: http - port: 80 - targetPort: http - - name: https - port: 443 - targetPort: https + - name: http + port: {{ .Values.service.port }} + targetPort: http + {{- if (and (eq .Values.service.type "NodePort") (not (empty .Values.service.nodePorts.http)))}} + nodePort: {{ .Values.service.nodePorts.http }} + {{- end }} + - name: https + port: {{ .Values.service.httpsPort }} + targetPort: https + {{- if (and (eq .Values.service.type "NodePort") (not (empty .Values.service.nodePorts.https)))}} + nodePort: {{ .Values.service.nodePorts.https }} + {{- end }} selector: app: {{ template "moodle.fullname" . }} diff --git a/upstreamed/moodle/values.yaml b/upstreamed/moodle/values.yaml index a1c2df03f3..91e8b63edb 100644 --- a/upstreamed/moodle/values.yaml +++ b/upstreamed/moodle/values.yaml @@ -145,7 +145,24 @@ mariadb: ## Kubernetes configuration ## For minikube, set this to NodePort, for ingress ClusterIP, elsewhere use LoadBalancer ## -serviceType: LoadBalancer +service: + type: LoadBalancer + # HTTP Port + port: 80 + # HTTPS Port + httpsPort: 443 + ## + ## nodePorts: + ## http: + ## https: + nodePorts: + http: "" + https: "" + ## Enable client source IP preservation + ## ref http://kubernetes.io/docs/tasks/access-application-cluster/create-external-load-balancer/#preserving-the-client-source-ip + ## + externalTrafficPolicy: Cluster + ## Configure the ingress resource that allows you to access the ## Moodle installation. Set up the URL diff --git a/upstreamed/nats/Chart.yaml b/upstreamed/nats/Chart.yaml index 906f96d13f..2bd85505c4 100644 --- a/upstreamed/nats/Chart.yaml +++ b/upstreamed/nats/Chart.yaml @@ -1,5 +1,5 @@ name: nats -version: 1.2.0 +version: 1.3.1 appVersion: 1.3.0 description: An open-source, cloud-native messaging system keywords: diff --git a/upstreamed/nats/README.md b/upstreamed/nats/README.md index 37f57ec30c..a524843b01 100644 --- a/upstreamed/nats/README.md +++ b/upstreamed/nats/README.md @@ -45,87 +45,89 @@ The command removes all the Kubernetes components associated with the chart and The following table lists the configurable parameters of the NATS chart and their default values. -| Parameter | Description | Default | -|--------------------------------------|----------------------------------------------------------------------------------------------|-----------------------------------| -| `global.imageRegistry` | Global Docker image registry | `nil` | -| `image.registry` | NATS image registry | `docker.io` | -| `image.repository` | NATS Image name | `bitnami/nats` | -| `image.tag` | NATS Image tag | `{VERSION}` | -| `image.pullPolicy` | Image pull policy | `Always` | -| `image.pullSecrets` | Specify image pull secrets | `nil` | -| `auth.enabled` | Switch to enable/disable client authentication | `true` | -| `auth.user` | Client authentication user | `nats_cluster` | -| `auth.password` | Client authentication password | `random alhpanumeric string (10)` | -| `auth.token` | Client authentication token | `nil` | -| `clusterAuth.enabled` | Switch to enable/disable cluster authentication | `true` | -| `clusterAuth.user` | Cluster authentication user | `nats_cluster` | -| `clusterAuth.password` | Cluster authentication password | `random alhpanumeric string (10)` | -| `clusterAuth.token` | Cluster authentication token | `nil` | -| `debug.enabled` | Switch to enable/disable debug on logging | `false` | -| `debug.trace` | Switch to enable/disable trace debug level on logging | `false` | -| `debug.logtime` | Switch to enable/disable logtime on logging | `false` | -| `maxConnections` | Max. number of client connections | `nil` | -| `maxControlLine` | Max. protocol control line | `nil` | -| `maxPayload` | Max. payload | `nil` | -| `writeDeadline` | Duration the server can block on a socket write to a client | `nil` | -| `replicaCount` | Number of NATS nodes | `1` | -| `securityContext.enabled` | Enable security context | `true` | -| `securityContext.fsGroup` | Group ID for the container | `1001` | -| `securityContext.runAsUser` | User ID for the container | `1001` | -| `statefulset.updateStrategy` | Statefulsets Update strategy | `OnDelete` | -| `rollingUpdatePartition` | Partition for Rolling Update strategy | `nil` | -| `podLabels` | Additional labels to be added to pods | {} | -| `podAnnotations` | Annotations to be added to pods | {} | -| `nodeSelector` | Node labels for pod assignment | `nil` | -| `schedulerName` | Name of an alternate | `nil` | -| `antiAffinity` | Anti-affinity for pod assignment | `soft` | -| `tolerations` | Toleration labels for pod assignment | `nil` | -| `resources` | CPU/Memory resource requests/limits | {} | -| `livenessProbe.initialDelaySeconds` | Delay before liveness probe is initiated | `30` | -| `livenessProbe.periodSeconds` | How often to perform the probe | `10` | -| `livenessProbe.timeoutSeconds` | When the probe times out | `5` | -| `livenessProbe.successThreshold` | Minimum consecutive successes for the probe to be considered successful after having failed. | `1` | -| `livenessProbe.failureThreshold` | Minimum consecutive failures for the probe to be considered failed after having succeeded. | `6` | -| `readinessProbe.initialDelaySeconds` | Delay before readiness probe is initiated | `5` | -| `readinessProbe.periodSeconds` | How often to perform the probe | `10` | -| `readinessProbe.timeoutSeconds` | When the probe times out | `5` | -| `readinessProbe.failureThreshold` | Minimum consecutive failures for the probe to be considered failed after having succeeded. | `6` | -| `readinessProbe.successThreshold` | Minimum consecutive successes for the probe to be considered successful after having failed. | `1` | -| `clientService.type` | Kubernetes Service type (NATS client) | `ClusterIP` | -| `clientService.port` | NATS client port | `4222` | -| `clientService.nodePort` | Port to bind to for NodePort service type (NATS client) | `nil` | -| `clientService.annotations` | Annotations for NATS client service | {} | -| `clientService.loadBalancerIP` | loadBalancerIP if NATS client service type is `LoadBalancer` | `nil` | -| `clusterService.type` | Kubernetes Service type (NATS cluster) | `ClusterIP` | -| `clusterService.port` | NATS cluster port | `6222` | -| `clusterService.nodePort` | Port to bind to for NodePort service type (NATS cluster) | `nil` | -| `clusterService.annotations` | Annotations for NATS cluster service | {} | -| `clusterService.loadBalancerIP` | loadBalancerIP if NATS cluster service type is `LoadBalancer` | `nil` | -| `monitoringService.type` | Kubernetes Service type (NATS monitoring) | `ClusterIP` | -| `monitoringService.port` | NATS monitoring port | `8222` | -| `monitoringService.nodePort` | Port to bind to for NodePort service type (NATS monitoring) | `nil` | -| `monitoringService.annotations` | Annotations for NATS monitoring service | {} | -| `monitoringService.loadBalancerIP` | loadBalancerIP if NATS monitoring service type is `LoadBalancer` | `nil` | -| `ingress.enabled` | Enable ingress controller resource | `false` | -| `ingress.hosts[0].name` | Hostname for NATS monitoring | `nats.local` | -| `ingress.hosts[0].path` | Path within the url structure | `/` | -| `ingress.hosts[0].tls` | Utilize TLS backend in ingress | `false` | -| `ingress.hosts[0].tlsSecret` | TLS Secret (certificates) | `nats.local-tls-secret` | -| `ingress.hosts[0].annotations` | Annotations for this host's ingress record | `[]` | -| `ingress.secrets[0].name` | TLS Secret Name | `nil` | -| `ingress.secrets[0].certificate` | TLS Secret Certificate | `nil` | -| `ingress.secrets[0].key` | TLS Secret Key | `nil` | -| `networkPolicy.enabled` | Enable NetworkPolicy | `false` | -| `networkPolicy.allowExternal` | Allow external connections | `true` | -| `sidecars` | Attach additional containers to the pod. | `nil` | -| `metrics.enabled` | Start a side-car prometheus exporter | `false` | -| `metrics.image.registry` | MongoDB exporter image registry | `docker.io` | -| `metrics.image.repository` | MongoDB exporter image name | `appcelerator/prometheus-nats-exporter` | -| `metrics.image.tag` | MongoDB exporter image tag | `0.17.0` | -| `metrics.image.pullPolicy` | Image pull policy | `IfNotPresent` | -| `metrics.image.pullSecrets` | Specify docker-registry secret names as an array | `nil` | -| `metrics.podAnnotations` | Additional annotations for Metrics exporter pod | {} | -| `metrics.resources` | Exporter resource requests/limit | Memory: `256Mi`, CPU: `100m` | +| Parameter | Description | Default | +| ------------------------------------ | -------------------------------------------------------------------------------------------- | ------------------------------------------------------------- | +| `global.imageRegistry` | Global Docker image registry | `nil` | +| `image.registry` | NATS image registry | `docker.io` | +| `image.repository` | NATS Image name | `bitnami/nats` | +| `image.tag` | NATS Image tag | `{VERSION}` | +| `image.pullPolicy` | Image pull policy | `Always` | +| `image.pullSecrets` | Specify image pull secrets | `nil` | +| `auth.enabled` | Switch to enable/disable client authentication | `true` | +| `auth.user` | Client authentication user | `nats_cluster` | +| `auth.password` | Client authentication password | `random alhpanumeric string (10)` | +| `auth.token` | Client authentication token | `nil` | +| `clusterAuth.enabled` | Switch to enable/disable cluster authentication | `true` | +| `clusterAuth.user` | Cluster authentication user | `nats_cluster` | +| `clusterAuth.password` | Cluster authentication password | `random alhpanumeric string (10)` | +| `clusterAuth.token` | Cluster authentication token | `nil` | +| `debug.enabled` | Switch to enable/disable debug on logging | `false` | +| `debug.trace` | Switch to enable/disable trace debug level on logging | `false` | +| `debug.logtime` | Switch to enable/disable logtime on logging | `false` | +| `maxConnections` | Max. number of client connections | `nil` | +| `maxControlLine` | Max. protocol control line | `nil` | +| `maxPayload` | Max. payload | `nil` | +| `writeDeadline` | Duration the server can block on a socket write to a client | `nil` | +| `replicaCount` | Number of NATS nodes | `1` | +| `securityContext.enabled` | Enable security context | `true` | +| `securityContext.fsGroup` | Group ID for the container | `1001` | +| `securityContext.runAsUser` | User ID for the container | `1001` | +| `statefulset.updateStrategy` | Statefulsets Update strategy | `OnDelete` | +| `statefulset.rollingUpdatePartition` | Partition for Rolling Update strategy | `nil` | +| `podLabels` | Additional labels to be added to pods | {} | +| `podAnnotations` | Annotations to be added to pods | {} | +| `nodeSelector` | Node labels for pod assignment | `nil` | +| `schedulerName` | Name of an alternate | `nil` | +| `antiAffinity` | Anti-affinity for pod assignment | `soft` | +| `tolerations` | Toleration labels for pod assignment | `nil` | +| `resources` | CPU/Memory resource requests/limits | {} | +| `extraArgs` | Optional flags for NATS | `[]` | +| `livenessProbe.initialDelaySeconds` | Delay before liveness probe is initiated | `30` | +| `livenessProbe.periodSeconds` | How often to perform the probe | `10` | +| `livenessProbe.timeoutSeconds` | When the probe times out | `5` | +| `livenessProbe.successThreshold` | Minimum consecutive successes for the probe to be considered successful after having failed. | `1` | +| `livenessProbe.failureThreshold` | Minimum consecutive failures for the probe to be considered failed after having succeeded. | `6` | +| `readinessProbe.initialDelaySeconds` | Delay before readiness probe is initiated | `5` | +| `readinessProbe.periodSeconds` | How often to perform the probe | `10` | +| `readinessProbe.timeoutSeconds` | When the probe times out | `5` | +| `readinessProbe.failureThreshold` | Minimum consecutive failures for the probe to be considered failed after having succeeded. | `6` | +| `readinessProbe.successThreshold` | Minimum consecutive successes for the probe to be considered successful after having failed. | `1` | +| `clientService.type` | Kubernetes Service type (NATS client) | `ClusterIP` | +| `clientService.port` | NATS client port | `4222` | +| `clientService.nodePort` | Port to bind to for NodePort service type (NATS client) | `nil` | +| `clientService.annotations` | Annotations for NATS client service | {} | +| `clientService.loadBalancerIP` | loadBalancerIP if NATS client service type is `LoadBalancer` | `nil` | +| `clusterService.type` | Kubernetes Service type (NATS cluster) | `ClusterIP` | +| `clusterService.port` | NATS cluster port | `6222` | +| `clusterService.nodePort` | Port to bind to for NodePort service type (NATS cluster) | `nil` | +| `clusterService.annotations` | Annotations for NATS cluster service | {} | +| `clusterService.loadBalancerIP` | loadBalancerIP if NATS cluster service type is `LoadBalancer` | `nil` | +| `monitoringService.type` | Kubernetes Service type (NATS monitoring) | `ClusterIP` | +| `monitoringService.port` | NATS monitoring port | `8222` | +| `monitoringService.nodePort` | Port to bind to for NodePort service type (NATS monitoring) | `nil` | +| `monitoringService.annotations` | Annotations for NATS monitoring service | {} | +| `monitoringService.loadBalancerIP` | loadBalancerIP if NATS monitoring service type is `LoadBalancer` | `nil` | +| `ingress.enabled` | Enable ingress controller resource | `false` | +| `ingress.hosts[0].name` | Hostname for NATS monitoring | `nats.local` | +| `ingress.hosts[0].path` | Path within the url structure | `/` | +| `ingress.hosts[0].tls` | Utilize TLS backend in ingress | `false` | +| `ingress.hosts[0].tlsSecret` | TLS Secret (certificates) | `nats.local-tls-secret` | +| `ingress.hosts[0].annotations` | Annotations for this host's ingress record | `[]` | +| `ingress.secrets[0].name` | TLS Secret Name | `nil` | +| `ingress.secrets[0].certificate` | TLS Secret Certificate | `nil` | +| `ingress.secrets[0].key` | TLS Secret Key | `nil` | +| `networkPolicy.enabled` | Enable NetworkPolicy | `false` | +| `networkPolicy.allowExternal` | Allow external connections | `true` | +| `metrics.enabled` | Enable Prometheus metrics via exporter side-car | `false` | +| `metrics.image.registry` | Prometheus metrics exporter image registry | `docker.io` | +| `metrics.image.repository` | Prometheus metrics exporter image name | `synadia/prometheus-nats-exporter` | +| `metrics.image.tag` | Prometheus metrics exporter image tag | `0.1.0` | +| `metrics.image.pullPolicy` | Prometheus metrics image pull policy | `IfNotPresent` | +| `metrics.image.pullSecrets` | Prometheus metrics image pull secrets | `nil` | +| `metrics.port` | Prometheus metrics exporter port | `7777` | +| `metrics.podAnnotations` | Prometheus metrics exporter annotations | `prometheus.io/scrape: "true"`, `prometheus.io/port: "7777"` | +| `metrics.resources` | Prometheus metrics exporter resource requests/limit | {} | +| `sidecars` | Attach additional containers to the pod | `nil` | Specify each parameter using the `--set key=value[,key=value]` argument to `helm install`. For example, diff --git a/upstreamed/nats/templates/NOTES.txt b/upstreamed/nats/templates/NOTES.txt index 7f275f53e3..023671821e 100644 --- a/upstreamed/nats/templates/NOTES.txt +++ b/upstreamed/nats/templates/NOTES.txt @@ -74,5 +74,15 @@ To access the Monitoring svc from outside the cluster, follow the steps below: kubectl port-forward --namespace {{ .Release.Namespace }} svc/{{ template "nats.fullname" . }}-monitoring {{ .Values.monitoringService.port }}:{{ .Values.monitoringService.port }} {{- end }} -2. Access the NATS monitoring opening the URL obtained on a browser. +2. Access NATS monitoring by opening the URL obtained in a browser. +{{- end }} + +{{- if .Values.metrics.enabled }} + +3. Get the NATS Prometheus Metrics URL by running: + + echo "Prometheus Metrics URL: http://127.0.0.1:{{ .Values.metrics.port }}" + kubectl port-forward --namespace {{ .Release.Namespace }} {{ template "nats.fullname" . }}-0 {{ .Values.metrics.port }}:{{ .Values.metrics.port }} + +4. Access NATS Prometheus metrics by opening the URL obtained in a browser. {{- end }} diff --git a/upstreamed/nats/templates/statefulset.yaml b/upstreamed/nats/templates/statefulset.yaml index 503aec47ad..46f53ddaa7 100644 --- a/upstreamed/nats/templates/statefulset.yaml +++ b/upstreamed/nats/templates/statefulset.yaml @@ -89,6 +89,9 @@ spec: args: - -c - /opt/bitnami/nats/gnatsd.conf + {{- if .Values.extraArgs }} +{{ toYaml .Values.extraArgs | indent 8 }} + {{- end }} ports: - name: client containerPort: {{ .Values.clientService.port }} @@ -131,10 +134,12 @@ spec: - name: metrics image: {{ template "metrics.image" . }} imagePullPolicy: {{ .Values.metrics.image.pullPolicy | quote }} - command: [ '/prometheus-nats-exporter', '-varz', 'http://localhost:{{ .Values.monitoringService.port }}' ] + args: +{{ toYaml .Values.metrics.args | indent 10 -}} + - "http://localhost:{{ .Values.monitoringService.port }}" ports: - name: metrics - containerPort: 7777 + containerPort: {{ .Values.metrics.port }} livenessProbe: httpGet: path: /metrics diff --git a/upstreamed/nats/values-production.yaml b/upstreamed/nats/values-production.yaml index 3952144f4a..26981c19a4 100644 --- a/upstreamed/nats/values-production.yaml +++ b/upstreamed/nats/values-production.yaml @@ -246,6 +246,42 @@ ingress: # key: # certificate: +# Optional additional arguments +extraArgs: [] + +## Metrics / Prometheus NATS Exporter +## +## ref: https://github.com/nats-io/prometheus-nats-exporter +metrics: + enabled: true + image: + registry: docker.io + repository: synadia/prometheus-nats-exporter + tag: 0.1.0 + pullPolicy: IfNotPresent + ## Optionally specify an array of imagePullSecrets. + ## Secrets must be manually created in the namespace. + ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/ + ## + # pullSecrets: + # - myRegistrKeySecretName + ## Metrics exporter resource requests and limits + ## ref: http://kubernetes.io/docs/user-guide/compute-resources/ + ## + # resources: {} + ## Metrics exporter port + port: 7777 + ## Metrics exporter annotations + podAnnotations: + prometheus.io/scrape: "true" + prometheus.io/port: "7777" + ## Metrics exporter flags + args: + - -connz + - -routez + - -subz + - -varz + sidecars: ## Add sidecars to the pod. ## e.g. @@ -255,27 +291,3 @@ sidecars: # ports: # - name: portname # containerPort: 1234 - -## Prometheus Exporter / Metrics -## -metrics: - enabled: true - image: - registry: docker.io - repository: appcelerator/prometheus-nats-exporter - tag: 0.17.0 - pullPolicy: IfNotPresent - ## Optionally specify an array of imagePullSecrets. - ## Secrets must be manually created in the namespace. - ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/ - ## - # pullSecrets: - # - myRegistrKeySecretName - ## Metrics exporter resource requests and limits - ## ref: http://kubernetes.io/docs/user-guide/compute-resources/ - ## - # resources: {} - ## Metrics exporter pod Annotation - podAnnotations: - prometheus.io/scrape: "true" - prometheus.io/port: "7777" diff --git a/upstreamed/nats/values.yaml b/upstreamed/nats/values.yaml index cd7ec5ac06..e9faa9dca5 100644 --- a/upstreamed/nats/values.yaml +++ b/upstreamed/nats/values.yaml @@ -250,6 +250,42 @@ ingress: # key: # certificate: +# Optional additional arguments +extraArgs: [] + +## Metrics / Prometheus NATS Exporter +## +## ref: https://github.com/nats-io/prometheus-nats-exporter +metrics: + enabled: false + image: + registry: docker.io + repository: synadia/prometheus-nats-exporter + tag: 0.1.0 + pullPolicy: IfNotPresent + ## Optionally specify an array of imagePullSecrets. + ## Secrets must be manually created in the namespace. + ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/ + ## + # pullSecrets: + # - myRegistrKeySecretName + ## Metrics exporter resource requests and limits + ## ref: http://kubernetes.io/docs/user-guide/compute-resources/ + ## + # resources: {} + ## Metrics exporter port + port: 7777 + ## Metrics exporter annotations + podAnnotations: + prometheus.io/scrape: "true" + prometheus.io/port: "7777" + ## Metrics exporter flags + args: + - -connz + - -routez + - -subz + - -varz + sidecars: ## Add sidecars to the pod. ## e.g. @@ -259,27 +295,3 @@ sidecars: # ports: # - name: portname # containerPort: 1234 - -## Prometheus Exporter / Metrics -## -metrics: - enabled: false - image: - registry: docker.io - repository: appcelerator/prometheus-nats-exporter - tag: 0.17.0 - pullPolicy: IfNotPresent - ## Optionally specify an array of imagePullSecrets. - ## Secrets must be manually created in the namespace. - ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/ - ## - # pullSecrets: - # - myRegistrKeySecretName - ## Metrics exporter resource requests and limits - ## ref: http://kubernetes.io/docs/user-guide/compute-resources/ - ## - # resources: {} - ## Metrics exporter pod Annotation - podAnnotations: - prometheus.io/scrape: "true" - prometheus.io/port: "7777" diff --git a/upstreamed/odoo/Chart.yaml b/upstreamed/odoo/Chart.yaml index 313df0cd25..fe415d138c 100644 --- a/upstreamed/odoo/Chart.yaml +++ b/upstreamed/odoo/Chart.yaml @@ -1,6 +1,6 @@ name: odoo -version: 4.0.1 -appVersion: 11.0.20181015 +version: 5.0.0 +appVersion: 11.0.20181115 description: A suite of web based open source business apps. home: https://www.odoo.com/ icon: https://bitnami.com/assets/stacks/odoo/img/odoo-stack-110x117.png diff --git a/upstreamed/odoo/README.md b/upstreamed/odoo/README.md index aa848d0b12..4965cb2d30 100644 --- a/upstreamed/odoo/README.md +++ b/upstreamed/odoo/README.md @@ -64,6 +64,7 @@ The following table lists the configurable parameters of the Odoo chart and thei | `smtpPassword` | SMTP password | `nil` | | `smtpProtocol` | SMTP protocol [`ssl`, `tls`] | `nil` | | `service.type` | Kubernetes Service type | `LoadBalancer` | +| `service.port` | Service HTTP port | `80` | | `service.loadBalancer` | Kubernetes LoadBalancerIP to request | `nil` | | `service.externalTrafficPolicy` | Enable client source IP preservation | `Cluster` | | `service.nodePort` | Kubernetes http node port | `""` | diff --git a/upstreamed/odoo/requirements.lock b/upstreamed/odoo/requirements.lock index 0654004aa1..d11dab4bd6 100644 --- a/upstreamed/odoo/requirements.lock +++ b/upstreamed/odoo/requirements.lock @@ -1,6 +1,6 @@ dependencies: - name: postgresql repository: https://kubernetes-charts.storage.googleapis.com/ - version: 2.1.0 + version: 2.6.0 digest: sha256:972c7085960fbe4a3f530f726f5a1cc6fe038f0ab84df632f6427c3a49f3f366 -generated: 2018-10-24T11:56:43.864565+02:00 +generated: 2018-11-15T09:04:24.989806115Z diff --git a/upstreamed/odoo/templates/NOTES.txt b/upstreamed/odoo/templates/NOTES.txt index e99c8ecc8b..c9a711cb19 100644 --- a/upstreamed/odoo/templates/NOTES.txt +++ b/upstreamed/odoo/templates/NOTES.txt @@ -26,11 +26,13 @@ ** Watch the status using: kubectl get svc --namespace {{ .Release.Namespace }} -w {{ template "odoo.fullname" . }} ** export SERVICE_IP=$(kubectl get svc --namespace {{ .Release.Namespace }} {{ template "odoo.fullname" . }} --template "{{"{{ range (index .status.loadBalancer.ingress 0) }}{{.}}{{ end }}"}}") - echo "Odoo URL: http://$SERVICE_IP/" + +{{- $port:=.Values.service.port | toString }} + echo "Odoo URL: http://$SERVICE_IP{{- if ne $port "80" }}:{{ .Values.service.port }}{{ end }}/" {{- else if contains "ClusterIP" .Values.service.type }} echo "Odoo URL: http://127.0.0.1:8080/" - kubectl port-forward --namespace {{ .Release.Namespace }} svc/{{ template "odoo.fullname" . }} 8080:80 + kubectl port-forward --namespace {{ .Release.Namespace }} svc/{{ template "odoo.fullname" . }} 8080:{{ .Values.service.port }} {{- end }} {{- end }} diff --git a/upstreamed/odoo/templates/svc.yaml b/upstreamed/odoo/templates/svc.yaml index 55d5f34931..0e45478417 100644 --- a/upstreamed/odoo/templates/svc.yaml +++ b/upstreamed/odoo/templates/svc.yaml @@ -17,7 +17,7 @@ spec: {{- end }} ports: - name: http - port: 80 + port: {{ .Values.service.port }} targetPort: http {{- if (and (eq .Values.service.type "NodePort") (not (empty .Values.service.nodePort)))}} nodePort: {{ .Values.service.nodePort }} diff --git a/upstreamed/odoo/values.yaml b/upstreamed/odoo/values.yaml index c97ae935ed..f3fe532729 100644 --- a/upstreamed/odoo/values.yaml +++ b/upstreamed/odoo/values.yaml @@ -10,7 +10,7 @@ image: registry: docker.io repository: bitnami/odoo - tag: 11.0.20181015 + tag: 11.0.20181115 ## Specify a imagePullPolicy ## Defaults to 'Always' if image tag is 'latest', else set to 'IfNotPresent' ## ref: http://kubernetes.io/docs/user-guide/images/#pre-pulling-images @@ -89,7 +89,8 @@ service: ## otherwise leave blank ## # loadBalancerIP: - + # HTTP Port + port: 80 ## Use nodePort to requets some specific port when usin NodePort ## nodePort: "" diff --git a/upstreamed/opencart/Chart.yaml b/upstreamed/opencart/Chart.yaml index 9cfde4545d..e7ee3b96e4 100644 --- a/upstreamed/opencart/Chart.yaml +++ b/upstreamed/opencart/Chart.yaml @@ -1,5 +1,5 @@ name: opencart -version: 3.2.0 +version: 4.0.0 appVersion: 3.0.2-0 description: A free and open source e-commerce platform for online merchants. It provides a professional and reliable foundation for a successful online store. diff --git a/upstreamed/opencart/README.md b/upstreamed/opencart/README.md index d867bc2bdc..e21e2f9acb 100644 --- a/upstreamed/opencart/README.md +++ b/upstreamed/opencart/README.md @@ -56,7 +56,15 @@ The following table lists the configurable parameters of the OpenCart chart and | `image.pullPolicy` | Image pull policy | `Always` if `imageTag` is `latest`, else `IfNotPresent` | | `image.pullSecrets` | Specify image pull secrets | `nil` | | `opencartHost` | OpenCart host to create application URLs | `nil` | -| `opencartLoadBalancerIP` | `loadBalancerIP` for the OpenCart Service | `nil` | +| `service.type` | Kubernetes Service type | `LoadBalancer` | +| `service.port` | Service HTTP port | `80` | +| `nodePorts.http` | Kubernetes http node port | `""` | +| `service.httpsPort` | Service HTTPS port | `443` | +| `nodePorts.https` | Kubernetes https node port | `""` | +| `service.externalTrafficPolicy` | Enable client source IP preservation | `Cluster` | +| `service.nodePorts.http` | Kubernetes http node port | `""` | +| `service.nodePorts.https` | Kubernetes https node port | `""` | +| `service.loadBalancerIP` | `loadBalancerIP` for the OpenCart Service | `nil` | | `opencartUsername` | User of the application | `user` | | `opencartPassword` | Application password | _random 10 character long alphanumeric string_ | | `opencartEmail` | Admin email | `user@example.com` | diff --git a/upstreamed/opencart/templates/NOTES.txt b/upstreamed/opencart/templates/NOTES.txt index 58c6795b65..a2c81846e8 100644 --- a/upstreamed/opencart/templates/NOTES.txt +++ b/upstreamed/opencart/templates/NOTES.txt @@ -10,12 +10,12 @@ host. To configure OpenCart with the URL of your service: 1. Get the OpenCart URL by running: - {{- if contains "NodePort" .Values.serviceType }} + {{- if contains "NodePort" .Values.service.type }} export APP_PORT=$(kubectl get svc --namespace {{ .Release.Namespace }} {{ template "opencart.fullname" . }} -o jsonpath="{.spec.ports[0].nodePort}") export APP_HOST=$(kubectl get nodes --namespace {{ .Release.Namespace }} -o jsonpath="{.items[0].status.addresses[0].address}") - {{- else if contains "LoadBalancer" .Values.serviceType }} + {{- 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 --namespace {{ .Release.Namespace }} -w {{ template "opencart.fullname" . }}' @@ -39,23 +39,23 @@ host. To configure OpenCart with the URL of your service: ## PLEASE UPDATE THE EXTERNAL DATABASE CONNECTION PARAMETERS IN THE FOLLOWING COMMAND AS NEEDED ## helm upgrade {{ .Release.Name }} stable/opencart \ - --set opencartPassword=$APP_PASSWORD,opencartHost=$APP_HOST,serviceType={{ .Values.serviceType }},mariadb.enabled=false{{- if not (empty .Values.externalDatabase.host) }},externalDatabase.host={{ .Values.externalDatabase.host }}{{- end }}{{- if not (empty .Values.externalDatabase.user) }},externalDatabase.user={{ .Values.externalDatabase.user }}{{- end }}{{- if not (empty .Values.externalDatabase.password) }},externalDatabase.password={{ .Values.externalDatabase.password }}{{- end }}{{- if not (empty .Values.externalDatabase.database) }},externalDatabase.database={{ .Values.externalDatabase.database }}{{- end }} + --set opencartPassword=$APP_PASSWORD,opencartHost=$APP_HOST,service.type={{ .Values.service.type }},mariadb.enabled=false{{- if not (empty .Values.externalDatabase.host) }},externalDatabase.host={{ .Values.externalDatabase.host }}{{- end }}{{- if not (empty .Values.externalDatabase.user) }},externalDatabase.user={{ .Values.externalDatabase.user }}{{- end }}{{- if not (empty .Values.externalDatabase.password) }},externalDatabase.password={{ .Values.externalDatabase.password }}{{- end }}{{- if not (empty .Values.externalDatabase.database) }},externalDatabase.database={{ .Values.externalDatabase.database }}{{- end }} {{- end }} {{- else -}} 1. Get the OpenCart URL by running: -{{- if eq .Values.serviceType "ClusterIP" }} +{{- if eq .Values.service.type "ClusterIP" }} echo "URL: http://127.0.0.1:8080/" echo "Administration URL: http://127.0.0.1:8080/admin" - kubectl port-forward --namespace {{ .Release.Namespace }} svc/{{ template "opencart.fullname" . }} 8080:80 + kubectl port-forward --namespace {{ .Release.Namespace }} svc/{{ template "opencart.fullname" . }} 8080:{{ .Values.service.port }} {{- else }} - echo "URL: http://{{ include "opencart.host" . }}/" - echo "Administration URL: http://{{ include "opencart.host" . }}/admin" - +{{- $port:=.Values.service.port | toString }} + echo "URL: http://{{ include "opencart.host" . }}{{- if ne $port "80" }}:{{ .Values.service.port }}{{ end }}/" + echo "Administration URL: http://{{ include "opencart.host" . }}{{- if ne $port "80" }}:{{ .Values.service.port }}{{ end }}/admin" {{- end }} 2. Get your OpenCart login credentials by running: @@ -75,9 +75,9 @@ host. To configure OpenCart to use and external database host: 1. Complete your OpenCart deployment by running: -{{- if contains "NodePort" .Values.serviceType }} +{{- if contains "NodePort" .Values.service.type }} export APP_HOST=$(kubectl get nodes --namespace {{ .Release.Namespace }} -o jsonpath="{.items[0].status.addresses[0].address}") -{{- else if contains "LoadBalancer" .Values.serviceType }} +{{- 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 --namespace {{ .Release.Namespace }} -w {{ template "opencart.fullname" . }}' @@ -92,5 +92,5 @@ host. To configure OpenCart to use and external database host: ## PLEASE UPDATE THE EXTERNAL DATABASE CONNECTION PARAMETERS IN THE FOLLOWING COMMAND AS NEEDED ## helm upgrade {{ .Release.Name }} stable/opencart \ - --set opencartPassword=$APP_PASSWORD,opencartHost=$APP_HOST,serviceType={{ .Values.serviceType }},mariadb.enabled=false{{- if not (empty .Values.externalDatabase.user) }},externalDatabase.user={{ .Values.externalDatabase.user }}{{- end }}{{- if not (empty .Values.externalDatabase.password) }},externalDatabase.password={{ .Values.externalDatabase.password }}{{- end }}{{- if not (empty .Values.externalDatabase.database) }},externalDatabase.database={{ .Values.externalDatabase.database }}{{- end }},externalDatabase.host=YOUR_EXTERNAL_DATABASE_HOST + --set opencartPassword=$APP_PASSWORD,opencartHost=$APP_HOST,service.type={{ .Values.service.type }},mariadb.enabled=false{{- if not (empty .Values.externalDatabase.user) }},externalDatabase.user={{ .Values.externalDatabase.user }}{{- end }}{{- if not (empty .Values.externalDatabase.password) }},externalDatabase.password={{ .Values.externalDatabase.password }}{{- end }}{{- if not (empty .Values.externalDatabase.database) }},externalDatabase.database={{ .Values.externalDatabase.database }}{{- end }},externalDatabase.host=YOUR_EXTERNAL_DATABASE_HOST {{- end }} diff --git a/upstreamed/opencart/templates/_helpers.tpl b/upstreamed/opencart/templates/_helpers.tpl index e1df59dd98..8634e78fe0 100644 --- a/upstreamed/opencart/templates/_helpers.tpl +++ b/upstreamed/opencart/templates/_helpers.tpl @@ -28,7 +28,7 @@ Get the user defined LoadBalancerIP for this release. Note, returns 127.0.0.1 if using ClusterIP. */}} {{- define "opencart.serviceIP" -}} -{{- if eq .Values.serviceType "ClusterIP" -}} +{{- if eq .Values.service.type "ClusterIP" -}} 127.0.0.1 {{- else -}} {{- index .Values (printf "%sLoadBalancerIP" .Chart.Name) | default "" -}} diff --git a/upstreamed/opencart/templates/svc.yaml b/upstreamed/opencart/templates/svc.yaml index b7471b930c..53d0162478 100644 --- a/upstreamed/opencart/templates/svc.yaml +++ b/upstreamed/opencart/templates/svc.yaml @@ -8,16 +8,25 @@ metadata: release: "{{ .Release.Name }}" heritage: "{{ .Release.Service }}" spec: - type: {{ .Values.serviceType }} - {{- if eq .Values.serviceType "LoadBalancer" }} - loadBalancerIP: {{ default "" .Values.opencartLoadBalancerIP | quote }} + type: {{ .Values.service.type }} + {{- if (or (eq .Values.service.type "LoadBalancer") (eq .Values.service.type "NodePort")) }} + externalTrafficPolicy: {{ .Values.service.externalTrafficPolicy | quote }} + {{- end }} + {{- if eq .Values.service.type "LoadBalancer" }} + loadBalancerIP: {{ default "" .Values.service.loadBalancerIP | quote }} {{- end }} ports: - - name: http - port: 80 - targetPort: http - - name: https - port: 443 - targetPort: https + - name: http + port: {{ .Values.service.port }} + targetPort: http + {{- if (and (eq .Values.service.type "NodePort") (not (empty .Values.service.nodePorts.http)))}} + nodePort: {{ .Values.service.nodePorts.http }} + {{- end }} + - name: https + port: {{ .Values.service.httpsPort }} + targetPort: https + {{- if (and (eq .Values.service.type "NodePort") (not (empty .Values.service.nodePorts.https)))}} + nodePort: {{ .Values.service.nodePorts.https }} + {{- end }} selector: app: {{ template "opencart.fullname" . }} diff --git a/upstreamed/opencart/values.yaml b/upstreamed/opencart/values.yaml index 12a00ef77e..ae11859a6a 100644 --- a/upstreamed/opencart/values.yaml +++ b/upstreamed/opencart/values.yaml @@ -28,11 +28,6 @@ image: ## # opencartHost: -## loadBalancerIP for the OpenCart Service (optional, cloud specific) -## ref: http://kubernetes.io/docs/user-guide/services/#type-loadbalancer -## -# opencartLoadBalancerIP: - ## User of the application ## ref: https://github.com/bitnami/bitnami-docker-opencart#configuration ## @@ -129,7 +124,24 @@ mariadb: ## Kubernetes configuration ## For minikube, set this to NodePort, elsewhere use LoadBalancer ## -serviceType: LoadBalancer +service: + type: LoadBalancer + # HTTP Port + port: 80 + # HTTPS Port + httpsPort: 443 + ## loadBalancerIP: + ## + ## nodePorts: + ## http: + ## https: + nodePorts: + http: "" + https: "" + ## Enable client source IP preservation + ## ref http://kubernetes.io/docs/tasks/access-application-cluster/create-external-load-balancer/#preserving-the-client-source-ip + ## + externalTrafficPolicy: Cluster ## Enable persistence using Persistent Volume Claims ## ref: http://kubernetes.io/docs/user-guide/persistent-volumes/ diff --git a/upstreamed/orangehrm/Chart.yaml b/upstreamed/orangehrm/Chart.yaml index 547e64b3c3..e6fb443efb 100644 --- a/upstreamed/orangehrm/Chart.yaml +++ b/upstreamed/orangehrm/Chart.yaml @@ -1,5 +1,5 @@ name: orangehrm -version: 3.2.1 +version: 4.0.0 appVersion: 4.2.0-1 description: OrangeHRM is a free HR management system that offers a wealth of modules to suit the needs of your business. diff --git a/upstreamed/orangehrm/README.md b/upstreamed/orangehrm/README.md index 625389d707..f85d1360d0 100644 --- a/upstreamed/orangehrm/README.md +++ b/upstreamed/orangehrm/README.md @@ -62,7 +62,12 @@ The following table lists the configurable parameters of the OrangeHRM chart and | `smtpUser` | SMTP user | `nil` | | `smtpPassword` | SMTP password | `nil` | | `smtpProtocol` | SMTP protocol [`ssl`, `none`] | `nil` | -| `serviceType` | Kubernetes Service type | `LoadBalancer` | +| `service.type` | Kubernetes Service type | `LoadBalancer` | +| `service.port` | Service HTTP port | `80` | +| `service.httpsPort` | Service HTTPS port | `443` | +| `service.externalTrafficPolicy` | Enable client source IP preservation | `Cluster` | +| `service.nodePorts.http` | Kubernetes http node port | `""` | +| `service.nodePorts.https` | Kubernetes https node port | `""` | | `resources` | CPU/Memory resource requests/limits | Memory: `512Mi`, CPU: `300m` | | `persistence.enabled` | Enable persistence using PVC | `true` | | `persistence.apache.storageClass` | PVC Storage Class for Apache volume | `nil` (uses alpha storage class annotation) | @@ -120,7 +125,8 @@ $ helm install --name my-release -f values.yaml stable/orangehrm The [Bitnami OrangeHRM](https://github.com/bitnami/bitnami-docker-orangehrm) image stores the OrangeHRM data and configurations at the `/bitnami/orangehrm` and `/bitnami/apache` paths of the container. -Persistent Volume Claims are used to keep the data across deployments. This is known to work in GCE, AWS, and minikube. +Persistent Volume Claims are used to keep the data across deployments. There is a [known issue](https://github.com/kubernetes/kubernetes/issues/39178) in Kubernetes Clusters with EBS in different availability zones. Ensure your cluster is configured properly to create Volumes in the same availability zone where the nodes are running. Kuberentes 1.12 solved this issue with the [Volume Binding Mode](https://kubernetes.io/docs/concepts/storage/storage-classes/#volume-binding-mode). + See the [Configuration](#configuration) section to configure the PVC or to disable persistence. ## Upgrading diff --git a/upstreamed/orangehrm/templates/NOTES.txt b/upstreamed/orangehrm/templates/NOTES.txt index 5206d8f1a5..5ffc4029a9 100644 --- a/upstreamed/orangehrm/templates/NOTES.txt +++ b/upstreamed/orangehrm/templates/NOTES.txt @@ -4,24 +4,26 @@ 1. Get the OrangeHRM URL by running: -{{- if contains "NodePort" .Values.serviceType }} +{{- if contains "NodePort" .Values.service.type }} export NODE_PORT=$(kubectl get --namespace {{ .Release.Namespace }} -o jsonpath="{.spec.ports[0].nodePort}" services {{ template "orangehrm.fullname" . }}) export NODE_IP=$(kubectl get nodes --namespace {{ .Release.Namespace }} -o jsonpath="{.items[0].status.addresses[0].address}") echo "OrangeHRM URL: http://$NODE_IP:$NODE_PORT/" -{{- else if contains "LoadBalancer" .Values.serviceType }} +{{- else if contains "LoadBalancer" .Values.service.type }} ** Please ensure an external IP is associated to the {{ template "orangehrm.fullname" . }} service before proceeding ** ** Watch the status using: kubectl get svc --namespace {{ .Release.Namespace }} -w {{ template "orangehrm.fullname" . }} ** export SERVICE_IP=$(kubectl get svc --namespace {{ .Release.Namespace }} {{ template "orangehrm.fullname" . }} --template "{{"{{ range (index .status.loadBalancer.ingress 0) }}{{.}}{{ end }}"}}") - echo "OrangeHRM URL: http://$SERVICE_IP/" -{{- else if contains "ClusterIP" .Values.serviceType }} +{{- $port:=.Values.service.port | toString }} + echo "OrangeHRM URL: http://$SERVICE_IP{{- if ne $port "80" }}:{{ .Values.service.port }}{{ end }}/" + +{{- else if contains "ClusterIP" .Values.service.type }} echo "OrangeHRM URL: http://127.0.0.1:8080/" - kubectl port-forward --namespace {{ .Release.Namespace }} svc/{{ template "orangehrm.fullname" . }} 8080:80 + kubectl port-forward --namespace {{ .Release.Namespace }} svc/{{ template "orangehrm.fullname" . }} 8080:{{ .Values.service.port }} {{- end }} @@ -42,6 +44,6 @@ host. To configure OrangeHRM to use and external database host: 1. Complete your OrangeHRM deployment by running: - helm upgrade {{ .Release.Name }} --set serviceType={{ .Values.serviceType }},mariadb.enabled=false,externalDatabase.host=YOUR_EXTERNAL_DATABASE_HOST stable/orangehrm + helm upgrade {{ .Release.Name }} --set service.type={{ .Values.service.type }},mariadb.enabled=false,externalDatabase.host=YOUR_EXTERNAL_DATABASE_HOST stable/orangehrm {{- end }} diff --git a/upstreamed/orangehrm/templates/svc.yaml b/upstreamed/orangehrm/templates/svc.yaml index 9cb4485e45..291cee6bc6 100644 --- a/upstreamed/orangehrm/templates/svc.yaml +++ b/upstreamed/orangehrm/templates/svc.yaml @@ -8,13 +8,22 @@ metadata: release: "{{ .Release.Name }}" heritage: "{{ .Release.Service }}" spec: - type: {{ .Values.serviceType }} + type: {{ .Values.service.type }} + {{- if (or (eq .Values.service.type "LoadBalancer") (eq .Values.service.type "NodePort")) }} + externalTrafficPolicy: {{ .Values.service.externalTrafficPolicy | quote }} + {{- end }} ports: - - name: http - port: 80 - targetPort: http - - name: https - port: 443 - targetPort: https + - name: http + port: {{ .Values.service.port }} + targetPort: http + {{- if (and (eq .Values.service.type "NodePort") (not (empty .Values.service.nodePorts.http)))}} + nodePort: {{ .Values.service.nodePorts.http }} + {{- end }} + - name: https + port: {{ .Values.service.httpsPort }} + targetPort: https + {{- if (and (eq .Values.service.type "NodePort") (not (empty .Values.service.nodePorts.https)))}} + nodePort: {{ .Values.service.nodePorts.https }} + {{- end }} selector: app: {{ template "orangehrm.fullname" . }} diff --git a/upstreamed/orangehrm/values.yaml b/upstreamed/orangehrm/values.yaml index e811c503f3..eb47163aba 100644 --- a/upstreamed/orangehrm/values.yaml +++ b/upstreamed/orangehrm/values.yaml @@ -112,9 +112,25 @@ mariadb: size: 8Gi ## Kubernetes configuration -## For minikube, set this to NodePort, elsewhere use LoadBalancer +## For minikube, set this to NodePort, elsewhere use LoadBalancer or ClusterIP ## -serviceType: LoadBalancer +service: + type: LoadBalancer + # HTTP Port + port: 80 + # HTTPS Port + httpsPort: 443 + ## + ## nodePorts: + ## http: + ## https: + nodePorts: + http: "" + https: "" + ## Enable client source IP preservation + ## ref http://kubernetes.io/docs/tasks/access-application-cluster/create-external-load-balancer/#preserving-the-client-source-ip + ## + externalTrafficPolicy: Cluster ## Enable persistence using Persistent Volume Claims ## ref: http://kubernetes.io/docs/user-guide/persistent-volumes/ diff --git a/upstreamed/osclass/Chart.yaml b/upstreamed/osclass/Chart.yaml index 421de543c1..073164c274 100644 --- a/upstreamed/osclass/Chart.yaml +++ b/upstreamed/osclass/Chart.yaml @@ -1,5 +1,5 @@ name: osclass -version: 3.2.0 +version: 4.0.0 appVersion: 3.7.4 description: Osclass is a php script that allows you to quickly create and manage your own free classifieds site. diff --git a/upstreamed/osclass/templates/NOTES.txt b/upstreamed/osclass/templates/NOTES.txt index a6e2de0896..389d059064 100644 --- a/upstreamed/osclass/templates/NOTES.txt +++ b/upstreamed/osclass/templates/NOTES.txt @@ -10,12 +10,12 @@ host. To configure Osclass with the URL of your service: 1. Get the Osclass URL by running: - {{- if contains "NodePort" .Values.serviceType }} + {{- if contains "NodePort" .Values.service.type }} export APP_PORT=$(kubectl get svc --namespace {{ .Release.Namespace }} {{ template "osclass.fullname" . }} -o jsonpath="{.spec.ports[0].nodePort}") export APP_HOST=$(kubectl get nodes --namespace {{ .Release.Namespace }} -o jsonpath="{.items[0].status.addresses[0].address}") - {{- else if contains "LoadBalancer" .Values.serviceType }} + {{- 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 --namespace {{ .Release.Namespace }} -w {{ template "osclass.fullname" . }}' @@ -39,22 +39,24 @@ host. To configure Osclass with the URL of your service: ## PLEASE UPDATE THE EXTERNAL DATABASE CONNECTION PARAMETERS IN THE FOLLOWING COMMAND AS NEEDED ## helm upgrade {{ .Release.Name }} stable/osclass \ - --set osclassPassword=$APP_PASSWORD,osclassHost=$APP_HOST,serviceType={{ .Values.serviceType }},mariadb.enabled=false{{- if not (empty .Values.externalDatabase.host) }},externalDatabase.host={{ .Values.externalDatabase.host }}{{- end }}{{- if not (empty .Values.externalDatabase.user) }},externalDatabase.user={{ .Values.externalDatabase.user }}{{- end }}{{- if not (empty .Values.externalDatabase.password) }},externalDatabase.password={{ .Values.externalDatabase.password }}{{- end }}{{- if not (empty .Values.externalDatabase.database) }},externalDatabase.database={{ .Values.externalDatabase.database }}{{- end }} + --set osclassPassword=$APP_PASSWORD,osclassHost=$APP_HOST,service.type={{ .Values.service.type }},mariadb.enabled=false{{- if not (empty .Values.externalDatabase.host) }},externalDatabase.host={{ .Values.externalDatabase.host }}{{- end }}{{- if not (empty .Values.externalDatabase.user) }},externalDatabase.user={{ .Values.externalDatabase.user }}{{- end }}{{- if not (empty .Values.externalDatabase.password) }},externalDatabase.password={{ .Values.externalDatabase.password }}{{- end }}{{- if not (empty .Values.externalDatabase.database) }},externalDatabase.database={{ .Values.externalDatabase.database }}{{- end }} {{- end }} {{- else -}} 1. Get the Osclass URL by running: -{{- if eq .Values.serviceType "ClusterIP" }} +{{- if eq .Values.service.type "ClusterIP" }} echo URL : http://127.0.0.1:8080/ echo Admin URL : http://127.0.0.1:8080/oc-admin/ - kubectl port-forward --namespace {{ .Release.Namespace }} svc/{{ template "osclass.fullname" . }} 8080:80 + kubectl port-forward --namespace {{ .Release.Namespace }} svc/{{ template "osclass.fullname" . }} 8080:{{ .Values.service.port }} {{- else }} - echo URL : http://{{ include "osclass.host" . }}/ - echo Admin URL : http://{{ include "osclass.host" . }}/oc-admin/ +{{- $port:=.Values.service.port | toString }} + + echo URL : http://{{ include "osclass.host" . }}{{- if ne $port "80" }}:{{ .Values.service.port }}{{ end }}/ + echo Admin URL : http://{{ include "osclass.host" . }}{{- if ne $port "80" }}:{{ .Values.service.port }}{{ end }}/oc-admin/ {{- end }} @@ -76,9 +78,9 @@ host. To configure Osclass to use and external database host: 1. Complete your Osclass deployment by running: -{{- if contains "NodePort" .Values.serviceType }} +{{- if contains "NodePort" .Values.service.type }} export APP_HOST=$(kubectl get nodes --namespace {{ .Release.Namespace }} -o jsonpath="{.items[0].status.addresses[0].address}") -{{- else if contains "LoadBalancer" .Values.serviceType }} +{{- 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 --namespace {{ .Release.Namespace }} -w {{ template "osclass.fullname" . }}' @@ -93,5 +95,5 @@ host. To configure Osclass to use and external database host: ## PLEASE UPDATE THE EXTERNAL DATABASE CONNECTION PARAMETERS IN THE FOLLOWING COMMAND AS NEEDED ## helm upgrade {{ .Release.Name }} stable/osclass \ - --set osclassPassword=$APP_PASSWORD,osclassHost=$APP_HOST,serviceType={{ .Values.serviceType }},mariadb.enabled=false{{- if not (empty .Values.externalDatabase.user) }},externalDatabase.user={{ .Values.externalDatabase.user }}{{- end }}{{- if not (empty .Values.externalDatabase.password) }},externalDatabase.password={{ .Values.externalDatabase.password }}{{- end }}{{- if not (empty .Values.externalDatabase.database) }},externalDatabase.database={{ .Values.externalDatabase.database }}{{- end }},externalDatabase.host=YOUR_EXTERNAL_DATABASE_HOST + --set osclassPassword=$APP_PASSWORD,osclassHost=$APP_HOST,service.type={{ .Values.service.type }},mariadb.enabled=false{{- if not (empty .Values.externalDatabase.user) }},externalDatabase.user={{ .Values.externalDatabase.user }}{{- end }}{{- if not (empty .Values.externalDatabase.password) }},externalDatabase.password={{ .Values.externalDatabase.password }}{{- end }}{{- if not (empty .Values.externalDatabase.database) }},externalDatabase.database={{ .Values.externalDatabase.database }}{{- end }},externalDatabase.host=YOUR_EXTERNAL_DATABASE_HOST {{- end }} diff --git a/upstreamed/osclass/templates/_helpers.tpl b/upstreamed/osclass/templates/_helpers.tpl index 989d7b5f7a..207a67610e 100644 --- a/upstreamed/osclass/templates/_helpers.tpl +++ b/upstreamed/osclass/templates/_helpers.tpl @@ -28,7 +28,7 @@ Get the user defined LoadBalancerIP for this release. Note, returns 127.0.0.1 if using ClusterIP. */}} {{- define "osclass.serviceIP" -}} -{{- if eq .Values.serviceType "ClusterIP" -}} +{{- if eq .Values.service.type "ClusterIP" -}} 127.0.0.1 {{- else -}} {{- index .Values (printf "%sLoadBalancerIP" .Chart.Name) | default "" -}} diff --git a/upstreamed/osclass/templates/deployment.yaml b/upstreamed/osclass/templates/deployment.yaml index 39fae10123..bc3201fd51 100644 --- a/upstreamed/osclass/templates/deployment.yaml +++ b/upstreamed/osclass/templates/deployment.yaml @@ -75,8 +75,9 @@ spec: name: {{ printf "%s-%s" .Release.Name "externaldb" }} key: db-password {{- end }} + {{- $port:=.Values.service.port | toString }} - name: OSCLASS_HOST - value: {{ include "osclass.host" . | quote }} + value: "{{ include "osclass.host" . }}}}{{- if ne $port "80" }}:{{ .Values.service.port }}{{ end }}" - name: OSCLASS_USERNAME value: {{ default "" .Values.osclassUsername | quote }} - name: OSCLASS_PASSWORD diff --git a/upstreamed/osclass/templates/svc.yaml b/upstreamed/osclass/templates/svc.yaml index 6ea898bcf3..80f3c93622 100644 --- a/upstreamed/osclass/templates/svc.yaml +++ b/upstreamed/osclass/templates/svc.yaml @@ -8,16 +8,25 @@ metadata: release: "{{ .Release.Name }}" heritage: "{{ .Release.Service }}" spec: - type: {{ .Values.serviceType }} - {{- if eq .Values.serviceType "LoadBalancer" }} - loadBalancerIP: {{ default "" .Values.osclassLoadBalancerIP }} + type: {{ .Values.service.type }} + {{- if (or (eq .Values.service.type "LoadBalancer") (eq .Values.service.type "NodePort")) }} + externalTrafficPolicy: {{ .Values.service.externalTrafficPolicy | quote }} + {{- end }} + {{- if eq .Values.service.type "LoadBalancer" }} + loadBalancerIP: {{ default "" .Values.service.loadBalancerIP }} {{- end }} ports: - - name: http - port: 80 - targetPort: http - - name: https - port: 443 - targetPort: https + - name: http + port: {{ .Values.service.port }} + targetPort: http + {{- if (and (eq .Values.service.type "NodePort") (not (empty .Values.service.nodePorts.http)))}} + nodePort: {{ .Values.service.nodePorts.http }} + {{- end }} + - name: https + port: {{ .Values.service.httpsPort }} + targetPort: https + {{- if (and (eq .Values.service.type "NodePort") (not (empty .Values.service.nodePorts.https)))}} + nodePort: {{ .Values.service.nodePorts.https }} + {{- end }} selector: app: {{ template "osclass.fullname" . }} diff --git a/upstreamed/osclass/values.yaml b/upstreamed/osclass/values.yaml index b79fcd9089..9b3e61e215 100644 --- a/upstreamed/osclass/values.yaml +++ b/upstreamed/osclass/values.yaml @@ -28,11 +28,6 @@ image: ## # osclassHost: -## loadBalancerIP for the Osclass Service (optional, cloud specific) -## ref: http://kubernetes.io/docs/user-guide/services/#type-loadbalancer -## -# osclassLoadBalancerIP: - ## User of the application ## ref: https://github.com/bitnami/bitnami-docker-osclass#configuration ## @@ -143,7 +138,24 @@ mariadb: ## Kubernetes configuration ## For minikube, set this to NodePort, elsewhere use LoadBalancer ## -serviceType: LoadBalancer +service: + type: LoadBalancer + # HTTP Port + port: 80 + # HTTPS Port + httpsPort: 443 + ## loadBalancerIP: + ## + ## nodePorts: + ## http: + ## https: + nodePorts: + http: "" + https: "" + ## Enable client source IP preservation + ## ref http://kubernetes.io/docs/tasks/access-application-cluster/create-external-load-balancer/#preserving-the-client-source-ip + ## + externalTrafficPolicy: Cluster ## Enable persistence using Persistent Volume Claims ## ref: http://kubernetes.io/docs/user-guide/persistent-volumes/ diff --git a/upstreamed/owncloud/Chart.yaml b/upstreamed/owncloud/Chart.yaml index 2bf8539221..b9d00c77d3 100644 --- a/upstreamed/owncloud/Chart.yaml +++ b/upstreamed/owncloud/Chart.yaml @@ -1,5 +1,5 @@ name: owncloud -version: 3.3.0 +version: 4.0.0 appVersion: 10.0.10 description: A file sharing server that puts the control and security of your own data back into your hands. keywords: diff --git a/upstreamed/owncloud/README.md b/upstreamed/owncloud/README.md index 3e4ad34ed8..398e9f6a7b 100644 --- a/upstreamed/owncloud/README.md +++ b/upstreamed/owncloud/README.md @@ -142,7 +142,8 @@ $ helm install --name my-release -f values.yaml stable/owncloud The [Bitnami ownCloud](https://github.com/bitnami/bitnami-docker-owncloud) image stores the ownCloud data and configurations at the `/bitnami/owncloud` and `/bitnami/apache` paths of the container. -Persistent Volume Claims are used to keep the data across deployments. This is known to work in GCE, AWS, and minikube. +Persistent Volume Claims are used to keep the data across deployments. There is a [known issue](https://github.com/kubernetes/kubernetes/issues/39178) in Kubernetes Clusters with EBS in different availability zones. Ensure your cluster is configured properly to create Volumes in the same availability zone where the nodes are running. Kuberentes 1.12 solved this issue with the [Volume Binding Mode](https://kubernetes.io/docs/concepts/storage/storage-classes/#volume-binding-mode). + See the [Configuration](#configuration) section to configure the PVC or to disable persistence. ## Upgrading diff --git a/upstreamed/owncloud/templates/NOTES.txt b/upstreamed/owncloud/templates/NOTES.txt index 04ff1b91a9..d87222fe8c 100644 --- a/upstreamed/owncloud/templates/NOTES.txt +++ b/upstreamed/owncloud/templates/NOTES.txt @@ -10,12 +10,12 @@ host. To configure ownCloud with the URL of your service: 1. Get the ownCloud URL by running: - {{- if contains "NodePort" .Values.serviceType }} + {{- if contains "NodePort" .Values.service.type }} export APP_PORT=$(kubectl get svc --namespace {{ .Release.Namespace }} {{ template "owncloud.fullname" . }} -o jsonpath="{.spec.ports[0].nodePort}") export APP_HOST=$(kubectl get nodes --namespace {{ .Release.Namespace }} -o jsonpath="{.items[0].status.addresses[0].address}") - {{- else if contains "LoadBalancer" .Values.serviceType }} + {{- 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 --namespace {{ .Release.Namespace }} -w {{ template "owncloud.fullname" . }}' @@ -39,20 +39,21 @@ host. To configure ownCloud with the URL of your service: ## PLEASE UPDATE THE EXTERNAL DATABASE CONNECTION PARAMETERS IN THE FOLLOWING COMMAND AS NEEDED ## helm upgrade {{ .Release.Name }} stable/owncloud \ - --set owncloudPassword=$APP_PASSWORD,owncloudHost=$APP_HOST,serviceType={{ .Values.serviceType }},mariadb.enabled=false{{- if not (empty .Values.externalDatabase.host) }},externalDatabase.host={{ .Values.externalDatabase.host }}{{- end }}{{- if not (empty .Values.externalDatabase.user) }},externalDatabase.user={{ .Values.externalDatabase.user }}{{- end }}{{- if not (empty .Values.externalDatabase.password) }},externalDatabase.password={{ .Values.externalDatabase.password }}{{- end }}{{- if not (empty .Values.externalDatabase.database) }},externalDatabase.database={{ .Values.externalDatabase.database }}{{- end }} + --set owncloudPassword=$APP_PASSWORD,owncloudHost=$APP_HOST,service.type={{ .Values.service.type }},mariadb.enabled=false{{- if not (empty .Values.externalDatabase.host) }},externalDatabase.host={{ .Values.externalDatabase.host }}{{- end }}{{- if not (empty .Values.externalDatabase.user) }},externalDatabase.user={{ .Values.externalDatabase.user }}{{- end }}{{- if not (empty .Values.externalDatabase.password) }},externalDatabase.password={{ .Values.externalDatabase.password }}{{- end }}{{- if not (empty .Values.externalDatabase.database) }},externalDatabase.database={{ .Values.externalDatabase.database }}{{- end }} {{- end }} {{- else -}} 1. Get the ownCloud URL by running: -{{- if eq .Values.serviceType "ClusterIP" }} +{{- if eq .Values.service.type "ClusterIP" }} echo "ownCloud URL: echo http://127.0.0.1:8080/" - kubectl port-forward --namespace {{ .Release.Namespace }} svc/{{ template "owncloud.fullname" . }} 8080:80 + kubectl port-forward --namespace {{ .Release.Namespace }} svc/{{ template "owncloud.fullname" . }} 8080:{{ .Values.service.port }} {{- else }} - echo "ownCloud URL: http://{{ include "owncloud.host" . }}{{ if .Values.owncloudPort }}:{{ .Values.owncloudPort }}{{ end }}/" +{{- $port:=.Values.service.port | toString }} + echo "ownCloud URL: http://$SERVICE_IP{{- if ne $port "80" }}:{{ .Values.service.port }}{{ end }}/" {{- end }} @@ -74,9 +75,9 @@ host. To configure ownCloud to use and external database host: 1. Complete your ownCloud deployment by running: -{{- if contains "NodePort" .Values.serviceType }} +{{- if contains "NodePort" .Values.service.type }} export APP_HOST=$(kubectl get nodes --namespace {{ .Release.Namespace }} -o jsonpath="{.items[0].status.addresses[0].address}") -{{- else if contains "LoadBalancer" .Values.serviceType }} +{{- 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 --namespace {{ .Release.Namespace }} -w {{ template "owncloud.fullname" . }}' @@ -91,5 +92,5 @@ host. To configure ownCloud to use and external database host: ## PLEASE UPDATE THE EXTERNAL DATABASE CONNECTION PARAMETERS IN THE FOLLOWING COMMAND AS NEEDED ## helm upgrade {{ .Release.Name }} stable/owncloud \ - --set owncloudPassword=$APP_PASSWORD,owncloudHost=$APP_HOST,serviceType={{ .Values.serviceType }},mariadb.enabled=false{{- if not (empty .Values.externalDatabase.user) }},externalDatabase.user={{ .Values.externalDatabase.user }}{{- end }}{{- if not (empty .Values.externalDatabase.password) }},externalDatabase.password={{ .Values.externalDatabase.password }}{{- end }}{{- if not (empty .Values.externalDatabase.database) }},externalDatabase.database={{ .Values.externalDatabase.database }}{{- end }},externalDatabase.host=YOUR_EXTERNAL_DATABASE_HOST + --set owncloudPassword=$APP_PASSWORD,owncloudHost=$APP_HOST,service.type={{ .Values.service.type }},mariadb.enabled=false{{- if not (empty .Values.externalDatabase.user) }},externalDatabase.user={{ .Values.externalDatabase.user }}{{- end }}{{- if not (empty .Values.externalDatabase.password) }},externalDatabase.password={{ .Values.externalDatabase.password }}{{- end }}{{- if not (empty .Values.externalDatabase.database) }},externalDatabase.database={{ .Values.externalDatabase.database }}{{- end }},externalDatabase.host=YOUR_EXTERNAL_DATABASE_HOST {{- end }} diff --git a/upstreamed/owncloud/templates/_helpers.tpl b/upstreamed/owncloud/templates/_helpers.tpl index 7a4b7bbb20..9643573d9b 100644 --- a/upstreamed/owncloud/templates/_helpers.tpl +++ b/upstreamed/owncloud/templates/_helpers.tpl @@ -28,7 +28,7 @@ Get the user defined LoadBalancerIP for this release. Note, returns 127.0.0.1 if using ClusterIP. */}} {{- define "owncloud.serviceIP" -}} -{{- if eq .Values.serviceType "ClusterIP" -}} +{{- if eq .Values.service.type "ClusterIP" -}} 127.0.0.1 {{- else -}} {{- index .Values (printf "%sLoadBalancerIP" .Chart.Name) | default "" -}} diff --git a/upstreamed/owncloud/templates/deployment.yaml b/upstreamed/owncloud/templates/deployment.yaml index 467912bbbf..f6a08d015b 100644 --- a/upstreamed/owncloud/templates/deployment.yaml +++ b/upstreamed/owncloud/templates/deployment.yaml @@ -76,8 +76,9 @@ spec: name: {{ printf "%s-%s" .Release.Name "externaldb" }} key: db-password {{- end }} +{{- $port:=.Values.service.port | toString }} - name: OWNCLOUD_HOST - value: {{ include "owncloud.host" . | quote }} + value: "{{ include "owncloud.host" . }}{{- if ne $port "80" }}:{{ .Values.service.port }}{{ end }}" - name: OWNCLOUD_USERNAME value: {{ default "" .Values.owncloudUsername | quote }} - name: OWNCLOUD_PASSWORD diff --git a/upstreamed/owncloud/templates/svc.yaml b/upstreamed/owncloud/templates/svc.yaml index 162b31cad8..85dd8c35b9 100644 --- a/upstreamed/owncloud/templates/svc.yaml +++ b/upstreamed/owncloud/templates/svc.yaml @@ -8,13 +8,19 @@ metadata: release: "{{ .Release.Name }}" heritage: "{{ .Release.Service }}" spec: - type: {{ .Values.serviceType }} - {{- if eq .Values.serviceType "LoadBalancer" }} - loadBalancerIP: {{ default "" .Values.owncloudLoadBalancerIP }} + type: {{ .Values.service.type }} + {{- if (or (eq .Values.service.type "LoadBalancer") (eq .Values.service.type "NodePort")) }} + externalTrafficPolicy: {{ .Values.service.externalTrafficPolicy | quote }} + {{- end }} + {{- if eq .Values.service.type "LoadBalancer" }} + loadBalancerIP: {{ default "" .Values.service.loadBalancerIP }} {{- end }} ports: - - name: http - port: 80 - targetPort: http + - name: http + port: {{ .Values.service.port }} + targetPort: http + {{- if (and (eq .Values.service.type "NodePort") (not (empty .Values.service.nodePorts.http)))}} + nodePort: {{ .Values.service.nodePorts.http }} + {{- end }} selector: app: {{ template "owncloud.fullname" . }} diff --git a/upstreamed/owncloud/values.yaml b/upstreamed/owncloud/values.yaml index 4099a30e46..f34a6619f4 100644 --- a/upstreamed/owncloud/values.yaml +++ b/upstreamed/owncloud/values.yaml @@ -78,11 +78,6 @@ ingress: ## # owncloudHost: -## loadBalancerIP for the ownCloud Service (optional, cloud specific) -## ref: http://kubernetes.io/docs/user-guide/services/#type-loadbalancer -## -# owncloudLoadBalancerIP: - ## User of the application ## ref: https://github.com/bitnami/bitnami-docker-owncloud#configuration ## @@ -170,7 +165,23 @@ mariadb: ## Kubernetes configuration ## For minikube, set this to NodePort, elsewhere use LoadBalancer ## -serviceType: LoadBalancer +service: + type: LoadBalancer + # HTTP Port + port: 80 + ## loadBalancerIP: + ## + ## nodePorts: + ## http: + ## https: + nodePorts: + http: "" + https: "" + ## Enable client source IP preservation + ## ref http://kubernetes.io/docs/tasks/access-application-cluster/create-external-load-balancer/#preserving-the-client-source-ip + ## + externalTrafficPolicy: Cluster + ## Enable persistence using Persistent Volume Claims ## ref: http://kubernetes.io/docs/user-guide/persistent-volumes/ diff --git a/upstreamed/parse/Chart.yaml b/upstreamed/parse/Chart.yaml index 57d0536a22..7d93231d7b 100644 --- a/upstreamed/parse/Chart.yaml +++ b/upstreamed/parse/Chart.yaml @@ -1,5 +1,5 @@ name: parse -version: 3.1.3 +version: 5.0.0 appVersion: 3.1.1 description: Parse is a platform that enables users to add a scalable and powerful backend to launch a full-featured app for iOS, Android, JavaScript, Windows, Unity, and more. keywords: diff --git a/upstreamed/parse/README.md b/upstreamed/parse/README.md index 21037a5949..d8ccae63ae 100644 --- a/upstreamed/parse/README.md +++ b/upstreamed/parse/README.md @@ -48,8 +48,11 @@ The following table lists the configurable parameters of the Parse chart and the | Parameter | Description | Default | |------------------------------------|----------------------------------------|-------------------------------------------------------- | | `global.imageRegistry` | Global Docker image registry | `nil` | -| `serviceType` | Kubernetes Service type | `LoadBalancer` | -| `loadBalancerIP` | `loadBalancerIP` for the Parse Service | `nil` | +| `service.type` | Kubernetes Service type | `LoadBalancer` | +| `service.port` | Service HTTP port (Dashboard) | `80` | +| `service.loadBalancerIP` | `loadBalancerIP` for the Parse Service | `nil` | +| `service.externalTrafficPolicy` | Enable client source IP preservation | `Cluster` | +| `service.nodePorts.http` | Kubernetes http node port | `""` | | `server.image.registry` | Parse image registry | `docker.io` | | `server.image.repository` | Parse image name | `bitnami/parse` | | `server.image.tag` | Parse image tag | `{VERSION}` | diff --git a/upstreamed/parse/requirements.lock b/upstreamed/parse/requirements.lock index ae038e688f..a55c58c8ba 100644 --- a/upstreamed/parse/requirements.lock +++ b/upstreamed/parse/requirements.lock @@ -1,6 +1,6 @@ dependencies: - name: mongodb repository: https://kubernetes-charts.storage.googleapis.com/ - version: 2.0.9 -digest: sha256:cf5e28c1a27636f9471953712706834f87e49cb40be80c303a1436ee7e5016e5 -generated: 2018-10-16T08:49:53.146915+02:00 + version: 4.8.4 +digest: sha256:48512f443b15ce0b80210dd683e9517627640d144ca71c0b509f4b4a1601c5e6 +generated: 2018-11-13T17:28:08.511473529+01:00 diff --git a/upstreamed/parse/requirements.yaml b/upstreamed/parse/requirements.yaml index adcdcd326d..fe54e4e51c 100644 --- a/upstreamed/parse/requirements.yaml +++ b/upstreamed/parse/requirements.yaml @@ -1,4 +1,4 @@ dependencies: - name: mongodb - version: 2.x.x + version: 4.x.x repository: https://kubernetes-charts.storage.googleapis.com/ diff --git a/upstreamed/parse/templates/NOTES.txt b/upstreamed/parse/templates/NOTES.txt index 56de56e32d..90df2cea96 100644 --- a/upstreamed/parse/templates/NOTES.txt +++ b/upstreamed/parse/templates/NOTES.txt @@ -9,20 +9,20 @@ Parse Server 1. Get your Parse Server URL: -{{- if contains "NodePort" .Values.serviceType }} +{{- if contains "NodePort" .Values.service.type }} export NODE_PORT=$(kubectl get svc --namespace {{ .Release.Namespace }} -o jsonpath="{.spec.ports[0].nodePort}" {{ template "parse.fullname" . }}) export NODE_IP=$(kubectl get nodes --namespace {{ .Release.Namespace }} -o jsonpath="{.items[0].status.addresses[0].address}") export SERVICE_IP=$NODE_IP:$NODE_PORT -{{- else if contains "LoadBalancer" .Values.serviceType }} +{{- 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 --namespace {{ .Release.Namespace }} -w {{ template "parse.fullname" . }}' export SERVICE_IP=$(kubectl get svc --namespace {{ .Release.Namespace }} {{ template "parse.fullname" . }} --template "{{"{{ range (index .status.loadBalancer.ingress 0) }}{{.}}{{ end }}"}}"):{{ .Values.server.port }} -{{- else if contains "ClusterIP" .Values.serviceType }} +{{- else if contains "ClusterIP" .Values.service.type }} kubectl port-forward --namespace {{ .Release.Namespace }} svc/{{ template "parse.fullname" . }} {{ .Values.server.port }}:{{ .Values.server.port }} export SERVICE_IP=127.0.0.1:{{ .Values.server.port }} @@ -64,7 +64,7 @@ service: {{ else }} 1. Get the Parse Dashboard URL by running: -{{- if eq .Values.serviceType "ClusterIP" }} +{{- if eq .Values.service.type "ClusterIP" }} echo "Parse Dashboard URL: http://127.0.0.1:4040/" kubectl port-forward --namespace {{ .Release.Namespace }} svc/{{ template "parse.fullname" . }} 4040:4040 diff --git a/upstreamed/parse/templates/_helpers.tpl b/upstreamed/parse/templates/_helpers.tpl index ee4f1699ae..cb32e1271e 100644 --- a/upstreamed/parse/templates/_helpers.tpl +++ b/upstreamed/parse/templates/_helpers.tpl @@ -28,10 +28,10 @@ Get the user defined LoadBalancerIP for this release. Note, returns 127.0.0.1 if using ClusterIP. */}} {{- define "parse.serviceIP" -}} -{{- if eq .Values.serviceType "ClusterIP" -}} +{{- if eq .Values.service.type "ClusterIP" -}} 127.0.0.1 {{- else -}} -{{- default "" .Values.loadBalancerIP -}} +{{- default "" .Values.service.loadBalancerIP -}} {{- end -}} {{- end -}} diff --git a/upstreamed/parse/templates/svc.yaml b/upstreamed/parse/templates/svc.yaml index 44d53dfc33..f82c789665 100644 --- a/upstreamed/parse/templates/svc.yaml +++ b/upstreamed/parse/templates/svc.yaml @@ -8,17 +8,23 @@ metadata: release: "{{ .Release.Name }}" heritage: "{{ .Release.Service }}" spec: - type: {{ .Values.serviceType }} - {{- if eq .Values.serviceType "LoadBalancer" }} - loadBalancerIP: {{ .Values.loadBalancerIP | quote }} + type: {{ .Values.service.type }} + {{- if eq .Values.service.type "LoadBalancer" }} + loadBalancerIP: {{ .Values.service.loadBalancerIP | quote }} + {{- end }} + {{- if (or (eq .Values.service.type "LoadBalancer") (eq .Values.service.type "NodePort")) }} + externalTrafficPolicy: {{ .Values.service.externalTrafficPolicy | quote }} {{- end }} ports: - name: server-http port: {{ .Values.server.port }} targetPort: server-http - name: dashboard-http - port: 80 + port: {{ .Values.service.port }} targetPort: dashboard-http + {{- if (and (eq .Values.service.type "NodePort") (not (empty .Values.service.nodePorts.http)))}} + nodePort: {{ .Values.service.nodePorts.http }} + {{- end }} selector: app: {{ template "parse.name" . }} release: "{{ .Release.Name }}" diff --git a/upstreamed/parse/values.yaml b/upstreamed/parse/values.yaml index 92fcdd3347..41694f691e 100644 --- a/upstreamed/parse/values.yaml +++ b/upstreamed/parse/values.yaml @@ -7,12 +7,25 @@ ## Kubernetes serviceType for Parse Deployment ## ref: http://kubernetes.io/docs/user-guide/services/#publishing-services---service-types ## -serviceType: LoadBalancer +service: + type: LoadBalancer + # Parse dashboard HTTP Port + port: 80 + ## loadBalancerIP: + ## + ## nodePorts: + ## http: + nodePorts: + http: "" + ## Enable client source IP preservation + ## ref http://kubernetes.io/docs/tasks/access-application-cluster/create-external-load-balancer/#preserving-the-client-source-ip + ## + externalTrafficPolicy: Cluster ## loadBalancerIP for the Parse Service (optional, cloud specific) ## ref: http://kubernetes.io/docs/user-guide/services/#type-loadbalancer ## -# loadBalancerIP: +# server: ## Bitnami Parse image version diff --git a/upstreamed/phabricator/Chart.yaml b/upstreamed/phabricator/Chart.yaml index 8fc48fab11..149609720c 100644 --- a/upstreamed/phabricator/Chart.yaml +++ b/upstreamed/phabricator/Chart.yaml @@ -1,6 +1,6 @@ name: phabricator -version: 3.3.1 -appVersion: 2018.44.0 +version: 4.0.0 +appVersion: 2018.46.0 description: Collection of open source web applications that help software companies build better software. keywords: - phabricator diff --git a/upstreamed/phabricator/README.md b/upstreamed/phabricator/README.md index 76656413d0..cd43566bdf 100644 --- a/upstreamed/phabricator/README.md +++ b/upstreamed/phabricator/README.md @@ -57,7 +57,6 @@ The following table lists the configurable parameters of the Phabricator chart a | `image.pullSecrets` | Specify image pull secrets | `nil` | | `phabricatorHost` | Phabricator host to create application URLs | `nil` | | `phabricatorAlternateFileDomain` | Phabricator alternate domain to upload files | `nil` | -| `phabricatorLoadBalancerIP` | `loadBalancerIP` for the Phabricator Service | `nil` | | `phabricatorUsername` | User of the application | `user` | | `phabricatorPassword` | Application password | _random 10 character long alphanumeric string_ | | `phabricatorEmail` | Admin email | `user@example.com` | @@ -69,7 +68,13 @@ The following table lists the configurable parameters of the Phabricator chart a | `smtpPassword` | SMTP password | `nil` | | `smtpProtocol` | SMTP protocol [`ssl`, `tls`] | `nil` | | `mariadb.rootUser.password` | MariaDB admin password | `nil` | -| `serviceType` | Kubernetes Service type | `LoadBalancer` | +| `service.type` | Kubernetes Service type | `LoadBalancer` | +| `service.port` | Service HTTP port | `80` | +| `service.httpsPort` | Service HTTP port | `443` | +| `service.loadBalancerIP` | `loadBalancerIP` for the Phabricator Service | `nil` | +| `service.externalTrafficPolicy` | Enable client source IP preservation | `Cluster` | +| `service.nodePorts.http` | Kubernetes http node port | `""` | +| `service.nodePorts.https` | Kubernetes https node port | `""` | | `persistence.enabled` | Enable persistence using PVC | `true` | | `persistence.apache.storageClass` | PVC Storage Class for Apache volume | `nil` (uses alpha storage class annotation) | | `persistence.apache.accessMode` | PVC Access Mode for Apache volume | `ReadWriteOnce` | @@ -136,7 +141,8 @@ $ helm install --name my-release -f values.yaml stable/phabricator The [Bitnami Phabricator](https://github.com/bitnami/bitnami-docker-phabricator) image stores the Phabricator data and configurations at the `/bitnami/phabricator` and `/bitnami/apache` paths of the container. -Persistent Volume Claims are used to keep the data across deployments. This is known to work in GCE, AWS, and minikube. +Persistent Volume Claims are used to keep the data across deployments. There is a [known issue](https://github.com/kubernetes/kubernetes/issues/39178) in Kubernetes Clusters with EBS in different availability zones. Ensure your cluster is configured properly to create Volumes in the same availability zone where the nodes are running. Kuberentes 1.12 solved this issue with the [Volume Binding Mode](https://kubernetes.io/docs/concepts/storage/storage-classes/#volume-binding-mode). + See the [Configuration](#configuration) section to configure the PVC or to disable persistence. ## Ingress With Reverse Proxy And Kube Lego diff --git a/upstreamed/phabricator/requirements.lock b/upstreamed/phabricator/requirements.lock index d95e34f0a1..9cd3e0f80a 100644 --- a/upstreamed/phabricator/requirements.lock +++ b/upstreamed/phabricator/requirements.lock @@ -1,6 +1,6 @@ dependencies: - name: mariadb repository: https://kubernetes-charts.storage.googleapis.com/ - version: 5.2.2 + version: 5.2.3 digest: sha256:e09c8ca7126923a30e39f442c3863b44684d4eb3f7b6dc869f0206da4463f416 -generated: 2018-10-30T04:34:55.655958788Z +generated: 2018-11-13T00:07:48.787894577Z diff --git a/upstreamed/phabricator/templates/NOTES.txt b/upstreamed/phabricator/templates/NOTES.txt index c0b4e402d6..ef2e0283f7 100644 --- a/upstreamed/phabricator/templates/NOTES.txt +++ b/upstreamed/phabricator/templates/NOTES.txt @@ -8,12 +8,12 @@ host. To configure Phabricator with the URL of your service: 1. Get the Phabricator URL by running: - {{- if contains "NodePort" .Values.serviceType }} + {{- if contains "NodePort" .Values.service.type }} export APP_PORT=$(kubectl get svc --namespace {{ .Release.Namespace }} {{ template "phabricator.fullname" . }} -o jsonpath="{.spec.ports[0].nodePort}") export APP_HOST=$(kubectl get nodes --namespace {{ .Release.Namespace }} -o jsonpath="{.items[0].status.addresses[0].address}") - {{- else if contains "LoadBalancer" .Values.serviceType }} + {{- 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 --namespace {{ .Release.Namespace }} -w {{ template "phabricator.fullname" . }}' @@ -31,14 +31,15 @@ host. To configure Phabricator with the URL of your service: {{- else -}} 1. Get the Phabricator URL by running: -{{- if eq .Values.serviceType "ClusterIP" }} +{{- if eq .Values.service.type "ClusterIP" }} echo "Phabricator URL: http://127.0.0.1:8080/" - kubectl port-forward --namespace {{ .Release.Namespace }} svc/{{ template "phabricator.fullname" . }} 8080:80 + kubectl port-forward --namespace {{ .Release.Namespace }} svc/{{ template "phabricator.fullname" . }} 8080:{{ .Values.service.port }} {{- else }} - echo "Phabricator URL: http://{{ include "phabricator.host" . }}/" +{{- $port:=.Values.service.port | toString }} + echo "Phabricator URL: http://{{ include "phabricator.host" . }}{{- if ne $port "80" }}:{{ .Values.service.port }}{{ end }}/" {{- end }} diff --git a/upstreamed/phabricator/templates/_helpers.tpl b/upstreamed/phabricator/templates/_helpers.tpl index 0d5b7de994..40a6c86a6b 100644 --- a/upstreamed/phabricator/templates/_helpers.tpl +++ b/upstreamed/phabricator/templates/_helpers.tpl @@ -28,7 +28,7 @@ Get the user defined LoadBalancerIP for this release. Note, returns 127.0.0.1 if using ClusterIP. */}} {{- define "phabricator.serviceIP" -}} -{{- if eq .Values.serviceType "ClusterIP" -}} +{{- if eq .Values.service.type "ClusterIP" -}} 127.0.0.1 {{- else -}} {{- index .Values (printf "%sLoadBalancerIP" .Chart.Name) | default "" -}} diff --git a/upstreamed/phabricator/templates/deployment.yaml b/upstreamed/phabricator/templates/deployment.yaml index a64a1bd713..cca4e33936 100644 --- a/upstreamed/phabricator/templates/deployment.yaml +++ b/upstreamed/phabricator/templates/deployment.yaml @@ -53,8 +53,9 @@ spec: secretKeyRef: name: {{ template "phabricator.mariadb.fullname" . }} key: mariadb-root-password +{{- $port:=.Values.service.port | toString }} - name: PHABRICATOR_HOST - value: {{ include "phabricator.host" . | quote }} + value: "{{ include "phabricator.host" . }}{{- if ne $port "80" }}:{{ .Values.service.port }}{{ end }}" {{- if .Values.phabricatorAlternateFileDomain }} - name: PHABRICATOR_ALTERNATE_FILE_DOMAIN value: {{ .Values.phabricatorAlternateFileDomain | quote }} diff --git a/upstreamed/phabricator/templates/svc.yaml b/upstreamed/phabricator/templates/svc.yaml index 8dbc8d6c5e..ff724cf39a 100644 --- a/upstreamed/phabricator/templates/svc.yaml +++ b/upstreamed/phabricator/templates/svc.yaml @@ -8,16 +8,25 @@ metadata: release: "{{ .Release.Name }}" heritage: "{{ .Release.Service }}" spec: - type: {{ .Values.serviceType }} - {{- if eq .Values.serviceType "LoadBalancer" }} - loadBalancerIP: {{ default "" .Values.phabricatorLoadBalancerIP }} + type: {{ .Values.service.type }} + {{- if eq .Values.service.type "LoadBalancer" }} + loadBalancerIP: {{ default "" .Values.service.loadBalancerIP }} + {{- end }} + {{- if (or (eq .Values.service.type "LoadBalancer") (eq .Values.service.type "NodePort")) }} + externalTrafficPolicy: {{ .Values.service.externalTrafficPolicy | quote }} {{- end }} ports: - - name: http - port: 80 - targetPort: http - - name: https - port: 443 - targetPort: https + - name: http + port: {{ .Values.service.port }} + targetPort: http + {{- if (and (eq .Values.service.type "NodePort") (not (empty .Values.service.nodePorts.http)))}} + nodePort: {{ .Values.service.nodePorts.http }} + {{- end }} + - name: https + port: {{ .Values.service.httpsPort }} + targetPort: https + {{- if (and (eq .Values.service.type "NodePort") (not (empty .Values.service.nodePorts.https)))}} + nodePort: {{ .Values.service.nodePorts.https }} + {{- end }} selector: app: {{ template "phabricator.fullname" . }} diff --git a/upstreamed/phabricator/values.yaml b/upstreamed/phabricator/values.yaml index 76540a8a69..ed146515c2 100644 --- a/upstreamed/phabricator/values.yaml +++ b/upstreamed/phabricator/values.yaml @@ -10,7 +10,7 @@ image: registry: docker.io repository: bitnami/phabricator - tag: 2018.44.0 + tag: 2018.46.0 ## Specify a imagePullPolicy ## Defaults to 'Always' if image tag is 'latest', else set to 'IfNotPresent' ## ref: http://kubernetes.io/docs/user-guide/images/#pre-pulling-images @@ -33,11 +33,6 @@ image: ## # phabricatorAlternateFileDomain: -## loadBalancerIP for the Phabricator Service (optional, cloud specific) -## ref: http://kubernetes.io/docs/user-guide/services/#type-loadbalancer -## -# phabricatorLoadBalancerIP: - ## User of the application ## ref: https://github.com/bitnami/bitnami-docker-phabricator#configuration ## @@ -111,7 +106,24 @@ mariadb: ## Kubernetes configuration ## For minikube, set this to NodePort, elsewhere use LoadBalancer ## -serviceType: LoadBalancer +service: + type: LoadBalancer + # HTTP Port + port: 80 + # HTTPS Port + httpsPort: 443 + ## loadBalancerIP: + ## + ## nodePorts: + ## http: + ## https: + nodePorts: + http: "" + https: "" + ## Enable client source IP preservation + ## ref http://kubernetes.io/docs/tasks/access-application-cluster/create-external-load-balancer/#preserving-the-client-source-ip + ## + externalTrafficPolicy: Cluster ## Enable persistence using Persistent Volume Claims ## ref: http://kubernetes.io/docs/user-guide/persistent-volumes/ diff --git a/upstreamed/phpbb/Chart.yaml b/upstreamed/phpbb/Chart.yaml index d680b9b65f..fe86b6f304 100644 --- a/upstreamed/phpbb/Chart.yaml +++ b/upstreamed/phpbb/Chart.yaml @@ -1,6 +1,6 @@ name: phpbb -version: 3.2.0 -appVersion: 3.2.3 +version: 4.0.0 +appVersion: 3.2.4 description: Community forum that supports the notion of users and groups, file attachments, full-text search, notifications and more. keywords: diff --git a/upstreamed/phpbb/README.md b/upstreamed/phpbb/README.md index b1d83a4a1b..cfcc031ead 100644 --- a/upstreamed/phpbb/README.md +++ b/upstreamed/phpbb/README.md @@ -72,7 +72,14 @@ The following table lists the configurable parameters of the phpBB chart and the | `mariadb.db.name` | Database name to create | `bitnami_phpbb` | | `mariadb.db.user` | Database user to create | `bn_phpbb` | | `mariadb.db.password` | Password for the database | _random 10 character long alphanumeric string_ | -| `serviceType` | Kubernetes Service type | `LoadBalancer` | +| `service.type` | Kubernetes Service type | `LoadBalancer` | +| `service.port` | Service HTTP port (Dashboard) | `80` | +| `nodePorts.http` | Kubernetes http node port | `""` | +| `nodePorts.https` | Kubernetes https node port | `""` | +| `service.externalTrafficPolicy` | Enable client source IP preservation | `Cluster` | +| `service.nodePorts.http` | Kubernetes http node port | `""` | +| `service.nodePorts.https` | Kubernetes https node port | `""` | +| `service.loadBalancerIP` | LoadBalancer service IP | `""` | | `persistence.enabled` | Enable persistence using PVC | `true` | | `persistence.apache.storageClass` | PVC Storage Class for Apache volume | `nil` (uses alpha storage class annotation) | | `persistence.apache.accessMode` | PVC Access Mode for Apache volume | `ReadWriteOnce` | diff --git a/upstreamed/phpbb/requirements.lock b/upstreamed/phpbb/requirements.lock index 4a8ecdbf77..ca0c6a8911 100644 --- a/upstreamed/phpbb/requirements.lock +++ b/upstreamed/phpbb/requirements.lock @@ -1,6 +1,6 @@ dependencies: - name: mariadb repository: https://kubernetes-charts.storage.googleapis.com/ - version: 5.2.0 + version: 5.2.3 digest: sha256:0593b73b2163fbbbae061de1aa2b8280d43f8a423a91e1c7375c0b6c86784b1c -generated: 2018-10-16T08:50:16.14675+02:00 +generated: 2018-11-20T10:22:49.801551704Z diff --git a/upstreamed/phpbb/templates/NOTES.txt b/upstreamed/phpbb/templates/NOTES.txt index 7e53671cce..d9267ac6a7 100644 --- a/upstreamed/phpbb/templates/NOTES.txt +++ b/upstreamed/phpbb/templates/NOTES.txt @@ -2,24 +2,26 @@ 1. Get the phpBB URL by running: -{{- if contains "NodePort" .Values.serviceType }} +{{- if contains "NodePort" .Values.service.type }} export NODE_PORT=$(kubectl get --namespace {{ .Release.Namespace }} -o jsonpath="{.spec.ports[0].nodePort}" services {{ template "phpbb.fullname" . }}) export NODE_IP=$(kubectl get nodes --namespace {{ .Release.Namespace }} -o jsonpath="{.items[0].status.addresses[0].address}") echo "phpBB URL: http://$NODE_IP:$NODE_PORT/" -{{- else if contains "LoadBalancer" .Values.serviceType }} +{{- 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 --namespace {{ .Release.Namespace }} -w {{ template "phpbb.fullname" . }}' export SERVICE_IP=$(kubectl get svc --namespace {{ .Release.Namespace }} {{ template "phpbb.fullname" . }} --template "{{"{{ range (index .status.loadBalancer.ingress 0) }}{{.}}{{ end }}"}}") - echo "phpBB URL: http://$SERVICE_IP/" -{{- else if contains "ClusterIP" .Values.serviceType }} +{{- $port:=.Values.service.port | toString }} + echo "phpBB URL: http://$SERVICE_IP{{- if ne $port "80" }}:{{ .Values.service.port }}{{ end }}/" + +{{- else if contains "ClusterIP" .Values.service.type }} echo "phpBB URL: http://127.0.0.1:8080/" - kubectl port-forward --namespace {{ .Release.Namespace }} svc/{{ template "phpbb.fullname" . }} 8080:80 + kubectl port-forward --namespace {{ .Release.Namespace }} svc/{{ template "phpbb.fullname" . }} 8080:{{ .Values.service.port }} {{- end }} @@ -40,6 +42,6 @@ host. To configure phpBB to use and external database host: 1. Complete your phpBB deployment by running: - helm upgrade {{ .Release.Name }} --set serviceType={{ .Values.serviceType }},mariadb.enabled=false,externalDatabase.host=YOUR_EXTERNAL_DATABASE_HOST stable/phpbb + helm upgrade {{ .Release.Name }} --set service.type={{ .Values.service.type }},mariadb.enabled=false,externalDatabase.host=YOUR_EXTERNAL_DATABASE_HOST stable/phpbb {{- end }} diff --git a/upstreamed/phpbb/templates/svc.yaml b/upstreamed/phpbb/templates/svc.yaml index 3692d03ff0..beeeffabe0 100644 --- a/upstreamed/phpbb/templates/svc.yaml +++ b/upstreamed/phpbb/templates/svc.yaml @@ -8,13 +8,25 @@ metadata: release: "{{ .Release.Name }}" heritage: "{{ .Release.Service }}" spec: - type: {{ .Values.serviceType }} + type: {{ .Values.service.type }} + {{- if eq .Values.service.type "LoadBalancer" }} + loadBalancerIP: {{ default "" .Values.service.loadBalancerIP }} + {{- end }} + {{- if (or (eq .Values.service.type "LoadBalancer") (eq .Values.service.type "NodePort")) }} + externalTrafficPolicy: {{ .Values.service.externalTrafficPolicy | quote }} + {{- end }} ports: - - name: http - port: 80 - targetPort: http - - name: https - port: 443 - targetPort: https + - name: http + port: {{ .Values.service.port }} + targetPort: http + {{- if (and (eq .Values.service.type "NodePort") (not (empty .Values.service.nodePorts.http)))}} + nodePort: {{ .Values.service.nodePorts.http }} + {{- end }} + - name: https + port: {{ .Values.service.httpsPort }} + targetPort: https + {{- if (and (eq .Values.service.type "NodePort") (not (empty .Values.service.nodePorts.https)))}} + nodePort: {{ .Values.service.nodePorts.https }} + {{- end }} selector: app: {{ template "phpbb.fullname" . }} diff --git a/upstreamed/phpbb/values.yaml b/upstreamed/phpbb/values.yaml index e1c2b75dae..9e16d2edb5 100644 --- a/upstreamed/phpbb/values.yaml +++ b/upstreamed/phpbb/values.yaml @@ -10,7 +10,7 @@ image: registry: docker.io repository: bitnami/phpbb - tag: 3.2.3 + tag: 3.2.4 ## Specify a imagePullPolicy ## Defaults to 'Always' if image tag is 'latest', else set to 'IfNotPresent' ## ref: http://kubernetes.io/docs/user-guide/images/#pre-pulling-images @@ -118,7 +118,25 @@ mariadb: ## Kubernetes configuration ## For minikube, set this to NodePort, elsewhere use LoadBalancer ## -serviceType: LoadBalancer +service: + type: LoadBalancer + # HTTP Port + port: 80 + # HTTPS Port + httpsPort: 443 + ## + ## loadBalancerIP: + ## nodePorts: + ## http: + ## https: + nodePorts: + http: "" + https: "" + ## Enable client source IP preservation + ## ref http://kubernetes.io/docs/tasks/access-application-cluster/create-external-load-balancer/#preserving-the-client-source-ip + ## + externalTrafficPolicy: Cluster + ## Enable persistence using Persistent Volume Claims ## ref: http://kubernetes.io/docs/user-guide/persistent-volumes/ diff --git a/upstreamed/postgresql/Chart.yaml b/upstreamed/postgresql/Chart.yaml index d0db0a0da1..7e4e208ae6 100644 --- a/upstreamed/postgresql/Chart.yaml +++ b/upstreamed/postgresql/Chart.yaml @@ -1,5 +1,5 @@ name: postgresql -version: 2.4.0 +version: 2.6.3 appVersion: 10.6.0 description: Chart for PostgreSQL, an object-relational database management system (ORDBMS) with an emphasis on extensibility and on standards-compliance. keywords: diff --git a/upstreamed/postgresql/README.md b/upstreamed/postgresql/README.md index 3df90fdd42..be84efb2c6 100644 --- a/upstreamed/postgresql/README.md +++ b/upstreamed/postgresql/README.md @@ -66,6 +66,9 @@ The following tables lists the configurable parameters of the PostgreSQL chart a | `postgresqlUsername` | PostgreSQL admin user | `postgres` | | `postgresqlPassword` | PostgreSQL admin password | _random 10 character alphanumeric string_ | | `postgresqlDatabase` | PostgreSQL database | `nil` | +| `postgresqlConfiguration` | Runtime Config Parameters | `nil` | +| `pgHbaConfiguration` | Content of pg\_hba.conf | `nil (do not create pg_hba.conf)` | +| `initdbScripts` | List of initdb scripts | `nil` | | `service.type` | Kubernetes Service type | `ClusterIP` | | `service.port` | PostgreSQL port | `5432` | | `service.nodePort` | Kubernetes Service nodePort | `nil` | @@ -76,8 +79,8 @@ The following tables lists the configurable parameters of the PostgreSQL chart a | `persistence.accessMode` | PVC Access Mode for PostgreSQL volume | `ReadWriteOnce` | | `persistence.size` | PVC Storage Request for PostgreSQL volume | `8Gi` | | `persistence.annotations` | Annotations for the PVC | `{}` | -| `resources` | CPU/Memory resource requests/limits | `nil` | | `nodeSelector` | Node labels for pod assignment | `{}` | +| `affinity` | Affinity labels for pod assignment | `{}` | | `tolerations` | Toleration labels for pod assignment | `[]` | | `terminationGracePeriodSeconds` | Seconds the pod needs to terminate gracefully | `nil` | | `resources` | CPU/Memory resource requests/limits | Memory: `256Mi`, CPU: `250m` | @@ -127,16 +130,20 @@ $ helm install --name my-release -f values.yaml stable/postgresql > **Tip**: You can use the default [values.yaml](values.yaml) -### postgresql.conf file as configMap +### postgresql.conf / pg_hba.conf files as configMap -Instead of using specific variables for the PostgreSQL configuration, this helm chart also supports to customize the whole configuration file. +This helm chart also supports to customize the whole configuration file. Add your custom file to "files/postgresql.conf" in your working directory. This file will be mounted as configMap to the containers and it will be used for configuring the PostgreSQL server. +Alternatively, you can specify PostgreSQL configuration parameters using the `postgresqlConfiguration` parameter as a dict, using camelCase, e.g. {"sharedBuffers": "500MB"}. + ## Initialize a fresh instance The [Bitnami PostgreSQL](https://github.com/bitnami/bitnami-docker-postgresql) image allows you to use your custom scripts to initialize a fresh instance. In order to execute the scripts, they must be located inside the chart folder `files/docker-entrypoint-initdb.d` so they can be consumed as a ConfigMap. +Alternatively, you can specify custom scripts using the `initdbScripts` parameter as dict. + The allowed extensions are `.sh`, `.sql` and `.sql.gz`. ## Production and horizontal scaling diff --git a/upstreamed/postgresql/templates/_helpers.tpl b/upstreamed/postgresql/templates/_helpers.tpl index 8d95764621..f62c720d29 100644 --- a/upstreamed/postgresql/templates/_helpers.tpl +++ b/upstreamed/postgresql/templates/_helpers.tpl @@ -11,9 +11,13 @@ 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" -}} +{{- if .Values.fullnameOverride -}} +{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" -}} +{{- else -}} {{- $name := default .Chart.Name .Values.nameOverride -}} {{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" -}} {{- end -}} +{{- end -}} {{/* Create a default fully qualified app name. diff --git a/upstreamed/postgresql/templates/configmap.yaml b/upstreamed/postgresql/templates/configmap.yaml index 2cc9b48d08..7c18c01c55 100644 --- a/upstreamed/postgresql/templates/configmap.yaml +++ b/upstreamed/postgresql/templates/configmap.yaml @@ -1,4 +1,4 @@ -{{ if or (.Files.Glob "files/postgresql.conf") (.Files.Glob "files/pg_hba.conf") }} +{{ if or (.Files.Glob "files/postgresql.conf") (.Files.Glob "files/pg_hba.conf") .Values.postgresqlConfiguration .Values.pgHbaConfiguration}} apiVersion: v1 kind: ConfigMap metadata: @@ -11,8 +11,16 @@ metadata: data: {{- if (.Files.Glob "files/postgresql.conf") }} {{ (.Files.Glob "files/postgresql.conf").AsConfig | indent 2 }} +{{- else if .Values.postgresqlConfiguration }} + postgresql.conf: | +{{- range $key, $value := default dict .Values.postgresqlConfiguration }} + {{ $key | snakecase }}={{ $value }} +{{- end }} {{- end }} {{- if (.Files.Glob "files/pg_hba.conf") }} {{ (.Files.Glob "files/pg_hba.conf").AsConfig | indent 2 }} +{{- else if .Values.pgHbaConfiguration }} + pg_hba.conf: | +{{ .Values.pgHbaConfiguration | indent 4 }} {{- end }} {{ end }} diff --git a/upstreamed/postgresql/templates/initialization-configmap.yaml b/upstreamed/postgresql/templates/initialization-configmap.yaml index d8472fd1d2..078d508231 100644 --- a/upstreamed/postgresql/templates/initialization-configmap.yaml +++ b/upstreamed/postgresql/templates/initialization-configmap.yaml @@ -9,3 +9,6 @@ metadata: heritage: {{ .Release.Service | quote }} data: {{ (.Files.Glob "files/docker-entrypoint-initdb.d/*").AsConfig | indent 2 }} +{{- with .Values.initdbScripts }} +{{ toYaml . | indent 2 }} +{{- end }} diff --git a/upstreamed/postgresql/templates/statefulset-slaves.yaml b/upstreamed/postgresql/templates/statefulset-slaves.yaml index bb84ddfe47..450a636f3b 100644 --- a/upstreamed/postgresql/templates/statefulset-slaves.yaml +++ b/upstreamed/postgresql/templates/statefulset-slaves.yaml @@ -42,10 +42,17 @@ spec: {{- if .Values.nodeSelector }} nodeSelector: {{ toYaml .Values.nodeSelector | indent 8 }} + {{- end }} + {{- if .Values.affinity }} + affinity: +{{ toYaml .Values.affinity | indent 8 }} {{- end }} {{- if .Values.tolerations }} tolerations: {{ toYaml .Values.tolerations | indent 8 }} + {{- end }} + {{- if .Values.terminationGracePeriodSeconds }} + terminationGracePeriodSeconds: {{ .Values.terminationGracePeriodSeconds }} {{- end }} {{- if and .Values.persistence.enabled .Values.securityContext.enabled}} initContainers: @@ -75,9 +82,9 @@ spec: env: {{- if .Values.image.debug}} - name: BASH_DEBUG - value: 1 + value: "1" - name: NAMI_DEBUG - value: 1 + value: "1" {{- end }} - name: POSTGRESQL_REPLICATION_MODE value: "slave" @@ -128,18 +135,18 @@ spec: - name: data mountPath: /bitnami/postgresql {{ end }} - {{ if (.Files.Glob "files/postgresql.conf") }} + {{ if or (.Files.Glob "files/postgresql.conf") .Values.postgresqlConfiguration }} - name: postgresql-config mountPath: /opt/bitnami/postgresql/conf/postgresql.conf subPath: postgresql.conf {{ end }} - {{ if (.Files.Glob "files/pg_hba.conf") }} + {{ if or (.Files.Glob "files/pg_hba.conf") .Values.pgHbaConfiguration }} - name: postgresql-config mountPath: /opt/bitnami/postgresql/conf/pg_hba.conf subPath: pg_hba.conf {{ end }} volumes: - {{ if or (.Files.Glob "files/postgresql.conf") (.Files.Glob "files/pg_hba.conf") }} + {{ if or (.Files.Glob "files/postgresql.conf") (.Files.Glob "files/pg_hba.conf") .Values.postgresqlConfiguration .Values.pgHbaConfiguration }} - name: postgresql-config configMap: name: {{ template "postgresql.fullname" . }}-configuration @@ -148,10 +155,12 @@ spec: volumeClaimTemplates: - metadata: name: data + {{- with .Values.persistence.annotations }} annotations: - {{- range $key, $value := .Values.persistence.annotations }} + {{- range $key, $value := . }} {{ $key }}: {{ $value }} {{- end }} + {{- end }} spec: accessModes: {{- range .Values.persistence.accessModes }} diff --git a/upstreamed/postgresql/templates/statefulset.yaml b/upstreamed/postgresql/templates/statefulset.yaml index 68b3c9f26d..4ba233c9ad 100644 --- a/upstreamed/postgresql/templates/statefulset.yaml +++ b/upstreamed/postgresql/templates/statefulset.yaml @@ -41,6 +41,10 @@ spec: {{- if .Values.nodeSelector }} nodeSelector: {{ toYaml .Values.nodeSelector | indent 8 }} + {{- end }} + {{- if .Values.affinity }} + affinity: +{{ toYaml .Values.affinity | indent 8 }} {{- end }} {{- if .Values.tolerations }} tolerations: @@ -75,6 +79,12 @@ spec: resources: {{ toYaml .Values.resources | indent 10 }} env: + {{- if .Values.image.debug}} + - name: BASH_DEBUG + value: "1" + - name: NAMI_DEBUG + value: "1" + {{- end }} {{- if .Values.replication.enabled }} - name: POSTGRESQL_REPLICATION_MODE value: "master" @@ -136,18 +146,18 @@ spec: - name: data mountPath: /bitnami/postgresql {{ end }} - {{ if (.Files.Glob "files/postgresql.conf") }} + {{ if or (.Files.Glob "files/postgresql.conf") .Values.postgresqlConfiguration }} - name: postgresql-config mountPath: /opt/bitnami/postgresql/conf/postgresql.conf subPath: postgresql.conf {{ end }} - {{ if (.Files.Glob "files/pg_hba.conf") }} + {{ if or (.Files.Glob "files/pg_hba.conf") .Values.pgHbaConfiguration }} - name: postgresql-config mountPath: /opt/bitnami/postgresql/conf/pg_hba.conf subPath: pg_hba.conf {{ end }} volumes: - {{ if or (.Files.Glob "files/postgresql.conf") (.Files.Glob "files/pg_hba.conf") }} + {{ if or (.Files.Glob "files/postgresql.conf") (.Files.Glob "files/pg_hba.conf") .Values.postgresqlConfiguration .Values.pgHbaConfiguration }} - name: postgresql-config configMap: name: {{ template "postgresql.fullname" . }}-configuration @@ -159,10 +169,12 @@ spec: volumeClaimTemplates: - metadata: name: data + {{- with .Values.persistence.annotations }} annotations: - {{- range $key, $value := .Values.persistence.annotations }} + {{- range $key, $value := . }} {{ $key }}: {{ $value }} {{- end }} + {{- end }} spec: accessModes: {{- range .Values.persistence.accessModes }} diff --git a/upstreamed/postgresql/values-production.yaml b/upstreamed/postgresql/values-production.yaml index e61f7e9fd7..ed33072f40 100644 --- a/upstreamed/postgresql/values-production.yaml +++ b/upstreamed/postgresql/values-production.yaml @@ -70,6 +70,32 @@ postgresqlUsername: postgres ## # postgresqlDatabase: +## PostgreSQL configuration +## Specify runtime configuration parameters as a dict, using camelCase, e.g. +## {"sharedBuffers": "500MB"} +## Alternatively, you can put your postgresql.conf under the files/ directory +## ref: https://www.postgresql.org/docs/current/static/runtime-config.html +## +# postgresqlConfiguration: + +## PostgreSQL client authentication configuration +## Specify content for pg_hba.conf +## Default: do not create pg_hba.conf +## Alternatively, you can put your pg_hba.conf under the files/ directory +# pgHbaConfiguration: |- +# local all all trust +# host all all localhost trust +# host mydatabase mysuser 192.168.0.0/24 md5 + +## initdb scripts +## Specify dictionnary of scripts to be run at first boot +## Alternatively, you can put your scripts under the files/docker-entrypoint-initdb.d directory +## +# initdbScripts: +# my_init_script.sh:| +# #!/bin/sh +# echo "Do something." + ## PostgreSQL service configuration service: ## PosgresSQL service type diff --git a/upstreamed/postgresql/values.yaml b/upstreamed/postgresql/values.yaml index ea313209d6..ad5c0e3b81 100644 --- a/upstreamed/postgresql/values.yaml +++ b/upstreamed/postgresql/values.yaml @@ -70,6 +70,32 @@ postgresqlUsername: postgres ## # postgresqlDatabase: +## PostgreSQL configuration +## Specify runtime configuration parameters as a dict, using camelCase, e.g. +## {"sharedBuffers": "500MB"} +## Alternatively, you can put your postgresql.conf under the files/ directory +## ref: https://www.postgresql.org/docs/current/static/runtime-config.html +## +# postgresqlConfiguration: + +## PostgreSQL client authentication configuration +## Specify content for pg_hba.conf +## Default: do not create pg_hba.conf +## Alternatively, you can put your pg_hba.conf under the files/ directory +# pgHbaConfiguration: |- +# local all all trust +# host all all localhost trust +# host mydatabase mysuser 192.168.0.0/24 md5 + +## initdb scripts +## Specify dictionnary of scripts to be run at first boot +## Alternatively, you can put your scripts under the files/docker-entrypoint-initdb.d directory +## +# initdbScripts: +# my_init_script.sh:| +# #!/bin/sh +# echo "Do something." + ## Optional duration in seconds the pod needs to terminate gracefully. ## ref: https://kubernetes.io/docs/concepts/workloads/pods/pod/#termination-of-pods ## @@ -108,10 +134,12 @@ persistence: size: 8Gi annotations: {} -## Node labels and tolerations for pod assignment +## Node, affinity and tolerations labels for pod assignment ## ref: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#nodeselector +## ref: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#affinity-and-anti-affinity ## ref: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#taints-and-tolerations-beta-feature nodeSelector: {} +affinity: {} tolerations: [] ## Configure resource requests and limits diff --git a/upstreamed/wordpress/Chart.yaml b/upstreamed/wordpress/Chart.yaml index a5a010cc7c..6269db98ed 100644 --- a/upstreamed/wordpress/Chart.yaml +++ b/upstreamed/wordpress/Chart.yaml @@ -1,5 +1,5 @@ name: wordpress -version: 3.3.0 +version: 4.0.0 appVersion: 4.9.8 description: Web publishing platform for building blogs and websites. icon: https://bitnami.com/assets/stacks/wordpress/img/wordpress-stack-220x234.png diff --git a/upstreamed/wordpress/README.md b/upstreamed/wordpress/README.md index d9d05c3f81..8f491cb5e1 100644 --- a/upstreamed/wordpress/README.md +++ b/upstreamed/wordpress/README.md @@ -80,10 +80,12 @@ The following table lists the configurable parameters of the WordPress chart and | `externalDatabase.password` | Password for the above username | `nil` | | `externalDatabase.database` | Name of the existing database | `bitnami_wordpress` | | `externalDatabase.port` | Database port number | `3306` | -| `serviceType` | Kubernetes Service type | `LoadBalancer` | -| `serviceExternalTrafficPolicy` | Enable client source IP preservation | `Cluster` | -| `nodePorts.http` | Kubernetes http node port | `""` | -| `nodePorts.https` | Kubernetes https node port | `""` | +| `service.type` | Kubernetes Service type | `LoadBalancer` | +| `service.port` | Service HTTP port | `80` | +| `service.httpsPort` | Service HTTPS port | `443` | +| `service.externalTrafficPolicy` | Enable client source IP preservation | `Cluster` | +| `service.nodePorts.http` | Kubernetes http node port | `""` | +| `service.nodePorts.https` | Kubernetes https node port | `""` | | `healthcheckHttps` | Use https for liveliness and readiness | `false` | | `ingress.enabled` | Enable ingress controller resource | `false` | | `ingress.hosts[0].name` | Hostname to your WordPress installation | `wordpress.local` | diff --git a/upstreamed/wordpress/templates/NOTES.txt b/upstreamed/wordpress/templates/NOTES.txt index 9f520118b5..31937e0a52 100644 --- a/upstreamed/wordpress/templates/NOTES.txt +++ b/upstreamed/wordpress/templates/NOTES.txt @@ -8,22 +8,23 @@ {{ if .tls }}https{{ else }}http{{ end }}://{{ .name }}/admin {{- end }} -{{- else if contains "LoadBalancer" .Values.serviceType }} +{{- 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 --namespace {{ .Release.Namespace }} -w {{ template "fullname" . }}' +{{- $port:=.Values.service.port | toString }} export SERVICE_IP=$(kubectl get svc --namespace {{ .Release.Namespace }} {{ template "fullname" . }} --template "{{"{{ range (index .status.loadBalancer.ingress 0) }}{{.}}{{ end }}"}}") - echo "WordPress URL: http://$SERVICE_IP/" - echo "WordPress Admin URL: http://$SERVICE_IP/admin" + echo "WordPress URL: http://$SERVICE_IP{{- if ne $port "80" }}:{{ .Values.service.port }}{{ end }}/" + echo "WordPress Admin URL: http://$SERVICE_IP{{- if ne $port "80" }}:{{ .Values.service.port }}{{ end }}/admin" -{{- else if contains "ClusterIP" .Values.serviceType }} +{{- else if contains "ClusterIP" .Values.service.type }} echo "WordPress URL: http://127.0.0.1:8080/" echo "WordPress Admin URL: http://127.0.0.1:8080/admin" - kubectl port-forward --namespace {{ .Release.Namespace }} svc/{{ template "fullname" . }} 8080:80 + kubectl port-forward --namespace {{ .Release.Namespace }} svc/{{ template "fullname" . }} 8080:{{ .Values.service.port }} -{{- else if contains "NodePort" .Values.serviceType }} +{{- else if contains "NodePort" .Values.service.type }} export NODE_PORT=$(kubectl get --namespace {{ .Release.Namespace }} -o jsonpath="{.spec.ports[0].nodePort}" services {{ template "fullname" . }}) export NODE_IP=$(kubectl get nodes --namespace {{ .Release.Namespace }} -o jsonpath="{.items[0].status.addresses[0].address}") diff --git a/upstreamed/wordpress/templates/svc.yaml b/upstreamed/wordpress/templates/svc.yaml index f6c3993130..636f6abf3f 100644 --- a/upstreamed/wordpress/templates/svc.yaml +++ b/upstreamed/wordpress/templates/svc.yaml @@ -8,22 +8,22 @@ metadata: release: "{{ .Release.Name }}" heritage: "{{ .Release.Service }}" spec: - type: {{ .Values.serviceType }} - {{- if (or (eq .Values.serviceType "LoadBalancer") (eq .Values.serviceType "NodePort")) }} - externalTrafficPolicy: {{ .Values.serviceExternalTrafficPolicy | quote }} + type: {{ .Values.service.type }} + {{- if (or (eq .Values.service.type "LoadBalancer") (eq .Values.service.type "NodePort")) }} + externalTrafficPolicy: {{ .Values.service.externalTrafficPolicy | quote }} {{- end }} ports: - name: http - port: 80 + port: {{ .Values.service.port }} targetPort: http - {{- if (and (eq .Values.serviceType "NodePort") (not (empty .Values.nodePorts.http)))}} - nodePort: {{ .Values.nodePorts.http }} + {{- if (and (eq .Values.service.type "NodePort") (not (empty .Values.service.nodePorts.http)))}} + nodePort: {{ .Values.service.nodePorts.http }} {{- end }} - name: https - port: 443 + port: {{ .Values.service.httpsPort }} targetPort: https - {{- if (and (eq .Values.serviceType "NodePort") (not (empty .Values.nodePorts.https)))}} - nodePort: {{ .Values.nodePorts.https }} + {{- if (and (eq .Values.service.type "NodePort") (not (empty .Values.service.nodePorts.https)))}} + nodePort: {{ .Values.service.nodePorts.https }} {{- end }} selector: app: {{ template "fullname" . }} diff --git a/upstreamed/wordpress/values-production.yaml b/upstreamed/wordpress/values-production.yaml index c53442aade..13b8436135 100644 --- a/upstreamed/wordpress/values-production.yaml +++ b/upstreamed/wordpress/values-production.yaml @@ -136,23 +136,28 @@ mariadb: ## Kubernetes configuration ## For minikube, set this to NodePort, elsewhere use LoadBalancer or ClusterIP ## -serviceType: ClusterIP -## -## serviceType: NodePort -## nodePorts: -## http: -## https: -nodePorts: - http: "" - https: "" -## Enable client source IP preservation -## ref http://kubernetes.io/docs/tasks/access-application-cluster/create-external-load-balancer/#preserving-the-client-source-ip -## -serviceExternalTrafficPolicy: Local +service: + type: ClusterIP + # HTTP Port + port: 80 + # HTTPS Port + httpsPort: 443 + ## + ## nodePorts: + ## http: + ## https: + nodePorts: + http: "" + https: "" + ## Enable client source IP preservation + ## ref http://kubernetes.io/docs/tasks/access-application-cluster/create-external-load-balancer/#preserving-the-client-source-ip + ## + externalTrafficPolicy: Local ## Allow health checks to be pointed at the https port healthcheckHttps: false + ## Configure extra options for liveness and readiness probes ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-probes/#configure-probes) livenessProbe: diff --git a/upstreamed/wordpress/values.yaml b/upstreamed/wordpress/values.yaml index fdd9070cb2..35293f72fb 100644 --- a/upstreamed/wordpress/values.yaml +++ b/upstreamed/wordpress/values.yaml @@ -140,19 +140,23 @@ mariadb: ## Kubernetes configuration ## For minikube, set this to NodePort, elsewhere use LoadBalancer or ClusterIP ## -serviceType: LoadBalancer -## -## serviceType: NodePort -## nodePorts: -## http: -## https: -nodePorts: - http: "" - https: "" -## Enable client source IP preservation -## ref http://kubernetes.io/docs/tasks/access-application-cluster/create-external-load-balancer/#preserving-the-client-source-ip -## -serviceExternalTrafficPolicy: Cluster +service: + type: LoadBalancer + # HTTP Port + port: 80 + # HTTPS Port + httpsPort: 443 + ## + ## nodePorts: + ## http: + ## https: + nodePorts: + http: "" + https: "" + ## Enable client source IP preservation + ## ref http://kubernetes.io/docs/tasks/access-application-cluster/create-external-load-balancer/#preserving-the-client-source-ip + ## + externalTrafficPolicy: Cluster ## Allow health checks to be pointed at the https port healthcheckHttps: false