Gateway 支持 https 访问 - 标准模式
# Gateway 支持 https 访问 - 标准模式
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 服务在 相同 的命名空间。
因此证书文件的创建命令如下
kubectl create secret generic wild-tangx-in \
--from-file=key=./certificates/_.tangx.in.key \
--from-file=cert=./certificates/_.tangx.in.crt \
-n istio-system
1
2
3
4
2
3
4
其中
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
1
2
3
4
2
3
4
# 创建支持 https 的 istio Gateway
---
# 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
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
.tls.httpRedirect
: 是否开启 http -> https 的 301 重定向。.tls.mode
: tls 模式。 https 使用SIMPLE
模式。 支持所有模式为PASSTHROUGH / SIMPLE / MUTUAL / AUTO_PASSTHROUGH / ISTIO_MUTUAL
。.tls.credentialName
: 在 k8s 环境下, 证书使用的 secret name。 不用特意挂载到 istio-ingressgateway 服务中。
# 测试
通过请求可以看到
上次更新: 2023/04/05, 05:23:58