# Образ kind-k8s-tools: kind, kubectl, docker CLI, FastAPI (веб-UI), Python-скрипты.
# Данные кластеров монтируются в /work/clusters (см. docker-compose.yml).
#
# Воспроизводимая версия kubectl: build-arg KUBECTL_VERSION=v1.32.0 (или пусто — stable.txt).
#
# Автор: Сергей Антропов — https://devops.org.ru

FROM alpine:3.20

ARG KIND_VERSION=0.24.0
# Helm для страницы «Аддоны» (установка ingress-nginx, prometheus-stack и т.д.)
ARG HELM_VERSION=v3.16.3
# Пусто — взять актуальный stable.txt; иначе явная версия, например v1.32.0
ARG KUBECTL_VERSION=
# Платформа целевого образа (BuildKit подставляет amd64/arm64; иначе — uname внутри слоя)
ARG TARGETARCH

COPY requirements.txt /opt/kind-k8s/requirements.txt

RUN apk add --no-cache python3 py3-pip docker-cli curl bash ca-certificates \
    && ARCH="${TARGETARCH:-}" \
    && if [ -z "$ARCH" ]; then ARCH="$(uname -m)"; fi \
    && case "$ARCH" in \
         amd64|x86_64)   KARCH=amd64 ;; \
         arm64|aarch64) KARCH=arm64 ;; \
         *) echo "Неподдерживаемая архитектура: $ARCH"; exit 1 ;; \
       esac \
    && curl -sSLo /usr/local/bin/kind "https://kind.sigs.k8s.io/dl/v${KIND_VERSION}/kind-linux-${KARCH}" \
    && chmod +x /usr/local/bin/kind \
    && if [ -n "${KUBECTL_VERSION}" ]; then KVER="${KUBECTL_VERSION}"; else KVER=$(curl -Ls https://dl.k8s.io/release/stable.txt); fi \
    && curl -sSLo /usr/local/bin/kubectl "https://dl.k8s.io/release/${KVER}/bin/linux/${KARCH}/kubectl" \
    && chmod +x /usr/local/bin/kubectl \
    && curl -sSL "https://get.helm.sh/helm-${HELM_VERSION}-linux-${KARCH}.tar.gz" | tar xz -C /tmp \
    && mv "/tmp/linux-${KARCH}/helm" /usr/local/bin/helm \
    && chmod +x /usr/local/bin/helm \
    && rm -rf "/tmp/linux-${KARCH}" \
    && pip3 install --no-cache-dir --break-system-packages -r /opt/kind-k8s/requirements.txt

COPY app/ /opt/kind-k8s/app/
# README для страницы «Документация» в веб-UI (см. app/core/readme_doc.py)
COPY README.md /opt/kind-k8s/README.md
COPY scripts/run_uvicorn.sh /opt/kind-k8s/run_uvicorn.sh
RUN chmod +x /opt/kind-k8s/run_uvicorn.sh

ENV KIND_K8S_WORKDIR=/work \
    PYTHONPATH=/opt/kind-k8s/app \
    KIND_K8S_IN_CONTAINER=1 \
    PATH=/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

WORKDIR /work
