What I did was
kubectl create -f https://raw.githubusercontent.com/projectcalico/calico/v3.29.3/manifests/tigera-operator.yaml
and then curl -O https://raw.githubusercontent.com/projectcalico/calico/v3.29.3/manifests/tigera-operator.yaml
Edit the custom-resources.yaml file to use the Cluster CIDR and set the encapsulation method to VXLAN
then kubectl create -f custom-resources.yaml.
Don't use curl -LO or it won't work and kubectl create -f for the first step must be used not apply -f. You can also use curl and then copy the contents of custom-resources.yaml to vim edit it and then create it.