Some checks failed
Build k8s-mgmt-pod image / Build & Push (pull_request) Failing after 1m43s
142 lines
No EOL
7.1 KiB
Docker
142 lines
No EOL
7.1 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.19
|
|
# 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
|
|
# renovate: datasource=github-releases depName=int128/kubelogin
|
|
ARG OIDC_LOGIN_VERSION=1.36.2
|
|
# renovate: datasource=github-tags depName=ahmetb/kubectx
|
|
ARG KUBECTX_VERSION=0.9.5
|
|
|
|
|
|
ENV DEBIAN_FRONTEND=noninteractive \
|
|
LANG=en_US.UTF-8 \
|
|
LANGUAGE=en_US:en \
|
|
LC_ALL=en_US.UTF-8 \
|
|
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 \
|
|
jq \
|
|
locales \
|
|
unzip \
|
|
tar \
|
|
vim \
|
|
yq \
|
|
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 \
|
|
&& curl -fsSLo "/tmp/kubelogin_linux_amd64.zip" "https://github.com/int128/kubelogin/releases/download/v${OIDC_LOGIN_VERSION}/kubelogin_linux_amd64.zip" \
|
|
&& curl -fsSLo "/tmp/kubelogin_linux_amd64.zip.sha256" "https://github.com/int128/kubelogin/releases/download/v${OIDC_LOGIN_VERSION}/kubelogin_linux_amd64.zip.sha256" \
|
|
&& sed 's#\*kubelogin_linux_amd64.zip$#*/tmp/kubelogin_linux_amd64.zip#' /tmp/kubelogin_linux_amd64.zip.sha256 | sha256sum -c - \
|
|
&& unzip -p /tmp/kubelogin_linux_amd64.zip kubelogin > /usr/local/bin/kubectl-oidc_login \
|
|
&& chmod 0755 /usr/local/bin/kubectl-oidc_login \
|
|
&& curl -fsSLo /usr/local/bin/kubectx "https://raw.githubusercontent.com/ahmetb/kubectx/v${KUBECTX_VERSION}/kubectx" \
|
|
&& curl -fsSLo /usr/local/bin/kubens "https://raw.githubusercontent.com/ahmetb/kubectx/v${KUBECTX_VERSION}/kubens" \
|
|
&& chmod 0755 /usr/local/bin/kubectx /usr/local/bin/kubens \
|
|
&& mkdir -p /etc/bash_completion.d \
|
|
&& curl -fsSLo /etc/bash_completion.d/kubectx "https://raw.githubusercontent.com/ahmetb/kubectx/v${KUBECTX_VERSION}/completion/kubectx.bash" \
|
|
&& curl -fsSLo /etc/bash_completion.d/kubens "https://raw.githubusercontent.com/ahmetb/kubectx/v${KUBECTX_VERSION}/completion/kubens.bash" \
|
|
&& 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 /etc/bash_completion.d/kubectx /etc/bash_completion.d/kubens \
|
|
&& sed -i 's/^# *en_US.UTF-8 UTF-8/en_US.UTF-8 UTF-8/' /etc/locale.gen \
|
|
&& locale-gen en_US.UTF-8 \
|
|
&& update-locale LANG=en_US.UTF-8 LC_ALL=en_US.UTF-8 \
|
|
&& 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/kubelogin_linux_amd64.zip \
|
|
/tmp/kubelogin_linux_amd64.zip.sha256 \
|
|
/tmp/k9s_Linux_amd64.tar.gz \
|
|
&& rm -f /etc/ssh/ssh_host_* \
|
|
&& apt-get clean
|
|
|
|
|
|
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"] |