traefik 配置域名访问以及https
要将zhuty.com
指向hugo-nfs-svc
并配置HTTPS以及自动更新Certbot证书,您需要执行以下步骤:
创建一个Kubernetes Secret以存储您的TLS证书和密钥:
kubectl create secret tls zhuty-tls --key /path/to/tls.key --cert /path/to/tls.crt
请将
/path/to/tls.key
和/path/to/tls.crt
替换为您的TLS证书和密钥的路径。创建一个Traefik IngressRoute以将
zhuty.com
指向hugo-nfs-svc
:apiVersion: traefik.containo.us/v1alpha1 kind: IngressRoute metadata: name: zhuty namespace: default spec: entryPoints: - websecure routes: - match: Host(`zhuty.com`) kind: Rule services: - name: hugo-nfs-svc port: 80 tls: secretName: zhuty-tls
请确保将
name
字段设置为您选择的名称,将namespace
字段设置为您选择的命名空间,将match
字段设置为您的域名,将name
和port
字段设置为您的服务名称和端口。部署Traefik Ingress Controller:
kubectl apply -f https://raw.githubusercontent.com/traefik/traefik/v2.5/examples/k8s/traefik-deployment.yaml
安装Certbot:
sudo apt-get update sudo apt-get install certbot
生成Let’s Encrypt证书:
sudo certbot certonly --manual --preferred-challenges dns -d zhuty.com
然后按照提示在DNS中添加TXT记录,并等待DNS记录生效。完成后,Certbot将生成证书,并将其保存在
/etc/letsencrypt/live/zhuty.com/
目录中。创建一个Kubernetes Secret以存储Certbot证书和密钥:
kubectl create secret tls zhuty-tls --key /etc/letsencrypt/live/zhuty.com/privkey.pem --cert /etc/letsencrypt/live/zhuty.com/fullchain.pem
创建一个Certificate资源以自动更新Certbot证书:
apiVersion: cert-manager.io/v1 kind: Certificate metadata: name: zhuty-tls namespace: default spec: secretName: zhuty-tls dnsNames: - zhuty.com privateKeySecretRef: name: zhuty-tls issuerRef: name: letsencrypt-prod kind: ClusterIssuer
创建一个ClusterIssuer以自动更新Certbot证书:
apiVersion: cert-manager.io/v1 kind: ClusterIssuer metadata: name: letsencrypt-prod spec: acme: email: your-email@example.com server: https://acme-v02.api.letsencrypt.org/directory privateKeySecretRef: name: letsencrypt-prod solvers: - dns01: cloudflare: email: your-email@example.com apiKeySecretRef: name: cloudflare-api-key key: api-key
不配置 dns 服务器时: solvers: []
请确保将email
字段设置为您的电子邮件地址,并将solver
设置为您的DNS提供商。此处以Cloudflare为例,请将email
和apiKeySecretRef.key
字段设置为您的Cloudflare电子邮件地址和API密钥。
完成上述步骤后,Traefik Ingress Controller将自动配置HTTPS并请求证书。证书将存储在Kubernetes Secret中,并且将自动更新。