Konnect 啟動(dòng)

安裝 Kong Gateway Operator

Kong Gateway Operator 可以部署和管理連接到 Konnect 控制平面的數(shù)據(jù)平面。所有服務(wù)、路由和插件均在 Konnect 中配置,并自動(dòng)發(fā)送到數(shù)據(jù)平面。

安裝

更新 Helm 倉(cāng)庫(kù)

helm repo add kong https://charts.konghq.com
helm repo update kong

使用 Helm 安裝 Kong Gateway Operator

helm upgrade --install kgo kong/gateway-operator -n kong-system --create-namespace  \
  --set image.tag=1.5 \
  --set kubernetes-configuration-crds.enabled=true \
  --set env.ENABLE_CONTROLLER_KONNECT=true

你可以使用 kubectl wait 等待 Operator 準(zhǔn)備就緒:

kubectl -n kong-system wait --for=condition=Available=true --timeout=120s deployment/kgo-gateway-operator-controller-manager

gateway-operator-controller-manager 部署準(zhǔn)備就緒后,你就可以部署連接到 Konnect 控制平面的數(shù)據(jù)平面資源。

創(chuàng)建 KonnectExtension

為了將 Kong DataPlane 綁定到 Konnect ControlPlane,你可以使用 KonnectExtensionCRD參考)。

你可以在本指南中了解有關(guān)如何使用 KonnectExtension 對(duì)象的更多信息。

將數(shù)據(jù)平面綁定到 Konnect 控制平面

Kong 的 DataPlane(數(shù)據(jù)平面)可以配置為使用自管理的 Hybrid 控制平面或 KIC 控制平面。這意味著在 KonnectExtension 對(duì)象中引用的 controlPlane 實(shí)體(通過(guò) KonnectIDNamespacedRef)必須屬于這兩類之一。但需要特別注意的是,如果 Konnect 控制平面是 KIC 類型,那么 Kong 的 DataPlane 必須在集群中運(yùn)行一個(gè) Kubernetes 控制平面(即一個(gè) ControlPlane CRD 實(shí)例),才能正確配置。在這種場(chǎng)景下,強(qiáng)烈推薦使用 Gateway 來(lái)進(jìn)行流量管理。

下面的命令可以用來(lái)配置一個(gè) KonnectExtension,它用于將一個(gè) GatewayDataPlane 連接到 Konnect。你可以在概覽頁(yè)面中找到所有可用的 KonnectExtension 配置選項(xiàng)。

echo '
kind: KonnectExtension
apiVersion: konnect.konghq.com/v1alpha1
metadata:
 name: my-konnect-config
 namespace: default
spec:
 clientAuth:
   certificateSecret:
     provisioning: Automatic
 konnect:
   controlPlane:
     ref:
       type: konnectNamespacedRef
       konnectNamespacedRef:
         name: gateway-control-plane' | kubectl apply -f -

部署數(shù)據(jù)平面

為了將 Kong DataPlane 綁定到 Konnect ControlPlane,你可以使用 KonnectExtensionCRD參考)。

創(chuàng)建數(shù)據(jù)平面

使用 KonnectExtension 參考配置 Kong DataPlane

echo '
apiVersion: gateway-operator.konghq.com/v1beta1
kind: DataPlane
metadata:
 name: dataplane-example
spec:
 extensions:
 - kind: KonnectExtension
   name: my-konnect-config
   group: konnect.konghq.com
 deployment:
   podTemplateSpec:
     spec:
       containers:
       - name: proxy
         image: kong/kong-gateway:3.10.0.1' | kubectl apply -f -

創(chuàng)建一個(gè)路由

現(xiàn)在已經(jīng)有了控制平面和數(shù)據(jù)平面,可以配置服務(wù)和路由來(lái)處理流量。

創(chuàng)建服務(wù)

在 Kubernetes 集群中創(chuàng)建 KongService 對(duì)象將會(huì)在 Gateway Manager 中配置一個(gè) Kong Konnect 服務(wù)。你可以參考 CR API 來(lái)查看所有可用字段。

你的 KongService 必須與你在集群中創(chuàng)建的 KonnectGatewayControlPlane 對(duì)象關(guān)聯(lián)。它將成為網(wǎng)關(guān)控制平面配置的一部分。

通過(guò)應(yīng)用以下 YAML 清單創(chuàng)建 KongService:

echo '
kind: KongService
apiVersion: configuration.konghq.com/v1alpha1
metadata:
 name: service
 namespace: default
spec:
 name: service
 host: httpbin.konghq.com
 controlPlaneRef:
   type: konnectNamespacedRef # This indicates that an in cluster reference is used
   konnectNamespacedRef:
     name: gateway-control-plane # Reference to the KonnectGatewayControlPlane object
' | kubectl apply -f -

此時(shí),你應(yīng)該在網(wǎng)關(guān)管理器 UI 中看到該服務(wù)。

創(chuàng)建路由

在 Kubernetes 集群中創(chuàng)建 KongRoute 對(duì)象將會(huì)在網(wǎng)關(guān)管理器中配置一個(gè) Kong Konnect 路由。你可以參考 CR API 來(lái)查看所有可用字段。

將路由和服務(wù)關(guān)聯(lián)

你可以通過(guò)應(yīng)用以下 YAML 清單來(lái)創(chuàng)建與 KongService 關(guān)聯(lián)的 KongRoute

echo '
kind: KongRoute
apiVersion: configuration.konghq.com/v1alpha1
metadata:
 name: route-with-service
 namespace: default
spec:
 name: route-with-service
 protocols:
 - http
 paths:
 - /
 serviceRef:
   type: namespacedRef
   namespacedRef:
     name: service # KongService reference
' | kubectl apply -f -

發(fā)送測(cè)試流量

創(chuàng)建服務(wù)和路由后,將流量發(fā)送到代理,代理會(huì)將請(qǐng)求轉(zhuǎn)發(fā)到 httpbin.konghq.com。你可以使用 httpbin 的 /anything 端點(diǎn)來(lái)回顯響應(yīng)中發(fā)出的請(qǐng)求。

要向代理發(fā)出請(qǐng)求,請(qǐng)使用 kubectl get services 獲取 LoadBalancer 的 IP 地址:

export PROXY_IP=$(kubectl get services -o json | jq -r '.items[] | .status.loadBalancer?|.ingress[]?|.ip')
echo "Proxy IP: $PROXY_IP"

通過(guò)向代理 IP 地址發(fā)送請(qǐng)求來(lái)測(cè)試路由規(guī)則:

curl $PROXY_IP/anything/hello
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容