import ( metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/kubernetes/pkg/api/unversioned" ) // Retrieve the default group version for Kubernetes resources var groupVersion string = unversioned.GroupVersion.String()
import ( metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/client-go/kubernetes" "k8s.io/kubernetes/pkg/api/unversioned" "k8s.io/apimachinery/pkg/apis/meta/v1/unstructured" ) // Initialize Kubernetes client clientset, _ := kubernetes.NewForConfig(config) // Define Custom Resource Definition (CRD) using specific API version crd := &unstructured.Unstructured{ Object: map[string]interface{}{ "apiVersion": "apiextensions.k8s.io/v1beta1", "kind": "CustomResourceDefinition", "metadata": map[string]interface{}{ "name": "my-crd", "namespace": "default", }, "spec": map[string]interface{}{ "group": "mygroup.example.com", "version": "v2", "names": map[string]interface{}{ "kind": "MyKind", "plural": "mykinds", "singular": "mykind", }, "scope": "Namespaced", }, }, } // Create CRD object using Kubernetes client _, err := clientset. CustomResourceDefinitions(). Create(crd) if err != nil { panic(err) }This example shows how to create a Custom Resource Definition in Kubernetes using a specific API version (`v2`). The `apiVersion` field is set to `"apiextensions.k8s.io/v1beta1"` to indicate that v1beta1 of the Kubernetes extensions API group is being used. The `GroupVersion` string is used to specify the `group` and `version` fields of the CRD object.