--- apiVersion: v1 kind: ServiceAccount metadata: name: traefik-ingress-controller namespace: kube-system --- kind: Deployment apiVersion: apps/v1 metadata: name: traefik namespace: kube-system labels: app: traefik spec: replicas: 1 selector: matchLabels: app: traefik template: metadata: labels: app: traefik spec: serviceAccountName: traefik-ingress-controller containers: - name: traefik image: traefik:v2.10 args: - --api.insecure=true - --accesslog - --entrypoints.web.Address=:80 - --entrypoints.websecure.Address=:443 - --providers.kubernetescrd - --providers.kubernetesingress - --providers.kubernetesingress.ingressclass=traefik - --entrypoints.websecure.http.tls=true - --certificatesresolvers.default.acme.tlschallenge - --certificatesresolvers.default.acme.email=admin@example.com - --certificatesresolvers.default.acme.storage=/data/acme.json ports: - name: web containerPort: 80 - name: websecure containerPort: 443 - name: admin containerPort: 8080 volumeMounts: - name: data mountPath: /data volumes: - name: data emptyDir: {} --- apiVersion: v1 kind: Service metadata: name: traefik namespace: kube-system spec: type: LoadBalancer selector: app: traefik ports: - protocol: TCP port: 80 name: web targetPort: 80 - protocol: TCP port: 443 name: websecure targetPort: 443 - protocol: TCP port: 8080 name: admin targetPort: 8080