Skip to content

Instantly share code, notes, and snippets.

@mbentley
Created May 4, 2018 13:08
Show Gist options
  • Select an option

  • Save mbentley/037abdf34fab721604ac02dfa5459b17 to your computer and use it in GitHub Desktop.

Select an option

Save mbentley/037abdf34fab721604ac02dfa5459b17 to your computer and use it in GitHub Desktop.

Revisions

  1. Matt Bentley created this gist May 4, 2018.
    171 changes: 171 additions & 0 deletions ingress-nginx.yml
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,171 @@
    apiVersion: v1
    kind: Namespace
    metadata:
    name: ingress-nginx
    ---
    apiVersion: extensions/v1beta1
    kind: Deployment
    metadata:
    name: default-http-backend
    labels:
    app: default-http-backend
    namespace: ingress-nginx
    spec:
    replicas: 1
    template:
    metadata:
    labels:
    app: default-http-backend
    spec:
    terminationGracePeriodSeconds: 60
    containers:
    - name: default-http-backend
    # Any image is permissable as long as:
    # 1. It serves a 404 page at /
    # 2. It serves 200 on a /healthz endpoint
    image: gcr.io/google_containers/defaultbackend:1.4
    livenessProbe:
    httpGet:
    path: /healthz
    port: 8080
    scheme: HTTP
    initialDelaySeconds: 30
    timeoutSeconds: 5
    ports:
    - containerPort: 8080
    resources:
    limits:
    cpu: 10m
    memory: 20Mi
    requests:
    cpu: 10m
    memory: 20Mi
    ---
    apiVersion: v1
    kind: Service
    metadata:
    name: default-http-backend
    namespace: ingress-nginx
    labels:
    app: default-http-backend
    spec:
    ports:
    - port: 80
    targetPort: 8080
    selector:
    app: default-http-backend
    ---
    kind: ConfigMap
    apiVersion: v1
    metadata:
    name: nginx-configuration
    namespace: ingress-nginx
    labels:
    app: ingress-nginx
    ---
    kind: ConfigMap
    apiVersion: v1
    metadata:
    name: tcp-services
    namespace: ingress-nginx
    ---
    kind: ConfigMap
    apiVersion: v1
    metadata:
    name: udp-services
    namespace: ingress-nginx
    ---
    apiVersion: extensions/v1beta1
    kind: Deployment
    metadata:
    name: nginx-ingress-controller
    namespace: ingress-nginx
    spec:
    replicas: 1
    selector:
    matchLabels:
    app: ingress-nginx
    template:
    metadata:
    labels:
    app: ingress-nginx
    annotations:
    prometheus.io/port: '10254'
    prometheus.io/scrape: 'true'
    spec:
    initContainers:
    - command:
    - sh
    - -c
    - sysctl -w net.core.somaxconn=32768; sysctl -w net.ipv4.ip_local_port_range="1024 65535"
    image: alpine:3.6
    imagePullPolicy: IfNotPresent
    name: sysctl
    securityContext:
    privileged: true
    containers:
    - name: nginx-ingress-controller
    image: quay.io/kubernetes-ingress-controller/nginx-ingress-controller:0.10.2
    args:
    - /nginx-ingress-controller
    - --default-backend-service=$(POD_NAMESPACE)/default-http-backend
    - --configmap=$(POD_NAMESPACE)/nginx-configuration
    - --tcp-services-configmap=$(POD_NAMESPACE)/tcp-services
    - --udp-services-configmap=$(POD_NAMESPACE)/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
    - name: https
    containerPort: 443
    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
    ---
    apiVersion: v1
    kind: Service
    metadata:
    name: ingress-nginx
    namespace: ingress-nginx
    spec:
    type: NodePort
    ports:
    - name: http
    port: 80
    targetPort: 80
    # specifically utilize port 35534
    nodePort: 35534
    protocol: TCP
    - name: https
    port: 443
    targetPort: 443
    # specifically utilize port 35535
    nodePort: 35535
    protocol: TCP
    selector:
    app: ingress-nginx