From 471101b5b59bf41a1c4a1d4c617e4973b2504cb7 Mon Sep 17 00:00:00 2001 From: Truxnell <19149206+Truxnell@users.noreply.github.com> Date: Wed, 30 Mar 2022 08:53:24 +1100 Subject: [PATCH] [nginx-php] feat: add new chart (#1457) * [nginx-php] feat: add new chart * [nginx-php] fix: lint issues * [nginx-php] fix: lint trailing whitespace * [nginx-php] fix: remove tag and add @default for tag Co-authored-by: Nat Allan --- charts/stable/nginx-php/.helmignore | 26 ++++ charts/stable/nginx-php/Chart.yaml | 26 ++++ charts/stable/nginx-php/README.md | 111 ++++++++++++++++++ .../stable/nginx-php/README_CONFIG.md.gotmpl | 37 ++++++ charts/stable/nginx-php/ci/ct-values.yaml | 5 + charts/stable/nginx-php/templates/NOTES.txt | 1 + charts/stable/nginx-php/templates/common.yaml | 47 ++++++++ .../stable/nginx-php/templates/configmap.yaml | 27 +++++ charts/stable/nginx-php/values.yaml | 51 ++++++++ 9 files changed, 331 insertions(+) create mode 100644 charts/stable/nginx-php/.helmignore create mode 100644 charts/stable/nginx-php/Chart.yaml create mode 100644 charts/stable/nginx-php/README.md create mode 100644 charts/stable/nginx-php/README_CONFIG.md.gotmpl create mode 100644 charts/stable/nginx-php/ci/ct-values.yaml create mode 100644 charts/stable/nginx-php/templates/NOTES.txt create mode 100644 charts/stable/nginx-php/templates/common.yaml create mode 100644 charts/stable/nginx-php/templates/configmap.yaml create mode 100644 charts/stable/nginx-php/values.yaml diff --git a/charts/stable/nginx-php/.helmignore b/charts/stable/nginx-php/.helmignore new file mode 100644 index 00000000..4379e2b3 --- /dev/null +++ b/charts/stable/nginx-php/.helmignore @@ -0,0 +1,26 @@ +# Patterns to ignore when building packages. +# This supports shell glob matching, relative path matching, and +# negation (prefixed with !). Only one pattern per line. +.DS_Store +# Common VCS dirs +.git/ +.gitignore +.bzr/ +.bzrignore +.hg/ +.hgignore +.svn/ +# Common backup files +*.swp +*.bak +*.tmp +*~ +# Various IDEs +.project +.idea/ +*.tmproj +.vscode/ +# OWNERS file for Kubernetes +OWNERS +# helm-docs templates +*.gotmpl diff --git a/charts/stable/nginx-php/Chart.yaml b/charts/stable/nginx-php/Chart.yaml new file mode 100644 index 00000000..1414bdfe --- /dev/null +++ b/charts/stable/nginx-php/Chart.yaml @@ -0,0 +1,26 @@ +apiVersion: v2 +appVersion: 2.4.0 +description: Nginx and PHP FPM for running PHP applications +name: nginx-php +version: 1.0.0 +kubeVersion: ">=1.16.0-0" +keywords: + - nginx-php + - nginx + - php + - php-fpm +home: https://github.com/k8s-at-home/charts/tree/master/charts/stable/nginx-php +icon: https://www.nginx.com/wp-content/uploads/2020/05/NGINX-product-icon.svg +sources: + - https://github.com/TrafeX/docker-php-nginx +maintainers: + - name: Truxnell + email: nat@natallan.com +dependencies: + - name: common + repository: https://library-charts.k8s-at-home.com + version: 4.3.0 +annotations: + artifacthub.io/changes: | + - kind: added + description: Initial version diff --git a/charts/stable/nginx-php/README.md b/charts/stable/nginx-php/README.md new file mode 100644 index 00000000..09c5bf2d --- /dev/null +++ b/charts/stable/nginx-php/README.md @@ -0,0 +1,111 @@ +# nginx-php + +![Version: 1.0.0](https://img.shields.io/badge/Version-1.0.0-informational?style=flat-square) ![AppVersion: 1.0.0](https://img.shields.io/badge/AppVersion-1.0.0-informational?style=flat-square) + +nginx-php helm package + +**This chart is not maintained by the upstream project and any issues with the chart should be raised [here](https://github.com/k8s-at-home/charts/issues/new/choose)** + +## Source Code + +* + +## Requirements + +Kubernetes: `>=1.16.0-0` + +## Dependencies + +| Repository | Name | Version | +|------------|------|---------| +| https://library-charts.k8s-at-home.com | common | 4.0.0 | + +## TL;DR + +```console +helm repo add k8s-at-home https://k8s-at-home.com/charts/ +helm repo update +helm install nginx-php k8s-at-home/nginx-php +``` + +## Installing the Chart + +To install the chart with the release name `nginx-php` + +```console +helm install nginx-php k8s-at-home/nginx-php +``` + +## Uninstalling the Chart + +To uninstall the `nginx-php` deployment + +```console +helm uninstall nginx-php +``` + +The command removes all the Kubernetes components associated with the chart **including persistent volumes** and deletes the release. + +## Configuration + +Read through the [values.yaml](./values.yaml) file. It has several commented out suggested values. +Other values may be used from the [values.yaml](https://github.com/k8s-at-home/library-charts/tree/main/charts/stable/common/values.yaml) from the [common library](https://github.com/k8s-at-home/library-charts/tree/main/charts/stable/common). + +Specify each parameter using the `--set key=value[,key=value]` argument to `helm install`. + +```console +helm install nginx-php \ + --set env.TZ="America/New York" \ + k8s-at-home/nginx-php +``` + +Alternatively, a YAML file that specifies the values for the above parameters can be provided while installing the chart. + +```console +helm install nginx-php k8s-at-home/nginx-php -f values.yaml +``` + +## Custom configuration + +N/A + +## Values + +**Important**: When deploying an application Helm chart you can add more values from our common library chart [here](https://github.com/k8s-at-home/library-charts/tree/main/charts/stable/common) + +| Key | Type | Default | Description | +|-----|------|---------|-------------| +| env | object | See below | environment variables. See more environment variables in the [nginx-php documentation](https://nginx-php.org/docs). | +| env.TZ | string | `"UTC"` | Set the container timezone | +| image.pullPolicy | string | `"IfNotPresent"` | image pull policy | +| image.repository | string | `"nginx-php/nginx-php"` | image repository | +| image.tag | string | `"1.0.0"` | image tag | +| ingress.main | object | See values.yaml | Enable and configure ingress settings for the chart under this key. | +| persistence | object | See values.yaml | Configure persistence settings for the chart under this key. | +| service | object | See values.yaml | Configures service settings for the chart. | + +## Changelog + +### Version 1.0.0 + +#### Added + +- Initial version + +#### Changed + +N/A + +#### Fixed + +N/A + +## Support + +- See the [Docs](https://docs.k8s-at-home.com/our-helm-charts/getting-started/) +- Open an [issue](https://github.com/k8s-at-home/charts/issues/new/choose) +- Ask a [question](https://github.com/k8s-at-home/organization/discussions) +- Join our [Discord](https://discord.gg/sTMX7Vh) community + +---------------------------------------------- +Autogenerated from chart metadata using [helm-docs v1.5.0](https://github.com/norwoodj/helm-docs/releases/v1.5.0) diff --git a/charts/stable/nginx-php/README_CONFIG.md.gotmpl b/charts/stable/nginx-php/README_CONFIG.md.gotmpl new file mode 100644 index 00000000..73dc297d --- /dev/null +++ b/charts/stable/nginx-php/README_CONFIG.md.gotmpl @@ -0,0 +1,37 @@ +{{- define "custom.custom.configuration.header" -}} +## Custom configuration +{{- end -}} + +{{- define "custom.custom.configuration" -}} +{{ template "custom.custom.configuration.header" . }} + +There are keys in this charts yaml that allows the user to overwrite the following config files in the container. This allows for control over: + +* Nginx configuration (/etc/nginx/conf.d/server.conf) +* PHP configuration (/etc/php8/conf.d/settings.ini) +* PHP-FPM configuration (/etc/php8/php-fpm.d/server.conf) + +And can be found under `config:` in this charts [values.yaml](values.yaml) +```yaml +config: + nginx-server.conf: {} + + php-settings.ini: {} + + php-fpm-server.conf: {} +``` + + +This is achieved in the helm chart by creating a configmap, which is then mounted to the file locations in the pod. + +An example of using this feature would be adding the following to your `values.yaml` +```yaml +config: + nginx-server.conf: | + [Date] + date.timezone="Australia/Melbourne" +``` + +The defauls for these files can be found at [https://github.com/TrafeX/docker-php-nginx/tree/master/config](https://github.com/TrafeX/docker-php-nginx/tree/master/config) + +{{- end -}} diff --git a/charts/stable/nginx-php/ci/ct-values.yaml b/charts/stable/nginx-php/ci/ct-values.yaml new file mode 100644 index 00000000..7a52ee27 --- /dev/null +++ b/charts/stable/nginx-php/ci/ct-values.yaml @@ -0,0 +1,5 @@ +persistence: + data: + enabled: true + type: emptyDir + mountPath: /var/www/html diff --git a/charts/stable/nginx-php/templates/NOTES.txt b/charts/stable/nginx-php/templates/NOTES.txt new file mode 100644 index 00000000..90f7b653 --- /dev/null +++ b/charts/stable/nginx-php/templates/NOTES.txt @@ -0,0 +1 @@ +{{- include "common.notes.defaultNotes" . -}} diff --git a/charts/stable/nginx-php/templates/common.yaml b/charts/stable/nginx-php/templates/common.yaml new file mode 100644 index 00000000..c92a615c --- /dev/null +++ b/charts/stable/nginx-php/templates/common.yaml @@ -0,0 +1,47 @@ +{{/* Make sure all variables are set properly */}} +{{- include "common.values.setup" . }} + +{{/* Append the configMap volume to the volumes */}} +{{- define "nginx-php.settingsVolume-server.conf" -}} +enabled: "true" +mountPath: "/etc/nginx/conf.d/server.conf" +subPath: "nginx-server.conf" +type: "custom" +volumeSpec: + configMap: + name: {{ include "common.names.fullname" . }}-settings +{{- end -}} +{{- if (index .Values.config "nginx-server.conf") -}} +{{- $_ := set .Values.persistence "nginx-php-server-conf" (include "nginx-php.settingsVolume-server.conf" . | fromYaml) -}} +{{- end -}} + +{{/* Append the configMap volume to the volumes */}} +{{- define "nginx-php.settingsVolume-php-settings.ini" -}} +enabled: "true" +mountPath: "/etc/php8/conf.d/settings.ini" +subPath: "php-settings.ini" +type: "custom" +volumeSpec: + configMap: + name: {{ include "common.names.fullname" . }}-settings +{{- end -}} +{{- if (index .Values.config "php-settings.ini") -}} +{{- $_ := set .Values.persistence "nginx-php-settings-ini" (include "nginx-php.settingsVolume-php-settings.ini" . | fromYaml) -}} +{{- end -}} + +{{/* Append the configMap volume to the volumes */}} +{{- define "nginx-php.settingsVolume-php-fpm-server.conf" -}} +enabled: "true" +mountPath: "/etc/php8/php-fpm.d/server.conf" +subPath: "php-fpm-server.conf" +type: "custom" +volumeSpec: + configMap: + name: {{ include "common.names.fullname" . }}-settings +{{- end -}} +{{- if (index .Values.config "php-fpm-server.conf") -}} +{{- $_ := set .Values.persistence "nginx-php-fpm-server-conf" (include "nginx-php.settingsVolume-php-fpm-server.conf" . | fromYaml) -}} +{{- end -}} + +{{/* Render the templates */}} +{{ include "common.all" . }} diff --git a/charts/stable/nginx-php/templates/configmap.yaml b/charts/stable/nginx-php/templates/configmap.yaml new file mode 100644 index 00000000..42a77c95 --- /dev/null +++ b/charts/stable/nginx-php/templates/configmap.yaml @@ -0,0 +1,27 @@ +{{- if .Values.config -}} +apiVersion: v1 +kind: ConfigMap +metadata: + name: {{ template "common.names.fullname" . }}-settings + labels: + {{- include "common.labels" . | nindent 4 }} +data: +{{- with (index .Values.config "nginx-server.conf") -}} +{{- if . }} + nginx-server.conf: | +{{- . | nindent 4 -}} +{{- end -}} +{{- end -}} +{{- with (index .Values.config "php-settings.ini") -}} +{{- if . }} + php-settings.ini: | +{{- . | nindent 4 -}} +{{- end -}} +{{- end -}} +{{- with (index .Values.config "php-fpm-server.conf") -}} +{{- if . }} + php-fpm-server.conf: | +{{- . | nindent 4 -}} +{{- end -}} +{{- end -}} +{{- end -}} diff --git a/charts/stable/nginx-php/values.yaml b/charts/stable/nginx-php/values.yaml new file mode 100644 index 00000000..74de01c7 --- /dev/null +++ b/charts/stable/nginx-php/values.yaml @@ -0,0 +1,51 @@ +# +# IMPORTANT NOTE +# +# This chart inherits from our common library chart. You can check the default values/options here: +# https://github.com/k8s-at-home/library-charts/tree/main/charts/stable/common/values.yaml +# + +image: + # -- image repository + repository: trafex/php-nginx + # -- image tag + # @default -- chart.appVersion + tag: + # -- image pull policy + pullPolicy: IfNotPresent + +# -- environment variables. See more environment variables in the [nginx-php documentation](https://nginx-php.org/docs). +# @default -- See below +env: + # -- Set the container timezone + TZ: UTC + +# -- Configures service settings for the chart. +# @default -- See values.yaml +service: + main: + ports: + http: + port: 8080 + +# -- Overwrites default config files for nginx or php/php-fpm if enabled. +# @default -- See https://github.com/TrafeX/docker-php-nginx/tree/master/config for defaults +config: + nginx-server.conf: {} + + php-settings.ini: {} + + php-fpm-server.conf: {} + +ingress: + # -- Enable and configure ingress settings for the chart under this key. + # @default -- See values.yaml + main: + enabled: false + +# -- Configure persistence settings for the chart under this key. +# @default -- See values.yaml +persistence: + data: + enabled: false + mountPath: /var/www/html