feat: harbor integration — EnsureProject + per-namespace image path
- internal/harbor/client.go: новый пакет, EnsureProject (GET+POST idempotent)
- config.go: добавлены HarborUser/HarborPass (из HARBOR_USER/HARBOR_PASS env)
- builder.go: Projecter интерфейс, harborClient поле, ImageRef: {host}/{ns}/{func}:{tag}
EnsureProject вызывается перед каждым Build()
- function_controller.go: HarborClient поле, EnsureProject при создании k8s NS
- main.go: создание harbor.Client если HARBOR_USER+HARBOR_PASS заданы
- operator.yaml: REGISTRY_HOST=pearlharbor..., HARBOR_USER=admin, v0.1.24
- hack/create-registry-secret.sh: переписан для Harbor (HARBOR_USER/HARBOR_PASS)
Смена registry — только через REGISTRY_HOST в ConfigMap, больше нигде.
This commit is contained in:
@@ -31,6 +31,7 @@ import (
|
||||
"gitea-naeel.giteak8s.services.ngcloud.ru/naeel/sless/internal/api/handler"
|
||||
"gitea-naeel.giteak8s.services.ngcloud.ru/naeel/sless/internal/builder"
|
||||
"gitea-naeel.giteak8s.services.ngcloud.ru/naeel/sless/internal/config"
|
||||
"gitea-naeel.giteak8s.services.ngcloud.ru/naeel/sless/internal/harbor"
|
||||
"gitea-naeel.giteak8s.services.ngcloud.ru/naeel/sless/internal/storage/postgres"
|
||||
"gitea-naeel.giteak8s.services.ngcloud.ru/naeel/sless/internal/storage/s3"
|
||||
//+kubebuilder:scaffold:imports
|
||||
@@ -118,6 +119,15 @@ func main() {
|
||||
}
|
||||
|
||||
// Builder использует k8s client из manager'а
|
||||
// harborClient — nil если HARBOR_USER/HARBOR_PASS не заданы (EnsureProject пропускается).
|
||||
var harborClient *harbor.Client
|
||||
if cfg.HarborUser != "" && cfg.HarborPass != "" {
|
||||
harborClient = harbor.New(cfg.RegistryHost, cfg.HarborUser, cfg.HarborPass)
|
||||
log.Info("harbor client configured", "host", cfg.RegistryHost)
|
||||
} else {
|
||||
log.Info("harbor client disabled (HARBOR_USER/HARBOR_PASS not set)")
|
||||
}
|
||||
|
||||
bldr := builder.New(mgr.GetClient(), builder.Config{
|
||||
BuilderImage: cfg.BuilderImage,
|
||||
RegistryHost: cfg.RegistryHost,
|
||||
@@ -127,6 +137,7 @@ func main() {
|
||||
S3SecretKey: cfg.S3SecretKey,
|
||||
S3Bucket: cfg.S3Bucket,
|
||||
Namespace: "sless",
|
||||
HarborClient: harborClient,
|
||||
})
|
||||
|
||||
if err = (&controllers.FunctionReconciler{
|
||||
@@ -135,6 +146,7 @@ func main() {
|
||||
Builder: bldr,
|
||||
RegistrySecret: cfg.RegistrySecret,
|
||||
OperatorNamespace: "sless",
|
||||
HarborClient: harborClient,
|
||||
}).SetupWithManager(mgr); err != nil {
|
||||
log.Error("unable to create controller", "controller", "Function", "err", err)
|
||||
os.Exit(1)
|
||||
|
||||
Reference in New Issue
Block a user