容器网络模式gateway的部署相关api
概述编写此文档的目的
整体介绍项目背景,目前状态以及缘由
序号 术语 说明 备注
序号 参考资料 备注
汇总产品所有功能清单列表 序号 功能名称 功能描述 备注
总述API要实现的基本目标
我们默认部署的独享型gatewayclass上会带有
gatewayclass.cpaas.io/deploy: cpaas.io
gatewayclass.cpaas.io/type: standalone这两个label,要用这两个label来过滤,默认部署的独享型gatewayclass的name是"exclusive-gateway" 如果是共享型的,label是
gatewayclass.cpaas.io/deploy: cpaas.io
gatewayclass.cpaas.io/type: shared
共享型gateway的访问地址从alb上获取
- alb.spec.address 是用户手动设置的地址,格式为逗号分割的字符串
- alb.status.detail.address, 是开启lbsvc后分配的地址。格式为
apiVersion: crd.alauda.io/v2beta1
kind: ALB2
metadata:
labels:
gatewayclass.cpaas.io/deploy: cpaas.io
gatewayclass.cpaas.io/type: shared
name: global-alb2
namespace: cpaas-system
spec:
address: 127.0.0.1,127.0.0.2
config:
loadbalancerName: global-alb2
replicas: 1
type: nginx
status:
detail:
address:
ipv4:
- 128.0.0.1
ipv6:
- fe80::6442:d6ae:ffd8:6f07
msg: ""
ok: true
alb: {}
deploy:
probeTimeStr: "2023-06-30T02:28:43Z"
reason: workload ready
state: Running
version:
imagePatch: not patch
version: v3.14.1
probeTime: 1688092123
probeTimeStr: "2023-06-30T02:28:43Z"
reason: ""
state: Running
创建容器网络gateway需要先创建alb,在创建gateway
创建alb POST /kubernetes/{cluster}/apis/crd.alauda.io/v2beta1/namespaces/{namespace}/alaudaloadbalancer2
apiVersion: crd.alauda.io/v2beta1
kind: ALB2
metadata:
name: g1-12334
namespace: a1
spec:
config:
enableAlb: false
resources:
limits:
cpu: 200m
memory: 256Mi
requests:
cpu: 200m
memory: 256Mi
vip:
enableLbSvc: true
lbSvcAnnotations:
a: b
gateway:
mode: standalone
name: g1
type: nginxapiVersion: gateway.networking.k8s.io/v1beta1
kind: Gateway
metadata:
name: g1
namespace: a1
labels:
alb.cpaas.io/alb-ref: g1-12334
spec:
gatewayClassName: exclusive-gateway
listeners:
- name: http
port: 8234
protocol: HTTP
hostname: a.com
allowedRoutes:
namespaces:
from: All- 要先创建alb再创建gateway
- alb的namespace和gateway是一样的,alb的name是gateway name+5位随机字符,必须在alb的config.gateway.name中指定gateway的名字
- 当gateway.mode为standalone-gateway时,networkmode默认为container
- 在gateway上通过alb.cpaas.io/alb-ref 指出这个gateway所使用的alb
如果是更新gateway相关的配置比如listener之类的,只更新gateway即可。如果是更新alb相关的,比如部署资源,lbsvcAnnotation只更新alb即可
- 更新alb PUT /kubernetes/{cluster}/apis/crd.alauda.io/v2beta1/namespaces/{namespace}/alaudaloadbalancer2/{NAME}
- 更新gateway PUT /kubernetes/{cluster}/apis/gateway.networking.k8s.io/v1beta1/namespaces/{NS}/gateways/{NAME}
3.1.6.4 删除gateway DELETE /kubernetes/{cluster}/apis/gateway.networking.k8s.io/v1beta1/namespaces/{NS}/gateways/{NAME}
只用删除gateway即可,后端会自动删除相应的alb.
模块部署过程以及部署依赖等
模块设计实现中涉及到的权限部分说明。比如新增crd的权限设计,api调用者的权限约束说明等。
该设计对于性能有何影响,或为了解决性能问题,应该采取何种设计
需要支持《ACP 兼容性需求基线》里规定的各种环境
必须满足《灵雀云公司产品通用安全基线(安全红线)》,当前设计方案有哪些可能带来安全问题,如何解决。