- Dockerfile: fix golang 1.23→1.25, add internal/ + migrations/ to image - deployments/k8s/operator.yaml: ConfigMap + Secret + Deployment + Service + Ingress - Ingress: sless-api.kube5s.ru, TLS via cert-manager letsencrypt-prod - naeel/sless-operator:v0.1.1 — running in namespace sless - E2E: https://sless-api.kube5s.ru → HTTP/2 200
34 lines
1.2 KiB
Docker
34 lines
1.2 KiB
Docker
# Изменено: 2026-03-07
|
|
# Multi-stage build для sless оператора.
|
|
# Stage 1: сборка бинаря (golang:1.23-alpine)
|
|
# Stage 2: минимальный образ (alpine:3.19, не distroless — нужен ca-certificates для S3/HTTPS)
|
|
FROM golang:1.25-alpine AS builder
|
|
ARG TARGETOS
|
|
ARG TARGETARCH
|
|
|
|
WORKDIR /workspace
|
|
COPY go.mod go.mod
|
|
COPY go.sum go.sum
|
|
RUN go mod download
|
|
|
|
# Копируем весь исходный код (включая internal/ — там основная логика)
|
|
COPY main.go main.go
|
|
COPY api/ api/
|
|
COPY controllers/ controllers/
|
|
COPY internal/ internal/
|
|
COPY migrations/ migrations/
|
|
|
|
RUN CGO_ENABLED=0 GOOS=${TARGETOS:-linux} GOARCH=${TARGETARCH} go build -a -o manager main.go
|
|
|
|
FROM alpine:3.19
|
|
# ca-certificates нужны для TLS (S3 HTTPS, DockerHub)
|
|
RUN apk add --no-cache ca-certificates
|
|
WORKDIR /
|
|
COPY --from=builder /workspace/manager .
|
|
# migrations нужны при старте — оператор читает SQL файлы для инициализации БД
|
|
COPY migrations/ migrations/
|
|
# Запускаем от непривилегированного пользователя
|
|
USER 65532:65532
|
|
|
|
ENTRYPOINT ["/manager"]
|