【问题标题】:Issues migrating from v1beta to v1 for kubernetes ingressKubernetes 入口从 v1beta 迁移到 v1 的问题
【发布时间】:2022-08-02 18:34:06
【问题描述】:

在我的公司中,我们的 Kubernetes 集群最近更新到 1.22+,我们正在使用 AKS。所以我不得不更改我们正在使用的入口 yaml 文件的清单:networking.k8s.io/v1beta1,以符合新的 apiVersion:networking.k8s.io/v1

这是入口文件的早期清单:

{{- if .Values.ingress.enabled -}}
{{- $fullName := include \"amroingress.fullname\" . -}}
{{- $svcPort := .Values.service.port -}}
{{- if semverCompare \">=1.14-0\" .Capabilities.KubeVersion.GitVersion -}}
apiVersion: networking.k8s.io/v1beta1
{{- else -}}
apiVersion: extensions/v1beta1
{{- end }}
kind: Ingress
metadata:
  name: {{ $fullName }}
  labels:
    {{- include \"amroingress.labels\" . | nindent 4 }}
  {{- with .Values.ingress.annotations }}
  annotations:
    {{- toYaml . | nindent 4 }}
  {{- end }}
spec:
  {{- if .Values.ingress.tls }}
  tls:
    {{- range .Values.ingress.tls }}
    - hosts:
        {{- range .hosts }}
        - {{ . | quote }}
        {{- end }}
      secretName: {{ .secretName }}
    {{- end }}
  {{- end }}
  rules:
    {{- range .Values.ingress.hosts }}
    - host: {{ .host | quote }}
      http:
        paths:
          #{{- range .paths }}
          #- path: {{ . }}
          #  backend:
          #    serviceName: {{ $fullName }}
          #    servicePort: {{ $svcPort }}
          #{{- end }}
          - path: /callista/?(.*)
            backend:
              serviceName: amro-amroingress
              servicePort: 8080
    {{- end }}
  {{- end }}

在我的更改之后,它看起来像这样:

{{- if .Values.ingress.enabled -}}
{{- $fullName := include \"amroingress.fullname\" . -}}
{{- $svcPort := .Values.service.port -}}
apiVersion: networking.k8s.io/v1
{{- end }}
kind: Ingress
metadata:
  name: {{ include \"amroingress.fullname\" . }}
  labels:
    {{- include \"amroingress.labels\" . | nindent 4 }}
  {{- with .Values.ingress.annotations }}
  annotations:
    {{- toYaml . | nindent 4 }}
  {{- end }}
spec:
  {{- if .Values.ingress.tls }}
  tls:
    {{- range .Values.ingress.tls }}
    - hosts:
        {{- range .hosts }}
        - {{ . | quote }}
        {{- end }}
      secretName: {{ .secretName }}
    {{- end }}
  {{- end }}
  rules:
    {{- range .Values.ingress.hosts }}
    - host: {{ .host | quote }}
      http:
        paths:
          {{- range .paths }}
          - path: /callista/?(.*)
            pathType: Prefix
            backend:
              service:
                name: amro-amroingres
                port: 
                  number: 8080
    {{- end }}
  {{- end }}

但是,在我进行更改并尝试使用 helm 进行部署后,我收到了这个错误: Error: UPGRADE FAILED: current release manifest contains removed kubernetes api(s) for this kubernetes version and it is therefore unable to build the kubernetes objects for performing the diff. error from kubernetes: unable to recognize \"\": no matches for kind \"Ingress\" in version \"networking.k8s.io/v1beta1\"

我不确定为什么会发生此错误,即使入口清单已更改并且我已经被困了几天了。我是 Kubernetes 和 ingress 的新手,任何帮助都将不胜感激。

标签: kubernetes kubernetes-helm kubernetes-ingress azure-aks nginx-ingress


【解决方案1】:

在尝试了更多的东西之后,我决定最终使用 helm install 来删除集群中当前的部署和图表。

然后我只是尝试使用我在问题中提到的新入口清单进行安装,并且成功并最终能够部署。因此,我修改的清单本身似乎没有任何问题。

【讨论】:

    猜你喜欢
    • 2019-12-30
    • 1970-01-01
    • 2022-07-29
    • 1970-01-01
    • 2021-05-29
    • 2021-05-20
    • 1970-01-01
    • 2020-10-20
    • 2019-05-14
    相关资源
    最近更新 更多