traefik-helmchartconfig.yaml 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. apiVersion: helm.cattle.io/v1
  2. kind: HelmChartConfig
  3. metadata:
  4. name: traefik
  5. namespace: kube-system
  6. spec:
  7. valuesContent: |-
  8. additionalArguments:
  9. - "--entrypoints.websecure.proxyProtocol.trustedIPs=127.0.0.1/32,172.16.69.0/24"
  10. - "--entrypoints.web.http.redirections.entryPoint.to=:443"
  11. - "--entrypoints.web.http.redirections.entrypoint.scheme=https"
  12. # Auto cert renewal via cloudflare
  13. - "--certificatesresolvers.letsencrypt.acme.email=joshbicking@comcast.net"
  14. - "--certificatesresolvers.letsencrypt.acme.storage=/data/acme.json"
  15. - "--certificatesresolvers.letsencrypt.acme.dnschallenge.provider=cloudflare"
  16. - "--certificatesresolvers.letsencrypt.acme.dnschallenge.resolvers=1.1.1.1:53,8.8.8.8:53"
  17. - "--entrypoints.websecure.http.tls.certResolver=letsencrypt"
  18. # Main
  19. - "--entrypoints.websecure.http.tls.domains[0].main=jibby.org"
  20. - "--entrypoints.websecure.http.tls.domains[0].sans=*.jibby.org"
  21. # LAN-only
  22. - "--entrypoints.websecure.http.tls.domains[1].main=lan.jibby.org"
  23. - "--entrypoints.websecure.http.tls.domains[1].sans=*.lan.jibby.org"
  24. # Configuration for extra routers
  25. - "--providers.file.directory=/config"
  26. - "--log.level=INFO"
  27. # debug, uncomment for testing
  28. #- "--log.level=DEBUG"
  29. #- "--certificatesresolvers.letsencrypt.acme.caServer=https://acme-staging-v02.api.letsencrypt.org/directory"
  30. ports:
  31. metrics:
  32. expose: true
  33. volumes:
  34. - name: traefik-config
  35. mountPath: "/config"
  36. type: configMap
  37. env:
  38. - name: CLOUDFLARE_EMAIL
  39. valueFrom:
  40. secretKeyRef:
  41. name: cloudflare-secrets
  42. key: email
  43. optional: false
  44. - name: CLOUDFLARE_API_KEY
  45. valueFrom:
  46. secretKeyRef:
  47. name: cloudflare-secrets
  48. key: api-key
  49. optional: false
  50. persistence:
  51. enabled: true
  52. storageClass: ceph-block
  53. # Fix for acme.json file being changed to 660 from 600
  54. # This can manifest as the incredibly unhelpful "the router <router name> uses a non-existent resolver: <resolver name>"
  55. # https://github.com/traefik/traefik/issues/10241
  56. podSecurityContext:
  57. fsGroup: 65532
  58. deployment:
  59. initContainers:
  60. # The "volume-permissions" init container is required if you run into permission issues.
  61. # Related issue: https://github.com/traefik/traefik-helm-chart/issues/396
  62. - name: volume-permissions
  63. image: busybox:latest
  64. command: ["sh", "-c", "touch /data/acme.json; chmod -v 600 /data/acme.json"]
  65. securityContext:
  66. runAsNonRoot: true
  67. runAsGroup: 65532
  68. runAsUser: 65532
  69. volumeMounts:
  70. - name: data
  71. mountPath: /data
  72. # ACME functionality is not supported when running Traefik as a DaemonSet
  73. #deployment:
  74. # kind: DaemonSet
  75. service:
  76. spec:
  77. # Required to show real IP to proxied services
  78. externalTrafficPolicy: Local
  79. # isn't necessary anymore, but reduces hairpinning
  80. affinity:
  81. nodeAffinity:
  82. requiredDuringSchedulingIgnoredDuringExecution:
  83. nodeSelectorTerms:
  84. - matchExpressions:
  85. - key: cluster-ingress
  86. operator: In
  87. values:
  88. - "true"