最近在幫公司找有沒有好用的專案管理軟體之餘,想想也很久沒碰這個之前一直想放進k8s的東西,加上k8s的tls要自動化難度不低,就只好來挑戰一下這個東西了 發懶是一切的原動力
前言
其實透過官方的教學文章就可以很快的把server建立起來所以這篇就這樣了,不過有幾個地方還是要注意一下
概念
新版的Traefik不用ingress-controller,而是自定義的IngressRoute去做轉發,這部份是拜k8s的高彈性之賜,不過要注意的是這邊跟docker的設定方式完全不一樣;不像docker使用了一堆的labels來做設定。
Helm的設定
這邊真的是照官方給的文件就可以完成,不過這邊我還是沒辦法進dashboard,應該是有沒設定到的地方。
因為我家的k8s在aws上,然後使用的provider也不是cloudflare,所以我在這部份卡了一段時間
不囉嗦直接上code,我只貼我改的部份
additionalArguments:
  - --entrypoints.websecure.http.tls.certresolver=route53
  - --certificatesresolvers.route53.acme.dnschallenge.provider=route53
  - --certificatesresolvers.route53.acme.email=your@email
...
env:
  - name: AWS_ACCESS_KEY_ID
    valueFrom:
      secretKeyRef:
        key: user
        name: aws-credentials
  - name: AWS_SECRET_ACCESS_KEY
    valueFrom:
      secretKeyRef:
        key: token
        name: aws-credentials
原本範例裡的cloudflare都被我換成route53,出處可以從這裡查,不過官方沒特別講這部份我覺得很不ok,花了一些時間在這
再來是token跟key的部份,一樣是參照上面的連結可以知道使用route53後用的key就會不一樣,而主要的參數就是AWS_ACCESS_KEY_ID以及AWS_SECRET_ACCESS_KEY。而在aws裡設定的部份可以參照這裡,這裡主要是講IAM的設定。
再來是Secret的部份
apiVersion: v1
kind: Secret
metadata:
  name: aws-credentials
  namespace: traefik
type: Opaque
stringData:
  user: AWS_ACCESS_KEY_ID
  token: AWS_SECRET_ACCESS_KEY
記得這邊這樣改的話,上面那個helm檔的env也要改成對應的key和value,這邊我就不再多貼了
結語
要改的東西真的不多,主要是provider和aws IAM對應的部份要對,再來就是這個東西不能跨如果要新增網域之類的,只需新增namespace,也就是你一個namespace就要建一次traefik,所以我才會只拿來放小東西就好。IngressRoute就可以了,很意外的traefik可以跨namespace update 20201214