All checks were successful
Build k8s-mgmt-pod image / Build & Push (push) Successful in 1m4s
Reviewed-on: #2
113 lines
No EOL
5.3 KiB
Docker
113 lines
No EOL
5.3 KiB
Docker
ARG NODE_IMAGE=node:22-trixie-slim
|
|
FROM ${NODE_IMAGE} AS webssh2-builder
|
|
|
|
ENV DEBIAN_FRONTEND=noninteractive
|
|
|
|
# renovate: datasource=github-releases depName=billchurch/webssh2
|
|
ARG WEBSSH2_VERSION=5.0.1
|
|
|
|
RUN apt-get update \
|
|
&& apt-get install -y --no-install-recommends ca-certificates curl \
|
|
&& rm -rf /var/lib/apt/lists/* \
|
|
&& mkdir -p /opt/webssh2 \
|
|
&& curl -fsSLo "/tmp/webssh2-${WEBSSH2_VERSION}.tar.gz" "https://github.com/billchurch/webssh2/releases/download/webssh2-server-v${WEBSSH2_VERSION}/webssh2-${WEBSSH2_VERSION}.tar.gz" \
|
|
&& curl -fsSLo "/tmp/webssh2-${WEBSSH2_VERSION}.tar.gz.sha256" "https://github.com/billchurch/webssh2/releases/download/webssh2-server-v${WEBSSH2_VERSION}/webssh2-${WEBSSH2_VERSION}.tar.gz.sha256" \
|
|
&& cd /tmp \
|
|
&& sha256sum -c "webssh2-${WEBSSH2_VERSION}.tar.gz.sha256" \
|
|
&& tar -xzf "/tmp/webssh2-${WEBSSH2_VERSION}.tar.gz" -C /opt/webssh2 \
|
|
&& cd /opt/webssh2 \
|
|
&& npm ci --omit=dev \
|
|
&& rm -f "/tmp/webssh2-${WEBSSH2_VERSION}.tar.gz" "/tmp/webssh2-${WEBSSH2_VERSION}.tar.gz.sha256" \
|
|
&& npm cache clean --force
|
|
|
|
FROM debian:trixie-slim
|
|
|
|
# renovate: datasource=github-releases depName=janosmiko/lfk
|
|
ARG LFK_VERSION=0.14.15
|
|
# renovate: datasource=github-releases depName=kubernetes/kubernetes
|
|
ARG KUBECTL_VERSION=1.36.2
|
|
# renovate: datasource=github-releases depName=helm/helm
|
|
ARG HELM_VERSION=3.21.2
|
|
# renovate: datasource=github-releases depName=derailed/k9s
|
|
ARG K9S_VERSION=0.51.0
|
|
|
|
|
|
ENV DEBIAN_FRONTEND=noninteractive \
|
|
WEB_SSH_PORT=3000 \
|
|
WEBSSH2_LISTEN_PORT=3001 \
|
|
WEBSSH2_SSH_HOST=127.0.0.1 \
|
|
WEBSSH2_SSH_PORT=2222 \
|
|
SSH_PORT=2222 \
|
|
WEBSSH2_HEADER_TEXT=k8s-mgmt-pod \
|
|
WEBSSH2_SSH_HOSTKEY_ENABLED=false
|
|
|
|
COPY --from=webssh2-builder /usr/local /usr/local
|
|
COPY --from=webssh2-builder /opt/webssh2 /opt/webssh2
|
|
|
|
RUN apt-get update \
|
|
&& apt-get install -y --no-install-recommends \
|
|
bash-completion \
|
|
ca-certificates \
|
|
curl \
|
|
tar \
|
|
nginx-light \
|
|
netcat-openbsd \
|
|
openssh-client \
|
|
openssh-server \
|
|
openssl \
|
|
sudo \
|
|
tini \
|
|
&& rm -rf /var/lib/apt/lists/* \
|
|
&& mkdir -p /var/run/sshd /var/lib/k8s-mgmt-pod /etc/ssh/sshd_config.d \
|
|
&& useradd --create-home --shell /bin/bash admin \
|
|
&& useradd --create-home --shell /bin/bash user \
|
|
&& printf 'admin ALL=(ALL) NOPASSWD:ALL\n' > /etc/sudoers.d/90-admin-nopasswd \
|
|
&& chmod 0440 /etc/sudoers.d/90-admin-nopasswd \
|
|
&& curl -fsSLo "/tmp/lfk_${LFK_VERSION}_linux_amd64.deb" "https://github.com/janosmiko/lfk/releases/download/v${LFK_VERSION}/lfk_${LFK_VERSION}_linux_amd64.deb" \
|
|
&& curl -fsSLo /tmp/lfk.checksums "https://github.com/janosmiko/lfk/releases/download/v${LFK_VERSION}/checksums.txt" \
|
|
&& cd /tmp \
|
|
&& grep " lfk_${LFK_VERSION}_linux_amd64.deb$" /tmp/lfk.checksums | sha256sum -c - \
|
|
&& dpkg -i "/tmp/lfk_${LFK_VERSION}_linux_amd64.deb" \
|
|
&& rm -f "/tmp/lfk_${LFK_VERSION}_linux_amd64.deb" /tmp/lfk.checksums \
|
|
&& curl -fsSLo /usr/local/bin/kubectl "https://dl.k8s.io/release/v${KUBECTL_VERSION}/bin/linux/amd64/kubectl" \
|
|
&& curl -fsSLo /tmp/kubectl.sha256 "https://dl.k8s.io/release/v${KUBECTL_VERSION}/bin/linux/amd64/kubectl.sha256" \
|
|
&& echo "$(cat /tmp/kubectl.sha256) /usr/local/bin/kubectl" | sha256sum -c - \
|
|
&& chmod 0755 /usr/local/bin/kubectl \
|
|
&& curl -fsSLo "/tmp/helm-v${HELM_VERSION}-linux-amd64.tar.gz" "https://get.helm.sh/helm-v${HELM_VERSION}-linux-amd64.tar.gz" \
|
|
&& curl -fsSLo "/tmp/helm-v${HELM_VERSION}-linux-amd64.tar.gz.sha256sum" "https://get.helm.sh/helm-v${HELM_VERSION}-linux-amd64.tar.gz.sha256sum" \
|
|
&& echo "$(awk '{print $1}' /tmp/helm-v${HELM_VERSION}-linux-amd64.tar.gz.sha256sum) /tmp/helm-v${HELM_VERSION}-linux-amd64.tar.gz" | sha256sum -c - \
|
|
&& tar -xzf "/tmp/helm-v${HELM_VERSION}-linux-amd64.tar.gz" -C /tmp \
|
|
&& install -m 0755 /tmp/linux-amd64/helm /usr/local/bin/helm \
|
|
&& curl -fsSLo "/tmp/k9s_Linux_amd64.tar.gz" "https://github.com/derailed/k9s/releases/download/v${K9S_VERSION}/k9s_Linux_amd64.tar.gz" \
|
|
&& tar -xzf "/tmp/k9s_Linux_amd64.tar.gz" -C /tmp \
|
|
&& install -m 0755 /tmp/k9s /usr/local/bin/k9s \
|
|
&& mkdir -p /etc/bash_completion.d \
|
|
&& kubectl completion bash > /etc/bash_completion.d/kubectl \
|
|
&& helm completion bash > /etc/bash_completion.d/helm \
|
|
&& chmod 0644 /etc/bash_completion.d/kubectl /etc/bash_completion.d/helm \
|
|
&& rm -f /tmp/kubectl.sha256 \
|
|
&& rm -rf /tmp/linux-amd64 \
|
|
&& rm -f \
|
|
"/tmp/helm-v${HELM_VERSION}-linux-amd64.tar.gz" \
|
|
"/tmp/helm-v${HELM_VERSION}-linux-amd64.tar.gz.sha256sum" \
|
|
/tmp/k9s \
|
|
/tmp/README.md \
|
|
/tmp/LICENSE \
|
|
/tmp/k9s_Linux_amd64.tar.gz \
|
|
&& rm -f /etc/ssh/ssh_host_*
|
|
|
|
COPY docker/sshd/10-lfk-base.conf /etc/ssh/sshd_config.d/10-lfk-base.conf
|
|
COPY docker/nginx/webssh.conf /etc/nginx/conf.d/webssh.conf
|
|
COPY docker/profile/20-k8s-tools-completion.sh /etc/profile.d/20-k8s-tools-completion.sh
|
|
COPY docker/motd /etc/motd
|
|
COPY entrypoint.sh /usr/local/bin/entrypoint.sh
|
|
|
|
RUN chmod 0755 /usr/local/bin/entrypoint.sh \
|
|
&& chmod 0644 /etc/profile.d/20-k8s-tools-completion.sh
|
|
|
|
EXPOSE 2222 3000
|
|
|
|
HEALTHCHECK --interval=30s --timeout=5s --start-period=15s --retries=3 \
|
|
CMD nc -z 127.0.0.1 "${SSH_PORT:-2222}" || exit 1
|
|
|
|
ENTRYPOINT ["/usr/bin/tini", "--", "/usr/local/bin/entrypoint.sh"] |