基于Kubernetes的Spring Cloud Gateway发布 - spring.io


Spring Cloud Gateway(简称SCG)开源项目已经扩展到Kubernetes平台,通过此新产品,您可以通过将YAML配置对象应用于Kubernetes集群来自动执行API网关服务的部署。您还可以通过将YAML配置应用于集群来更新Kubernetes中API网关的路由。
只要提供HTTP端点,用于Kubernetes的Spring Cloud Gateway都支持路由到以任何语言编写的服务。通过将定义的自定义资源应用于集群,提供了Kubernetes运算符来处理创建和配置网关实例。
您可以在Kubernetes平台中动态配置衍生的SCG实例,以为连续集成(CI)和连续交付(CD)管道启用API路由更新。
此外,用于Kubernetes的SCG还提供用于单点登录(SSO)身份验证,基于角色的访问控制,范围授权,授权令牌中继,客户端证书授权,速率限制和断路器的商业API路由过滤器。Kubernetes平台中的SCG实例以高可用性和可调整的内存和vCPU资源消耗设置运行。
 
用于Kubernetes的Spring Cloud Gateway易于安装和使用。在这个博客中。我将展示如何在本地开发环境中为Kubernetes安装SCG,并展示如何使用路由创建和配置网关实例。您需要同时安装DockerHelm命令行界面(CLI)工具。
首先让我们通过使用本地Kubernetes集群设置环境来开始。使用本地Docker注册表和入口控制器配置集群也将很有帮助。我们可以使用KinD创建本地集群。您可以从此处安装KinD 。
 
准备好本地集群环境
使用Docker的注册5000端口:

$ Docker run -d –restart=always -p “127.0.0.1:5000” –name myregistry registry:2

可以使用下面的命令创建一个名为mycluster的新KinD群集。集群由两个节点组成,一个作为控制平面control-plane节点,另一个作为工作负载worker节点,端口80和443映射到您的主机以进入集群。群集配置为使用上述本地Docker注册表。
$ cat <<EOF | kind create cluster --config=-
kind: Cluster
apiVersion: kind.x-k8s.io/v1alpha4
containerdConfigPatches:
- |-
  [plugins."io.containerd.grpc.v1.cri".registry.mirrors."localhost:5000"]
    endpoint = [
"http://myregistry:5000"]
nodes:
- role: control-plane
- role: worker
  kubeadmConfigPatches:
  - |
    kind: JoinConfiguration
    nodeRegistration:
      kubeletExtraArgs:
        node-labels:
"ingress-ready=true"
  extraPortMappings:
  - containerPort: 80
    hostPort: 80
    protocol: TCP
  - containerPort: 443
    hostPort: 443
    protocol: TCP
EOF

需要使用以下命令将注册表连接到群集网络:
$ docker network connect mycluster myregistry || true

另外,您需要创建一个Kubernetes ConfigMap来配置集群中的本地注册表:

$ cat <<EOF | kubectl apply -f -
apiVersion: v1
kind: ConfigMap
metadata:
  name: local-registry-hosting
  namespace: kube-public
data:
  localRegistryHosting.v1: |
    host: "localhost:5000"
    help:
"https://kind.sigs.k8s.io/docs/user/local-registry/"
EOF

这样,您就应该准备好本地开发环境并使用一个小型集群。
 
[b]部署SCG[/b]

现在我们可以研究如何为Kubernetes部署SCG。如果您具有许可证和访问权限,则可以从VMware Tanzu Network下载适用于Kubernetes的SCG安装程序。我们将下载安装程序的当前版本(1.0.0)并将其解压缩到文件夹中。您需要首先将用于Kubernetes Docker映像的Spring Cloud Gateway分配给我们在端口5000上的localhost中安装的docker注册表。从解压缩的文件夹中,运行目录中的映像重定位脚本scripts。此命令将Docker image拉出,标记并推入Docker注册表中:
$ ./scripts/relocate-images.sh localhost:5000

通过运行以下脚本来完成安装。
$ ./scripts/ install-spring-cloud-gateway.sh

默认情况下,在spring-cloud-gateway名称空间中的SCG运营商和支持的应用程序都将被部署。

现在,您可以在集群中创建网关实例。
有三个实例:使用SpringCloudGateway CRD生成新的SCG实例;使用 SpringCloudGatewayRouteConfigCRD定义新的路由和SpringCloudGatewayMappingCRD配置的路由网关。

更详细点击标题。