Introduction#
Traefik is an ingress tool launched by the Containous team, which has a more user-friendly dashboard UI compared to Nginx.
It also supports binary deployment and has native support for various operation and maintenance platforms such as Docker and Kubernetes. You can also see the overall health status of the routing services on the dashboard panel.
Additionally, Traefik can integrate with metrics support.
Principle Introduction#
Traefik automates HTTPS using Let's Encrypt, so we need to enable ACME. Traefik natively supports three methods of automatic HTTPS: httpChallenge
, tlsChallenge
, and dnsChallenge
.
Among them, the HTTP and TLS methods require ports 80 and 443 to be accessible, which means that the Let's Encrypt service will personally verify whether your website can be accessed, and then it will add a trusted certificate.
The dnsChallenge
method uses the DNS management capabilities of cloud service providers to verify whether the domain name belongs to you. After successful verification, an HTTPS certificate will be issued.
Installation#
Create Namespace#
To facilitate management, create an independent namespace:
kubectl create ns traefik-system
Obtain Cloud Provider AKSK#
Traefik supports the following providers. Here I am using an Alibaba Cloud account. To minimize permission management, I used a RAM account. After obtaining the AKSK for the RAM account, remember to grant read and write permissions to the account. Here, create a secret for the 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 Installation#
Traefik Helm Chart GitHub is here. We need Helm version 3.0 or above. First, add the Traefik Helm repo:
helm repo add traefik https://helm.traefik.io/traefik
Configure Additional Values#
Create a new values.yaml
file.
additionalArguments:
- --providers.kubernetesingress.ingressclass=traefik # The class name of the k8s ingress is called traefik
- --certificatesresolvers.le.acme.dnschallenge.provider=alidns # Provider uses alidns
- --certificatesresolvers.le.acme.storage=/data/acme.json # The path must match the PVC below
- [email protected]
# Note that here certificatesresolvers.le, le is just a certResolver name, which means we can configure multiple resolvers, and independent ingress can configure independent resolvers
envFrom:
- secretRef:
name: alicloud-secret
# Here fill in the name of the secret we just created, note that it needs to be in the same namespace
ingressClass:
enabled: true # Enable ingress class
fallbackApiVersion: ""
isDefaultClass: true
# Since we used acme storage, we need PVC to store the information of the actual requested certificate, the space does not need to be too large, 128Mi is sufficient
persistence:
accessMode: ReadWriteOnce
annotations: {}
enabled: true
name: data
path: /data
size: 128Mi
storageClass: nfs-client # Fill in the storage class as needed
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 # Configure the default resolver name, same as above
domains: # Configure the main domain name and subdomain names, only matching domain names will automatically add certificates
- main: incubator4.com
sans: # Note that multi-level wildcard domain names need to be filled in separately, *.test.com does not match 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 # Can choose DaemonSet form
replicas: 1
service:
enabled: true
type: ClusterIP # Can choose ClusterIP / LoadBalancer
Use Deployment or DaemonSet Based on Cluster Specifics#
Please consider which method to use based on your situation.
Use DaemonSet#
DaemonSet uses node selector to ensure that pods are scheduled on specific nodes, enabling hostport to bind the physical ports of the machine, allowing direct access to pods via node-ip.
PC -> node Port -> pod port
This method does not go through svc and is suitable for bare-metal Kubernetes, where you can directly connect to node nodes via IP.
Use Deployment#
As we know, cloud providers offer LoadBalancer services, allowing created services to have a public IP, which can be accessed directly from the external network (or internal network, generally referring to outside the cluster). This method uses a load-balanced service to provide load balancing for the Traefik deployment, and accessing the load-balanced IP is equivalent to directly accessing the Traefik svc.
Deployment#
In one command:
helm install traefik traefik/traefik -n traefik-system -f values.yaml
Access Dashboard#
Create the following resource in 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
After applying, you can access it via HTTP.
Test Automatic Certificate Issuance#
Add a websecure entry point to the entryPoint in the above YAML resource as follows.
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
After deployment, just change the protocol to HTTPS.
![https-dashboard](data/png;base64,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