Kubernetes的春天云网关
这春天云网关(SCG)开源项目已延长,为此提供Kubernetes.平台。此新产品允许您通过将yaml配置对象应用于Kubernetes群集来自动部署API Gateway服务。您还可以通过将yaml配置应用于群集来更新Kubernetes中的API网关路由。
Kubernetes的Spring云网关支持路由到以任何语言编写的服务,只要它们公开HTTP端点即可。提供Kubernetes运算符以通过向群集应用定义的自定义资源来处理创建和配置网关实例。您可以动态地在Kubernetes平台中配置生成的SCG实例,以启用连续集成(CI)和连续交付(CD)管道的API路由更新。此外,Kubernetes的SCG为单点登录(SSO)认证,角色的访问控制,范围授权,授权令牌继电器,客户端证书授权,速率限制和断路器提供商业API路由滤波器。Kubernetes平台中的SCG实例运行,具有高可用性和可调设置的内存和VCPU资源消耗。
Kubernetes的春天云网关易于安装和使用。在这个博客中。我展示了如何在本地开发环境中为Kubernetes安装SCG,并显示如何使用路由创建和配置网关实例。你需要两个Docker.和舵安装了命令行界面(CLI)工具。让我们首先开始使用本地Kubernetes群集的环境。使用本地Docker注册表和入口控制器配置群集也有助于。我们可以用种类创建本地群集。你可以安装善良这里。首先,我们从本地注册表中旋转(命名大教)通过使用“注册表”Docker映像如下:
$ docker运行-d -restart = always -p“127.0.0.1:5000” - name myregistry注册表:2
您可以使用以下命令创建名为的新种类群集mycluster.。群集由两个节点组成,作为控制平面节点,另一个节点,另一个作为与端口80和443映射到主机的工作负载节点以进入群集。群集配置为使用上述本地Docker注册表。
$ cat << eof |corpy create cluster - config = - 种类:群集apiversion:pink.x-k8s.io/v1alpha4 containerdconfigpatches: - | - [插件。“io.containerd.grpc.v1.cri”.registry.mirrors。“localhost:5000“]端点= [”http:// myRegistry:5000“节点: - 角色:控制平面 - 角色:工作者Kubeadmconfigpatches: - |类型:JoinconFiguration:KubeletExtraArgs:节点标签:“入口 - 就绪=真”ExtraportMappings: - ContainerPort:80主机口:80协议:TCP - ContainerPort:443主场:443协议:TCP EOF
您需要使用以下命令将注册表连接到群集网络:
$ Docker网络连接MyCluster MyRegistry ||真的
此外,您需要创建Kubernetes ConfigMap以在群集中配置本地注册表:
$ cat << eof |kubectl应用-f - apiersion:v1种类:configmap元数据:name:local-registry-hosting命名空间:kube-publicatory:localregistryhosting.v1:|主机:“localhost:5000”帮助:“https://kind.sigs.k8s.io/docs/user/local-registry/”eof
有了这个,你应该让您的本地开发环境准备好微型群集使用。现在我们可以调查如何为Kubernetes部署SCG。如果您有许可证和访问权限,您可以从VMware Tanzu网络下载Kubernetes的SCG安装程序。www.yabo.88我们将下载安装程序的当前版本(1.0.0)并将其提取到文件夹。您需要首先将Kubernetes Docker映像分配给POCKER注册表,我们在Port 5000处安装在LocalHost中的Docker注册表。从提取的文件夹中,运行位于中的图像重定位脚本脚本目录。此命令拉动,标签,并将图像推向Docker注册表:
$ ./scripts/relocate-images.sh localhost:5000
通过运行下面的脚本来完成安装。默认情况下,Kubernetes运算符和备份应用程序的Spring云网关部署在其中春天云网关命名空间。
$ ./scripts/stuck-spring-cloud-gateway.sh.
您现在可以在群集中创建网关实例。一个新的scg实例是用a生成的Springcloudgateway.CRD,一个新的路线定义了一个springcloudgatewayrouteconfigcrd,和一个springcloudgatewaymappingCRD配置带路由的网关。

例如,您可以创建一个调用文件Gateway-config.yaml.使用以下yaml定义:
apiersion:tanzu.vmwww.yabo.88ware.com/v1种类:springcloudgateway元数据:名称:my-gateway
接下来,将此定义应用于Kubernetes集群:
$ kubectl应用-f gateway-config.yaml
此配置创建一个新的网关实例(缺省情况下,网关实例在当前命名空间中创建)。要添加路由并将路由映射到网关,我们需要创建一个springcloudgatewayrouteconfig描述路由和a的对象springcloudgatewaymapping将路由配置映射到网关的对象。创建一个名为Route-config.yaml.使用以下yaml定义:
apiersion:tanzu.vmwww.yabo.88ware.com/v1种类:springcloudgatewayrouteconfig元数据:name:my-gateway-routes规范:路由: - ID:test-routu:https://github.com谓词: - path = / github / **过滤器: - StribPrefix = 1
然后创建一个名为mapping.yaml.使用以下yaml定义:
apiersion:tanzu.vmwww.yabo.88ware.com/v1种类:springcloudgatewaymapping元数据:名称:test-gateway映射规范:gatewayref:name:my-gateway ruteconfigref:name:my-gateway-routes
将两个定义应用于Kubernetes群集以配置具有定义路由的网关。以下这些步骤允许您在Kubernetes平台内部或外部路由到API。例如,您可以从公开的前端API配置到不同后端协作API的SCG。

上面的示出网关被配置为路由到GitHub。您可以安装入口控制器以从集群外部到达网关。例如,您可以安装nginx.入口控制器如下:
$ kubectl应用-f https://raw.githubusercontent.com/kubernetes/ingress-nginx/master/deploy/static/provider/kind/deploy.yaml
然后,您可以创建一个进入网关的入口。下面使用的创建的进入/门户作为内部Kubernetes网关服务的路径我的网关在端口80上。
apiersion:networking.k8s.io/v1种类:Ingress元数据:名称:网关 - 入口注释:nginx.ingress.kubernetes.io/rewrite-target-target:/ $ 2规格:Ingressclassname:IngressClassName:nginx规则: - http:paths: - 路径:/gateway(/ gateway(/ ||)(..*)pathtype:前缀后端:服务:名称:My-Gateway端口:Number:80
有了这个,您将能够使用已配置的网关启动GitHubhttp:// localhost / gateway / github