Kubernetes 批量变更 ingress 配置格式

最近在做Kubernetes 的系统升级(升级至1.22.10),经过检查发现系统中还在使用一些已经废弃的API,主要是一些ingress nginx配置

Kubernetes 1.22版本中废弃的API包括:

【变更】MutatingWebhookConfiguration和ValidatingWebhookConfiguration资源不再支持admissionregisration.k8s.io/v1beta1 API。如果使用旧版本API创建准入或变换Webhook配置,会导致配置创建失败,进而影响Webhook服务的使用,请尽快使用admissionregisration.k8s.io/v1替代。
【变更】CustomResourceDefinition资源不再支持apiextensions.k8s.io/v1beta1 API。如果使用旧版本API创建自定义资源定义,会导致定义创建失败,进而影响调和(reconcile)该自定资源的控制器,请尽快使用apiextensions.k8s.io/v1替代。
【变更】APIService资源不再支持apiregistration.k8s.io/v1beta1API。如果使用旧版本API管理Kubernetes扩展API服务,会影响Kubernetes扩展API的服务,请尽快使用apiregistration.k8s.io/v1替代。
【变更】TokenReview资源不再支持authentication.k8s.io/v1beta1 API。如果使用旧版本API进行授权的验证,会导致验证失败,进而影响应用的正常工作,请尽快使用authentication.k8s.io/v1替代。
【变更】SubjectAccessReview资源不再支持authorization.k8s.io/v1beta1 API。如果使用旧版本API进行授权的验证,会导致验证失败,进而影响应用的正常工作,请尽快使用authorization.k8s.io/v1替代。
【变更】CertificateSigningRequest资源不再支持certificate.k8s.io/v1beta1 API。如果使用旧版本API请求签发证书,会导致签发失败,请使用certificate.k8s.io/v1替代。
【变更】Lease资源不再支持coordination.k8s.io/v1beta1 API。如果使用旧版本API进行选主操作,会导致选主失败,进而影响应用的正常工作,请尽快使用coordination.k8s.io/v1替代。
【变更】Ingress和IngressClass资源不再支持networking.k8s.io/v1beta1和extensions/v1beta1 API。如果使用旧版本API管理Ingress,会影响应用对外暴露服务,请尽快使用networking.k8s.io/v1替代。
【变更】ClusterRole、ClusterRoleBinding、Role和RoleBinding资源不再支持rbac.authorization.k8s.io/v1beta1 API。如果使用旧版本API管理RBAC资源,会影响应用的权限服务,甚至无法在集群内正常使用,请尽快使用rbac.authorization.k8s.io/v1替代。
【变更】CSIDriver、CSINode、StorageClass和VolumeAttachment资源不再支持storage.k8s.io/v1beta1 API。如果使用旧版本API管理CSI资源,会影响集群内的存储服务提供,导致集群内无法正常使用CSI,请尽快使用storage.k8s.io/v1替代。
【变更】PriorityClass资源不再支持scheduling.k8s.io/v1beta1 API。如果使用旧版本API管理集群内的容器组优先类型,会导致操作失败,请使用scheduling.k8s.io/v1替代。
【废弃】Dockershim目前被标记为废弃,计划于1.24版本后移除。

我们本次需要替换的主要是:

【变更】Ingress和IngressClass资源不再支持networking.k8s.io/v1beta1和extensions/v1beta1 API。如果使用旧版本API管理Ingress,会影响应用对外暴露服务,请尽快使用networking.k8s.io/v1替代。

但是networking.k8s.io/v1beta1的配置编写格式和networking.k8s.io/v1的配置编写格式是不一样的
networking.k8s.io/v1beta1

- path: 
  backend:
    serviceName: 
    servicePort: 

networking.k8s.io/v1 编写格式

   path: 
   pathType: ImplementationSpecific
 - backend:
     service:
       name: 
       port:
         number: 

可以看到变化还是比较大的,如果一个域名的配置全部都重新改格式的话,工作量太大,这时候我们就可以使用kubectl convert插件去进行格式转化:

二、kubectl convert

转换配置文件为不同的API版本,支持YAML和JSON格式。

该命令将配置文件名,目录或URL作为输入,并将其转换为指定的版本格式,如果目标版本未指定或不支持,则转换为最新版本。

默认输出将以YAML格式打印出来,可以使用- o选项改变输出格式。

语法
可以使用kubectl-convert命令(kubectl convertv1.20 之前)自动转换现有对象:

kubectl convert -f ingress.yaml

将“ingress.yaml”指定的资源的实时状态转换为最新版本

kubectl convert -f ingress.yaml --local -o json

将当前目录下的所有文件转换为最新版本,并将其全部创建。

kubectl convert -f . | kubectl create -f -

将jingress.yaml API版本替换为 networking.k8s.io/v1,并转换格式后输入到新文件内

kubectl convert -f ingress.yaml --output-version networking.k8s.io/v1 > ingress_new.yaml

请注意,这可能会使用非理想的默认值。要了解有关特定资源的更多信息,请查看 KubernetesAPI参考

文章参考自Kubernetes:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值