使用ASM網(wǎng)關(guān)實現(xiàn)HTTPS訪問Knative服務(wù)
ASM網(wǎng)關(guān)支持HTTPS協(xié)議和動態(tài)加載證書功能。當(dāng)您需要安全地訪問和管理Knative構(gòu)建的微服務(wù)時,可以使用ASM網(wǎng)關(guān)來實現(xiàn)HTTPS訪問,通過對服務(wù)端點進(jìn)行加密傳輸配置保護(hù)服務(wù)間的通信,提高整體架構(gòu)的安全性和可靠性。
前提條件
已使用Knative on ASM創(chuàng)建Knative服務(wù)。具體操作,請參見使用Knative on ASM部署Serverless應(yīng)用。
已在Knative on ASM中使用自定義域名aliyun.com。具體操作,請參見在Knative on ASM中使用自定義域名。
創(chuàng)建證書與私鑰
域名使用前,需要備案才能正常訪問。本示例中使用域名aliyun.com生成證書和密鑰,并保存為Secret。
如果您已有針對aliyun.com可用的證書和私鑰,請將證書命名為aliyun.com.crt
,私鑰命名為aliyun.com.key
。
如果您沒有針對aliyun.com可用的證書和私鑰,您可以使用OpenSSL,執(zhí)行以下步驟生成證書和私鑰。
執(zhí)行以下命令,創(chuàng)建根證書和私鑰。
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
執(zhí)行以下命令,為aliyun.com服務(wù)器生成證書和私鑰。
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
證書和私鑰準(zhǔn)備完成后,請在入口網(wǎng)關(guān)Pod所在的集群對應(yīng)的KubeConfig環(huán)境下,執(zhí)行以下命令,在istio-system命名空間中創(chuàng)建包含證書和私鑰的Secret,并保存Secret名稱。
kubectl create -n istio-system secret tls myexample-credential --key=aliyun.com.key --cert=aliyun.com.crt
開啟HTTPS訪問
將以下內(nèi)容保存為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連接到服務(wù)網(wǎng)格,在命令行執(zhí)行以下命令。
kubectl apply -f default.yaml
使用HTTPS訪問服務(wù)
更新Hosts文件,在Hosts文件中添加新域名的綁定信息。
綁定代碼示例如下。
說明請將
xx.xx.xxx.xx
替換為您實際的訪問網(wǎng)關(guān)地址。關(guān)于如何獲取訪問網(wǎng)關(guān)地址的具體操作,請參見獲取訪問網(wǎng)關(guān)地址。xx.xx.xxx.xx helloworld-go.default.aliyun.com
訪問HTTPS服務(wù)。
命令行訪問
在命令行執(zhí)行以下命令,通過證書訪問HTTPS服務(wù)。
curl -k --cert aliyun.com.crt --key aliyun.com.key https://helloworld-go.default.aliyun.com # 預(yù)期輸出 Hello Knative!
鏈接訪問
在瀏覽器中直接訪問
https://helloworld-go.default.aliyun.com
。說明由于使用了自簽名證書,訪問該服務(wù)時瀏覽器可能會提示該地址不安全,請勿擔(dān)心。
相關(guān)操作
Knative on ASM提供基于流量的灰度發(fā)布能力。創(chuàng)建Knative服務(wù)時,Knative會為服務(wù)自動創(chuàng)建第一個修訂版本Revision。后續(xù)每當(dāng)Knative服務(wù)的配置發(fā)生變化時,Knative都會創(chuàng)建一個新修訂版本,通過修改流量發(fā)往不同修訂版本的分配比例來實現(xiàn)灰度發(fā)布功能。具體操作,請參見在Knative on ASM中基于流量灰度發(fā)布服務(wù)。
Knative Serving為每個Pod注入QUEUE代理容器(queue-proxy)。該容器負(fù)責(zé)向Autoscaler報告業(yè)務(wù)容器的并發(fā)指標(biāo)。接收到這些指標(biāo)之后,Autoscaler會根據(jù)并發(fā)請求數(shù)及縮放算法,調(diào)整Deployment的Pod數(shù)量,從而實現(xiàn)自動擴(kuò)縮容。具體操作,請參見基于流量請求數(shù)實現(xiàn)服務(wù)自動擴(kuò)縮容。