root@ubuntu:~/kubernetes-ingress/deployments/common# kubectl explain IngressClass KIND: IngressClass VERSION: networking.k8s.io/v1beta1 DESCRIPTION: IngressClass represents the class of the Ingress, referenced by the Ingress Spec. The `ingressclass.kubernetes.io/is-default-class` annotation can be used to indicate that an IngressClass should be considered default. When a single IngressClass resource has this annotation set to true, new Ingress resources without a class specified will be assigned this default class. FIELDS: apiVersion <string> APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources kind <string> Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds metadata <Object> Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata spec <Object> Spec is the desired state of the IngressClass. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status root@ubuntu:~/kubernetes-ingress/deployments/common# kubectl explain IngressClass.spec KIND: IngressClass VERSION: networking.k8s.io/v1beta1 RESOURCE: spec <Object> DESCRIPTION: Spec is the desired state of the IngressClass. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status IngressClassSpec provides information about the class of an Ingress. FIELDS: controller <string> Controller refers to the name of the controller that should handle this class. This allows for different "flavors" that are controlled by the same controller. For example, you may have different Parameters for the same implementing controller. This should be specified as a domain-prefixed path no more than 250 characters in length, e.g. "acme.io/ingress-controller". This field is immutable. parameters <Object> Parameters is a link to a custom resource containing additional configuration for the controller. This is optional if the controller does not require extra parameters. root@ubuntu:~/kubernetes-ingress/deployments/common# kubectl explain IngressClass.spec.controller KIND: IngressClass VERSION: networking.k8s.io/v1beta1 FIELD: controller <string> DESCRIPTION: Controller refers to the name of the controller that should handle this class. This allows for different "flavors" that are controlled by the same controller. For example, you may have different Parameters for the same implementing controller. This should be specified as a domain-prefixed path no more than 250 characters in length, e.g. "acme.io/ingress-controller". This field is immutable.
root@ubuntu:~/kubernetes-ingress/deployments/common# kubectl create -f ingress-k8s-class.yaml error: error validating "ingress-k8s-class.yaml": error validating data: ValidationError(IngressClass.spec): invalid type for io.k8s.api.networking.v1beta1.IngressClassSpec: got "string", expected "map"; if you choose to ignore these errors, turn validation off with --validate=false root@ubuntu:~/kubernetes-ingress/deployments/common# cat ingress-k8s-class.yaml apiVersion: networking.k8s.io/v1beta1 kind: IngressClass metadata: name: nginx-k8s # annotations: # ingressclass.kubernetes.io/is-default-class: "true" spec: controller:kubernetes.io/ingress-controller root@ubuntu:~/kubernetes-ingress/deployments/common# cat ingress- ingress-class.yaml ingress-k8s-class.yaml root@ubuntu:~/kubernetes-ingress/deployments/common# cat ingress-class.yaml apiVersion: networking.k8s.io/v1beta1 kind: IngressClass metadata: name: nginx-org # annotations: # ingressclass.kubernetes.io/is-default-class: "true" spec: controller: nginx.org/ingress-controller
root@ubuntu:~/kubernetes-ingress/deployments/common# kubectl get ingressclass NAME CONTROLLER PARAMETERS AGE nginx-k8s kubernetes.io/ingress-controller <none> 14s nginx-org nginx.org/ingress-controller <none> 4h30m root@ubuntu:~/kubernetes-ingress/deployments/common#