Генератор кода клиента Kubernetes: может ли код существовать только локально, а не в репозитории для работы генератора ядра? - PullRequest
0 голосов
/ 06 февраля 2020

Я пытаюсь сгенерировать код клиента, используя k8s.io/code-generator. Вот инструкции, которым я следую: https://itnext.io/how-to-generate-client-codes-for-kubernetes-custom-resource-definitions-crd-b4b9907769ba

Мой вопрос заключается в том, должен ли мой модуль go присутствовать в репозитории или я могу просто запустить generate-groups . sh скрипт на модуле go, который присутствует ТОЛЬКО в моей локальной системе, а не в каком-либо репозитории?

Я уже пробовал запустить его, и, насколько я понимаю, должен быть репозиторий, имеющий ВСЕ содержимое моего локального go модуля. Правильно ли мое понимание?

1 Ответ

1 голос
/ 23 марта 2020

Вы МОЖЕТЕ запустить kubernetes / code-generator generate-groups. sh на модуле go, который присутствует только в вашей локальной системе. Ни генератор кода, ни ваш модуль не должны находиться в вашем GOPATH.

Подтверждении

Клонирован kubernetes / code-generator в новый каталог.

$HOME/somedir
├── code-generator

Создал проект с именем myrepo и издевался над ним с содержимым, напоминающим sample-controller . Сделал это в том же каталоге, чтобы было проще.

somedir
├── code-generator
└── myorg.com
    └── myrepo        # mock of sample-controller
        ├── go.mod
        ├── go.sum
        └── pkg
            └── apis
                └── myorg
                    ├── register.go
                    └── v1alpha1
                        ├── doc.go
                        ├── register.go
                        └── types.go

Мой go .mod был похож на

module myorg.com/myrepo

go 1.14

require k8s.io/apimachinery v0.17.4

Ран generate-group.sh. Флаг -h указывает, какой заголовочный файл использовать. Флаг -o указывает выходную базу, которая необходима здесь, потому что мы не в GOPATH.

$HOME/somedir/code-generator/generate-groups.sh all myorg.com/myrepo/pkg/client myorg.com/myrepo/pkg/apis "myorg:v1alpha1" \
-h $HOME/somedir/code-generator/hack/boilerplate.go.txt \
-o $HOME/somedir

Подтвержденный код, сгенерированный в правильных местоположениях

myrepo
├── go.mod
├── go.sum
└── pkg
    ├── apis
    │   └── myorg
    │       ├── register.go
    │       └── v1alpha1
    │           ├── doc.go
    │           ├── register.go
    │           ├── types.go
    │           └── zz_generated.deepcopy.go
    └── client
        ├── clientset
        │   └── versioned
        │       ├── clientset.go
        │       ├── doc.go
        │       ├── fake
        │       ├── scheme
        │       └── typed
        ├── informers
        │   └── externalversions
        │       ├── factory.go
        │       ├── generic.go
        │       ├── internalinterfaces
        │       └── myorg
        └── listers
            └── myorg
                └── v1alpha1

Sources

...