helmchartconfig.yaml 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130
  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. volumes:
  31. - name: traefik-config
  32. mountPath: "/config"
  33. type: configMap
  34. ports:
  35. gogsssh:
  36. port: 2222
  37. expose:
  38. default: true
  39. exposedPort: 2222
  40. protocol: TCP
  41. env:
  42. - name: CLOUDFLARE_EMAIL
  43. valueFrom:
  44. secretKeyRef:
  45. name: cloudflare-secrets
  46. key: email
  47. optional: false
  48. - name: CLOUDFLARE_API_KEY
  49. valueFrom:
  50. secretKeyRef:
  51. name: cloudflare-secrets
  52. key: api-key
  53. optional: false
  54. # TODO can this be something with ReadWriteMany?
  55. persistence:
  56. enabled: true
  57. storageClass: ceph-block-ssd
  58. metrics:
  59. prometheus:
  60. addServicesLabels: true
  61. logs:
  62. access:
  63. enabled: true
  64. ingressRoute:
  65. dashboard:
  66. enabled: true
  67. matchRule: Host(`traefik.lan.jibby.org`)
  68. entryPoints: ["websecure"]
  69. middlewares:
  70. - name: lanonly
  71. namespace: kube-system
  72. - name: traefik-dash-auth
  73. namespace: kube-system
  74. # Fix for acme.json file being changed to 660 from 600
  75. # This can manifest as the incredibly unhelpful "the router <router name> uses a non-existent resolver: <resolver name>"
  76. # https://github.com/traefik/traefik/issues/10241
  77. podSecurityContext:
  78. fsGroup: 65532
  79. deployment:
  80. initContainers:
  81. # The "volume-permissions" init container is required if you run into permission issues.
  82. # Related issue: https://github.com/traefik/traefik-helm-chart/issues/396
  83. - name: volume-permissions
  84. image: busybox:latest
  85. command: ["sh", "-c", "touch /data/acme.json; chmod -v 600 /data/acme.json"]
  86. securityContext:
  87. runAsNonRoot: true
  88. runAsGroup: 65532
  89. runAsUser: 65532
  90. volumeMounts:
  91. - name: data
  92. mountPath: /data
  93. podAnnotations:
  94. backup.velero.io/backup-volumes-excludes: data
  95. # ACME functionality is not supported when running Traefik as a DaemonSet
  96. #deployment:
  97. # kind: DaemonSet
  98. service:
  99. spec:
  100. # Required to show real IP to proxied services
  101. externalTrafficPolicy: Local
  102. providers:
  103. kubernetesCRD:
  104. # Allows IngressRoutes to use middleware from a different namespace
  105. allowCrossNamespace: true
  106. # pin pod to cluster-ingress node, so ServiceLB gives it the right external IP
  107. affinity:
  108. nodeAffinity:
  109. requiredDuringSchedulingIgnoredDuringExecution:
  110. nodeSelectorTerms:
  111. - matchExpressions:
  112. - key: cluster-ingress
  113. operator: In
  114. values:
  115. - "true"