Closed armujahid closed 3 weeks ago
This issue is currently awaiting triage.
If Ingress contributors determines this is a relevant issue, they will accept it by applying the triage/accepted
label and provide further guidance.
The triage/accepted
label can be added by org members by writing /triage accepted
in a comment.
I think there is too much shortage of resources to test all the upgrade paths from all older versions to all later versions, during CI.
The CI only tests a fresh install so that KEPs are complied with.
Such breaking changes do disrupt uptime but I feel the resources required to check all upgrade paths is currently not available.
/remove-kind bug
Helm upgrades do not upgrade CRDs; they have to be done separately.
It looks like this was fixed here https://github.com/kubernetes/ingress-nginx/commit/06612e6ffd044171e33b5e8315b9605eb8730c55
Does the helm chart render the right template for hpa?
Is the hpa CRD's upgraded in your cluster? That is not something I think the ingress-nginx controller helm chart will do.
@strongjz
Does the helm chart render the right template for hpa?
Yes, it's rendering autoscaling/v2
Is the hpa CRD's upgraded in your cluster?
Yes of course EKS ensures that, Re-installation of chart worked perfectly fine with exact version and helm values on that same cluster.
So it works? I'm confused about the issue then.
@strongjz Helm upgrade doesn't work. That's what the issue is about. Re-installation (Uninstall => Install) works but that recreates cloud components (e.g. AWS NLB in my case) instead of reusing existing components.
I can confirm, that the upgrade to 4.7.1 fails
Well, I think ingress-nginx is/should-be mature enough, NOT to have braking changes :/
Or at least it should be clearly mentioned, that the upgrades are likely to fail, and the solutions is X where X is to deinstall old version and install new chart...
As previously stated, helm template or helm install dry-run produce proper template...
Error: UPGRADE FAILED: unable to build kubernetes objects from current release manifest: resource mapping not found for name: "nginx-ingress-controller" namespace: "nginx-ingress" from "": no matches for kind "HorizontalPodAutoscaler" in version "autoscaling/v2beta2"
ensure CRDs are installed first
Its originating from the deprecation of HPA I think
Before executing helm upgrade
, you would need to upgrade the API versions of the current release manifest:
deprecated-apis.yaml
) with the content:mappings:
- deprecatedAPI: "apiVersion: extensions/v1beta1\nkind: Deployment\n"
newAPI: "apiVersion: apps/v1\nkind: Deployment\n"
deprecatedInVersion: "v1.9"
removedInVersion: "v1.16"
- deprecatedAPI: "apiVersion: apps/v1beta1\nkind: Deployment\n"
newAPI: "apiVersion: apps/v1\nkind: Deployment\n"
deprecatedInVersion: "v1.9"
removedInVersion: "v1.16"
- deprecatedAPI: "apiVersion: apps/v1beta2\nkind: Deployment\n"
newAPI: "apiVersion: apps/v1\nkind: Deployment\n"
deprecatedInVersion: "v1.9"
removedInVersion: "v1.16"
- deprecatedAPI: "apiVersion: apps/v1beta1\nkind: StatefulSet\n"
newAPI: "apiVersion: apps/v1\nkind: StatefulSet\n"
deprecatedInVersion: "v1.9"
removedInVersion: "v1.16"
- deprecatedAPI: "apiVersion: apps/v1beta2\nkind: StatefulSet\n"
newAPI: "apiVersion: apps/v1\nkind: StatefulSet\n"
deprecatedInVersion: "v1.9"
removedInVersion: "v1.16"
- deprecatedAPI: "apiVersion: extensions/v1beta1\nkind: DaemonSet\n"
newAPI: "apiVersion: apps/v1\nkind: DaemonSet\n"
deprecatedInVersion: "v1.9"
removedInVersion: "v1.16"
- deprecatedAPI: "apiVersion: apps/v1beta2\nkind: DaemonSet\n"
newAPI: "apiVersion: apps/v1\nkind: DaemonSet\n"
deprecatedInVersion: "v1.9"
removedInVersion: "v1.16"
- deprecatedAPI: "apiVersion: extensions/v1beta1\nkind: ReplicaSet\n"
newAPI: "apiVersion: apps/v1\nkind: ReplicaSet\n"
deprecatedInVersion: "v1.9"
removedInVersion: "v1.16"
- deprecatedAPI: "apiVersion: apps/v1beta1\nkind: ReplicaSet\n"
newAPI: "apiVersion: apps/v1\nkind: ReplicaSet\n"
deprecatedInVersion: "v1.9"
removedInVersion: "v1.16"
- deprecatedAPI: "apiVersion: apps/v1beta2\nkind: ReplicaSet\n"
newAPI: "apiVersion: apps/v1\nkind: ReplicaSet\n"
deprecatedInVersion: "v1.9"
removedInVersion: "v1.16"
- deprecatedAPI: "apiVersion: extensions/v1beta1\nkind: NetworkPolicy\n"
newAPI: "apiVersion: networking.k8s.io/v1\nkind: NetworkPolicy\n"
deprecatedInVersion: "v1.8"
removedInVersion: "v1.16"
- deprecatedAPI: "apiVersion: extensions/v1beta1\nkind: PodSecurityPolicy\n"
newAPI: "apiVersion: policy/v1beta1\nkind: PodSecurityPolicy\n"
deprecatedInVersion: "v1.10"
removedInVersion: "v1.16"
- deprecatedAPI: "apiVersion: admissionregistration.k8s.io/v1beta1\nkind: MutatingWebhookConfiguration\n"
newAPI: "apiVersion: admissionregistration.k8s.io/v1\nkind: MutatingWebhookConfiguration\n"
deprecatedInVersion: "v1.16"
removedInVersion: "v1.22"
- deprecatedAPI: "apiVersion: admissionregistration.k8s.io/v1beta1\nkind: ValidatingWebhookConfiguration\n"
newAPI: "apiVersion: admissionregistration.k8s.io/v1\nkind: ValidatingWebhookConfiguration\n"
deprecatedInVersion: "v1.16"
removedInVersion: "v1.22"
- deprecatedAPI: "apiVersion: apiextensions.k8s.io/v1beta1\nkind: CustomResourceDefinition\n"
newAPI: "apiVersion: apiextensions.k8s.io/v1\nkind: CustomResourceDefinition\n"
deprecatedInVersion: "v1.16"
removedInVersion: "v1.22"
- deprecatedAPI: "apiVersion: apiregistration.k8s.io/v1beta1\nkind: APIService\n"
newAPI: "apiVersion: apiregistration.k8s.io/v1\nkind: APIService\n"
deprecatedInVersion: "v1.19"
removedInVersion: "v1.22"
- deprecatedAPI: "apiVersion: apiregistration.k8s.io/v1beta1\nkind: APIServiceList\n"
newAPI: "apiVersion: apiregistration.k8s.io/v1\nkind: APIServiceList\n"
deprecatedInVersion: "v1.19"
removedInVersion: "v1.22"
- deprecatedAPI: "apiVersion: authentication.k8s.io/v1beta1\nkind: TokenReview\n"
newAPI: "apiVersion: authentication.k8s.io/v1\nkind: TokenReview\n"
deprecatedInVersion: "v1.16"
removedInVersion: "v1.22"
- deprecatedAPI: "apiVersion: authorization.k8s.io/v1beta1\nkind: LocalSubjectAccessReview\n"
newAPI: "apiVersion: authorization.k8s.io/v1\nkind: LocalSubjectAccessReview\n"
deprecatedInVersion: "v1.16"
removedInVersion: "v1.22"
- deprecatedAPI: "apiVersion: authorization.k8s.io/v1beta1\nkind: SelfSubjectAccessReview\n"
newAPI: "apiVersion: authorization.k8s.io/v1\nkind: SelfSubjectAccessReview\n"
deprecatedInVersion: "v1.16"
removedInVersion: "v1.22"
- deprecatedAPI: "apiVersion: authorization.k8s.io/v1beta1\nkind: SubjectAccessReview\n"
newAPI: "apiVersion: authorization.k8s.io/v1\nkind: SubjectAccessReview\n"
deprecatedInVersion: "v1.16"
removedInVersion: "v1.22"
- deprecatedAPI: "apiVersion: autoscaling/v2beta1\nkind: HorizontalPodAutoscaler\n"
newAPI: "apiVersion: autoscaling/v2\nkind: HorizontalPodAutoscaler\n"
deprecatedInVersion: "v1.23"
removedInVersion: "v1.25"
- deprecatedAPI: "apiVersion: autoscaling/v2beta2\nkind: HorizontalPodAutoscaler\n"
newAPI: "apiVersion: autoscaling/v2\nkind: HorizontalPodAutoscaler\n"
deprecatedInVersion: "v1.23"
removedInVersion: "v1.26"
- deprecatedAPI: "apiVersion: batch/v1beta1\nkind: CronJob\n"
newAPI: "apiVersion: batch/v1\nkind: CronJob\n"
deprecatedInVersion: "v1.21"
removedInVersion: "v1.25"
- deprecatedAPI: "apiVersion: certificates.k8s.io/v1beta1\nkind: CertificateSigningRequest\n"
newAPI: "apiVersion: certificates.k8s.io/v1\nkind: CertificateSigningRequest\n"
deprecatedInVersion: "v1.19"
removedInVersion: "v1.22"
- deprecatedAPI: "apiVersion: coordination.k8s.io/v1beta1\nkind: Lease\n"
newAPI: "apiVersion: coordination.k8s.io/v1\nkind: Lease\n"
deprecatedInVersion: "v1.14"
removedInVersion: "v1.22"
- deprecatedAPI: "apiVersion: extensions/v1beta1\nkind: Ingress\n"
newAPI: "apiVersion: networking.k8s.io/v1beta1\nkind: Ingress\n"
deprecatedInVersion: "v1.14"
removedInVersion: "v1.22"
- deprecatedAPI: "apiVersion: networking.k8s.io/v1beta1\nkind: Ingress\n"
newAPI: "apiVersion: networking.k8s.io/v1\nkind: Ingress\n"
deprecatedInVersion: "v1.19"
removedInVersion: "v1.22"
- deprecatedAPI: "apiVersion: networking.k8s.io/v1beta1\nkind: IngressClass\n"
newAPI: "apiVersion: networking.k8s.io/v1\nkind: IngressClass\n"
deprecatedInVersion: "v1.19"
removedInVersion: "v1.22"
- deprecatedAPI: "apiVersion: policy/v1beta1\nkind: PodDisruptionBudget\n"
newAPI: "apiVersion: policy/v1\nkind: PodDisruptionBudget\n"
deprecatedInVersion: "v1.21"
removedInVersion: "v1.25"
- deprecatedAPI: "apiVersion: policy/v1beta1\nkind: PodSecurityPolicy\n"
removedInVersion: "v1.25"
- deprecatedAPI: "apiVersion: rbac.authorization.k8s.io/v1alpha1\nkind: ClusterRole\n"
newAPI: "apiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRole\n"
deprecatedInVersion: "v1.17"
removedInVersion: "v1.22"
- deprecatedAPI: "apiVersion: rbac.authorization.k8s.io/v1alpha1\nkind: ClusterRoleList\n"
newAPI: "apiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRoleList\n"
deprecatedInVersion: "v1.17"
removedInVersion: "v1.22"
- deprecatedAPI: "apiVersion: rbac.authorization.k8s.io/v1alpha1\nkind: ClusterRoleBinding\n"
newAPI: "apiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRoleBinding\n"
deprecatedInVersion: "v1.17"
removedInVersion: "v1.22"
- deprecatedAPI: "apiVersion: rbac.authorization.k8s.io/v1alpha1\nkind: ClusterRoleBindingList\n"
newAPI: "apiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRoleBindingList\n"
deprecatedInVersion: "v1.17"
removedInVersion: "v1.22"
- deprecatedAPI: "apiVersion: rbac.authorization.k8s.io/v1alpha1\nkind: Role\n"
newAPI: "apiVersion: rbac.authorization.k8s.io/v1\nkind: Role\n"
deprecatedInVersion: "v1.17"
removedInVersion: "v1.22"
- deprecatedAPI: "apiVersion: rbac.authorization.k8s.io/v1alpha1\nkind: RoleList\n"
newAPI: "apiVersion: rbac.authorization.k8s.io/v1\nkind: RoleList\n"
deprecatedInVersion: "v1.17"
removedInVersion: "v1.22"
- deprecatedAPI: "apiVersion: rbac.authorization.k8s.io/v1alpha1\nkind: RoleBinding\n"
newAPI: "apiVersion: rbac.authorization.k8s.io/v1\nkind: RoleBinding\n"
deprecatedInVersion: "v1.17"
removedInVersion: "v1.22"
- deprecatedAPI: "apiVersion: rbac.authorization.k8s.io/v1alpha1\nkind: RoleBindingList\n"
newAPI: "apiVersion: rbac.authorization.k8s.io/v1\nkind: RoleBindingList\n"
deprecatedInVersion: "v1.17"
removedInVersion: "v1.22"
- deprecatedAPI: "apiVersion: rbac.authorization.k8s.io/v1beta1\nkind: ClusterRole\n"
newAPI: "apiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRole\n"
deprecatedInVersion: "v1.17"
removedInVersion: "v1.22"
- deprecatedAPI: "apiVersion: rbac.authorization.k8s.io/v1beta1\nkind: ClusterRoleList\n"
newAPI: "apiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRoleList\n"
deprecatedInVersion: "v1.17"
removedInVersion: "v1.22"
- deprecatedAPI: "apiVersion: rbac.authorization.k8s.io/v1beta1\nkind: ClusterRoleBinding\n"
newAPI: "apiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRoleBinding\n"
deprecatedInVersion: "v1.17"
removedInVersion: "v1.22"
- deprecatedAPI: "apiVersion: rbac.authorization.k8s.io/v1beta1\nkind: ClusterRoleBindingList\n"
newAPI: "apiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRoleBindingList\n"
deprecatedInVersion: "v1.17"
removedInVersion: "v1.22"
- deprecatedAPI: "apiVersion: rbac.authorization.k8s.io/v1beta1\nkind: Role\n"
newAPI: "apiVersion: rbac.authorization.k8s.io/v1\nkind: Role\n"
deprecatedInVersion: "v1.17"
removedInVersion: "v1.22"
- deprecatedAPI: "apiVersion: rbac.authorization.k8s.io/v1beta1\nkind: RoleList\n"
newAPI: "apiVersion: rbac.authorization.k8s.io/v1\nkind: RoleList\n"
deprecatedInVersion: "v1.17"
removedInVersion: "v1.22"
- deprecatedAPI: "apiVersion: rbac.authorization.k8s.io/v1beta1\nkind: RoleBinding\n"
newAPI: "apiVersion: rbac.authorization.k8s.io/v1\nkind: RoleBinding\n"
deprecatedInVersion: "v1.17"
removedInVersion: "v1.22"
- deprecatedAPI: "apiVersion: rbac.authorization.k8s.io/v1beta1\nkind: RoleBindingList\n"
newAPI: "apiVersion: rbac.authorization.k8s.io/v1\nkind: RoleBindingList\n"
deprecatedInVersion: "v1.17"
removedInVersion: "v1.22"
- deprecatedAPI: "apiVersion: scheduling.k8s.io/v1beta1\nkind: PriorityClass\n"
newAPI: "apiVersion: scheduling.k8s.io/v1\nkind: PriorityClass\n"
deprecatedInVersion: "v1.14"
removedInVersion: "v1.22"
- deprecatedAPI: "apiVersion: storage.k8s.io/v1beta1\nkind: CSIDriver\n"
newAPI: "apiVersion: storage.k8s.io/v1\nkind: CSIDriver\n"
deprecatedInVersion: "v1.19"
removedInVersion: "v1.22"
- deprecatedAPI: "apiVersion: storage.k8s.io/v1beta1\nkind: CSINode\n"
newAPI: "apiVersion: storage.k8s.io/v1\nkind: CSINode\n"
deprecatedInVersion: "v1.17"
removedInVersion: "v1.22"
- deprecatedAPI: "apiVersion: storage.k8s.io/v1beta1\nkind: StorageClass\n"
newAPI: "apiVersion: storage.k8s.io/v1\nkind: StorageClass\n"
deprecatedInVersion: "v1.16"
removedInVersion: "v1.22"
- deprecatedAPI: "apiVersion: storage.k8s.io/v1beta1\nkind: VolumeAttachment\n"
newAPI: "apiVersion: storage.k8s.io/v1\nkind: VolumeAttachment\n"
deprecatedInVersion: "v1.13"
removedInVersion: "v1.22"
helm plugin install https://github.com/helm/helm-mapkubeapis
helm mapkubeapis --mapfile "./deprecated-apis.yaml" "ingress-nginx"
helm upgrade
commandPlease see https://helm.sh/docs/topics/kubernetes_apis/ for the motivation behind doing so.
Facing same issue for OKE 1.26 version. Could anyone guide for resolution
I'd also recommend this tool: https://pluto.docs.fairwinds.com/quickstart/ running: pluto detect-helm -r -o wide
before every Kubernetes minor upgrade. Make sure it comes back clean before upgrading to avoid these issues in the future.
Unfortunately, the CI only tests uninstall and installs but not upgrades. We will have to investigate if helm chart install we use in CI can do upgrades.
so,how you guys to perform rolling upgrade with the minimum downtime?
Hey, I am running into this issue as well. Is there any update?
Thanks :D
Both the from and to versions mentioned in the issue description are not supported anymore.
We are not able to maintain migration docs for migration paths as that is just too much for the negligible resources available.
Please check the Release Notes and Changelogs, in addition to the support matrix on the README of the project.
There is no action item for the project here so I am closing the issue as it is just adding to the tally of open issues with no action item.
/close
@longwuyuan: Closing this issue.
What happened:
I recently upgraded an old EKS cluster from v1.23 to v1.27. Now I am unable to upgrade ingress-nginx chart 4.3.0 to 4.7.0 I am getting this error after
terraform apply
What you expected to happen:
Helm should upgrade ingress-nginx without any issue. Note that I know that the
autoscaling/v2beta2
API version of HorizontalPodAutoscaler is no longer served as of v1.26 but latest chart hasautoscaling/v2
so helm should still upgrade it as per my understandingNGINX Ingress controller version (exec into the pod and run nginx-ingress-controller --version.):
Kubernetes version (use
kubectl version
):Environment:
Cloud provider or hardware configuration: AWS EKS
OS (e.g. from /etc/os-release): Bottlerocket OS 1.14.1 (aws-k8s-1.27)
Kernel (e.g.
uname -a
): 5.15.108Install tools:
Please mention how/where was the cluster created like kubeadm/kops/minikube/kind etc.
Cluster was installed using terraform eks blueprints https://github.com/aws-ia/terraform-aws-eks-blueprints (Currently at v4.32.1)Basic cluster related info:
kubectl version
kubectl get nodes -o wide
How was the ingress-nginx-controller installed:
helm ls -A | grep -i ingress
helm -n <ingresscontrollernamepspace> get values <helmreleasename>
kubectl describe ingressclasses
kubectl -n <ingresscontrollernamespace> get all -A -o wide
kubectl -n <ingresscontrollernamespace> describe po <ingresscontrollerpodname>
kubectl -n <ingresscontrollernamespace> describe svc <ingresscontrollerservicename>
Current state of ingress object, if applicable:
kubectl -n <appnnamespace> get all,ing -o wide
kubectl -n <appnamespace> describe ing <ingressname>
Others:
kubectl describe ...
of any custom configmap(s) created and in useHow to reproduce this issue:
Anything else we need to know:
I should have upgraded it before upgrading the EKS version but I think this case should also be supported. I don't want to reinstall it since that will recreate the AWS NLB and I will have to update all the CNAME records.