[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 <nat@natallan.com>
This commit is contained in:
Truxnell 2022-03-30 08:53:24 +11:00 committed by GitHub
parent 5243f370f5
commit 471101b5b5
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
9 changed files with 331 additions and 0 deletions

View File

@ -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

View File

@ -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

View File

@ -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
* <https://github.com/nginx-php/nginx-php-docker>
## 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)

View File

@ -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 -}}

View File

@ -0,0 +1,5 @@
persistence:
data:
enabled: true
type: emptyDir
mountPath: /var/www/html

View File

@ -0,0 +1 @@
{{- include "common.notes.defaultNotes" . -}}

View File

@ -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" . }}

View File

@ -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 -}}

View File

@ -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