Kubernetes Ingress API version networking.k8s.io/v1 has lot of changes in fields wrt extensions/v1beta1 like the following:
* `spec.backend` -> `spec.defaultBackend`
* `serviceName` -> `service.name`
* `servicePort` -> `service.port.name` (for string values)
* `servicePort` -> `service.port.number` (for numeric values)
* `pathType` no longer has a default value in v1; "Exact", "Prefix", or "ImplementationSpecific" must be specified
What is the easiest way to convert all ingress yaml files from extensions/v1beta1 to networking.k8s.io/v1.
Looks like kubectl convert is already deprecated in v1.19.
Kubernetes version:
kubectl version
Client Version: version.Info{Major:"1", Minor:"19", GitVersion:"v1.19.0", GitCommit:"e19964183377d0ec2052d1f1fa930c4d7575bd50", GitTreeState:"clean", BuildDate:"2020-08-26T14:30:33Z", GoVersion:"go1.15", Compiler:"gc", Platform:"linux/amd64"}
Server Version: version.Info{Major:"1", Minor:"19", GitVersion:"v1.19.0", GitCommit:"e19964183377d0ec2052d1f1fa930c4d7575bd50", GitTreeState:"clean", BuildDate:"2020-08-26T14:23:04Z", GoVersion:"go1.15", Compiler:"gc", Platform:"linux/amd64"}
Error while using kubectl convert:
kubectl convert -f ingress_4_10_1.yaml --output-version networking.k8s.io/v1
kubectl convert is DEPRECATED and will be removed in a future version.
In order to convert, kubectl apply the object to the cluster, then kubectl get at the desired version.
error: networking.Ingress is not suitable for converting to "networking.k8s.io/v1" in scheme "k8s.io/kubernetes/pkg/api/legacyscheme/scheme.go:30"
My ingress yaml:
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: frontend
annotations:
kubernetes.io/ingress.class: "ing-class1"
spec:
rules:
- host: frontend.com
http:
paths:
- path: /web-frontend/frontend.php
backend:
serviceName: frontend
servicePort: 80
convertcontains inappropriate dependencies.convertnecessarily depends oninternaltypes (in order to convert), butkubectlshould not depend on these. In fact, no software outside api server should depend on internal types. The deprecation plan is to createconvertas a plugin or separate binary. So the functionality would still exist; just not inkubectl.Possible options:
Start storing all versions in the cache. Possibly means going back to using disco.ServerResources() instead of disco.ServerPreferredResources() - lookups remain quick. guarantees to work since we have all versions of the object for lookup.
Find a proper way to convert objects using k8s library instead of
kubectl convertPerform a GET against K8s API server using git config version, to perform the conversion.
Take a look: kubectl-convert, kubernetes-release-notes, convert-issues.