所有文章 > 学习各类API > 使用 Kubernetes Gateway API 的多集群网关
使用 Kubernetes Gateway API 的多集群网关

使用 Kubernetes Gateway API 的多集群网关

在本文中,了解如何使用网关 API 规范来配置多集群设置的网关。

Kubernetes Gateway API 是 CNCF 发布的一项新规范,旨在标准化 Kubernetes Ingress 流量。现在,如果将服务配置为高可用性 (HA),该怎么办?(假设它位于不同的云环境中,您必须从网关访问它;即多集群、多云场景。)在本文中,我们将展示如何使用 Gateway API 规范为多集群设置配置网关。

多集群 Kubernetes 网关演示概述

我们有两个集群:一个在 EKS 中(主集群),另一个在 GKE 中(远程集群)。我在两个集群中都部署了 Istio,设置是主-远程 Istio 安装。Istio 用作控制器来实现网关 API 资源。

以下是我要做的事情:

  • 集群/EKS中,部署helloworld-v1部署、helloworld服务和echoserver服务。
  • 远程集群/GKE 中,部署helloworld-v2部署、helloworld服务、echoserver部署和echoserver服务。
  • 在主集群中部署 Kubernetes Gateway API 资源 —GatewayHTTPRoutes— 。
  • 部署完成后,我们将验证主集群/EKS 中的网关是否可以访问远程集群/GKE 中的服务,如下图所示:

带有 K8s Gateway API 演示设置的多集群、多云网关

在集群中部署应用程序和服务

在主集群和远程集群上部署helloworld-service :

kubectl -f 应用 helloworld-service.yaml --context=eks-cluster
kubectl -f 应用 helloworld-service.yaml --context=gke-cluster

1

将helloworld-deployment-v1 部署到主集群/EKS,将helloworld-deployment-v2 部署到远程集群/GKE:

kubectl -f 应用 helloworld-deployment-v1.yaml --context=eks-cluster
kubectl -f 应用 helloworld-deployment-v2.yaml --context=gke-cluster

在两个集群中 部署echoserver-service ,并仅在远程集群中 部署 echoserver-deployment :

kubectl -f 应用 echoserver-service.yaml --context=eks-cluster
kubectl -f 应用 echoserver-service.yaml --context=gke-cluster
kubectl -f 应用 echoserver-deployment.yaml --context=gke-cluster

请注意,要实现此功能,需要在两个集群中部署服务资源。这就是为什么我将其部署echoserver-service在主集群/EKS 中,尽管部署仅在远程集群/GKE 中。

现在,让我们验证主集群和辅助集群中的部署:

kubectl 获取 svc -n demo --context=eks-cluster
kubectl 获取 pods -n demo --context=eks-cluster
kubectl 获取 svc -n demo --context=gke-cluster
kubectl 获取 pods -n demo --context=gke-cluster

主集群中有helloworld-v1pod 正在运行,而远程集群中有helloworld-v2echoserverpod 均成功运行:

部署 K8s Gateway API 资源并验证多集群通信

在主/EKS集群中应用网关资源:

kubectl apply -f gateway-api-gateway.yaml --context=eks-cluster

Gateway使用Istio作为控制器,部署在istio-ingress命名空间中。

在应用程序的主集群中部署HTTPRoutehelloworld,监听路径/hello

kubectl apply -f helloworld-httproute.yaml --context=eks-cluster

现在,让我们通过 curlhelloworld应用程序来验证多集群通信;但首先,我们需要获取网关 IP:

kubectl 获取 svc -n istio-ingress --context=eks-cluster

验证多集群通信:

curl yours ip/hello

您可以看到该请求分别由部署在主集群和辅集群中的helloworld-v1和提供服务。helloworld-v2

现在,让我们在主集群中部署echoserver 的 HTTPRoute,它监听/

kubectl apply -f echoserver-httproute.yaml --context=eks-cluster


验证网关是否能够访问echoserver部署在远程集群:

网关能够echoserver成功从部署在远程集群的服务器收到响应。演示到此结束。

原文链接:https://dzone.com/articles/multicluster-gateways-with-kubernetes-gateway-api

#你可能也喜欢这些API文章!