Skip to content

Instantly share code, notes, and snippets.

@kriipke
Last active January 21, 2024 23:57
Show Gist options
  • Save kriipke/e9e5b6c456302cc098688d5086d3a0da to your computer and use it in GitHub Desktop.
Save kriipke/e9e5b6c456302cc098688d5086d3a0da to your computer and use it in GitHub Desktop.
Docker container with a portable toolkit of Kubernetes related cli commands
FROM ubuntu:jammy as base
ENV KUBE_VERSION=v1.27.4
ENV KUBECTL_VERSION=${KUBE_VERSION}
ENV KREW_VERSION=v0.4.4
ENV HELM_VERSION=v3.14.0
ARG DEBIAN_FRONTEND=noninteractive
FROM base as base-install-depends
RUN apt update -y && apt install -y curl git tar
FROM base-install-depends as kubectl
WORKDIR /tmp
RUN mkdir -p /tmp/kubectl && mkdir -p /tmp/bin
WORKDIR /tmp/kubectl
RUN curl -LO "https://dl.k8s.io/release/${KUBECTL_VERSION:?}/bin/linux/amd64/kubectl" \
&& install ./kubectl /tmp/bin/kubectl
FROM base-install-depends as krew
WORKDIR /tmp
RUN mkdir -p /tmp/krew && mkdir -p /tmp/bin
WORKDIR /tmp/krew
RUN curl -sSLo krew.tar.gz "https://github.com/kubernetes-sigs/krew/releases/download/${KREW_VERSION}/krew-linux_amd64.tar.gz" \
&& tar -xzf krew.tar.gz \
&& install ./krew-linux_amd64 /tmp/bin/krew
FROM base-install-depends as helm
WORKDIR /tmp
RUN mkdir -p /tmp/helm && mkdir -p /tmp/bin
WORKDIR /tmp/helm
RUN curl -sSLo helm.tar.gz "https://get.helm.sh/helm-${HELM_VERSION}-linux-amd64.tar.gz" \
&& tar -xzf helm.tar.gz \
&& install ./linux-amd64/helm /tmp/bin/helm
FROM base as final
RUN mkdir -p /usr/local/bin/ && echo 'export PATH=/usr/local/bin:$PATH' >> /etc/profile.d/sh.local
USER kube-admin
COPY --from=kubectl /tmp/bin/kubectl /usr/local/bin/kubectl
COPY --from=krew /tmp/bin/krew /usr/local/bin/krew
COPY --from=helm /tmp/bin/helm /usr/local/bin/helm
WORKDIR /app
CMD ["/bin/bash"]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment