020-deployment.yaml 8.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258
  1. ###############################
  2. # ServiceAccount
  3. ###############################
  4. ---
  5. apiVersion: v1
  6. kind: ServiceAccount
  7. metadata:
  8. name: traefik
  9. namespace: kube-system
  10. # ---
  11. # apiVersion: v1
  12. # kind: Secret
  13. # metadata:
  14. # name: GCE_ACCOUNT_SECRET
  15. # data:
  16. ###############################
  17. # Deployment
  18. ###############################
  19. ---
  20. apiVersion: apps/v1
  21. kind: Deployment
  22. metadata:
  23. labels:
  24. app: traefik
  25. release: traefik
  26. name: traefik
  27. namespace: kube-system
  28. spec:
  29. replicas: 1
  30. selector:
  31. matchLabels:
  32. app: traefik
  33. release: traefik
  34. template:
  35. metadata:
  36. labels:
  37. app: traefik
  38. release: traefik
  39. spec:
  40. containers:
  41. - args:
  42. - --api
  43. #- --api.insecure=true
  44. # Set insecure to fals to enable basic auth
  45. - --api.insecure=false
  46. - --api.dashboard=true
  47. - --accesslog
  48. - --global.checknewversion=true
  49. - --entryPoints.traefik.address=:8100
  50. - --entryPoints.web.address=:80
  51. - --entryPoints.websecure.address=:443
  52. # permanent redirecting of all requests on http (80) to https (443)
  53. - --entrypoints.web.http.redirections.entryPoint.to=websecure
  54. - --entrypoints.websecure.http.tls.certResolver=default
  55. - --entrypoints.websecure.http.tls.domains[0].main=k8s.eugeniocarvalho.dev
  56. - --entrypoints.websecure.http.tls.domains[0].sans=*.k8s.eugeniocarvalho.dev
  57. #- --entrypoints.websecure.http.tls.certResolver=letsencrypt
  58. # Let's Encrypt Configurtion:
  59. # Please note that this is the staging Let's Encrypt server configuration.
  60. # Once you get things working, you should remove that following line.
  61. - --certificatesresolvers.default.acme.caserver=https://acme-staging-v02.api.letsencrypt.org/directory
  62. - --certificatesresolvers.default.acme.email=eugeniucarvalho@gmail.com
  63. - --certificatesresolvers.default.acme.storage=acme.json
  64. # - --certificatesresolvers.default.acme.tlschallenge=true
  65. - --certificatesresolvers.default.acme.dnsChallenge.provider=gcloud
  66. - --certificatesresolvers.myresolver.acme.dnschallenge.delaybeforecheck=0
  67. # - --certificatesresolvers.default.acme.dnsChallenge.entryPoint=http
  68. - --ping=true
  69. - --providers.kubernetescrd=true
  70. - --providers.kubernetesingress=true
  71. # Use log level= INFO or DEBUG
  72. - --log.level=INFO
  73. image: traefik:2.2.1
  74. env:
  75. - name: GCE_PROJECT
  76. value: 'myroot-283603'
  77. - name: GCE_SERVICE_ACCOUNT
  78. value: 'traefik@myroot-283603.iam.gserviceaccount.com'
  79. - name: GCE_SERVICE_ACCOUNT_FILE
  80. value: '{ "type": "service_account", "project_id": "myroot-283603", "private_key_id": "9bc9080889ff0104b825815e900cc4e4fef5cfbd", "private_key": "-----BEGIN PRIVATE KEY-----\nMIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQCfqXx3OlmRhrEc\nlvMtgNrvAwGNWRKItrdOL48AqBwlXMOJbWrUDRql6Dq9A9YzEeXdbkGUJoTX7RGh\nqjsgGZ4mEdwii2mZI4r1j109wTxeA2B064eItzMyFXc+Uy5ksyKpsUlGs0jYgOR5\nv4BA450Xe0LbOAZ/22hM4dR4dgEw26pj1EX0G6wIDi/33GUb02e4Sm4K5e4OuGIe\nTsTvssb7hquW9lgeidDOwxXqyHtp3XUD62K+fYWfYbhVmxeZAQ+SShjEHP+OK5IG\nJIVgwxL/i7Zo/6vvrc+YEyE2quyceetgB2jQj+BYpaV2XJa5gNPqFaaie+Vx0a7C\nrGFyia5/AgMBAAECggEAA/zFLf2qWY3qliV8FPdEt1KHLq5e8ESOxNGIrAbP6bU+\n8Ob5peE55m6HBZUkzeTZiOpObUBVBCJYi6pU1a6JiCUBwWg+xZoqWh2deKhaWb4k\ntB2sAdqARvTt/0zmgv9Nt+HElSVKhgNjMVoM2cjeljKKSnix3W4mVR00/xAEiHPw\ntMHp0KUBvyd2rVDWnFVe7/jOTQRnvXJbssUFTZgiWPnDAuafXlmM8e9PgigUDmMN\nr8oZ16SGGct9vlRKYv5IJcCYTW2Uy0wJZkAnl5KDtnKHvp8w0Jfg2LY+tGdO+SA+\nJDXPZCpXSnuW5K99v/uLrPtpq2/+2kORBfujYY9XUQKBgQDUzWAlPbOj+sr8uwFC\nCJPnbfJg7eRxUGGEIYAVvLQsSXDdJUQ48JZlKSf6nYCN1ycVD6i/D6bHzi0iopxL\nfcnnYhI44I5cxyw/D+phVSN+VLEZnfmb4YFB1F7l0Wow80NTpy6yz5OAK0AQPbn5\ne2JgT2jngIIlzcdx59Ac4ugtiQKBgQDAEpd5+wgXIacESCvKHhaGF04FRpcN2Vae\n+ocJa00WQ/RtB9Fzgvvo8g0EJaO69Q4tR3tXDzKd/lw6m1PF2aRJloGxJAn8qmaO\n3fECgSNptH24EvuasQu6YiJNcBDEh+Lksdw8lo57Q5TIUxkPmCSgnNnHx/UlHGN1\nbzaYE2rBxwKBgQDAG9gcRqOR+aqelcQA9PVxDBSv5JNCqKogOo4DEaQmBvbY7fe0\n350mHg11dhLD+ePSY5yXP231GvAsQFiQ3jITrLl+l1pt73DGTXvt+opcVeC7m53n\nV6D06N/y4SbYogO51UeXLUWfg2wGPXNTAkxBXe76b00PC8Jt1jROn5my4QKBgAVB\n/QeHyabocuv5FcnInRE6nhYi4ousgWSEsyGc4FVVsuExL5ib401zIswUQ7EgeCzh\nIg02C0qr5dZs3hQyav7gsdgphmR2Pax3gttwsYl5OV/KlTyc0BdgDFRWVv8qQRnF\njKPT8z6IkRASxkLZBVeoM4X2gU1sw4Q5cSMklO2NAoGBAILm3dUz1JNeKTCx0LuU\nEhibMM2YcI7TGsvPLS1RMiF1mPKiM/DQmMGy7NR6yLq4vrXgeKKgDQyLQKBjIIaY\nJZU/RuwqUStIZz10HkOF8pvPKNagdT9KSXcRrcQVKMaSVZ8Zz6OhWIEcwOw1xz4p\n+eHn5fAJuCXJzGGrAwYa5uge\n-----END PRIVATE KEY-----\n", "client_email": "traefik@myroot-283603.iam.gserviceaccount.com", "client_id": "103501378008684522069", "auth_uri": "https://accounts.google.com/o/oauth2/auth", "token_uri": "https://oauth2.googleapis.com/token", "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs", "client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/traefik%40myroot-283603.iam.gserviceaccount.com" }'
  81. imagePullPolicy: IfNotPresent
  82. livenessProbe:
  83. failureThreshold: 3
  84. httpGet:
  85. path: /ping
  86. port: 8100
  87. scheme: HTTP
  88. initialDelaySeconds: 10
  89. periodSeconds: 10
  90. successThreshold: 1
  91. timeoutSeconds: 2
  92. name: traefik
  93. ports:
  94. - containerPort: 8100
  95. name: admin
  96. protocol: TCP
  97. - containerPort: 80
  98. name: web
  99. protocol: TCP
  100. - containerPort: 443
  101. name: websecure
  102. protocol: TCP
  103. # optional storage
  104. # enable this option only in case you have defined a persistence volume claim
  105. #volumeMounts:
  106. #- name: traefik-data
  107. # mountPath: /var/lib/traefik
  108. readinessProbe:
  109. failureThreshold: 1
  110. httpGet:
  111. path: /ping
  112. port: 8100
  113. scheme: HTTP
  114. initialDelaySeconds: 10
  115. periodSeconds: 10
  116. successThreshold: 1
  117. timeoutSeconds: 2
  118. resources: {}
  119. terminationMessagePath: /dev/termination-log
  120. terminationMessagePolicy: File
  121. dnsPolicy: ClusterFirst
  122. restartPolicy: Always
  123. schedulerName: default-scheduler
  124. securityContext: {}
  125. serviceAccount: traefik
  126. serviceAccountName: traefik
  127. terminationGracePeriodSeconds: 60
  128. # optional storage
  129. # enable this option only in case you have defined a persistence volume claim
  130. #volumes:
  131. # - name: traefik-data
  132. # persistentVolumeClaim:
  133. # claimName: traefik-data
  134. ###############################
  135. # Service
  136. ###############################
  137. ---
  138. apiVersion: v1
  139. kind: Service
  140. metadata:
  141. labels:
  142. app: traefik
  143. release: traefik
  144. name: traefik
  145. namespace: kube-system
  146. spec:
  147. externalIPs:
  148. - "10.128.0.8"
  149. externalTrafficPolicy: Cluster
  150. ports:
  151. - name: web
  152. port: 80
  153. protocol: TCP
  154. targetPort: 80
  155. - name: websecure
  156. port: 443
  157. protocol: TCP
  158. targetPort: 443
  159. - name: admin
  160. port: 8100
  161. protocol: TCP
  162. targetPort: 8100
  163. selector:
  164. app: traefik
  165. release: traefik
  166. sessionAffinity: None
  167. type: LoadBalancer
  168. status:
  169. loadBalancer: {}
  170. #########################################################
  171. # The Middleware configuration contains middleware componenst
  172. # for a HTTP->HTTS redirection and a BasicAuth example.
  173. #########################################################
  174. ###############################
  175. # Middleware for basicAuth
  176. ###############################
  177. ---
  178. apiVersion: traefik.containo.us/v1alpha1
  179. kind: Middleware
  180. metadata:
  181. name: basic-auth
  182. spec:
  183. basicAuth:
  184. secret: authsecret
  185. ---
  186. apiVersion: v1
  187. kind: Secret
  188. metadata:
  189. name: authsecret
  190. namespace: default
  191. #------------ Paste your own password file content here (default user/password=admin/adminadmin)--------------
  192. data:
  193. users: |2
  194. YWRtaW46JGFwcjEkWXdmLkF6Um0kc3owTkpQMi55cy56V2svek43aENtLwoKdXNl
  195. cjokYXByMSRaU2VKQW1pOSRVV1AvcDdsQy9KSzdrbXBIMXdGL28uCgo=
  196. ###############################
  197. # Middleware for HTTP->HTTPS
  198. # This middleware is not needed in case of:
  199. # entrypoints.web.http.redirections.entryPoint.to=websecure
  200. ###############################
  201. #---
  202. #apiVersion: traefik.containo.us/v1alpha1
  203. #kind: Middleware
  204. #metadata:
  205. # name: https-redirect
  206. #spec:
  207. # redirectScheme:
  208. # scheme: https
  209. # permanent: true
  210. # #port: 443
  211. ###############################
  212. # Middleware for CORS
  213. ###############################
  214. ---
  215. apiVersion: traefik.containo.us/v1alpha1
  216. kind: Middleware
  217. metadata:
  218. name: cors-all
  219. spec:
  220. headers:
  221. accessControlAllowMethods:
  222. - "GET"
  223. - "OPTIONS"
  224. - "PUT"
  225. - "POST"
  226. accessControlAllowOriginList:
  227. - "origin-list-or-null"
  228. accessControlMaxAge: 100
  229. accessControlAllowHeaders:
  230. - "Content-Type"
  231. addVaryHeader: true
  232. customRequestHeaders:
  233. X-Forwarded-Proto: "https"