Kubernetes 通过HTTPS访问istio/k8s服务
我对Kubernetes和istio有点陌生。我正在尝试创建一个服务并通过HTTPS访问它Kubernetes 通过HTTPS访问istio/k8s服务,kubernetes,istio,cert-manager,Kubernetes,Istio,Cert Manager,我对Kubernetes和istio有点陌生。我正在尝试创建一个服务并通过HTTPS访问它 通过HTTP,一切看起来都很棒 我使用了cert manager和Let's Encrypt来生成证书 已成功生成证书 我使用以下命令生成了这个秘密 kubectl创建机密通用clouddns--namespace=cert manager--from literal=GCP_PROJECT=--from file=/etc/keys/.json 这些是网关、虚拟服务、群集颁发者和证书的配置文件 网
- 通过HTTP,一切看起来都很棒
- 我使用了cert manager和Let's Encrypt来生成证书
- 已成功生成证书
- 我使用以下命令生成了这个秘密
kubectl创建机密通用clouddns--namespace=cert manager--from literal=GCP_PROJECT=--from file=/etc/keys/.json
这些是网关、虚拟服务、群集颁发者和证书的配置文件
网关
apiVersion: networking.istio.io/v1alpha3
kind: Gateway
metadata:
name: messaging-gateway
spec:
selector:
istio: ingressgateway # use istio default controller
servers:
- port:
number: 80
name: http
protocol: HTTP
hosts:
- "<HOST>"
- port:
number: 443
name: https
protocol: HTTPS
hosts:
- "<HOST>"
tls:
credentialName: messaging-certificate
mode: SIMPLE
privateKey: sds
serverCertificate: sds
apiVersion:networking.istio.io/v1alpha3
种类:网关
元数据:
名称:消息网关
规格:
选择器:
istio:ingressgateway#使用istio默认控制器
服务器:
-端口:
电话:80
名称:http
协议:HTTP
主持人:
- ""
-端口:
电话:443
名称:https
协议:HTTPS
主持人:
- ""
tls:
credentialName:消息传递证书
模式:简单
私钥:sds
服务器证书:sds
虚拟服务
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
name: messaging
spec:
hosts:
- "<HOST>"
gateways:
- messaging-gateway
http:
- match:
- uri:
prefix: /
route:
- destination:
host: messaging
port:
number: 8082
apiVersion:networking.istio.io/v1alpha3
种类:虚拟服务
元数据:
名称:信息
规格:
主持人:
- ""
网关:
-消息网关
http:
-匹配:
-uri:
前缀:/
路线:
-目的地:
主持人:留言
端口:
电话:8082
群集颁发者
apiVersion: cert-manager.io/v1alpha2
kind: ClusterIssuer
metadata:
name: messaging-cluster-issuer
spec:
acme:
server: https://acme-staging-v02.api.letsencrypt.org/directory
email: <EMAIL>
privateKeySecretRef:
name: messaging-letsencrypt
solvers:
- dns01:
clouddns:
serviceAccountSecretRef:
name: clouddns
key: <KEY>.json
project: <PROJECT>
apiVersion:cert-manager.io/v1alpha2
种类:聚类分析
元数据:
名称:消息传递群集颁发者
规格:
顶点:
服务器:https://acme-staging-v02.api.letsencrypt.org/directory
电邮:
privateKeySecretRef:
名称:消息传递letsencrypt
解算器:
-dns01:
clouddns:
serviceAccountSecretRef:
名称:clouddns
密钥:.json
项目:
证书
apiVersion: cert-manager.io/v1alpha2
kind: Certificate
metadata:
name: messaging-certificate
spec:
secretName: messaging-certificate
duration: 2160h # 90d
renewBefore: 360h # 15d
organization:
- RELE.AI
commonName: <HOST>
isCA: false
keySize: 2048
keyAlgorithm: rsa
keyEncoding: pkcs1
usages:
- server auth
- client auth
dnsNames:
- <HOST>
issuerRef:
name: messaging-cluster-issuer
kind: ClusterIssuer
apiVersion:cert-manager.io/v1alpha2
种类:证书
元数据:
名称:消息传递证书
规格:
secretName:消息传递证书
持续时间:2160小时90天
更新时间:360h#15d
组织:
-发布AI
通用名称:
isCA:错
密钥大小:2048
密钥算法:rsa
密钥编码:pkcs1
用途:
-服务器身份验证
-客户端身份验证
dnsNames:
-
问题参考:
名称:消息传递群集颁发者
种类:聚类分析
当我运行kubectl get secrets messaging certificate-o yaml
时,我可以看到tls.crt和tls.key内容
你知道为什么我不能通过HTTPS访问吗
----编辑
完整-我已使用
istioctl manifest generate
生成清单。希望这是正确的方法您应该执行以下操作:
tls
字段中删除serverCertificate和privateKey字段,如中所示你启用SDS了吗?你能分享你的Istio安装清单吗?我不确定,我怎样才能检查它?另外,我在主要问题中添加了一个指向完整清单的链接。