我正在尝试创建一个定制的API服务器,并且我已经在目录pkg/apis/baz/v1 alpha 1中定义了types.go文件,
package v1alpha1
import metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
// +genclient
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
type Foo struct {
metav1.TypeMeta `json:",inline"`
metav1.ObjectMeta `json:"metadata,omitempty"`
Spec FooSpec `json:"spec,omitempty" protobuf:"bytes,2,opt,name=spec"`
}
type FooSpec struct {
Bar []string `json:"bar" protobuf:"bytes,1,rep,name=bar"`
}
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
type FooList struct {
metav1.TypeMeta `json:",inline"`
metav1.ListMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"`
Items []Foo `json:"items" protobuf:"bytes,2,rep,name=items`
}
// +genclient
// +genclient:nonNamespaced
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
type Bar struct {
metav1.TypeMeta `json:",inline"`
metav1.ObjectMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"`
Spec BarSpec
}
type BarSpec struct {
Description string `json:"description" protobuf:"bytes,1,opt,name=description"`
}
// +genclient:nonNamespaced
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
type BarList struct {
metav1.TypeMeta `json:",inline"`
metav1.ObjectMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"`
Items []Bar `json:"items" protobuf:"bytes,2,rep,name=items"`
}
我有另一个types.go文件,它是用于内部类型的,位于pkg/apis/baz位置
package baz
import metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
// +genclient
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
type Foo struct {
metav1.TypeMeta
metav1.ObjectMeta
Spec FooSpec
}
type FooSpec struct {
Bar []FooBar
}
type FooBar struct {
Name string
}
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
type FooList struct {
metav1.TypeMeta
metav1.ListMeta
Items []Foo
}
// +genclient
// +genclient:nonNamespaced
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
type Bar struct {
metav1.TypeMeta
metav1.ObjectMeta
Spec BarSpec
}
type BarSpec struct {
// cost is the cost of one instance of this topping.
Description string
}
我尝试使用deepcopy-gen为这些生成deepcopy函数,我尝试在deepcopy-gen所在的目录中运行以下命令,
./deepcopy-gen --input-dirs "$(PROJECT_ROOT)/pkg/apis/baz/v1alpha1" -O zz_generated.deepcopy
对于不同位置的内部类型也是一样。它似乎不起作用,在我运行此命令后,似乎没有创建zz_generated.deepcopy文件。它没有显示任何错误,但没有生成deepcopy函数文件。我做错了什么?
1条答案
按热度按时间gab6jxml1#
我在尝试运行命令时遇到了同样的问题:
我没有看到文件
zz_generated.deepcopy.go
。只有当我从根目录中删除了软件包“vendor”后,这个命令才开始工作