前言#
traefik は Containous チームが提供する ingress ツールで、nginx と比較してより使いやすいダッシュボード UI を持っています。
また、バイナリデプロイをサポートし、docker、kubernetes などのさまざまな運用プラットフォームにネイティブに対応しています。ダッシュボードパネルでは、全体のルーティングサービスの健康状態を確認できます。
さらに、traefik は metrics サポートも接続できます。
原理紹介#
traefik の自動 HTTPS の方法は Let’s Encrypt を使用して実現されているため、acme を有効にする必要があります。
traefik は、3 種類の自動 HTTPS 方法 httpChallenge
tlsChallenge
および dnsChallenge
をネイティブにサポートしています。
その中で http と tls の方法は 80 および 443 ポートにアクセスできる必要があり、le のサービスが直接あなたのウェブサイトにアクセスできるかどうかを検証し、その後信頼できる証明書を追加します。
dnsChallenge の方法は、クラウドサービスプロバイダーの DNS 管理機能を使用して、そのドメインがあなたのものであるかどうかを検証します。検証が成功した後、HTTPS 証明書が発行されます。
インストール#
名前空間の作成#
管理を容易にするために、独立した名前空間を作成します。
kubectl create ns traefik-system
クラウドプロバイダーの AKSK を取得#
traefik は以下の プロバイダー をサポートしています。
ここでは、阿里云アカウントを使用しています。権限管理を最小限に抑えるために、RAM アカウントを使用し、RAM アカウントの AKSK を取得した後、アカウントに読み書き権限を追加することを忘れないでください。ここで AKSK に対してシークレットを作成します。
apiVersion: v1
kind: Secret
metadata:
name: alicloud-secret
namespace: traefik-system
data:
ALICLOUD_ACCESS_KEY: ${base64 access_key}
ALICLOUD_SECRET_KEY: ${base64 secret_key}
type: Opaque
helm インストール#
traefik helm chart github こちらで
helm 3.0 以上のバージョンが必要です。
まず、traefik の helm リポジトリを追加します。
helm repo add traefik https://helm.traefik.io/traefik
追加の values の設定#
新しい values.yaml
ファイルを作成します。
additionalArguments:
- --providers.kubernetesingress.ingressclass=traefik # k8s ingress のクラス名は traefik
- --certificatesresolvers.le.acme.dnschallenge.provider=alidns # プロバイダーは alidns を使用
- --certificatesresolvers.le.acme.storage=/data/acme.json # パスは下の pvc と一致する必要があります
- [email protected]
# 注意: ここでの certificatesresolvers.le は、le が単なる certResolver の名前であり、複数の resolver を設定でき、独立した ingress で独立した resolver を設定できます
envFrom:
- secretRef:
name: alicloud-secret
# ここには先ほど作成したシークレットの名前を記入します。同じ名前空間内である必要があります
ingressClass:
enabled: true # ingressclass を有効にします
fallbackApiVersion: ""
isDefaultClass: true
# acme ストレージを使用しているため、pvc ストレージが必要です。実際に申請した証明書の情報を保存するためのもので、128m で十分です
persistence:
accessMode: ReadWriteOnce
annotations: {}
enabled: true
name: data
path: /data
size: 128Mi
storageClass: nfs-client # storageclass は必要に応じて記入
ports:
metrics:
expose: false
exposedPort: 9100
port: 9100
protocol: TCP
traefik:
expose: false
exposedPort: 9000
port: 9000
protocol: TCP
web:
expose: true
exposedPort: 80
port: 8000
# hostPort: 8000
protocol: TCP
websecure:
expose: true
exposedPort: 443
port: 8443
# hostPort: 8443
protocol: TCP
tls:
certResolver: le # デフォルトの resolver 名を設定します。上記と同じです
domains: # 設定された主ドメインとサブドメイン、ここでは一致するドメインのみが自動的に証明書を追加されます
- main: incubator4.com
sans: # 注意: 多階層のサブドメインは個別に記入する必要があります。*.test.com は a.b.c.test.com に一致しません
- "*.incubator4.com"
- "*.rancher.incubator4.com"
enabled: true
options: ""
providers:
kubernetesCRD:
enabled: true
namespaces: []
kubernetesIngress:
enabled: true
namespaces: []
publishedService:
enabled: false
deployment:
enabled: true
kind: Deployment # Daemonset の形式を選択できます
replicas: 1
service:
enabled: true
type: ClusterIP # ClusterIP / LoadBalancer を選択できます
クラスターの具体的な状況に応じて deployment または daemonset を使用#
各自の状況に応じて、どちらの方法を使用するかを検討してください。
daemonset を使用#
daemonset はノードセレクターを使用してポッドを特定のノードに配置し、ホストポートを有効にしてコンテナをそのマシンの物理ポートにバインドします。これにより、node-ip でポッドにアクセスできます。
PC -> node Port -> pod port
この方法は svc を経由せず、裸金属の kubernetes で、ノードの IP に直接接続できる場合に適しています。
deployment を使用#
ご存知のように、クラウドプロバイダーは LoadBalancer の形式を提供しており、作成したサービスにはパブリック IP が付与され、外部(または内部、一般的にはクラスター外)からサービスに直接アクセスできます。
この方法は、ロードバランス形式のサービスが traefik deployment に負荷分散を提供し、その後直接ロードバランスの IP にアクセスすることが、traefik の svc に直接アクセスすることと同じになります。
デプロイ#
一言で言えば、
helm install traefik traefik/traefik -n traefik-system -f values.yaml
ダッシュボードにアクセス#
traefik-system に以下のリソースを作成します。
apiVersion: traefik.containo.us/v1alpha1
kind: IngressRoute
metadata:
name: traefik-dashboard-route
spec:
entryPoints:
- web
routes:
- match: Host(`traefik.incubator4.com`)
kind: Rule
services:
- kind: TraefikService
name: api@internal
適用後、http でアクセスできるようになります。
自動暗号化証明書のテスト#
上記の yaml リソースの entryPoint に websecure を追加します。以下のようにします。
kind: IngressRoute
metadata:
name: traefik-dashboard-route
spec:
entryPoints:
- web
- websecure
routes:
- match: Host(`traefik.incubator4.com`)
kind: Rule
services:
- kind: TraefikService
name: api@internal
デプロイが完了したら、プロトコルを https に変更するだけです。
![https-dashboard](data/png;base64,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