使用ASM网关实现HTTPS访问Knative服务
ASM网关支持HTTPS协议和动态加载证书功能。在使用Knative on ASM时,您可以通过ASM网关来实现HTTPS访问。本文介绍如何使用ASM网关实现HTTPS访问Knative服务。
前提条件
已使用Knative on ASM创建Knative服务。具体操作,请参见使用Knative on ASM部署Serverless应用。
已在Knative on ASM中使用自定义域名aliyun.com。具体操作,请参见在Knative on ASM中使用自定义域名。
创建证书与私钥
域名使用前,需要备案才能正常访问。本示例中使用域名aliyun.com生成证书和密钥,并保存为Secret。
如果您已有针对aliyun.com可用的证书和私钥,请将证书命名为aliyun.com.crt
,私钥命名为aliyun.com.key
。
如果您没有针对aliyun.com可用的证书和私钥,您可以使用OpenSSL,执行以下步骤生成证书和私钥。
执行以下命令,创建根证书和私钥。
openssl req -x509 -sha256 -nodes -days 365 -newkey rsa:2048 -subj '/O=myexample Inc./CN=aliyun.com' -keyout aliyun.root.key -out aliyun.root.crt
执行以下命令,为aliyun.com服务器生成证书和私钥。
openssl req -out aliyun.com.csr -newkey rsa:2048 -nodes -keyout aliyun.com.key -subj "/CN=aliyun.com/O=myexample organization" openssl x509 -req -days 365 -CA aliyun.root.crt -CAkey aliyun.root.key -set_serial 0 -in aliyun.com.csr -out aliyun.com.crt
证书和私钥准备完成后,请在入口网关Pod所在的集群对应的KubeConfig环境下,执行以下命令,在istio-system命名空间中创建包含证书和私钥的Secret,并保存Secret名称。
kubectl create -n istio-system secret tls myexample-credential --key=aliyun.com.key --cert=aliyun.com.crt
开启HTTPS访问
将以下内容保存为default.yaml。
apiVersion: istio.alibabacloud.com/v1beta1 kind: ASMKnativeConfig metadata: name: default spec: enabled: true useExisting: true tag: 1.4.0 domainConfig: domainName: aliyun.com # 替换为您使用的域名。 credentialName: myexample-credential # 替换为您的Secret名称。
使用kubectl连接到服务网格,在命令行执行以下命令。
kubectl apply -f default.yaml
使用HTTPS访问服务
更新Hosts文件,在Hosts文件中添加新域名的绑定信息。
绑定代码示例如下。
说明请将
xx.xx.xxx.xx
替换为您实际的访问网关地址。关于如何获取访问网关地址的具体操作,请参见获取访问网关地址。xx.xx.xxx.xx helloworld-go.default.aliyun.com
访问HTTPS服务。
命令行访问
在命令行执行以下命令,通过证书访问HTTPS服务。
curl -k --cert aliyun.com.crt --key aliyun.com.key https://helloworld-go.default.aliyun.com # 预期输出 Hello Knative!
链接访问
在浏览器中直接访问
https://helloworld-go.default.aliyun.com
。说明由于使用了自签名证书,访问该服务时浏览器可能会提示该地址不安全,请勿担心。