Kubernetes 在Istio入口上使用letsencrypt证书
我正在运行Istio 1.5,默认情况下SDS处于启用状态,我正在尝试在我的EKS集群(v1.15)中的南北交通上启用TLS,我已完成以下操作:Kubernetes 在Istio入口上使用letsencrypt证书,kubernetes,kubernetes-ingress,istio,amazon-eks,cert-manager,Kubernetes,Kubernetes Ingress,Istio,Amazon Eks,Cert Manager,我正在运行Istio 1.5,默认情况下SDS处于启用状态,我正在尝试在我的EKS集群(v1.15)中的南北交通上启用TLS,我已完成以下操作: 按照此处的步骤设置示例应用程序 已安装证书管理器0.15.1 已创建群集颁发者 将群集颁发者配置为通过将其与AWS Route53集成来尝试解决DNS挑战 使用群集颁发者和letsencrypt生成证书 按照此处的步骤使用上面创建的证书配置网关和虚拟服务 我复制了letsencrypt的根证书以通过curl命令 试图卷曲到loadbalancer的I
- 按照此处的步骤设置示例应用程序
- 已安装证书管理器0.15.1
- 已创建群集颁发者
- 将群集颁发者配置为通过将其与AWS Route53集成来尝试解决DNS挑战
- 使用群集颁发者和letsencrypt生成证书
- 按照此处的步骤使用上面创建的证书配置网关和虚拟服务
- 我复制了letsencrypt的根证书以通过curl命令
- 试图卷曲到loadbalancer的IP,我得到了这个错误
此外,还有@chrisnyc与cert menager共同制作的完整版本,让我们在istio讨论中进行加密,正如@YYashwanth在评论中提到的,这解决了他的问题。因此,如果您有类似问题,请查看上面的复制。在istio教程中创建的证书是自签名的,您应该使用let's encrypt颁发的证书执行以下步骤。您可以分享如何将let's encrypt证书绑定到istio入口吗?@KenChen Yep。letsencrypt通过k8s中的证书管理器颁发的证书,对吗?@YYashwanth,在本例中,它们基于istio网关使用的根证书生成自签名根证书和中间证书。因为它是自签名的,所以需要在curl命令中包含根证书才能通过验证。由于您使用的是let's encrypt中的cert,因此我认为您可以省略curl命令中的
--cacert
部分。@chrisnyc通过cert menager制作了完整的文件,并允许进行加密。看一看,也许你会发现一些有用的东西。
apiVersion: cert-manager.io/v1alpha2
kind: Certificate
metadata:
name: ingress-cert
namespace: istio-system
spec:
secretName: ingress-cert
commonName: my.example.com
dnsNames:
- my.example.com
...
apiVersion: networking.istio.io/v1alpha3
kind: Gateway
metadata:
name: gateway
spec:
selector:
istio: ingressgateway
servers:
- port:
number: 443
name: https
protocol: HTTPS
tls:
mode: SIMPLE
credentialName: ingress-cert # This should match the Certifcate secretName
hosts:
- my.example.com # This should match a DNS name in the Certificate
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: ingress
annotations:
kubernetes.io/ingress.class: istio
spec:
rules:
- host: my.example.com
http: ...
tls:
- hosts:
- my.example.com # This should match a DNS name in the Certificate
secretName: ingress-cert # This should match the Certifcate secretName