Я сейчас пишу контроллер kubernetes, используя go-клиент kubernetes.
Мне удалось сгенерировать спецификацию OpenAPI для ресурсов, управляемых контроллером (запустив openapi-gen
и пометив типы с +k8s:openapi-gen=true
).
Я также хочу создать валидаторы, такие как максимальная длина или регулярное выражение, но я не нахожу ресурсов о том, как это сделать.
Вот мой types.go
package v1
import (
meta "k8s.io/apimachinery/pkg/apis/meta/v1"
)
// +genclient
// +k8s:openapi-gen=true
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// +resource:path=project
type Project struct {
meta.TypeMeta `json:",inline"`
meta.ObjectMeta `json:"metadata,omitempty"`
Domain string `json:"domain"`
}
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
type ProjectList struct {
meta.TypeMeta `json:",inline"`
meta.ListMeta `json:"metadata,omitempty"`
Items []Project `json:"items"`
}
Я пытаюсь создать спецификацию OpenAPI с использованием openapi-gen
и включить в нее следующую проверку для Domain
: регулярное выражение [a-z]+
и максимальную длину 18
.