Browse Source
Merge pull request #2324 from hswong3i/nginx_ingress
Merge pull request #2324 from hswong3i/nginx_ingress
Integrate kubernetes/ingress-nginx 0.10.2 to Kubespraypull/2411/head
committed by
GitHub
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
19 changed files with 584 additions and 0 deletions
Unified View
Diff Options
-
1cluster.yml
-
6inventory/sample/group_vars/k8s-cluster.yml
-
283roles/kubernetes-apps/ingress_controller/ingress_nginx/README.md
-
10roles/kubernetes-apps/ingress_controller/ingress_nginx/defaults/main.yml
-
42roles/kubernetes-apps/ingress_controller/ingress_nginx/tasks/main.yml
-
25roles/kubernetes-apps/ingress_controller/ingress_nginx/templates/ingress-nginx-clusterrole.yml.j2
-
14roles/kubernetes-apps/ingress_controller/ingress_nginx/templates/ingress-nginx-clusterrolebinding.yml.j2
-
8roles/kubernetes-apps/ingress_controller/ingress_nginx/templates/ingress-nginx-cm.yml.j2
-
70roles/kubernetes-apps/ingress_controller/ingress_nginx/templates/ingress-nginx-controller-ds.yml.j2
-
37roles/kubernetes-apps/ingress_controller/ingress_nginx/templates/ingress-nginx-default-backend-rs.yml.j2
-
14roles/kubernetes-apps/ingress_controller/ingress_nginx/templates/ingress-nginx-default-backend-svc.yml.j2
-
5roles/kubernetes-apps/ingress_controller/ingress_nginx/templates/ingress-nginx-ns.yml.j2
-
24roles/kubernetes-apps/ingress_controller/ingress_nginx/templates/ingress-nginx-role.yml.j2
-
14roles/kubernetes-apps/ingress_controller/ingress_nginx/templates/ingress-nginx-rolebinding.yml.j2
-
6roles/kubernetes-apps/ingress_controller/ingress_nginx/templates/ingress-nginx-sa.yml.j2
-
8roles/kubernetes-apps/ingress_controller/ingress_nginx/templates/ingress-nginx-tcp-servicecs-cm.yml.j2
-
8roles/kubernetes-apps/ingress_controller/ingress_nginx/templates/ingress-nginx-udp-servicecs-cm.yml.j2
-
8roles/kubernetes-apps/ingress_controller/meta/main.yml
-
1roles/kubespray-defaults/defaults/main.yaml
@ -0,0 +1,283 @@ |
|||||
|
Installation Guide |
||||
|
================== |
||||
|
|
||||
|
Contents |
||||
|
-------- |
||||
|
|
||||
|
- [Mandatory commands](#mandatory-commands) |
||||
|
- [Install without RBAC roles](#install-without-rbac-roles) |
||||
|
- [Install with RBAC roles](#install-with-rbac-roles) |
||||
|
- [Custom Provider](#custom-provider) |
||||
|
- [minikube](#minikube) |
||||
|
- [AWS](#aws) |
||||
|
- [GCE - GKE](#gce---gke) |
||||
|
- [Azure](#azure) |
||||
|
- [Baremetal](#baremetal) |
||||
|
- [Using Helm](#using-helm) |
||||
|
- [Verify installation](#verify-installation) |
||||
|
- [Detect installed version](#detect-installed-version) |
||||
|
- [Deploying the config-map](#deploying-the-config-map) |
||||
|
|
||||
|
Generic Deployment |
||||
|
------------------ |
||||
|
|
||||
|
The following resources are required for a generic deployment. |
||||
|
|
||||
|
### Mandatory commands |
||||
|
|
||||
|
``` console |
||||
|
curl https://raw.githubusercontent.com/kubernetes/ingress-nginx/master/deploy/namespace.yaml \ |
||||
|
| kubectl apply -f - |
||||
|
|
||||
|
curl https://raw.githubusercontent.com/kubernetes/ingress-nginx/master/deploy/default-backend.yaml \ |
||||
|
| kubectl apply -f - |
||||
|
|
||||
|
curl https://raw.githubusercontent.com/kubernetes/ingress-nginx/master/deploy/configmap.yaml \ |
||||
|
| kubectl apply -f - |
||||
|
|
||||
|
curl https://raw.githubusercontent.com/kubernetes/ingress-nginx/master/deploy/tcp-services-configmap.yaml \ |
||||
|
| kubectl apply -f - |
||||
|
|
||||
|
curl https://raw.githubusercontent.com/kubernetes/ingress-nginx/master/deploy/udp-services-configmap.yaml \ |
||||
|
| kubectl apply -f - |
||||
|
``` |
||||
|
|
||||
|
### Install without RBAC roles |
||||
|
|
||||
|
``` console |
||||
|
curl https://raw.githubusercontent.com/kubernetes/ingress-nginx/master/deploy/without-rbac.yaml \ |
||||
|
| kubectl apply -f - |
||||
|
``` |
||||
|
|
||||
|
### Install with RBAC roles |
||||
|
|
||||
|
Please check the [RBAC](rbac.md) document. |
||||
|
|
||||
|
``` console |
||||
|
curl https://raw.githubusercontent.com/kubernetes/ingress-nginx/master/deploy/rbac.yaml \ |
||||
|
| kubectl apply -f - |
||||
|
|
||||
|
curl https://raw.githubusercontent.com/kubernetes/ingress-nginx/master/deploy/with-rbac.yaml \ |
||||
|
| kubectl apply -f - |
||||
|
``` |
||||
|
|
||||
|
Custom Service Provider Deployment |
||||
|
---------------------------------- |
||||
|
|
||||
|
There are cloud provider specific yaml files. |
||||
|
|
||||
|
### minikube |
||||
|
|
||||
|
For standard usage: |
||||
|
|
||||
|
``` console |
||||
|
minikube addons enable ingress |
||||
|
``` |
||||
|
|
||||
|
For development: |
||||
|
|
||||
|
1. Disable the ingress addon: |
||||
|
|
||||
|
``` console |
||||
|
$ minikube addons disable ingress |
||||
|
``` |
||||
|
|
||||
|
2. Use the [docker daemon](https://github.com/kubernetes/minikube/blob/master/docs/reusing_the_docker_daemon.md) |
||||
|
3. [Build the image](../docs/development.md) |
||||
|
4. Perform [Mandatory commands](#mandatory-commands) |
||||
|
5. Install the `nginx-ingress-controller` deployment [without RBAC roles](#install-without-rbac-roles) or [with RBAC roles](#install-with-rbac-roles) |
||||
|
6. Edit the `nginx-ingress-controller` deployment to use your custom image. Local images can be seen by performing `docker images`. |
||||
|
|
||||
|
``` console |
||||
|
$ kubectl edit deployment nginx-ingress-controller -n ingress-nginx |
||||
|
``` |
||||
|
|
||||
|
edit the following section: |
||||
|
|
||||
|
``` yaml |
||||
|
image: <IMAGE-NAME>:<TAG> |
||||
|
imagePullPolicy: IfNotPresent |
||||
|
name: nginx-ingress-controller |
||||
|
``` |
||||
|
|
||||
|
7. Confirm the `nginx-ingress-controller` deployment exists: |
||||
|
|
||||
|
``` console |
||||
|
$ kubectl get pods -n ingress-nginx |
||||
|
NAME READY STATUS RESTARTS AGE |
||||
|
default-http-backend-66b447d9cf-rrlf9 1/1 Running 0 12s |
||||
|
nginx-ingress-controller-fdcdcd6dd-vvpgs 1/1 Running 0 11s |
||||
|
``` |
||||
|
|
||||
|
### AWS |
||||
|
|
||||
|
In AWS we use an Elastic Load Balancer (ELB) to expose the NGINX Ingress controller behind a Service of `Type=LoadBalancer`. |
||||
|
This setup requires to choose in which layer (L4 or L7) we want to configure the ELB: |
||||
|
|
||||
|
- [Layer 4](https://en.wikipedia.org/wiki/OSI_model#Layer_4:_Transport_Layer): use TCP as the listener protocol for ports 80 and 443. |
||||
|
- [Layer 7](https://en.wikipedia.org/wiki/OSI_model#Layer_7:_Application_Layer): use HTTP as the listener protocol for port 80 and terminate TLS in the ELB |
||||
|
|
||||
|
Patch the nginx ingress controller deployment to add the flag `--publish-service` |
||||
|
|
||||
|
``` console |
||||
|
kubectl patch deployment -n ingress-nginx nginx-ingress-controller --type='json' \ |
||||
|
--patch="$(curl https://raw.githubusercontent.com/kubernetes/ingress-nginx/master/deploy/publish-service-patch.yaml)" |
||||
|
``` |
||||
|
|
||||
|
For L4: |
||||
|
|
||||
|
``` console |
||||
|
kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/master/deploy/provider/aws/service-l4.yaml |
||||
|
kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/master/deploy/provider/aws/patch-configmap-l4.yaml |
||||
|
``` |
||||
|
|
||||
|
For L7: |
||||
|
|
||||
|
Change line of the file `provider/aws/service-l7.yaml` replacing the dummy id with a valid one `"arn:aws:acm:us-west-2:XXXXXXXX:certificate/XXXXXX-XXXXXXX-XXXXXXX-XXXXXXXX"` |
||||
|
Then execute: |
||||
|
|
||||
|
``` console |
||||
|
kubectl apply -f provider/aws/service-l7.yaml |
||||
|
kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/master/deploy/provider/aws/patch-configmap-l7.yaml |
||||
|
``` |
||||
|
|
||||
|
This example creates an ELB with just two listeners, one in port 80 and another in port 443 |
||||
|
|
||||
|
 |
||||
|
|
||||
|
If the ingress controller uses RBAC run: |
||||
|
|
||||
|
``` console |
||||
|
kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/master/deploy/provider/patch-service-with-rbac.yaml |
||||
|
``` |
||||
|
|
||||
|
If not run: |
||||
|
|
||||
|
``` console |
||||
|
kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/master/deploy/provider/patch-service-without-rbac.yaml |
||||
|
``` |
||||
|
|
||||
|
### GCE - GKE |
||||
|
|
||||
|
Patch the nginx ingress controller deployment to add the flag `--publish-service` |
||||
|
|
||||
|
``` console |
||||
|
kubectl patch deployment -n ingress-nginx nginx-ingress-controller --type='json' \ |
||||
|
--patch="$(curl https://raw.githubusercontent.com/kubernetes/ingress-nginx/master/deploy/publish-service-patch.yaml)" |
||||
|
``` |
||||
|
|
||||
|
``` console |
||||
|
curl https://raw.githubusercontent.com/kubernetes/ingress-nginx/master/deploy/provider/gce-gke/service.yaml \ |
||||
|
| kubectl apply -f - |
||||
|
``` |
||||
|
|
||||
|
If the ingress controller uses RBAC run: |
||||
|
|
||||
|
``` console |
||||
|
kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/master/deploy/provider/patch-service-with-rbac.yaml |
||||
|
``` |
||||
|
|
||||
|
If not run: |
||||
|
|
||||
|
``` console |
||||
|
kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/master/deploy/provider/patch-service-without-rbac.yaml |
||||
|
``` |
||||
|
|
||||
|
**Important Note:** proxy protocol is not supported in GCE/GKE |
||||
|
|
||||
|
### Azure |
||||
|
|
||||
|
Patch the nginx ingress controller deployment to add the flag `--publish-service` |
||||
|
|
||||
|
``` console |
||||
|
kubectl patch deployment -n ingress-nginx nginx-ingress-controller --type='json' \ |
||||
|
--patch="$(curl https://raw.githubusercontent.com/kubernetes/ingress-nginx/master/deploy/publish-service-patch.yaml)" |
||||
|
``` |
||||
|
|
||||
|
``` console |
||||
|
curl https://raw.githubusercontent.com/kubernetes/ingress-nginx/master/deploy/provider/azure/service.yaml \ |
||||
|
| kubectl apply -f - |
||||
|
``` |
||||
|
|
||||
|
If the ingress controller uses RBAC run: |
||||
|
|
||||
|
``` console |
||||
|
kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/master/deploy/provider/patch-service-with-rbac.yaml |
||||
|
``` |
||||
|
|
||||
|
If not run: |
||||
|
|
||||
|
``` console |
||||
|
kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/master/deploy/provider/patch-service-without-rbac.yaml |
||||
|
``` |
||||
|
|
||||
|
**Important Note:** proxy protocol is not supported in GCE/GKE |
||||
|
|
||||
|
### Baremetal |
||||
|
|
||||
|
Using [NodePort](https://kubernetes.io/docs/concepts/services-networking/service/#type-nodeport): |
||||
|
|
||||
|
``` console |
||||
|
curl https://raw.githubusercontent.com/kubernetes/ingress-nginx/master/deploy/provider/baremetal/service-nodeport.yaml \ |
||||
|
| kubectl apply -f - |
||||
|
``` |
||||
|
|
||||
|
Using Helm |
||||
|
---------- |
||||
|
|
||||
|
NGINX Ingress controller can be installed via [Helm](https://helm.sh/) using the chart [stable/nginx](https://github.com/kubernetes/charts/tree/master/stable/nginx-ingress) from the official charts repository. |
||||
|
To install the chart with the release name `my-nginx`: |
||||
|
|
||||
|
``` console |
||||
|
helm install stable/nginx-ingress --name my-nginx |
||||
|
``` |
||||
|
|
||||
|
If the kubernetes cluster has RBAC enabled, then run: |
||||
|
|
||||
|
``` console |
||||
|
helm install stable/nginx-ingress --name my-nginx --set rbac.create=true |
||||
|
``` |
||||
|
|
||||
|
Verify installation |
||||
|
------------------- |
||||
|
|
||||
|
To check if the ingress controller pods have started, run the following command: |
||||
|
|
||||
|
``` console |
||||
|
kubectl get pods --all-namespaces -l app=ingress-nginx --watch |
||||
|
``` |
||||
|
|
||||
|
Once the operator pods are running, you can cancel the above command by typing `Ctrl+C`. |
||||
|
Now, you are ready to create your first ingress. |
||||
|
|
||||
|
Detect installed version |
||||
|
------------------------ |
||||
|
|
||||
|
To detect which version of the ingress controller is running, exec into the pod and run `nginx-ingress-controller version` command. |
||||
|
|
||||
|
``` console |
||||
|
POD_NAMESPACE=ingress-nginx |
||||
|
POD_NAME=$(kubectl get pods -n $POD_NAMESPACE -l app=ingress-nginx -o jsonpath={.items[0].metadata.name}) |
||||
|
kubectl exec -it $POD_NAME -n $POD_NAMESPACE -- /nginx-ingress-controller --version |
||||
|
``` |
||||
|
|
||||
|
Deploying the config-map |
||||
|
------------------------ |
||||
|
|
||||
|
A config map can be used to configure system components for the nginx-controller. In order to begin using a config-map |
||||
|
make sure it has been created and is being used in the deployment. |
||||
|
|
||||
|
It is created as seen in the [Mandatory Commands](#mandatory-commands) section above. |
||||
|
|
||||
|
``` console |
||||
|
curl https://raw.githubusercontent.com/kubernetes/ingress-nginx/master/deploy/configmap.yaml \ |
||||
|
| kubectl apply -f - |
||||
|
``` |
||||
|
|
||||
|
and is setup to be used in the deployment [without-rbac](without-rbac.yaml) or [with-rbac](with-rbac.yaml) with the following line: |
||||
|
|
||||
|
``` yaml |
||||
|
- --configmap=$(POD_NAMESPACE)/nginx-configuration |
||||
|
``` |
||||
|
|
||||
|
For information on using the config-map, see its [user-guide](../docs/user-guide/configmap.md). |
@ -0,0 +1,10 @@ |
|||||
|
--- |
||||
|
ingress_nginx_default_backend_image_repo: gcr.io/google_containers/defaultbackend |
||||
|
ingress_nginx_default_backend_image_tag: 1.4 |
||||
|
|
||||
|
ingress_nginx_controller_image_repo: quay.io/kubernetes-ingress-controller/nginx-ingress-controller |
||||
|
ingress_nginx_controller_image_tag: 0.11.0 |
||||
|
|
||||
|
ingress_nginx_namespace: "ingress-nginx" |
||||
|
ingress_nginx_insecure_port: 80 |
||||
|
ingress_nginx_secure_port: 443 |
@ -0,0 +1,42 @@ |
|||||
|
--- |
||||
|
|
||||
|
- name: NGINX Ingress Controller | Create addon dir |
||||
|
file: |
||||
|
path: "{{ kube_config_dir }}/addons/ingress_nginx" |
||||
|
state: directory |
||||
|
owner: root |
||||
|
group: root |
||||
|
mode: 0755 |
||||
|
|
||||
|
- name: NGINX Ingress Controller | Create manifests |
||||
|
template: |
||||
|
src: "{{ item.file }}.j2" |
||||
|
dest: "{{ kube_config_dir }}/addons/ingress_nginx/{{ item.file }}" |
||||
|
with_items: |
||||
|
- { name: ingress-nginx-ns, file: ingress-nginx-ns.yml, type: ns } |
||||
|
- { name: ingress-nginx-sa, file: ingress-nginx-sa.yml, type: sa } |
||||
|
- { name: ingress-nginx-role, file: ingress-nginx-role.yml, type: role } |
||||
|
- { name: ingress-nginx-rolebinding, file: ingress-nginx-rolebinding.yml, type: rolebinding } |
||||
|
- { name: ingress-nginx-clusterrole, file: ingress-nginx-clusterrole.yml, type: clusterrole } |
||||
|
- { name: ingress-nginx-clusterrolebinding, file: ingress-nginx-clusterrolebinding.yml, type: clusterrolebinding } |
||||
|
- { name: ingress-nginx-cm, file: ingress-nginx-cm.yml, type: cm } |
||||
|
- { name: ingress-nginx-tcp-servicecs-cm, file: ingress-nginx-tcp-servicecs-cm.yml, type: cm } |
||||
|
- { name: ingress-nginx-udp-servicecs-cm, file: ingress-nginx-udp-servicecs-cm.yml, type: cm } |
||||
|
- { name: ingress-nginx-default-backend-svc, file: ingress-nginx-default-backend-svc.yml, type: svc } |
||||
|
- { name: ingress-nginx-default-backend-rs, file: ingress-nginx-default-backend-rs.yml, type: rs } |
||||
|
- { name: ingress-nginx-controller-ds, file: ingress-nginx-controller-ds.yml, type: ds } |
||||
|
register: ingress_nginx_manifests |
||||
|
when: |
||||
|
- inventory_hostname == groups['kube-master'][0] |
||||
|
|
||||
|
- name: NGINX Ingress Controller | Apply manifests |
||||
|
kube: |
||||
|
name: "{{ item.item.name }}" |
||||
|
namespace: "{{ ingress_nginx_namespace }}" |
||||
|
kubectl: "{{ bin_dir }}/kubectl" |
||||
|
resource: "{{ item.item.type }}" |
||||
|
filename: "{{ kube_config_dir }}/addons/ingress_nginx/{{ item.item.file }}" |
||||
|
state: "latest" |
||||
|
with_items: "{{ ingress_nginx_manifests.results }}" |
||||
|
when: |
||||
|
- inventory_hostname == groups['kube-master'][0] |
@ -0,0 +1,25 @@ |
|||||
|
--- |
||||
|
apiVersion: rbac.authorization.k8s.io/v1beta1 |
||||
|
kind: ClusterRole |
||||
|
metadata: |
||||
|
name: ingress-nginx |
||||
|
namespace: {{ ingress_nginx_namespace }} |
||||
|
rules: |
||||
|
- apiGroups: [""] |
||||
|
resources: ["configmaps", "endpoints", "nodes", "pods", "secrets"] |
||||
|
verbs: ["list", "watch"] |
||||
|
- apiGroups: [""] |
||||
|
resources: ["nodes"] |
||||
|
verbs: ["get"] |
||||
|
- apiGroups: [""] |
||||
|
resources: ["services"] |
||||
|
verbs: ["get", "list", "watch"] |
||||
|
- apiGroups: ["extensions"] |
||||
|
resources: ["ingresses"] |
||||
|
verbs: ["get", "list", "watch"] |
||||
|
- apiGroups: [""] |
||||
|
resources: ["events"] |
||||
|
verbs: ["create", "patch"] |
||||
|
- apiGroups: ["extensions"] |
||||
|
resources: ["ingresses/status"] |
||||
|
verbs: ["update"] |
@ -0,0 +1,14 @@ |
|||||
|
--- |
||||
|
apiVersion: rbac.authorization.k8s.io/v1beta1 |
||||
|
kind: ClusterRoleBinding |
||||
|
metadata: |
||||
|
name: ingress-nginx |
||||
|
namespace: {{ ingress_nginx_namespace }} |
||||
|
subjects: |
||||
|
- kind: ServiceAccount |
||||
|
name: ingress-nginx |
||||
|
namespace: {{ ingress_nginx_namespace }} |
||||
|
roleRef: |
||||
|
kind: ClusterRole |
||||
|
name: ingress-nginx |
||||
|
apiGroup: rbac.authorization.k8s.io |
@ -0,0 +1,8 @@ |
|||||
|
--- |
||||
|
apiVersion: v1 |
||||
|
kind: ConfigMap |
||||
|
metadata: |
||||
|
name: ingress-nginx |
||||
|
namespace: {{ ingress_nginx_namespace }} |
||||
|
labels: |
||||
|
k8s-app: ingress-nginx |
@ -0,0 +1,70 @@ |
|||||
|
--- |
||||
|
apiVersion: apps/v1 |
||||
|
kind: DaemonSet |
||||
|
metadata: |
||||
|
name: ingress-nginx-controller |
||||
|
namespace: {{ ingress_nginx_namespace }} |
||||
|
labels: |
||||
|
k8s-app: ingress-nginx |
||||
|
version: v{{ ingress_nginx_controller_image_tag }} |
||||
|
annotations: |
||||
|
prometheus.io/port: '10254' |
||||
|
prometheus.io/scrape: 'true' |
||||
|
spec: |
||||
|
selector: |
||||
|
matchLabels: |
||||
|
k8s-app: ingress-nginx |
||||
|
version: v{{ ingress_nginx_controller_image_tag }} |
||||
|
template: |
||||
|
metadata: |
||||
|
labels: |
||||
|
k8s-app: ingress-nginx |
||||
|
version: v{{ ingress_nginx_controller_image_tag }} |
||||
|
spec: |
||||
|
serviceAccountName: ingress-nginx |
||||
|
containers: |
||||
|
- name: ingress-nginx-controller |
||||
|
image: {{ ingress_nginx_controller_image_repo }}:{{ ingress_nginx_controller_image_tag }} |
||||
|
imagePullPolicy: {{ k8s_image_pull_policy }} |
||||
|
args: |
||||
|
- /nginx-ingress-controller |
||||
|
- --default-backend-service=$(POD_NAMESPACE)/ingress-nginx-default-backend |
||||
|
- --configmap=$(POD_NAMESPACE)/ingress-nginx |
||||
|
- --tcp-services-configmap=$(POD_NAMESPACE)/ingress-nginx-tcp-services |
||||
|
- --udp-services-configmap=$(POD_NAMESPACE)/ingress-nginx-udp-services |
||||
|
- --annotations-prefix=nginx.ingress.kubernetes.io |
||||
|
env: |
||||
|
- name: POD_NAME |
||||
|
valueFrom: |
||||
|
fieldRef: |
||||
|
fieldPath: metadata.name |
||||
|
- name: POD_NAMESPACE |
||||
|
valueFrom: |
||||
|
fieldRef: |
||||
|
fieldPath: metadata.namespace |
||||
|
ports: |
||||
|
- name: http |
||||
|
containerPort: 80 |
||||
|
hostPort: {{ ingress_nginx_insecure_port }} |
||||
|
- name: https |
||||
|
containerPort: 443 |
||||
|
hostPort: {{ ingress_nginx_secure_port }} |
||||
|
livenessProbe: |
||||
|
failureThreshold: 3 |
||||
|
httpGet: |
||||
|
path: /healthz |
||||
|
port: 10254 |
||||
|
scheme: HTTP |
||||
|
initialDelaySeconds: 10 |
||||
|
periodSeconds: 10 |
||||
|
successThreshold: 1 |
||||
|
timeoutSeconds: 1 |
||||
|
readinessProbe: |
||||
|
failureThreshold: 3 |
||||
|
httpGet: |
||||
|
path: /healthz |
||||
|
port: 10254 |
||||
|
scheme: HTTP |
||||
|
periodSeconds: 10 |
||||
|
successThreshold: 1 |
||||
|
timeoutSeconds: 1 |
@ -0,0 +1,37 @@ |
|||||
|
--- |
||||
|
apiVersion: apps/v1 |
||||
|
kind: ReplicaSet |
||||
|
metadata: |
||||
|
name: ingress-nginx-default-backend-v{{ ingress_nginx_default_backend_image_tag }} |
||||
|
namespace: {{ ingress_nginx_namespace }} |
||||
|
labels: |
||||
|
k8s-app: ingress-nginx-default-backend |
||||
|
version: v{{ ingress_nginx_default_backend_image_tag }} |
||||
|
spec: |
||||
|
replicas: 1 |
||||
|
selector: |
||||
|
matchLabels: |
||||
|
k8s-app: ingress-nginx-default-backend |
||||
|
version: v{{ ingress_nginx_default_backend_image_tag }} |
||||
|
template: |
||||
|
metadata: |
||||
|
labels: |
||||
|
k8s-app: ingress-nginx-default-backend |
||||
|
version: v{{ ingress_nginx_default_backend_image_tag }} |
||||
|
spec: |
||||
|
terminationGracePeriodSeconds: 60 |
||||
|
containers: |
||||
|
- name: ingress-nginx-default-backend |
||||
|
# Any image is permissible as long as: |
||||
|
# 1. It serves a 404 page at / |
||||
|
# 2. It serves 200 on a /healthz endpoint |
||||
|
image: {{ ingress_nginx_default_backend_image_repo }}:{{ ingress_nginx_default_backend_image_tag }} |
||||
|
livenessProbe: |
||||
|
httpGet: |
||||
|
path: /healthz |
||||
|
port: 8080 |
||||
|
scheme: HTTP |
||||
|
initialDelaySeconds: 30 |
||||
|
timeoutSeconds: 5 |
||||
|
ports: |
||||
|
- containerPort: 8080 |
@ -0,0 +1,14 @@ |
|||||
|
--- |
||||
|
apiVersion: v1 |
||||
|
kind: Service |
||||
|
metadata: |
||||
|
name: ingress-nginx-default-backend |
||||
|
namespace: {{ ingress_nginx_namespace }} |
||||
|
labels: |
||||
|
k8s-app: ingress-nginx-default-backend |
||||
|
spec: |
||||
|
ports: |
||||
|
- port: 80 |
||||
|
targetPort: 8080 |
||||
|
selector: |
||||
|
k8s-app: ingress-nginx-default-backend |
@ -0,0 +1,5 @@ |
|||||
|
--- |
||||
|
apiVersion: v1 |
||||
|
kind: Namespace |
||||
|
metadata: |
||||
|
name: {{ ingress_nginx_namespace }} |
@ -0,0 +1,24 @@ |
|||||
|
--- |
||||
|
apiVersion: rbac.authorization.k8s.io/v1beta1 |
||||
|
kind: Role |
||||
|
metadata: |
||||
|
name: ingress-nginx |
||||
|
namespace: {{ ingress_nginx_namespace }} |
||||
|
rules: |
||||
|
- apiGroups: [""] |
||||
|
resources: ["configmaps", "pods", "secrets", "namespaces"] |
||||
|
verbs: ["get"] |
||||
|
- apiGroups: [""] |
||||
|
resources: ["configmaps"] |
||||
|
# Defaults to "<election-id>-<ingress-class>" |
||||
|
# Here: "<ingress-controller-leader>-<nginx>" |
||||
|
# This has to be adapted if you change either parameter |
||||
|
# when launching the nginx-ingress-controller. |
||||
|
resourceNames: ["ingress-controller-leader-nginx"] |
||||
|
verbs: ["get", "update"] |
||||
|
- apiGroups: [""] |
||||
|
resources: ["configmaps"] |
||||
|
verbs: ["create"] |
||||
|
- apiGroups: [""] |
||||
|
resources: ["endpoints"] |
||||
|
verbs: ["get"] |
@ -0,0 +1,14 @@ |
|||||
|
--- |
||||
|
apiVersion: rbac.authorization.k8s.io/v1beta1 |
||||
|
kind: RoleBinding |
||||
|
metadata: |
||||
|
name: ingress-nginx |
||||
|
namespace: {{ ingress_nginx_namespace }} |
||||
|
subjects: |
||||
|
- kind: ServiceAccount |
||||
|
name: ingress-nginx |
||||
|
namespace: {{ ingress_nginx_namespace }} |
||||
|
roleRef: |
||||
|
apiGroup: rbac.authorization.k8s.io |
||||
|
kind: Role |
||||
|
name: ingress-nginx |
@ -0,0 +1,6 @@ |
|||||
|
--- |
||||
|
apiVersion: v1 |
||||
|
kind: ServiceAccount |
||||
|
metadata: |
||||
|
name: ingress-nginx |
||||
|
namespace: {{ ingress_nginx_namespace }} |
@ -0,0 +1,8 @@ |
|||||
|
--- |
||||
|
apiVersion: v1 |
||||
|
kind: ConfigMap |
||||
|
metadata: |
||||
|
name: ingress-nginx-tcp-services |
||||
|
namespace: {{ ingress_nginx_namespace }} |
||||
|
labels: |
||||
|
k8s-app: ingress-nginx |
@ -0,0 +1,8 @@ |
|||||
|
--- |
||||
|
apiVersion: v1 |
||||
|
kind: ConfigMap |
||||
|
metadata: |
||||
|
name: ingress-nginx-udp-services |
||||
|
namespace: {{ ingress_nginx_namespace }} |
||||
|
labels: |
||||
|
k8s-app: ingress-nginx |
@ -0,0 +1,8 @@ |
|||||
|
--- |
||||
|
dependencies: |
||||
|
- role: kubernetes-apps/ingress_controller/ingress_nginx |
||||
|
when: ingress_nginx_enabled |
||||
|
tags: |
||||
|
- apps |
||||
|
- ingress-nginx |
||||
|
- ingress-controller |
Write
Preview
Loading…
Cancel
Save