在document中,有一个有关使用Cert-Manager保护Kubernetes入口安全的示例,该示例未使用Gateway + VirtualService。
我已尝试使其与acme http01一起使用,但由于在日志质询中出现404错误,因此无法颁发证书。似乎无法访问域检查挑战。我提到的规格是否有最佳实践?
[更新1]
我想将SDS
的{{1}}选项与istio gateway一起使用,并使用cert-manager with http-01保护它。
根据文档,我发现了一些示例,例如Securing Kubernetes Ingress with Cert-Manager或Deploy a Custom Ingress Gateway Using Cert-Manager。但是,这些示例使用的是Kuberenetes Ingress资源本身(不是istio网关),或者第二个示例使用的是TLS
。
我需要一条包含istio gateway和dns-01
的{{1}}选项的指令,并通过使用cert-manager with http-01保护它。 Istio网关使我能够使用SDS
。
谢谢!
答案 0 :(得分:2)
我找到了答案,但不确定为什么要这样做。我对documentation进行了一些更改。
首先,我使用istio-autogenerated-k8s-ingress
命令编辑了kubectl -n istio-system edit gateway
。
我删除了整个HTTPS
部分,然后将HTTP
部分留在那里。
然后我创建了另一个Gateway
,例如:
cat <<EOF | kubectl apply -f -
apiVersion: networking.istio.io/v1alpha3
kind: Gateway
metadata:
name: bookinfo-gateway
spec:
selector:
istio: ingressgateway
servers:
- hosts:
- 'example.com'
port:
name: http
number: 80
protocol: HTTP2
tls:
httpsRedirect: true
- hosts:
- 'example.com'
port:
name: https-default
number: 443
protocol: HTTPS
tls:
credentialName: ingress-cert-staging
mode: SIMPLE
privateKey: sds
serverCertificate: sds
---
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
name: bookinfo
spec:
hosts:
- "example.com"
gateways:
- bookinfo-gateway
http:
- match:
- uri:
exact: /productpage
- uri:
exact: /login
- uri:
exact: /logout
- uri:
prefix: /api/v1/products
route:
- destination:
host: productpage
port:
number: 9080
EOF
有了这个证书管理器签发了我的证书(我猜是istio-autogenerated-k8s-ingress
网关!!!!),我可以创建多个网关和虚拟服务,如上面的示例。所以一切正常!这只是我的想法,盲目行事不是正确的方法。请问,如果您有更好的答案,并且知道为什么这些事情如我所解释的那样发生,就让我知道。
谢谢!