# Traefik v3 as the cluster edge: hostNetwork 80/443, global http->https redirect. # TLS certificates are provisioned by cert-manager into Ingress secrets. apiVersion: v1 kind: ServiceAccount metadata: name: traefik namespace: kube-system --- apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: name: traefik rules: - apiGroups: [""] resources: ["services", "endpoints", "secrets", "namespaces"] verbs: ["get", "list", "watch"] - apiGroups: ["networking.k8s.io"] resources: ["ingresses", "ingressclasses"] verbs: ["get", "list", "watch"] - apiGroups: ["networking.k8s.io"] resources: ["ingresses/status"] verbs: ["update"] --- apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: name: traefik roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: traefik subjects: - kind: ServiceAccount name: traefik namespace: kube-system --- apiVersion: apps/v1 kind: DaemonSet metadata: name: traefik namespace: kube-system labels: app: traefik spec: selector: matchLabels: app: traefik template: metadata: labels: app: traefik spec: serviceAccountName: traefik hostNetwork: true dnsPolicy: ClusterFirstWithHostNet nodeSelector: kubernetes.io/hostname: djg-oracle-sl tolerations: - key: node-role.kubernetes.io/master operator: Exists effect: NoSchedule - key: node-role.kubernetes.io/control-plane operator: Exists effect: NoSchedule containers: - name: traefik image: traefik:v3.3 args: - --providers.kubernetesingress - --entrypoints.web.address=:80 - --entrypoints.web.http.redirections.entrypoint.to=websecure - --entrypoints.web.http.redirections.entrypoint.scheme=https - --entrypoints.websecure.address=:443 - --ping=true - --ping.entrypoint=health - --entrypoints.health.address=:8082 ports: - containerPort: 80 hostPort: 80 protocol: TCP - containerPort: 443 hostPort: 443 protocol: TCP resources: requests: cpu: 50m memory: 64Mi limits: memory: 256Mi readinessProbe: httpGet: path: /ping port: 8082 initialDelaySeconds: 3 periodSeconds: 10 livenessProbe: httpGet: path: /ping port: 8082 initialDelaySeconds: 10 periodSeconds: 30