解决Kubernetes弃用警告:迁移kubernetes.io/ingress.class至spec.ingressClassName
正确添加spec.ingressClassName的方法
你使用的是networking.k8s.io/v1版本的Ingress资源,这个版本要求**ingressClassName必须放在spec字段下作为直接属性**,旧版本的kubernetes.io/ingress.class注解已被废弃,v1版本不再兼容,这也是你之前把它放在annotations里报错的原因。
另外你的原始配置还存在缩进混乱问题(比如tls与rules的层级错误),这也会导致部署失败。以下是修正后的完整配置:
apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: wso2-portals-ingress annotations: nginx.ingress.kubernetes.io/backend-protocol: "HTTPS" nginx.ingress.kubernetes.io/affinity: "cookie" nginx.ingress.kubernetes.io/session-cookie-name: "route" nginx.ingress.kubernetes.io/session-cookie-hash: "sha1" spec: ingressClassName: nginx # 这是spec.ingressClassName的正确位置 tls: - hosts: - api.am.wso2.com rules: - host: api.am.wso2.com http: paths: - path: / pathType: Prefix backend: service: name: wso2-am-service port: number: 9443
关键修正点:
- 移除了
annotations中的kubernetes.io/ingress.class: "nginx",替换为spec字段下的ingressClassName: nginx - 修正了
tls和rules的层级:rules是spec的直接子字段,不能嵌套在tls的hosts节点下 - 统一了所有配置项的缩进格式(建议用2个或4个空格保持一致)
部署这份修正后的配置文件即可解决之前的报错问题。
内容的提问来源于stack exchange,提问作者Chathura Dilshan
相关产品推荐
相关产品推荐

