Installation of Linkerd failing

New to Linkerd and as I try to install it following your guide at Getting Started | Linkerd, I run linkerd install --crds | kubectl apply -f - and I’m presented with an error:

$ linkerd install --crds | sudo k8s kubectl apply -f -
Rendering Linkerd CRDs...
Next, run `linkerd install | kubectl apply -f -` to install the control plane.

customresourcedefinition.apiextensions.k8s.io/authorizationpolicies.policy.linkerd.io unchanged
customresourcedefinition.apiextensions.k8s.io/egressnetworks.policy.linkerd.io unchanged
customresourcedefinition.apiextensions.k8s.io/httplocalratelimitpolicies.policy.linkerd.io unchanged
customresourcedefinition.apiextensions.k8s.io/httproutes.policy.linkerd.io configured
customresourcedefinition.apiextensions.k8s.io/meshtlsauthentications.policy.linkerd.io unchanged
customresourcedefinition.apiextensions.k8s.io/networkauthentications.policy.linkerd.io unchanged
customresourcedefinition.apiextensions.k8s.io/serverauthorizations.policy.linkerd.io unchanged
customresourcedefinition.apiextensions.k8s.io/servers.policy.linkerd.io unchanged
customresourcedefinition.apiextensions.k8s.io/serviceprofiles.linkerd.io configured
Warning: resource customresourcedefinitions/httproutes.gateway.networking.k8s.io is missing the kubectl.kubernetes.io/last-applied-configuration annotation which is required by kubectl apply. kubectl apply should only be used on resources created declaratively by either kubectl create --save-config or kubectl apply. The missing annotation will be patched automatically.
Warning: resource customresourcedefinitions/grpcroutes.gateway.networking.k8s.io is missing the kubectl.kubernetes.io/last-applied-configuration annotation which is required by kubectl apply. kubectl apply should only be used on resources created declaratively by either kubectl create --save-config or kubectl apply. The missing annotation will be patched automatically.
customresourcedefinition.apiextensions.k8s.io/tlsroutes.gateway.networking.k8s.io configured
customresourcedefinition.apiextensions.k8s.io/tcproutes.gateway.networking.k8s.io configured
customresourcedefinition.apiextensions.k8s.io/externalworkloads.workload.linkerd.io unchanged
Error from server (Invalid): error when applying patch:
Resource: "apiextensions.k8s.io/v1, Resource=customresourcedefinitions", GroupVersionKind: "apiextensions.k8s.io/v1, Kind=CustomResourceDefinition"
Name: "httproutes.gateway.networking.k8s.io", Namespace: ""
for: "STDIN": error when patching "STDIN": CustomResourceDefinition.apiextensions.k8s.io "httproutes.gateway.networking.k8s.io" is invalid: status.storedVersions[0]: Invalid value: "v1": must appear in spec.versions
Resource: "apiextensions.k8s.io/v1, Resource=customresourcedefinitions", GroupVersionKind: "apiextensions.k8s.io/v1, Kind=CustomResourceDefinition"
Name: "grpcroutes.gateway.networking.k8s.io", Namespace: ""
for: "STDIN": error when patching "STDIN": CustomResourceDefinition.apiextensions.k8s.io "grpcroutes.gateway.networking.k8s.io" is invalid: status.storedVersions[0]: Invalid value: "v1": must appear in spec.versions

I made the following changes

Under httproutes.gateway.networking.k8s.io: line 6801
changed name: v1alpha2 to name: v1

Under grpcroutes.gateway.networking.k8s.io: line 10678
changed name: v1alpha2 to name: v1

and that now runs.

It sounds like you already have the gateway API CRDs installed on your cluster and are encountering a conflict when Linkerd tries to install them. You should use the --set enableHttpRoutes=false flag to tell Linkerd to not install these CRDs since they are already present on your cluster. See Gateway API support | Linkerd for details.