开发 k8s 管理平台 - k8sailor 12. 设置 deployment 副本数量 与 参数的有效性验证

原文地址: https://tangx.in/posts/books/k8sailor/chapter02/12-deployment-scale-and-params-validate/

tag: https://github.com/tangx/k8sailor/tree/feat/12-deployment-scale-and-params-validate

deployment scale

1
kubectl scale deployment my-nginx-1 --replicas 1

在 client-go sdk 中, scale 参数是一个对象, 因此不能直接传入 一个数字

  1. 需要通过 GetScale() 方法获取到 *autoscalingv1.Scale 对象。
  2. 修改 Scale 对象中的 Replicas 数值。
  3. 使用 UpdateScale() 方法更新设置。

SetDeploymentReplicas

params validtor

参数验证在任何情况下都不能放松警惕, 尤其是 边界验证0值混淆

对于参数的验证, 可以自己在业务代码中实现, 也可以使用已有的公共库。 gin 默认使用的是 https://github.com/go-playground/validator

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
// SetDeploymentReplicasInput 调整 deployment pod 数量参数
// Replicas 为了避免 **0值** 影响。
//   1. 使用为 *int 指针对象, 自行在业务逻辑中进行校验
//   2. 另外也可以使用, `binding` tag, 由 gin 框架的 valicator 帮忙校验。 https://github.com/go-playground/validator
// Namespace 设置了默认值, 如果请求不提供将由 gin 框架自己填充。
type SetDeploymentReplicasInput struct {
	Namespace string `query:"namespace,default=default"`
	Name      string `uri:"name"`
	Replicas  *int   `query:"replicas" binding:"required"`
}

gin cors

需要在 上使用 cors 跨域设置。

如果在子路由上允许, put 的时候也会出现 404。

vue axios

axios 怎么传递 query 参数, 而不是手动写 ?

https://tangx.in/2021/09/29/typescript-convert-json-to-querystring/

1
yarn add @types/qs qs

使用 qs.stringify(params) 进行序列化。