Konnect 启动

安装 Kong Gateway Operator

Kong Gateway Operator 可以部署和管理连接到 Konnect 控制平面的数据平面。所有服务、路由和插件均在 Konnect 中配置,并自动发送到数据平面。

安装

更新 Helm 仓库

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 准备就绪:

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

gateway-operator-controller-manager 部署准备就绪后,你就可以部署连接到 Konnect 控制平面的数据平面资源。

创建 KonnectExtension

为了将 Kong DataPlane 绑定到 Konnect ControlPlane,你可以使用 KonnectExtensionCRD参考)。

你可以在本指南中了解有关如何使用 KonnectExtension 对象的更多信息。

将数据平面绑定到 Konnect 控制平面

Kong 的 DataPlane(数据平面)可以配置为使用自管理的 Hybrid 控制平面或 KIC 控制平面。这意味着在 KonnectExtension 对象中引用的 controlPlane 实体(通过 KonnectIDNamespacedRef)必须属于这两类之一。但需要特别注意的是,如果 Konnect 控制平面是 KIC 类型,那么 Kong 的 DataPlane 必须在集群中运行一个 Kubernetes 控制平面(即一个 ControlPlane CRD 实例),才能正确配置。在这种场景下,强烈推荐使用 Gateway 来进行流量管理。

下面的命令可以用来配置一个 KonnectExtension,它用于将一个 GatewayDataPlane 连接到 Konnect。你可以在概览页面中找到所有可用的 KonnectExtension 配置选项。

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 -

部署数据平面

为了将 Kong DataPlane 绑定到 Konnect ControlPlane,你可以使用 KonnectExtensionCRD参考)。

创建数据平面

使用 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 -

创建一个路由

现在已经有了控制平面和数据平面,可以配置服务和路由来处理流量。

创建服务

在 Kubernetes 集群中创建 KongService 对象将会在 Gateway Manager 中配置一个 Kong Konnect 服务。你可以参考 CR API 来查看所有可用字段。

你的 KongService 必须与你在集群中创建的 KonnectGatewayControlPlane 对象关联。它将成为网关控制平面配置的一部分。

通过应用以下 YAML 清单创建 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 -

此时,你应该在网关管理器 UI 中看到该服务。

创建路由

在 Kubernetes 集群中创建 KongRoute 对象将会在网关管理器中配置一个 Kong Konnect 路由。你可以参考 CR API 来查看所有可用字段。

将路由和服务关联

你可以通过应用以下 YAML 清单来创建与 KongService 关联的 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 -

发送测试流量

创建服务和路由后,将流量发送到代理,代理会将请求转发到 httpbin.konghq.com。你可以使用 httpbin 的 /anything 端点来回显响应中发出的请求。

要向代理发出请求,请使用 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"

通过向代理 IP 地址发送请求来测试路由规则:

curl $PROXY_IP/anything/hello
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容