# Образ 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