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 go 1.15
require ( require (
github.com/ant31/crd-validation v0.0.0-20180801212718-38f6a293f140
github.com/awalterschulze/gographviz v0.0.0-20181013152038-b2885df04310 github.com/awalterschulze/gographviz v0.0.0-20181013152038-b2885df04310
github.com/campoy/embedmd v1.0.0 github.com/campoy/embedmd v1.0.0
github.com/containernetworking/cni v0.6.0 github.com/containernetworking/cni v0.6.0
@ -14,6 +13,7 @@ require (
github.com/go-openapi/spec v0.19.5 github.com/go-openapi/spec v0.19.5
github.com/imdario/mergo v0.3.6 // indirect github.com/imdario/mergo v0.3.6 // indirect
github.com/kylelemons/godebug v0.0.0-20170820004349-d65d576e9348 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/oklog/run v1.0.0
github.com/prometheus/client_golang v1.7.1 github.com/prometheus/client_golang v1.7.1
github.com/spf13/cobra v1.1.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/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-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0=
github.com/alecthomas/units v0.0.0-20190717042225-c3de453c63f4/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/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-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= 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/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 h1:MtvEpTB6LX3vkb4ax0b5D2DHbNAUsen0Gx5wZoq3lV4=
github.com/kylelemons/godebug v0.0.0-20170820004349-d65d576e9348/go.mod h1:B69LEHPfb2qLo0BaaOLcbitczOKLWTsrBG9LczfCD4k= 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/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-20190614124828-94de47d64c63/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc=
github.com/mailru/easyjson v0.0.0-20190626092158-b2ccc519800e/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" "strings"
"time" "time"
crdutils "github.com/ant31/crd-validation/pkg" crdutils "github.com/leonnicolas/crd-validation/pkg"
v1 "k8s.io/api/core/v1" 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" apiextensions "k8s.io/apiextensions-apiserver/pkg/client/clientset/clientset"
apierrors "k8s.io/apimachinery/pkg/api/errors" apierrors "k8s.io/apimachinery/pkg/api/errors"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" 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{ crd := crdutils.NewCustomResourceDefinition(crdutils.Config{
SpecDefinitionName: "github.com/squat/kilo/pkg/k8s/apis/kilo/v1alpha1.Peer", SpecDefinitionName: "github.com/squat/kilo/pkg/k8s/apis/kilo/v1alpha1.Peer",
EnableValidation: true, EnableValidation: true,
ResourceScope: string(v1beta1.ClusterScoped), ResourceScope: string(extv1.ClusterScoped),
Group: v1alpha1.GroupName, Group: v1alpha1.GroupName,
Kind: v1alpha1.PeerKind, Kind: v1alpha1.PeerKind,
Version: v1alpha1.SchemeGroupVersion.Version, Version: v1alpha1.SchemeGroupVersion.Version,
@ -425,10 +425,13 @@ func (pb *peerBackend) Init(stop <-chan struct{}) error {
ShortNames: v1alpha1.PeerShortNames, ShortNames: v1alpha1.PeerShortNames,
GetOpenAPIDefinitions: v1alpha1.GetOpenAPIDefinitions, GetOpenAPIDefinitions: v1alpha1.GetOpenAPIDefinitions,
}) })
crd.Spec.Subresources.Scale = nil for _, v := range crd.Spec.Versions {
crd.Spec.Subresources.Status = nil 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) { if err != nil && !apierrors.IsAlreadyExists(err) {
return fmt.Errorf("failed to create CRD: %v", err) return fmt.Errorf("failed to create CRD: %v", err)
} }

View File

@ -21,7 +21,7 @@ import (
"strings" "strings"
"github.com/ghodss/yaml" "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" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured" "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 { func NewCustomResourceDefinition(config Config) *extensionsobj.CustomResourceDefinition {
schema := GetCustomResourceValidation(config.SpecDefinitionName, config.GetOpenAPIDefinitions)
crd := &extensionsobj.CustomResourceDefinition{ crd := &extensionsobj.CustomResourceDefinition{
ObjectMeta: metav1.ObjectMeta{ ObjectMeta: metav1.ObjectMeta{
@ -96,7 +97,22 @@ func NewCustomResourceDefinition(config Config) *extensionsobj.CustomResourceDef
TypeMeta: CustomResourceDefinitionTypeMeta, TypeMeta: CustomResourceDefinitionTypeMeta,
Spec: extensionsobj.CustomResourceDefinitionSpec{ Spec: extensionsobj.CustomResourceDefinitionSpec{
Group: config.Group, Group: config.Group,
Version: config.Version, 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), Scope: extensionsobj.ResourceScope(config.ResourceScope),
Names: extensionsobj.CustomResourceDefinitionNames{ Names: extensionsobj.CustomResourceDefinitionNames{
Plural: config.Plural, Plural: config.Plural,
@ -104,20 +120,7 @@ func NewCustomResourceDefinition(config Config) *extensionsobj.CustomResourceDef
Categories: config.Categories, Categories: config.Categories,
ShortNames: config.ShortNames, 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 return crd

View File

@ -2,8 +2,9 @@ package crdvalidation
import ( import (
"fmt" "fmt"
spec "github.com/go-openapi/spec" 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" common "k8s.io/kube-openapi/pkg/common"
) )

View File

@ -2,7 +2,7 @@ package crdvalidation
import ( import (
spec "github.com/go-openapi/spec" 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" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
common "k8s.io/kube-openapi/pkg/common" common "k8s.io/kube-openapi/pkg/common"
) )
@ -10,7 +10,7 @@ import (
// CustomResourceDefinitionTypeMeta set the default kind/apiversion of CRD // CustomResourceDefinitionTypeMeta set the default kind/apiversion of CRD
var CustomResourceDefinitionTypeMeta = metav1.TypeMeta{ var CustomResourceDefinitionTypeMeta = metav1.TypeMeta{
Kind: "CustomResourceDefinition", Kind: "CustomResourceDefinition",
APIVersion: "apiextensions.k8s.io/v1beta1", APIVersion: "apiextensions.k8s.io/v1",
} }
// OpenAPIRefCallBack returns a jsonref using the input string without modification // 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/purell
# github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578 # github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578
github.com/PuerkitoBio/urlesc 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 # github.com/awalterschulze/gographviz v0.0.0-20181013152038-b2885df04310
## explicit ## explicit
github.com/awalterschulze/gographviz github.com/awalterschulze/gographviz
@ -104,6 +101,9 @@ github.com/kr/logfmt
## explicit ## explicit
github.com/kylelemons/godebug/diff github.com/kylelemons/godebug/diff
github.com/kylelemons/godebug/pretty 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 v0.7.0
github.com/mailru/easyjson/buffer github.com/mailru/easyjson/buffer
github.com/mailru/easyjson/jlexer github.com/mailru/easyjson/jlexer