pkg/k8s/backend.go: use apiextensions/v1

This commit is contained in:
leonnicolas 2021-06-02 13:29:23 +02:00
parent e272d725a5
commit 6cfcc4e58d
No known key found for this signature in database
GPG Key ID: 088D0743E2B65C07
8 changed files with 41 additions and 33 deletions

2
go.mod
View File

@ -3,7 +3,6 @@ module github.com/squat/kilo
go 1.15
require (
github.com/ant31/crd-validation v0.0.0-20180801212718-38f6a293f140
github.com/awalterschulze/gographviz v0.0.0-20181013152038-b2885df04310
github.com/campoy/embedmd v1.0.0
github.com/containernetworking/cni v0.6.0
@ -14,6 +13,7 @@ require (
github.com/go-openapi/spec v0.19.5
github.com/imdario/mergo v0.3.6 // indirect
github.com/kylelemons/godebug v0.0.0-20170820004349-d65d576e9348
github.com/leonnicolas/crd-validation v0.0.0-20210602093346-4236c21fcd92
github.com/oklog/run v1.0.0
github.com/prometheus/client_golang v1.7.1
github.com/spf13/cobra v1.1.1

6
go.sum
View File

@ -43,8 +43,6 @@ github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuy
github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc=
github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0=
github.com/alecthomas/units v0.0.0-20190717042225-c3de453c63f4/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0=
github.com/ant31/crd-validation v0.0.0-20180801212718-38f6a293f140 h1:ljF9TLBK+JYXKB8aklLhcubPDBUjpvzWKiqgZ37s+QY=
github.com/ant31/crd-validation v0.0.0-20180801212718-38f6a293f140/go.mod h1:X0noFIik9YqfhGYBLEHg8LJKEwy7QIitLQuFMpKLcPk=
github.com/armon/circbuf v0.0.0-20150827004946-bbbad097214e/go.mod h1:3U/XgcO3hCbHZ8TKRvWD2dDTCfh9M9ya+I9JpbB7O8o=
github.com/armon/go-metrics v0.0.0-20180917152333-f0300d1749da/go.mod h1:Q73ZrmVTwzkszR9V5SSuryQ31EELlFMUz1kKyl939pY=
github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8=
@ -258,6 +256,10 @@ github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY=
github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE=
github.com/kylelemons/godebug v0.0.0-20170820004349-d65d576e9348 h1:MtvEpTB6LX3vkb4ax0b5D2DHbNAUsen0Gx5wZoq3lV4=
github.com/kylelemons/godebug v0.0.0-20170820004349-d65d576e9348/go.mod h1:B69LEHPfb2qLo0BaaOLcbitczOKLWTsrBG9LczfCD4k=
github.com/leonnicolas/crd-validation v0.0.0-20210601171249-de84deb9584e h1:tvtcs1K8lD5OkB8NyibdP1adEiwTkdc64uF+SLCl+rI=
github.com/leonnicolas/crd-validation v0.0.0-20210601171249-de84deb9584e/go.mod h1:CAR0fVjRp8CDdr5dz8bRqHlin8K3wL0ZRyYyWTju4MM=
github.com/leonnicolas/crd-validation v0.0.0-20210602093346-4236c21fcd92 h1:FJZdDGBUAH+ToDazE5vSoASB3UBW8wRz5+A12fqAX9E=
github.com/leonnicolas/crd-validation v0.0.0-20210602093346-4236c21fcd92/go.mod h1:CAR0fVjRp8CDdr5dz8bRqHlin8K3wL0ZRyYyWTju4MM=
github.com/magiconair/properties v1.8.1/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ=
github.com/mailru/easyjson v0.0.0-20190614124828-94de47d64c63/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc=
github.com/mailru/easyjson v0.0.0-20190626092158-b2ccc519800e/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc=

View File

@ -25,9 +25,9 @@ import (
"strings"
"time"
crdutils "github.com/ant31/crd-validation/pkg"
crdutils "github.com/leonnicolas/crd-validation/pkg"
v1 "k8s.io/api/core/v1"
"k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1"
extv1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1"
apiextensions "k8s.io/apiextensions-apiserver/pkg/client/clientset/clientset"
apierrors "k8s.io/apimachinery/pkg/api/errors"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
@ -417,7 +417,7 @@ func (pb *peerBackend) Init(stop <-chan struct{}) error {
crd := crdutils.NewCustomResourceDefinition(crdutils.Config{
SpecDefinitionName: "github.com/squat/kilo/pkg/k8s/apis/kilo/v1alpha1.Peer",
EnableValidation: true,
ResourceScope: string(v1beta1.ClusterScoped),
ResourceScope: string(extv1.ClusterScoped),
Group: v1alpha1.GroupName,
Kind: v1alpha1.PeerKind,
Version: v1alpha1.SchemeGroupVersion.Version,
@ -425,10 +425,13 @@ func (pb *peerBackend) Init(stop <-chan struct{}) error {
ShortNames: v1alpha1.PeerShortNames,
GetOpenAPIDefinitions: v1alpha1.GetOpenAPIDefinitions,
})
crd.Spec.Subresources.Scale = nil
crd.Spec.Subresources.Status = nil
for _, v := range crd.Spec.Versions {
v.Subresources.Scale = nil
v.Subresources.Status = nil
v.Schema.OpenAPIV3Schema.Type = "object"
}
_, err := pb.extensionsClient.ApiextensionsV1beta1().CustomResourceDefinitions().Create(context.TODO(), crd, metav1.CreateOptions{})
_, err := pb.extensionsClient.ApiextensionsV1().CustomResourceDefinitions().Create(context.TODO(), crd, metav1.CreateOptions{})
if err != nil && !apierrors.IsAlreadyExists(err) {
return fmt.Errorf("failed to create CRD: %v", err)
}

View File

@ -21,7 +21,7 @@ import (
"strings"
"github.com/ghodss/yaml"
extensionsobj "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1"
extensionsobj "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
)
@ -86,6 +86,7 @@ func (labels *Labels) Set(value string) error {
}
func NewCustomResourceDefinition(config Config) *extensionsobj.CustomResourceDefinition {
schema := GetCustomResourceValidation(config.SpecDefinitionName, config.GetOpenAPIDefinitions)
crd := &extensionsobj.CustomResourceDefinition{
ObjectMeta: metav1.ObjectMeta{
@ -95,31 +96,33 @@ func NewCustomResourceDefinition(config Config) *extensionsobj.CustomResourceDef
},
TypeMeta: CustomResourceDefinitionTypeMeta,
Spec: extensionsobj.CustomResourceDefinitionSpec{
Group: config.Group,
Version: config.Version,
Scope: extensionsobj.ResourceScope(config.ResourceScope),
Group: config.Group,
Versions: []extensionsobj.CustomResourceDefinitionVersion{
{
Name: config.Version,
Schema: schema,
Subresources: &extensionsobj.CustomResourceSubresources{
Status: &extensionsobj.CustomResourceSubresourceStatus{},
Scale: &extensionsobj.CustomResourceSubresourceScale{
SpecReplicasPath: config.SpecReplicasPath,
StatusReplicasPath: config.StatusReplicasPath,
LabelSelectorPath: &config.LabelSelectorPath,
},
},
Served: true,
Storage: true,
},
},
Scope: extensionsobj.ResourceScope(config.ResourceScope),
Names: extensionsobj.CustomResourceDefinitionNames{
Plural: config.Plural,
Kind: config.Kind,
Categories: config.Categories,
ShortNames: config.ShortNames,
},
Subresources: &extensionsobj.CustomResourceSubresources{
Status: &extensionsobj.CustomResourceSubresourceStatus {
},
Scale: &extensionsobj.CustomResourceSubresourceScale {
SpecReplicasPath: config.SpecReplicasPath,
StatusReplicasPath: config.StatusReplicasPath,
LabelSelectorPath: &config.LabelSelectorPath,
},
},
},
}
if config.SpecDefinitionName != "" && config.EnableValidation == true {
crd.Spec.Validation = GetCustomResourceValidation(config.SpecDefinitionName, config.GetOpenAPIDefinitions)
}
return crd
}

View File

@ -2,8 +2,9 @@ package crdvalidation
import (
"fmt"
spec "github.com/go-openapi/spec"
extensionsobj "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1"
extensionsobj "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1"
common "k8s.io/kube-openapi/pkg/common"
)

View File

@ -2,7 +2,7 @@ package crdvalidation
import (
spec "github.com/go-openapi/spec"
extensionsobj "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1"
extensionsobj "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
common "k8s.io/kube-openapi/pkg/common"
)
@ -10,7 +10,7 @@ import (
// CustomResourceDefinitionTypeMeta set the default kind/apiversion of CRD
var CustomResourceDefinitionTypeMeta = metav1.TypeMeta{
Kind: "CustomResourceDefinition",
APIVersion: "apiextensions.k8s.io/v1beta1",
APIVersion: "apiextensions.k8s.io/v1",
}
// OpenAPIRefCallBack returns a jsonref using the input string without modification
@ -69,4 +69,3 @@ func fixKnownTypes(openapiSpec map[string]common.OpenAPIDefinition) {
},
}
}

6
vendor/modules.txt vendored
View File

@ -2,9 +2,6 @@
github.com/PuerkitoBio/purell
# github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578
github.com/PuerkitoBio/urlesc
# github.com/ant31/crd-validation v0.0.0-20180801212718-38f6a293f140
## explicit
github.com/ant31/crd-validation/pkg
# github.com/awalterschulze/gographviz v0.0.0-20181013152038-b2885df04310
## explicit
github.com/awalterschulze/gographviz
@ -104,6 +101,9 @@ github.com/kr/logfmt
## explicit
github.com/kylelemons/godebug/diff
github.com/kylelemons/godebug/pretty
# github.com/leonnicolas/crd-validation v0.0.0-20210602093346-4236c21fcd92
## explicit
github.com/leonnicolas/crd-validation/pkg
# github.com/mailru/easyjson v0.7.0
github.com/mailru/easyjson/buffer
github.com/mailru/easyjson/jlexer