├── nginx-ingress-controller-config-map.yaml ├── default-backend-service.yaml ├── nginx-ingress-controller-service.yaml ├── nginx-ingress.yaml ├── app-service.yaml ├── app-ingress.yaml ├── default-backend-deployment.yaml ├── app-deployment.yaml ├── nginx-ingress-controller-roles.yaml ├── nginx-ingress-controller-deployment.yaml └── nginx-ingress-controller.yml /nginx-ingress-controller-config-map.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: ConfigMap 3 | metadata: 4 | name: nginx-ingress-controller-conf 5 | labels: 6 | app: nginx-ingress-lb 7 | data: 8 | enable-vts-status: 'true' 9 | -------------------------------------------------------------------------------- /default-backend-service.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: Service 3 | metadata: 4 | name: default-backend 5 | spec: 6 | ports: 7 | - port: 80 8 | protocol: TCP 9 | targetPort: 8080 10 | selector: 11 | app: default-backend 12 | -------------------------------------------------------------------------------- /nginx-ingress-controller-service.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: Service 3 | metadata: 4 | name: nginx-ingress 5 | spec: 6 | type: NodePort 7 | ports: 8 | - port: 80 9 | nodePort: 30000 10 | name: http 11 | - port: 18080 12 | nodePort: 32000 13 | name: http-mgmt 14 | selector: 15 | app: nginx-ingress-lb 16 | -------------------------------------------------------------------------------- /nginx-ingress.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: extensions/v1beta1 2 | kind: Ingress 3 | metadata: 4 | name: nginx-ingress 5 | spec: 6 | rules: 7 | - host: ec2-107-23-3-225.compute-1.amazonaws.com 8 | http: 9 | paths: 10 | - backend: 11 | serviceName: nginx-ingress 12 | servicePort: 18080 13 | path: /nginx_status 14 | -------------------------------------------------------------------------------- /app-service.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: Service 3 | metadata: 4 | name: appsvc1 5 | spec: 6 | ports: 7 | - port: 80 8 | protocol: TCP 9 | targetPort: 80 10 | selector: 11 | app: app1 12 | --- 13 | apiVersion: v1 14 | kind: Service 15 | metadata: 16 | name: appsvc2 17 | spec: 18 | ports: 19 | - port: 80 20 | protocol: TCP 21 | targetPort: 80 22 | selector: 23 | app: app2 24 | -------------------------------------------------------------------------------- /app-ingress.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: extensions/v1beta1 2 | kind: Ingress 3 | metadata: 4 | annotations: 5 | nginx.ingress.kubernetes.io/rewrite-target: / 6 | name: app-ingress 7 | spec: 8 | rules: 9 | - host: ec2-107-23-3-225.compute-1.amazonaws.com 10 | http: 11 | paths: 12 | - backend: 13 | serviceName: appsvc1 14 | servicePort: 80 15 | path: /app1 16 | - backend: 17 | serviceName: appsvc2 18 | servicePort: 80 19 | path: /app2 20 | -------------------------------------------------------------------------------- /default-backend-deployment.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: extensions/v1beta1 2 | kind: Deployment 3 | metadata: 4 | name: default-backend 5 | spec: 6 | replicas: 2 7 | template: 8 | metadata: 9 | labels: 10 | app: default-backend 11 | spec: 12 | terminationGracePeriodSeconds: 60 13 | containers: 14 | - name: default-backend 15 | image: gcr.io/google_containers/defaultbackend:1.0 16 | livenessProbe: 17 | httpGet: 18 | path: /healthz 19 | port: 8080 20 | scheme: HTTP 21 | initialDelaySeconds: 30 22 | timeoutSeconds: 5 23 | ports: 24 | - containerPort: 8080 25 | resources: 26 | limits: 27 | cpu: 10m 28 | memory: 20Mi 29 | requests: 30 | cpu: 10m 31 | memory: 20Mi 32 | -------------------------------------------------------------------------------- /app-deployment.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: extensions/v1beta1 2 | kind: Deployment 3 | metadata: 4 | name: app1 5 | spec: 6 | replicas: 2 7 | template: 8 | metadata: 9 | labels: 10 | app: app1 11 | spec: 12 | containers: 13 | - name: app1 14 | image: dockersamples/static-site 15 | env: 16 | - name: AUTHOR 17 | value: GIROPOPS 18 | ports: 19 | - containerPort: 80 20 | --- 21 | apiVersion: extensions/v1beta1 22 | kind: Deployment 23 | metadata: 24 | name: app2 25 | spec: 26 | replicas: 2 27 | template: 28 | metadata: 29 | labels: 30 | app: app2 31 | spec: 32 | containers: 33 | - name: app2 34 | image: dockersamples/static-site 35 | env: 36 | - name: AUTHOR 37 | value: STRIGUS 38 | ports: 39 | - containerPort: 80 40 | -------------------------------------------------------------------------------- /nginx-ingress-controller-roles.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: ServiceAccount 3 | metadata: 4 | name: nginx 5 | namespace: ingress 6 | --- 7 | kind: ClusterRole 8 | apiVersion: rbac.authorization.k8s.io/v1beta1 9 | metadata: 10 | name: nginx-role 11 | rules: 12 | - apiGroups: 13 | - "" 14 | - "extensions" 15 | resources: 16 | - configmaps 17 | - secrets 18 | - endpoints 19 | - ingresses 20 | - nodes 21 | - pods 22 | verbs: 23 | - list 24 | - watch 25 | - apiGroups: 26 | - "" 27 | resources: 28 | - services 29 | verbs: 30 | - list 31 | - watch 32 | - get 33 | - update 34 | - apiGroups: 35 | - "extensions" 36 | resources: 37 | - ingresses 38 | verbs: 39 | - get 40 | - apiGroups: 41 | - "" 42 | resources: 43 | - events 44 | verbs: 45 | - create 46 | - apiGroups: 47 | - "extensions" 48 | resources: 49 | - ingresses/status 50 | verbs: 51 | - update 52 | - apiGroups: 53 | - "" 54 | resources: 55 | - configmaps 56 | verbs: 57 | - get 58 | --- 59 | kind: ClusterRoleBinding 60 | apiVersion: rbac.authorization.k8s.io/v1beta1 61 | metadata: 62 | name: nginx-role 63 | namespace: ingress 64 | roleRef: 65 | apiGroup: rbac.authorization.k8s.io 66 | kind: ClusterRole 67 | name: nginx-role 68 | subjects: 69 | - kind: ServiceAccount 70 | name: nginx 71 | namespace: ingress 72 | -------------------------------------------------------------------------------- /nginx-ingress-controller-deployment.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: extensions/v1beta1 2 | kind: Deployment 3 | metadata: 4 | name: nginx-ingress-controller 5 | spec: 6 | replicas: 1 7 | revisionHistoryLimit: 3 8 | template: 9 | metadata: 10 | labels: 11 | app: nginx-ingress-lb 12 | spec: 13 | terminationGracePeriodSeconds: 60 14 | serviceAccount: nginx 15 | containers: 16 | - name: nginx-ingress-controller 17 | image: quay.io/kubernetes-ingress-controller/nginx-ingress-controller:0.9.0 18 | imagePullPolicy: Always 19 | readinessProbe: 20 | httpGet: 21 | path: /healthz 22 | port: 10254 23 | scheme: HTTP 24 | livenessProbe: 25 | httpGet: 26 | path: /healthz 27 | port: 10254 28 | scheme: HTTP 29 | initialDelaySeconds: 10 30 | timeoutSeconds: 5 31 | args: 32 | - /nginx-ingress-controller 33 | - --default-backend-service=ingress/default-backend 34 | - --configmap=ingress/nginx-ingress-controller-conf 35 | - --v=2 36 | env: 37 | - name: POD_NAME 38 | valueFrom: 39 | fieldRef: 40 | fieldPath: metadata.name 41 | - name: POD_NAMESPACE 42 | valueFrom: 43 | fieldRef: 44 | fieldPath: metadata.namespace 45 | ports: 46 | - containerPort: 80 47 | - containerPort: 18080 48 | -------------------------------------------------------------------------------- /nginx-ingress-controller.yml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: Service 3 | metadata: 4 | name: nginx-ingress 5 | spec: 6 | type: LoadBalancer 7 | ports: 8 | - port: 80 9 | name: http 10 | - port: 443 11 | name: https 12 | selector: 13 | k8s-app: nginx-ingress-lb 14 | --- 15 | apiVersion: extensions/v1beta1 16 | kind: Deployment 17 | metadata: 18 | name: nginx-ingress-controller 19 | spec: 20 | replicas: 2 21 | revisionHistoryLimit: 3 22 | template: 23 | metadata: 24 | labels: 25 | k8s-app: nginx-ingress-lb 26 | spec: 27 | terminationGracePeriodSeconds: 60 28 | containers: 29 | - name: nginx-ingress-controller 30 | image: gcr.io/google_containers/nginx-ingress-controller:0.8.3 31 | imagePullPolicy: Always 32 | readinessProbe: 33 | httpGet: 34 | path: /healthz 35 | port: 18080 36 | scheme: HTTP 37 | livenessProbe: 38 | httpGet: 39 | path: /healthz 40 | port: 18080 41 | scheme: HTTP 42 | initialDelaySeconds: 10 43 | timeoutSeconds: 5 44 | args: 45 | - /nginx-ingress-controller 46 | - --default-backend-service=$(POD_NAMESPACE)/default-http-backend 47 | - --default-ssl-certificate=$(POD_NAMESPACE)/tls-certificate 48 | # Use downward API 49 | env: 50 | - name: POD_NAME 51 | valueFrom: 52 | fieldRef: 53 | fieldPath: metadata.name 54 | - name: POD_NAMESPACE 55 | valueFrom: 56 | fieldRef: 57 | fieldPath: metadata.namespace 58 | ports: 59 | - containerPort: 80 60 | - containerPort: 443 61 | volumeMounts: 62 | - name: tls-dhparam-vol 63 | mountPath: /etc/nginx-ssl/dhparam 64 | - name: nginx-template-volume 65 | mountPath: /etc/nginx/template 66 | readOnly: true 67 | volumes: 68 | - name: tls-dhparam-vol 69 | secret: 70 | secretName: tls-dhparam 71 | - name: nginx-template-volume 72 | configMap: 73 | name: nginx-template 74 | items: 75 | - key: nginx.tmpl 76 | path: nginx.tmpl 77 | --------------------------------------------------------------------------------