Ver Fonte

initial

EUGENIO SOUZA CARVALHO há 4 anos atrás
commit
a4f29698c0
1 ficheiros alterados com 449 adições e 0 exclusões
  1. 449 0
      traefik.yaml

+ 449 - 0
traefik.yaml

@@ -0,0 +1,449 @@
+---
+apiVersion: apiextensions.k8s.io/v1beta1
+kind: CustomResourceDefinition
+metadata:
+  name: ingressroutes.traefik.containo.us
+
+spec:
+  group: traefik.containo.us
+  version: v1alpha1
+  names:
+    kind: IngressRoute
+    plural: ingressroutes
+    singular: ingressroute
+  scope: Namespaced
+
+---
+apiVersion: apiextensions.k8s.io/v1beta1
+kind: CustomResourceDefinition
+metadata:
+  name: ingressroutetcps.traefik.containo.us
+
+spec:
+  group: traefik.containo.us
+  version: v1alpha1
+  names:
+    kind: IngressRouteTCP
+    plural: ingressroutetcps
+    singular: ingressroutetcp
+  scope: Namespaced
+
+---
+apiVersion: apiextensions.k8s.io/v1beta1
+kind: CustomResourceDefinition
+metadata:
+  name: middlewares.traefik.containo.us
+
+spec:
+  group: traefik.containo.us
+  version: v1alpha1
+  names:
+    kind: Middleware
+    plural: middlewares
+    singular: middleware
+  scope: Namespaced
+
+---
+apiVersion: apiextensions.k8s.io/v1beta1
+kind: CustomResourceDefinition
+metadata:
+  name: tlsoptions.traefik.containo.us
+spec:
+  group: traefik.containo.us
+  version: v1alpha1
+  names:
+    kind: TLSOption
+    plural: tlsoptions
+    singular: tlsoption
+  scope: Namespaced
+
+---
+apiVersion: apiextensions.k8s.io/v1beta1
+kind: CustomResourceDefinition
+metadata:
+  name: traefikservices.traefik.containo.us
+
+spec:
+  group: traefik.containo.us
+  version: v1alpha1
+  names:
+    kind: TraefikService
+    plural: traefikservices
+    singular: traefikservice
+  scope: Namespaced
+
+---
+apiVersion: apiextensions.k8s.io/v1beta1
+kind: CustomResourceDefinition
+metadata:
+  name: tlsstores.traefik.containo.us
+
+spec:
+  group: traefik.containo.us
+  version: v1alpha1
+  names:
+    kind: TLSStore
+    plural: tlsstores
+    singular: tlsstore
+  scope: Namespaced
+
+---
+apiVersion: apiextensions.k8s.io/v1beta1
+kind: CustomResourceDefinition
+metadata:
+  name: ingressrouteudps.traefik.containo.us
+
+spec:
+  group: traefik.containo.us
+  version: v1alpha1
+  names:
+    kind: IngressRouteUDP
+    plural: ingressrouteudps
+    singular: ingressrouteudp
+  scope: Namespaced
+
+#RBAC  --------------------------------------------
+---
+kind: ClusterRole
+apiVersion: rbac.authorization.k8s.io/v1beta1
+metadata:
+  name: traefik-ingress-controller
+
+rules:
+  - apiGroups:
+      - ""
+    resources:
+      - services
+      - endpoints
+      - secrets
+    verbs:
+      - get
+      - list
+      - watch
+  - apiGroups:
+      - extensions
+    resources:
+      - ingresses
+    verbs:
+      - get
+      - list
+      - watch
+  - apiGroups:
+      - extensions
+    resources:
+      - ingresses/status
+    verbs:
+      - update
+  - apiGroups:
+      - traefik.containo.us
+    resources:
+      - middlewares
+      - ingressroutes
+      - traefikservices
+      - ingressroutetcps
+      - ingressrouteudps  #-------------
+      - tlsoptions
+      - tlsstores #-------------
+    verbs:
+      - get
+      - list
+      - watch
+
+---
+kind: ClusterRoleBinding
+apiVersion: rbac.authorization.k8s.io/v1beta1
+metadata:
+  name: traefik-ingress-controller
+roleRef:
+  apiGroup: rbac.authorization.k8s.io
+  kind: ClusterRole
+  name: traefik-ingress-controller
+subjects:
+  - kind: ServiceAccount
+    name: traefik
+    namespace: kube-system
+
+---
+kind: PersistentVolume
+apiVersion: v1
+metadata:
+  name: traefik-data
+  namespace: kube-system
+spec:
+  capacity:
+    storage: 1Gi
+  volumeMode: Filesystem
+  accessModes:
+    - ReadWriteOnce
+  claimRef:
+    namespace: kube-system
+    name: traefik-data
+  csi:
+    driver: driver.longhorn.io
+    fsType: ext4
+    volumeHandle: traefik-data
+  storageClassName: longhorn-durable
+---
+apiVersion: v1
+kind: PersistentVolumeClaim
+metadata:
+  name: traefik-data
+  namespace: kube-system
+spec:
+  accessModes:
+    - ReadWriteOnce
+  storageClassName: longhorn-durable
+  resources:
+    requests:
+      storage: 1Gi
+  volumeName: "traefik-data"
+#INGRESS --------------------------------------------
+---
+#####################################################
+# Secure traefik dashboard with https and basic auth
+#####################################################
+apiVersion: traefik.containo.us/v1alpha1
+kind: IngressRoute
+metadata:
+  name: traefik-dashboard
+spec:
+  routes:
+    - match: Host(`traefik.eugeniocarvalho.dev`)
+      kind: Rule
+      services:
+        - name: api@internal
+          kind: TraefikService
+      # optional: add basic auth
+      #middlewares:
+      #  - name: basic-auth
+
+###############################
+# ServiceAccount
+###############################
+---
+apiVersion: v1
+kind: ServiceAccount
+metadata:
+  name: traefik
+  namespace: kube-system
+
+###############################
+# Deployment
+###############################
+---
+apiVersion: apps/v1
+kind: Deployment
+metadata:
+  labels:
+    app: traefik
+    release: traefik
+  name: traefik
+  namespace: kube-system
+
+spec:
+  replicas: 1
+  selector:
+    matchLabels:
+      app: traefik
+      release: traefik
+  template:
+    metadata:
+      labels:
+        app: traefik
+        release: traefik
+    spec:
+      containers:
+        - args:
+            - --api
+            - --api.insecure=true
+            # Set insecure to fals to enable basic auth
+            #- --api.insecure=false
+            - --api.dashboard=true
+            - --accesslog
+            - --global.checknewversion=true
+            - --entryPoints.traefik.address=:8100
+            - --entryPoints.web.address=:80
+            - --entryPoints.websecure.address=:443
+
+            # permanent redirecting of all requests on http (80) to https (443)
+            - --entrypoints.web.http.redirections.entryPoint.to=websecure
+            - --entrypoints.websecure.http.tls.certResolver=default
+
+            # Let's Encrypt Configurtion:
+            # Please note that this is the staging Let's Encrypt server configuration.
+            # Once you get things working, you should remove that following line.
+            - --certificatesresolvers.default.acme.caserver=https://acme-staging-v02.api.letsencrypt.org/directory
+            - --certificatesresolvers.default.acme.email=eugeniucarvalho@gmail.com
+            - --certificatesresolvers.default.acme.storage=/var/lib/traefik/acme.json
+            - --certificatesresolvers.default.acme.tlschallenge=true
+
+            - --ping=true
+            - --providers.kubernetescrd=true
+            - --providers.kubernetesingress=true
+
+            # Use log level= INFO or DEBUG
+            - --log.level=INFO
+          image: traefik:2.2.1
+          imagePullPolicy: IfNotPresent
+          livenessProbe:
+            failureThreshold: 3
+            httpGet:
+              path: /ping
+              port: 8100
+              scheme: HTTP
+            initialDelaySeconds: 10
+            periodSeconds: 10
+            successThreshold: 1
+            timeoutSeconds: 2
+          name: traefik
+          ports:
+            - containerPort: 8100
+              name: admin
+              protocol: TCP
+            - containerPort: 80
+              name: web
+              protocol: TCP
+            - containerPort: 443
+              name: websecure
+              protocol: TCP
+
+          # optional storage
+          # enable this option only in case you have defined a persistence volume claim
+          volumeMounts:
+            - name: traefik-data
+              mountPath: /var/lib/traefik
+
+          readinessProbe:
+            failureThreshold: 1
+            httpGet:
+              path: /ping
+              port: 8100
+              scheme: HTTP
+            initialDelaySeconds: 10
+            periodSeconds: 10
+            successThreshold: 1
+            timeoutSeconds: 2
+          resources: {}
+          terminationMessagePath: /dev/termination-log
+          terminationMessagePolicy: File
+      dnsPolicy: ClusterFirst
+      restartPolicy: Always
+      schedulerName: default-scheduler
+      securityContext: {}
+      serviceAccount: traefik
+      serviceAccountName: traefik
+      terminationGracePeriodSeconds: 60
+
+      # optional storage
+      # enable this option only in case you have defined a persistence volume claim
+      volumes:
+        - name: traefik-data
+          persistentVolumeClaim:
+            claimName: traefik-data
+
+###############################
+# Service
+###############################
+---
+apiVersion: v1
+kind: Service
+metadata:
+  labels:
+    app: traefik
+    release: traefik
+  name: traefik
+  namespace: kube-system
+spec:
+  externalIPs:
+    - 10.128.0.8
+  externalTrafficPolicy: Cluster
+  ports:
+    - name: web
+      port: 80
+      protocol: TCP
+      targetPort: 80
+    - name: websecure
+      port: 443
+      protocol: TCP
+      targetPort: 443
+    - name: admin
+      port: 8100
+      protocol: TCP
+      targetPort: 8100
+  selector:
+    app: traefik
+    release: traefik
+  sessionAffinity: None
+  type: LoadBalancer
+status:
+  loadBalancer: {}
+
+#########################################################
+# The Middleware configuration contains middleware componenst
+# for a HTTP->HTTS redirection and a BasicAuth example.
+#########################################################
+
+###############################
+# Middleware for basicAuth
+###############################
+---
+# apiVersion: traefik.containo.us/v1alpha1
+# kind: Middleware
+# metadata:
+#   name: basic-auth
+# spec:
+#   basicAuth:
+#     secret: authsecret
+
+# ---
+# apiVersion: v1
+# kind: Secret
+# metadata:
+#   name: authsecret
+#   namespace: default
+
+# #------------ Paste your own password file content here (default user/password=admin/adminadmin)--------------
+# data:
+#   users: |2
+#     YWRtaW46JGFwcjEkWXdmLkF6Um0kc3owTkpQMi55cy56V2svek43aENtLwoKdXNl
+#     cjokYXByMSRaU2VKQW1pOSRVV1AvcDdsQy9KSzdrbXBIMXdGL28uCgo=
+
+###############################
+# Middleware for HTTP->HTTPS
+# This middleware is not needed in case of:
+#      entrypoints.web.http.redirections.entryPoint.to=websecure
+###############################
+#---
+#apiVersion: traefik.containo.us/v1alpha1
+#kind: Middleware
+#metadata:
+#  name: https-redirect
+#spec:
+#  redirectScheme:
+#    scheme: https
+#    permanent: true
+#    #port: 443
+
+###############################
+# Middleware for CORS
+###############################
+---
+apiVersion: traefik.containo.us/v1alpha1
+kind: Middleware
+metadata:
+  name: cors-all
+spec:
+  headers:
+    accessControlAllowMethods:
+      - "GET"
+      - "OPTIONS"
+      - "PUT"
+      - "POST"
+    accessControlAllowOriginList:
+      - "origin-list-or-null"
+    accessControlMaxAge: 100
+    accessControlAllowHeaders:
+      - "Content-Type"
+    addVaryHeader: true
+    customRequestHeaders:
+      X-Forwarded-Proto: "https"