我正试图使用我的k3s集群和证书管理器为家庭网络上的服务提供一些带有有效证书的https包装器。
我使用一个无头服务和一个自定义端点来实现这一点,这对于未加密、仅在端口80上公开的服务来说很好。然而,对于端口443上具有自签名证书的服务,我只得到";内部服务错误";。
- Traefik的日志中没有显示任何可能有帮助的内容
- 除了
content-length
、content-type
和date
之外,没有响应标头
这是我试图包装的两个服务上的相同行为,我的路由器和我的nas。
我相信我正在寻找的是上游TLS,但从我可以告诉Traefik这是自动完成的。这是我的配置:
---
kind: Endpoints
apiVersion: v1
metadata:
name: nas
namespace: routing
subsets:
- addresses:
- ip: 10.0.147.154
ports:
- name: https
port: 443
protocol: TCP
---
kind: Service
apiVersion: v1
metadata:
name: nas
namespace: routing
spec:
clusterIP: None
ports:
- name: https
port: 443
targetPort: https
protocol: TCP
---
kind: Ingress
apiVersion: networking.k8s.io/v1
metadata:
name: nas
namespace: routing
annotations:
cert-manager.io/cluster-issuer: cloudflare-issuer-example-com
spec:
rules:
- host: nas.example.com
http:
paths:
- pathType: Prefix
path: /
backend:
service:
name: nas
port:
name: https
tls:
- hosts:
- nas.example.com
secretName: nas-example-certificate
注意:我实际上并没有使用这个域名,我为示例更改了它;(
如果我描述入口,则看起来正确。
Name: nas
Labels: <none>
Namespace: routing
Address: 10.4.0.100,10.4.0.101,10.4.0.102
Ingress Class: <none>
Default backend: <default>
TLS:
nas-example-certificate terminates nas.example.com
Rules:
Host Path Backends
---- ---- --------
nas.example.com
/ nas:https (10.0.147.154:443)
Annotations: cert-manager.io/cluster-issuer: cloudflare-issuer-example-com
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Normal CreateCertificate 42m cert-manager-ingress-shim Successfully created Certificate "nas-example-com-certificate"
我还尝试添加ServiceTransport忽略自签名证书:
---
apiVersion: traefik.containo.us/v1alpha1
kind: ServersTransport
metadata:
name: nas
namespace: routing
spec:
insecureSkipVerify: true
用入口上的traefik.ingress.kubernetes.io/service.serverstransport
注释引用它,但这没有效果。
我不知道还能尝试什么。
由于traefik.ingress.kubernetes.io/service.serverstransport
注释在服务上运行,而不是在入口上运行,因此我也被此问题所困扰。此外,您需要设置一个serversscheme
,并且ServersTransport
对象本身必须由Traefik的自定义资源格式<namespace>-<name>@customcrd
:引用
kind: Service
apiVersion: v1
metadata:
name: nas
namespace: routing
metadata:
annotations:
traefik.ingress.kubernetes.io/service.serversscheme: https
traefik.ingress.kubernetes.io/service.serverstransport: routing-nas@kubernetescrd
spec:
clusterIP: None
ports:
- name: https
port: 443
targetPort: https
protocol: TCP