【问题标题】:resource mapping not found for name: "myname-myname" namespace: "" from "": no matches for kind "Ingress" in version "extensions/v1beta1"未找到名称的资源映射:\"myname-myname\" 命名空间:\"\" 来自 \"\":版本 \"extensions/v1beta1\" 中种类 \"Ingress\" 没有匹配项
【发布时间】:2022-12-17 23:20:39
【问题描述】:

我正在尝试将 K8S api extensions/v1beta1 迁移到 networking.k8s.io/v1 Deprecated API Migration Guide

helm\templates\ingress.yaml(迁移前)

{{- if .Values.ingress.enabled -}}
{{- $serviceName := include "sonarqube.fullname" . -}}
{{- $servicePort := .Values.service.externalPort -}}
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: {{ template "sonarqube.fullname" . }}
  labels:
    app: {{ template "sonarqube.name" . }}
    chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}
    release: {{ .Release.Name }}
    heritage: {{ .Release.Service }}
{{- if .Values.ingress.labels }}
{{ .Values.ingress.labels | toYaml | trimSuffix "\n"| indent 4 -}}
{{- end}}
{{- if .Values.ingress.annotations}}
  annotations:
    {{- range $key, $value := .Values.ingress.annotations }}
    {{ $key }}: {{ $value | quote }}
    {{- end }}
{{- end }}
spec:
  rules:
    {{- range .Values.ingress.hosts }}
    {{- $path := default "/" .path }}
    - host: {{ .name }}
      http:
        paths:
          - path: {{ $path }}
            backend:
              serviceName: {{ $serviceName }}
              servicePort: {{ $servicePort }}
          - path: {{ printf "%s/*" (trimSuffix "/" $path) }}
            backend:
              serviceName: {{ $serviceName }}
              servicePort: {{ $servicePort }}

helm\templates\ingress.yaml(迁移后)

{{- if .Values.ingress.enabled -}}
{{- $serviceName := include "sonarqube.fullname" . -}}
{{- $servicePort := .Values.service.externalPort -}}
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: {{ template "sonarqube.fullname" . }}
  labels:
    app: {{ template "sonarqube.name" . }}
    chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}
    release: {{ .Release.Name }}
    heritage: {{ .Release.Service }}
{{- if .Values.ingress.labels }}
{{ .Values.ingress.labels | toYaml | trimSuffix "\n"| indent 4 -}}
{{- end}}
{{- if .Values.ingress.annotations}}
  annotations:
    {{- range $key, $value := .Values.ingress.annotations }}
    {{ $key }}: {{ $value | quote }}
    {{- end }}
{{- end }}
spec:
  rules:
    {{- range .Values.ingress.hosts }}
    {{- $path := default "/" .path }}
    - host: {{ .name }}
      http:
        paths:
          - backend:
              service:
                name: {{ $serviceName }}
                port:
                  number: {{ $servicePort }}
            path: {{ $path }}
            pathType: ImplementationSpecific
          - backend:
              service:
                name: {{ $serviceName }}
                port:
                  number: {{ $servicePort }}
            path: {{ printf "%s/*" (trimSuffix "/" $path) }}
            pathType: ImplementationSpecific
    {{- end -}}
  {{- if .Values.ingress.tls }}
  tls:
{{ toYaml .Values.ingress.tls | indent 4 }}
  {{- end -}}
{{- end -}}

迁移后进入以下错误: (在我的 helm feature 分支中没有提到 extensions/v1beta1)

Error: UPGRADE FAILED: unable to build kubernetes objects from current release manifest: resource mapping not found for name: "myname-myname" namespace: "" from "": no matches for kind "Ingress" in version "extensions/v1beta1" ensure CRDs are installed first

我的 K8S ingress 已经在 networking.k8s.io/v1 上运行 `

abhi@mySystem:$ kubectl get ing myname-myname -n sonarqube -o yaml
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  annotations:
    kubernetes.io/ingress.class: nginx
    meta.helm.sh/release-name: sonarqube
    meta.helm.sh/release-namespace: sonarqube
    nginx.ingress.kubernetes.io/proxy-body-size: 200m
    nginx.ingress.kubernetes.io/ssl-redirect: "false"
    nginx.org/client-max-body-size: 200m
  creationTimestamp: "2021-11-16T14:34:25Z"
  generation: 1
  labels:
    app: sonarqube
    app.kubernetes.io/managed-by: Helm
    chart: sonarqube-3.10.5
    heritage: Helm
    release: sonarqube
  name: myname-myname
  namespace: sonarqube
  resourceVersion: "111111111"
  uid: 11a1a11a-1111-11aa-a11a-aa1a111aa111
spec:
  rules:
  - host: sonarqube-dev.ad.xyz.com
    http:
      paths:
      - backend:
          service:
            name: myname-myname
            port:
              number: 9000
        path: /
        pathType: ImplementationSpecific
      - backend:
          service:
            name: myname-myname
            port:
              number: 9000
        path: /*
        pathType: ImplementationSpecific
status:
  loadBalancer:
    ingress:
    - ip: 10.110.110.110

头盔版本 3.5.1 | Kubectl 客户端版本:v1.25.3 | Kubectl 服务器版本:v1.23.5

我试图将 Kubernetes api extensions/v1beta1 迁移到 networking.k8s.io/v1

【问题讨论】:

  • 当你运行`kubectl api-versions | 时,你能看到networking.k8s.io/v1吗? grep -i 网络`?
  • @Adiii 是的,能够看到 networking.k8s.io/v1
  • 您是否尝试删除并重新创建?

标签: kubernetes sonarqube kubernetes-helm


【解决方案1】:

更新发布清单中的 api 版本有助于解决问题。 https://helm.sh/docs/topics/kubernetes_apis/#updating-api-versions-of-a-release-manifest

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-05-13
    • 2013-03-26
    • 2020-03-17
    • 2021-11-14
    • 1970-01-01
    • 2021-11-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多