# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements.  See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership.  The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License.  You may obtain a copy of the License at
#
#   http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied.  See the License for the
# specific language governing permissions and limitations
# under the License.
---
apiVersion: v1
kind: Service
metadata:
  name: traefik
  annotations:
    service.beta.kubernetes.io/cloudstack-load-balancer-proxy-protocol: enabled
spec:
  type: LoadBalancer
  ports:
  - name: http
    port: 80
    targetPort: http
  - name: https
    port: 443
    targetPort: https
---
apiVersion: v1
kind: ConfigMap
metadata:
  name: traefik-conf
data:
  traefik.toml: |
    defaultEntryPoints = ["http"]
    [entryPoints]
      [entryPoints.http]
      address = ":80"
        [entryPoints.http.proxyProtocol]
        trustedIPs = ["127.0.0.1/32", "10.0.0.1/32"]
      [entryPoints.https]
      address = ":443"
        [entryPoints.https.proxyProtocol]
        trustedIPs = ["127.0.0.1/32", "10.0.0.1/32"]
---
apiVersion: apps/v1
kind: DaemonSet
metadata:
  name: traefik-ingress-controller
spec:
  selector:
    matchLabels:
      name: traefik-ingress-controller
  template:
    metadata:
      labels:
        name: traefik-ingress-controller
    spec:
      hostNetwork: true
      containers:
      - args:
        - --configfile=/config/traefik.toml
        image: traefik:1.7.12
        imagePullPolicy: Always
        name: traefik-ingress
        ports:
        - containerPort: 80
          hostPort: 80
          name: http
          protocol: TCP
        - containerPort: 443
          hostPort: 443
          name: https
          protocol: TCP
        volumeMounts:
        - mountPath: /config
          name: config
      volumes:
      - configMap:
          defaultMode: 420
          name: traefik-conf
        name: config
