将 networking.k8s.io/v1beta1 移植到 v1

Porting networking.k8s.io/v1beta1 to v1

我尝试从 networking.k8s.io/v1beta1 切换到 networking.k8s.io/v1,但似乎我迷失了自我。 所以我有一个问题要问这里。尝试安装 dry-运行 时出现以下错误消息。
错误信息:
错误:无法从发布清单构建 kubernetes 对象:错误验证“”:错误验证数据:ValidationError(Ingress.spec.rules[0].http.paths[0].backend.service.port ): io.k8s.api.networking.v1.ServiceBackendPort 的类型无效:得到“string”,应为“map”

发生在这部分:

kind: Ingress

apiVersion: {{.Values.ingress.apiVersion}}

metadata:

  name: ingress-backend-route

{{- if .Values.ingress.annotations }}

  annotations:

{{ toYaml .Values.ingress.annotations | indent 4 }}

{{- end }}  

spec:

  rules:

    - host: {{.Values.ingress.host}}

      http:

        paths:

          - path: {{.Values.ingress.path}} 

            pathType: {{.Values.generalPrefix}}

            backend:

              service:

                name: my-service-svc

                port: {{ if .Values.oauth2.enable }}http-protected{{ else }}http{{ end }}

          {{- if  .Values.debug }}   

          - path: /couchdb

            pathType: {{.Values.generalPrefix}}

            backend:

              service:

                name: {{ .Release.Name }}-svc-couchdb

                port:

                  number: 5984 

          - path: /rabbitmq

            pathType: {{.Values.generalPrefix}}

            backend:

              service:

                name: rabbitmq-svc

                port:

                  number: 80

          {{- end }}

我认为在行port: {{ if .Values.oauth2.enable }}http-protected{{ else }}http{{ end }} http-protected / http 在 my-service.yaml

中定义
---
apiVersion: v1
kind: Service
metadata:
  name: my-service-svc
spec:
  selector:
    app: my-service
  ports:
  - name: http
    protocol: TCP
    port: 80
    targetPort: 80
  - name: http-protected
    protocol: TCP
    port: 8080
    targetPort: 8080

新的 API 使用新的端口语法,也许这是问题所在,但我不太理解错误消息。可能有人在这里有提示`?

这是你的入口。端口期待另一个密钥。如果您只想按给定的编号使用端口或按定义的服务端口名称使用端口,请使用数字。

例如

port:
  number: 80

port:
  name: http