https://istio.io/latest/docs/reference/config/networking/gateway/#ServerTLSSettings
credentialName
: The secret (of typegeneric
) should contain the following keys and values:key: <privateKey>
andcert: <serverCert>
创建证书 k8s secret
- 在 标准模式 下, 必须使用
key
作为私钥文件名,cert
作为证书文件名。 - 证书文件需要 保持 与 istio-ingressgateway 服务在 相同 的命名空间。
因此证书文件的创建命令如下
代码语言:javascript复制kubectl create secret generic wild-tangx-in
--from-file=key=./certificates/_.tangx.in.key
--from-file=cert=./certificates/_.tangx.in.crt
-n istio-system
其中
wild-tangx-in
: 是 secret name。之后 istio gateway 需要使用./certificates/_.tangx.in.key(crt)
是证书私钥/文件所在的路径。
kg secret -n istio-system
NAME TYPE DATA AGE
wild-tangx-in Opaque 2 175m
创建支持 https 的 istio Gateway
代码语言:javascript复制
---
# https://istio.io/latest/docs/reference/config/networking/gateway/
apiVersion: networking.istio.io/v1alpha3
kind: Gateway
metadata:
name: istio-tangx-in
namespace: myistio
spec:
selector:
istio: ingressgateway
servers:
- port:
number: 80
name: http
protocol: HTTP
hosts:
- istio.tangx.in
tls:
httpsRedirect: true # 开启 http -> https 301 重定向
- port:
number: 443
name: https
protocol: HTTPS # 匹配协议
hosts:
- "*.tangx.in" # 匹配域名, 这部分和 http 一样
tls:
mode: SIMPLE # tls 模式
credentialName: wild-tangx-in # 创建在 istio-system 下的证书 secret
.tls.httpRedirect
: 是否开启 http -> https 的 301 重定向。.tls.mode
: tls 模式。https 使用SIMPLE
模式。支持所有模式为PASSTHROUGH / SIMPLE / MUTUAL / AUTO_PASSTHROUGH / ISTIO_MUTUAL
。.tls.credentialName
: 在 k8s 环境下, 证书使用的 secret name。不用特意挂载到 istio-ingressgateway 服务中。
测试
通过请求可以看到