Skip to content

Commit 1e9cedb

Browse files
authored
Merge pull request #256 from nginxinc/helm-chart
Add helm chart support
2 parents 8aca003 + 569265d commit 1e9cedb

File tree

9 files changed

+244
-0
lines changed

9 files changed

+244
-0
lines changed

helm-chart/Chart.yaml

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
name: nginx-ingress
2+
version: 0.0.1
3+
appVersion: 0.0.1
4+
description: NGINX Ingress Controller
5+
sources:
6+
- https://github.com/nginxinc/kubernetes-ingress/tree/master/helm-chart
7+
keywords:
8+
- ingress
9+
- nginx
10+
maintainers:
11+
- name: Damian Curry
12+
13+

helm-chart/README.md

Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
# NGINX Ingress Controller Helm Chart
2+
3+
## Introduction
4+
5+
This chart deploys the NGINX Ingress controller in your Kubernetes cluster.
6+
7+
## Prerequisites
8+
9+
- Kubernetes 1.6+.
10+
- If you’d like to use NGINX Plus, you need to build your own Docker image and push it to your private registry by following the instructions from [here](https://github.com/nginxinc/kubernetes-ingress-internal/blob/master/nginx-controller/README.md).
11+
12+
## Installing the Chart
13+
14+
To install the chart with the release name my-release:
15+
16+
For NGINX:
17+
```console
18+
$ git clone [email protected]:nginxinc/kubernetes-ingress.git
19+
$ helm install --name my-release kubernetes-ingress/helm-chart/
20+
```
21+
22+
For NGINX Plus:
23+
```console
24+
$ git clone [email protected]:nginxinc/kubernetes-ingress.git
25+
$ helm install --name my-release -f kubernetes-ingress/helm-chart/values-plus.yaml kubernetes-ingress/helm-chart/
26+
```
27+
28+
The command deploys the Ingress controller in your Kubernetes cluster in the default configuration. The configuration section lists the parameters that can be configured during installation.
29+
30+
> **Tip**: List all releases using helm list
31+
32+
## Uninstalling the Chart
33+
34+
To uninstall/delete the my-release
35+
36+
```console
37+
$ helm delete my-release
38+
```
39+
40+
The command removes all the Kubernetes components associated with the chart and deletes the release.
41+
42+
## Configuration
43+
44+
The following tables lists the configurable parameters of the NGINX Ingress controller chart and their default values.
45+
46+
Parameter | Description | Default
47+
--- | --- | ---
48+
`controller.name` | The name of the Ingress controller daemon set or deployment. | nginx-ingress
49+
`controller.kind` | The kind of the Ingress controller installation - deployment or daemonset. | deployment
50+
`controller.nginxplus` | Should NGINX Plus be deployed. | false
51+
`controller.hostNetwork` | If the nginx deployment / daemonset should run on the host's network namespace. | false
52+
`controller.image.repository` | The image repository of the Ingress controller. | nginxdemos/nginx-ingress
53+
`controller.image.tag` | The tag of the Ingress controller image. | 1.1.1
54+
`controller.image.pullPolicy` | The pull policy for the Ingress controller image. | IfNotPresent
55+
`controller.config.entries` | The entries of the ConfigMap for customizing NGINX configuration. | { }
56+
`controller.defaultTLS.cert` | The TLS certificate for the default HTTPS server. | None
57+
`controller.defaultTLS.key` | The TLS key for the default HTTPS server. | None
58+
`controller.nodeselector` | The node selectorlabels for pod assignment for the Ingress controller pods. | { }
59+
`controller.terminationGracePeriodSeconds` | The termination grace period of the Ingress controller pod. | 30
60+
`controller.tolerations` | The tolerations required for the IBM Cloud Platform installation. | None
61+
62+
63+
64+
## Limitations
65+
66+
This is a preview version of our helm chart. It has limitations including support for cloud installations (except for the IBM Cloud Platform) and RBAC. This version is not suitable for using in production environments.
67+
68+
69+
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
apiVersion: v1
2+
kind: ConfigMap
3+
metadata:
4+
name: nginx-config
5+
data:
6+
{{- if .Values.controller.config.entries }}
7+
{{ toYaml .Values.controller.config.entries | indent 2 }}
8+
{{- end }}
Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
{{- if eq .Values.controller.kind "daemonset" }}
2+
apiVersion: extensions/v1beta1
3+
kind: DaemonSet
4+
metadata:
5+
name: {{ .Values.controller.name }}
6+
spec:
7+
selector:
8+
matchLabels:
9+
app: nginx-ingress
10+
template:
11+
metadata:
12+
labels:
13+
app: nginx-ingress
14+
spec:
15+
{{- if .Values.controller.serviceAccountName }}
16+
serviceAccountName: {{ .Values.controller.serviceAccountName }}
17+
{{- end }}
18+
terminationGracePeriodSeconds: {{ .Values.controller.terminationGracePeriodSeconds | default 30 }}
19+
{{- if .Values.controller.nodeselector }}
20+
nodeSelector:
21+
{{ toYaml .Values.controller.nodeSelector | indent 8 }}
22+
{{- end }}
23+
{{- if eq .Values.controller.tolerations "icp" }}
24+
tolerations:
25+
- key: "dedicated"
26+
operator: "Exists"
27+
effect: "NoSchedule"
28+
- key: "CriticalAddonsOnly"
29+
operator: "Exists"
30+
{{- end }}
31+
hostNetwork: {{ .Values.controller.hostNetwork }}
32+
containers:
33+
- name: {{ .Values.controller.name }}
34+
image: "{{ .Values.controller.image.repository }}:{{ .Values.controller.image.tag }}"
35+
imagePullPolicy: "{{ .Values.controller.image.pullPolicy }}"
36+
ports:
37+
- name: http
38+
containerPort: 80
39+
hostPort: 80
40+
- name: https
41+
containerPort: 443
42+
hostPort: 443
43+
env:
44+
- name: POD_NAMESPACE
45+
valueFrom:
46+
fieldRef:
47+
fieldPath: metadata.namespace
48+
args:
49+
{{- if eq .Values.controller.nginxplus "true" }}
50+
- -nginx-plus
51+
{{- end }}
52+
- -nginx-configmaps=$(POD_NAMESPACE)/nginx-config
53+
- -default-server-tls-secret=$(POD_NAMESPACE)/default-server-secret
54+
{{- end }}
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
{{- if eq .Values.controller.kind "deployment" }}
2+
apiVersion: extensions/v1beta1
3+
kind: Deployment
4+
metadata:
5+
name: {{ .Values.controller.name }}
6+
spec:
7+
replicas: {{ .Values.controller.replicacount | default 1 }}
8+
selector:
9+
matchLabels:
10+
app: nginx-ingress
11+
template:
12+
metadata:
13+
labels:
14+
app: nginx-ingress
15+
spec:
16+
{{- if .Values.controller.serviceAccountName }}
17+
serviceAccountName: {{ .Values.controller.serviceAccountName }}
18+
{{- end }}
19+
hostNetwork: {{ .Values.controller.hostNetwork }}
20+
containers:
21+
- image: "{{ .Values.controller.image.repository }}:{{ .Values.controller.image.tag }}"
22+
name: {{ .Values.controller.name }}
23+
imagePullPolicy: "{{ .Values.controller.image.pullPolicy }}"
24+
ports:
25+
- name: http
26+
containerPort: 80
27+
- name: https
28+
containerPort: 443
29+
env:
30+
- name: POD_NAMESPACE
31+
valueFrom:
32+
fieldRef:
33+
fieldPath: metadata.namespace
34+
args:
35+
{{- if eq .Values.controller.nginxplus "true" }}
36+
- -nginx-plus
37+
{{- end }}
38+
- -nginx-configmaps=$(POD_NAMESPACE)/nginx-config
39+
- -default-server-tls-secret=$(POD_NAMESPACE)/default-server-secret
40+
{{- end }}
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
apiVersion: v1
2+
kind: Secret
3+
metadata:
4+
name: default-server-secret
5+
type: Opaque
6+
data:
7+
tls.crt: {{ .Values.controller.defaultTLS.cert | default "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSURTVENDQWpHZ0F3SUJBZ0lKQUs5L2NDNWZocDJHTUEwR0NTcUdTSWIzRFFFQkJRVUFNQ0V4SHpBZEJnTlYKQkFNVEZrNUhTVTVZU1c1bmNtVnpjME52Ym5SeWIyeHNaWEl3SGhjTk1UY3dPRE14TVRBeE16UTRXaGNOTVRndwpPRE14TVRBeE16UTRXakFoTVI4d0hRWURWUVFERXhaT1IwbE9XRWx1WjNKbGMzTkRiMjUwY205c2JHVnlNSUlCCklqQU5CZ2txaGtpRzl3MEJBUUVGQUFPQ0FROEFNSUlCQ2dLQ0FRRUF0bXhhMDhadExIaWxleWhOUWN5OUl4ankKWTBYdy9CRmZvM3duMDRsSXRoaGRxbkZ3NTZIVG1RVjIvbnEyRUxMdTNoejNjc3Urc3M5WFEzL3BrbXVwTEE5TApuaVVRZFVNcER4VlE1VFFKRW5CanJ5aXc4RWFlcEp4NUNCYVB5V3ZSZkpPb0pFSW56ZmNaYnE4OEVmQklYOHdtClFCa0xlcnFTVmRYWjBXR3FINVVQVlVZMVBqZXBqSXAyZ0NvbDRMUjM1aHRlSk9OMmZVTEF6cmRGMDBDT092WGsKUzgwRGw5eHdoUkVwVWVySGNuNXZod3BJazNkY3FNS3BxWTY2elF3dStMcFJEM3ZVWjR0eC9VYnlUdStkMkdhVwpWaG1RLy85RmtzUzVBS1d2ZXkrK3pPUTFDZTAxNzhDU0hRYXRDaWFuU2lTT3lwakZtTUZ0N1Mra25pbm9Xd0lECkFRQUJvNEdETUlHQU1CMEdBMVVkRGdRV0JCUlFUODVHRzV6a0QxV3FNSzZvOW8xWWFqUVBXVEJSQmdOVkhTTUUKU2pCSWdCUlFUODVHRzV6a0QxV3FNSzZvOW8xWWFqUVBXYUVscENNd0lURWZNQjBHQTFVRUF4TVdUa2RKVGxoSgpibWR5WlhOelEyOXVkSEp2Ykd4bGNvSUpBSzkvY0M1ZmhwMkdNQXdHQTFVZEV3UUZNQU1CQWY4d0RRWUpLb1pJCmh2Y05BUUVGQlFBRGdnRUJBSTIxcXpDN0lIYTEzblNvRkMxVFdtSUZydjQ2L2hRSFRjSFhxazRXZW16Z3VwVW8Kdmp0R05DVFlaR1VtL3RZY1FobDZvOXVJZlV5N3NlVS9OeWVCWHpOdGFiQUczQUIzanREVUJySy9xeVJ5cDZjRApIL0MzNmd5VFh3OGJxYVdOSzg0VGhYOVg2MFVFNVE2NzFUQUJMbk9paEhKUVVxTHdRc1VkdEkxRHBQb1BOOFlWCm5YQVl1RXJKWTVRckhzdHZoOFNZM2xoV3BSOWJ0eTVySldweUhIM3NDL1lHN2lFam5TUXp2LzdhK3cxTW1RQ0EKTk1wQnFvdzJKZkdveklyV2JvcFBVR2lmZ2szSjBKT24rcnA4RDRVc1lvNEo4Y3RvVk5qUFdmeU9zczB6ZWZ2aQpyUmVEUDdJOXc5THF1eERIRUhzeUpMUXN0MzNlQWlna1FBQU9zMUU9Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K" }}
8+
tls.key: {{ .Values.controller.defaultTLS.key | default "LS0tLS1CRUdJTiBSU0EgUFJJVkFURSBLRVktLS0tLQpNSUlFb3dJQkFBS0NBUUVBdG14YTA4WnRMSGlsZXloTlFjeTlJeGp5WTBYdy9CRmZvM3duMDRsSXRoaGRxbkZ3CjU2SFRtUVYyL25xMkVMTHUzaHozY3N1K3NzOVhRMy9wa211cExBOUxuaVVRZFVNcER4VlE1VFFKRW5CanJ5aXcKOEVhZXBKeDVDQmFQeVd2UmZKT29KRUluemZjWmJxODhFZkJJWDh3bVFCa0xlcnFTVmRYWjBXR3FINVVQVlVZMQpQamVwaklwMmdDb2w0TFIzNWh0ZUpPTjJmVUxBenJkRjAwQ09PdlhrUzgwRGw5eHdoUkVwVWVySGNuNXZod3BJCmszZGNxTUtwcVk2NnpRd3UrTHBSRDN2VVo0dHgvVWJ5VHUrZDJHYVdWaG1RLy85RmtzUzVBS1d2ZXkrK3pPUTEKQ2UwMTc4Q1NIUWF0Q2lhblNpU095cGpGbU1GdDdTK2tuaW5vV3dJREFRQUJBb0lCQVFDQ002UkFNd2dKRGJOTwp5OTBZY2NFdEk4a2RBZmFXY3ZBSUI3MkZSaDhYbVJ5QllxWnJMUjJSd2t6RUpXRjlXYmtUM3lqZVRuMjFzamRlCmZoVi81RWZDb3NnZC8rWlhTN0FxaTlSSlEzS1dMcEYzbTF0dW8zam5sS2J1RnV4Wm54TE9EN1dhNjN6dGpNZ2kKTUFCMzdVQTYzOE1OVE5MY3JmMTBOa1paSTVRQkpYWWNPRk1ueDJ4MXVLRkU5RHQzWUEzbE9nOWNGdmFJTFpEQQo3WTVHVDlmUXdJQS92OGRWRU1DTkNiSzI1b1dnRG90WUdZaUhiYm1hUk9DTkRpNzVQZFpkM2daQ3IxUHFPWEZHCkJaVEh1L3Q4OXMwV1QyUkpNV2ljVW5XV0oyVHhmRWU1YUQ4R0JjRzEyN0pkamxLSitWZCtHWmxvODVYYVBvdnUKTVFxek1nbUJBb0dCQU9IS1pGbzVnSVkzL0J3aElCZ2RGUytnOG1GK21JTWpxSGVMN1NFSTNYL0UzWjhJd0syUgpmTTVFRUpTZnlETFpDVkNlSS8veWhBOUF6dG9Dam12TzdjMUxJT3kwR3k5dFlJVHlYY0xQNWNBWitBTkJCRExFCitYZkx5SE9KVXBDM2o4RFRZWDF0RENiUGJ5UFZTZENUNHNKT2JrNDVZVXQ3a3pEYTVHSFpsL3hqQW9HQkFNN1UKayt6TE5zbFQ2azJaakJaZW81YUdoMUNCSVV4bzNFNVpGYUZWR2lyMSs4NVlkVDdXVEpublJ6K0l6QXBMMmRqZApPZjVlQS9wa3JVNExMeGMzVVNEYjJwczJuT1hQd1p1OWdqRTM3aml0SUFRd3BHL3FiamQ3Y1ZaR2hlUkQyK3l4ClptTWU3c1BCZEVmcldmK1REYU9lT3B4L2RRcnFyTEc2UXo1ZHlQbXBBb0dBVmsyZ0VnU01wY0RjY253TzRtaXIKWW1zb2VpK0RhQXpISmZxc0JzWjJzNUd5REVteUxDWENDSzFua1FlSjVEV2xJOVZ1ZVRSZldkMHhzNDdxbFRhaApHcWt1eW9zRklSbXpuTjF2RFRtZDNkR1BSTjhqRmF6SWxndWtjTlQ2WkNwbG5oU3QzTjFEbWNvTDl5eGRiSVk2ClZIN2FGcmhFQWpBWDBNSzZMTlNaRFhVQ2dZQlRYc3JWeTBBbFBTY1g2b25XUm9Xb1drZlhBb1lhbDdZZCtyakcKVkZoODhyUnlnNk9YRmFqQTdNSUNjVERXQWFjcFRGdGhGaUtDWHV5Z3BjOXdpMEt2ZlErTU95SlpYRHBOZmNFcAo5OEtWbyt0ZzVQNlRnaXExUUpQNTArbUtqblBxMzhOR3R5UkZVZ2grS1BjWkZ2eUxkRzlwdjlLOCtNVnR5b2ZxCmJzRmhLUUtCZ0NvcEg5Wm95MjJBNStLcnJYZmQ0VXRBcndjN0dVanFUT1hhTzgyd3FpU0hZMndPTGdkWWw0L3kKSDJEYy9EMWxmWS9GL09sckNMZDNpL0lLc0wxNG13R2dxODZRdDhxeTIwcWw4RFNyWG91TmhsQTJmL1ZUTk1SMAp2OXAwU1JrQjI2UVYyUitndnNVYk9xb1lhMlVQVkNuQW9QeTYwTXlBaVJUR3cyeTExbm9lCi0tLS0tRU5EIFJTQSBQUklWQVRFIEtFWS0tLS0tCg==" }}

helm-chart/values-icp.yaml

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
controller:
2+
name: nginx-ingress
3+
kind: daemonset
4+
nginxplus: "true"
5+
hostNetwork: "false"
6+
image:
7+
repository: mycluster.icp:8500/kube-system/nginx-plus-ingress
8+
tag: "1.1.1"
9+
pullPolicy: IfNotPresent
10+
defaultTLS:
11+
cert:
12+
key:
13+
config:
14+
entries: {}
15+
nodeselector: { beta.kubernetes.io/arch: "amd64",
16+
proxy: "true" }
17+
terminationGracePeriodSeconds: 60
18+
tolerations: "icp"

helm-chart/values-plus.yaml

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
controller:
2+
name: nginx-ingress
3+
kind: daemonset
4+
nginxplus: "true"
5+
hostNetwork: "false"
6+
image:
7+
repository: <repo_path>
8+
tag: ""
9+
pullPolicy: IfNotPresent
10+
defaultTLS:
11+
cert:
12+
key:
13+
config:
14+
entries: {}
15+
nodeselector: {}
16+
terminationGracePeriodSeconds: 30
17+
tolerations: ""

helm-chart/values.yaml

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
controller:
2+
name: nginx-ingress
3+
kind: deployment
4+
nginxplus: "false"
5+
hostNetwork: "false"
6+
image:
7+
repository: nginxdemos/nginx-ingress
8+
tag: "1.1.1"
9+
pullPolicy: IfNotPresent
10+
config:
11+
entries: {}
12+
defaultTLS:
13+
cert:
14+
key:
15+
nodeselector: {}
16+
terminationGracePeriodSeconds: 30
17+
tolerations: ""

0 commit comments

Comments
 (0)