Compare commits
14 commits
d9c354ce65
...
5399c68923
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
5399c68923 | ||
| df0eaf0a21 | |||
| d582311917 | |||
| e4f9f06674 | |||
| 4f57393103 | |||
| 1b3fa2c228 | |||
| 998012fdff | |||
| 47fe90296e | |||
|
|
fba15a73c0 | ||
|
|
62d68bea0c | ||
| b6f7d1e1b7 | |||
| 68c6789ac4 | |||
| 0613ebca66 | |||
| 91e9afc355 |
5 changed files with 63 additions and 14 deletions
35
Dockerfile
35
Dockerfile
|
|
@ -23,16 +23,23 @@ RUN apt-get update \
|
|||
FROM debian:trixie-slim
|
||||
|
||||
# renovate: datasource=github-releases depName=janosmiko/lfk
|
||||
ARG LFK_VERSION=0.14.15
|
||||
ARG LFK_VERSION=0.14.18
|
||||
# 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 \
|
||||
|
|
@ -49,7 +56,12 @@ RUN apt-get update \
|
|||
bash-completion \
|
||||
ca-certificates \
|
||||
curl \
|
||||
jq \
|
||||
locales \
|
||||
unzip \
|
||||
tar \
|
||||
vim \
|
||||
yq \
|
||||
nginx-light \
|
||||
netcat-openbsd \
|
||||
openssh-client \
|
||||
|
|
@ -81,10 +93,23 @@ RUN apt-get update \
|
|||
&& 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 \
|
||||
&& 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 \
|
||||
|
|
@ -93,8 +118,12 @@ RUN apt-get update \
|
|||
/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_*
|
||||
&& 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
|
||||
|
|
|
|||
|
|
@ -6,7 +6,9 @@
|
|||
- `kubectl` preinstalled from a pinned upstream binary release
|
||||
- `helm` preinstalled from a pinned upstream binary release
|
||||
- `k9s` preinstalled from a pinned GitHub release tarball
|
||||
- `kubectl` and `helm` bash autocompletion enabled for both `admin` and `user`
|
||||
- `kubectx` and `kubens` preinstalled from a pinned upstream release
|
||||
- `jq`, `yq`, and `vim` preinstalled from Debian packages
|
||||
- `kubectl`, `helm`, `kubectx`, and `kubens` bash autocompletion enabled for both `admin` and `user`
|
||||
- local `openssh-server` on port `2222`
|
||||
- a browser-based SSH client on port `3000`
|
||||
- a custom ASCII-art MOTD on login
|
||||
|
|
@ -71,6 +73,8 @@ The included [docker-compose.yaml](docker-compose.yaml) enables kubeconfig boots
|
|||
|
||||
That bootstrap is explicitly opt-in and defaults to off in the container itself, so it does not run in Kubernetes unless you deliberately enable it.
|
||||
|
||||
When both are available, the bootstrap kubeconfig is applied after the service-account kubeconfig and therefore takes precedence.
|
||||
|
||||
Start it with:
|
||||
|
||||
```bash
|
||||
|
|
|
|||
14
docker/motd
14
docker/motd
|
|
@ -1,12 +1,12 @@
|
|||
|
||||
╔════════════════════════════════════════════════════════════════╗
|
||||
║ ║
|
||||
║ ██╗ ███████╗██╗ ██╗ ██╗ ██╗ █████╗ ███████╗ ║
|
||||
║ ██║ ██╔════╝██║ ██╔╝ ██║ ██╔╝██╔══██╗██╔════╝ ║
|
||||
║ ██║ █████╗ █████╔╝ █████╔╝ ╚█████╔╝███████╗ ║
|
||||
║ ██║ ██╔══╝ ██╔═██╗ ██╔═██╗ ██╔══██╗╚════██║ ║
|
||||
║ ███████╗██║ ██║ ██╗ ██║ ██╗╚█████╔╝███████║ ║
|
||||
║ ╚══════╝╚═╝ ╚═╝ ╚═╝ ╚═╝ ╚═╝ ╚════╝ ╚══════╝ ║
|
||||
║ ║
|
||||
║ _ __ ___ ____ __ __ ____ __ __ _____ ║
|
||||
║ | |/ / / _ \ / ___| | \/ | / ___|| \/ ||_ _| ║
|
||||
║ | ' / | (_) |\___ \ | |\/| || | _ | |\/| | | | ║
|
||||
║ | . \ \__, | ___) | | | | || |_| || | | | | | ║
|
||||
║ |_|\_\ /_/ |____/ |_| |_| \____||_| |_| |_| ║
|
||||
║ Kubernetes Management Pod - Jump Box ║
|
||||
║ ║
|
||||
╠════════════════════════════════════════════════════════════════╣
|
||||
|
|
@ -15,7 +15,7 @@
|
|||
║ - lfk : LFK kubernetes management ║
|
||||
║ - k9s : interactive cluster navigation ║
|
||||
║ - helm : chart install, upgrade, and rollback ║
|
||||
║ - plus : kubectx, kubens, jq, yq, and more ║
|
||||
║ - plus : kubectx, kubens, jq, yq, vim, and more ║
|
||||
║ ║
|
||||
╠════════════════════════════════════════════════════════════════╣
|
||||
║ Quick start ║
|
||||
|
|
|
|||
|
|
@ -13,6 +13,14 @@ if [ -n "${BASH_VERSION:-}" ]; then
|
|||
if [ -r /etc/bash_completion.d/helm ]; then
|
||||
. /etc/bash_completion.d/helm
|
||||
fi
|
||||
|
||||
if [ -r /etc/bash_completion.d/kubectx ]; then
|
||||
. /etc/bash_completion.d/kubectx
|
||||
fi
|
||||
|
||||
if [ -r /etc/bash_completion.d/kubens ]; then
|
||||
. /etc/bash_completion.d/kubens
|
||||
fi
|
||||
fi
|
||||
|
||||
alias k=kubectl
|
||||
|
|
|
|||
|
|
@ -104,6 +104,9 @@ install_kubeconfig_for_user() {
|
|||
local kube_config="${kube_dir}/config"
|
||||
|
||||
mkdir -p "${kube_dir}"
|
||||
mkdir -p "${kube_dir}/cache"
|
||||
chown -R "${username}:${username}" "${kube_dir}"
|
||||
chmod 0700 "${kube_dir}"
|
||||
install -m 0600 -o "${username}" -g "${username}" "${source_kubeconfig}" "${kube_config}"
|
||||
}
|
||||
|
||||
|
|
@ -291,8 +294,13 @@ EOF
|
|||
prepare_runtime() {
|
||||
mkdir -p /var/run/sshd
|
||||
ensure_host_keys
|
||||
install_serviceaccount_kubeconfig
|
||||
if [[ "${ENABLE_BOOTSTRAP_KUBECONFIG}" == "true" ]]; then
|
||||
log "Kubeconfig mode: bootstrap-only (serviceaccount kubeconfig generation disabled)."
|
||||
install_bootstrap_kubeconfig
|
||||
else
|
||||
log "Kubeconfig mode: in-cluster serviceaccount."
|
||||
install_serviceaccount_kubeconfig
|
||||
fi
|
||||
persist_kubernetes_login_env
|
||||
configure_user_auth admin ADMIN_SSH_PUBKEY ADMIN_PASSWORD
|
||||
configure_user_auth user USER_SSH_PUBKEY USER_PASSWORD
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue