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:
@@ -1,10 +1,13 @@
|
||||
#!/usr/bin/env bash
|
||||
# Изменено: 2026-03-07
|
||||
# Создаёт k8s Secret sless-registry-auth с DockerHub кредами для kaniko.
|
||||
# Изменено: 2026-03-11
|
||||
# Создаёт k8s Secret sless-registry-auth с кредами Harbor для kaniko.
|
||||
# Kaniko монтирует этот secret как /kaniko/.docker/config.json для push образов.
|
||||
# Отдельно от HARBOR_PASS в operator-secret: этот secret — для kaniko (push),
|
||||
# HARBOR_PASS — для Harbor API (создание проектов через EnsureProject).
|
||||
#
|
||||
# Использование:
|
||||
# DOCKER_HUB_USER=naeel DOCKER_HUB_TOKEN=<token> ./hack/create-registry-secret.sh
|
||||
# HARBOR_USER=admin HARBOR_PASS=<password> REGISTRY=pearlharbor.registryk8s.services.ngcloud.ru \
|
||||
# ./hack/create-registry-secret.sh
|
||||
#
|
||||
# Требуется: kubectl, авторизованный context с доступом к namespace sless.
|
||||
|
||||
@@ -12,21 +15,22 @@ set -euo pipefail
|
||||
|
||||
NAMESPACE="sless"
|
||||
SECRET_NAME="sless-registry-auth"
|
||||
REGISTRY="${REGISTRY:-pearlharbor.registryk8s.services.ngcloud.ru}"
|
||||
|
||||
if [[ -z "${DOCKER_HUB_USER:-}" ]]; then
|
||||
echo "ERROR: DOCKER_HUB_USER env var is required"
|
||||
if [[ -z "${HARBOR_USER:-}" ]]; then
|
||||
echo "ERROR: HARBOR_USER env var is required"
|
||||
exit 1
|
||||
fi
|
||||
if [[ -z "${DOCKER_HUB_TOKEN:-}" ]]; then
|
||||
echo "ERROR: DOCKER_HUB_TOKEN env var is required (DockerHub access token, not password)"
|
||||
if [[ -z "${HARBOR_PASS:-}" ]]; then
|
||||
echo "ERROR: HARBOR_PASS env var is required"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
kubectl create secret docker-registry "${SECRET_NAME}" \
|
||||
--docker-username="${DOCKER_HUB_USER}" \
|
||||
--docker-password="${DOCKER_HUB_TOKEN}" \
|
||||
--docker-server="https://index.docker.io/v1/" \
|
||||
--docker-username="${HARBOR_USER}" \
|
||||
--docker-password="${HARBOR_PASS}" \
|
||||
--docker-server="${REGISTRY}" \
|
||||
--namespace="${NAMESPACE}" \
|
||||
--dry-run=client -o yaml | kubectl apply -f -
|
||||
|
||||
echo "OK: secret '${SECRET_NAME}' applied in namespace '${NAMESPACE}'"
|
||||
echo "OK: secret '${SECRET_NAME}' applied in namespace '${NAMESPACE}' (server: ${REGISTRY})"
|
||||
|
||||
Reference in New Issue
Block a user