Skip to content

Instantly share code, notes, and snippets.

@Reizinixc
Created June 20, 2022 05:16
Show Gist options
  • Save Reizinixc/fc5e2c2a036aac127ffd7d1a052847bb to your computer and use it in GitHub Desktop.
Save Reizinixc/fc5e2c2a036aac127ffd7d1a052847bb to your computer and use it in GitHub Desktop.
kubectl-kustomize for manifest build
# syntax=docker/dockerfile:1.4
ARG BASE_IMAGE_REPO=docker.io
ARG USER_ID=1000
ARG USER=runtime
ARG CURL_IMAGE=${BASE_IMAGE_REPO}/curlimages/curl:7.83.1
ARG RUNTIME_IMAGE=${BASE_IMAGE_REPO}/busybox:1.34.1
ARG KUBECTL_VERSION=1.24.0
ARG KUSTOMIZE_VERSION=4.5.5
ARG KUBECTL_NEAT_VERSION=2.0.3
ARG KUBECTL_NEAT_DIFF_VERSION=0.1.0
#ARG SOPS_VERSION=3.7.3
ARG DOWNLOAD_PATH=/downloads
ARG RUNTIME_PATH=/usr/local/bin
FROM ${CURL_IMAGE} AS downloader
ARG DOWNLOAD_PATH
WORKDIR ${DOWNLOAD_PATH}
FROM downloader AS kubectl
ARG KUBECTL_VERSION
RUN set -eux && \
curl -LO https://dl.k8s.io/release/v${KUBECTL_VERSION}/bin/linux/amd64/kubectl && \
chmod +x kubectl
FROM downloader AS kustomize
ARG KUSTOMIZE_VERSION
RUN set -eux && \
curl -fL https://github.com/kubernetes-sigs/kustomize/releases/download/kustomize/v${KUSTOMIZE_VERSION}/kustomize_v${KUSTOMIZE_VERSION}_linux_amd64.tar.gz | tar xz && \
chmod +x kustomize
FROM downloader AS kubectl-neat
ARG KUBECTL_NEAT_VERSION
RUN set -eux && \
curl -fL https://github.com/itaysk/kubectl-neat/releases/download/v${KUBECTL_NEAT_VERSION}/kubectl-neat_linux_amd64.tar.gz | tar xz && \
chmod +x kubectl-neat
FROM downloader AS kubectl-neat-diff
ARG KUBECTL_NEAT_DIFF_VERSION
RUN set -eux && \
curl -L -o kubectl-neat-diff https://github.com/sh0rez/kubectl-neat-diff/releases/download/v${KUBECTL_NEAT_DIFF_VERSION}/kubectl-neat-diff-linux-amd64 && \
chmod +x kubectl-neat-diff
#FROM downloader AS sops
#ARG SOPS_VERSION
#
#RUN set -eux && \
# curl -L -o sops https://github.com/mozilla/sops/releases/download/v${SOPS_VERSION}/sops-v${SOPS_VERSION}.linux.amd64 && \
# chmod +x sops
FROM ${RUNTIME_IMAGE} AS runtime
ARG DOWNLOAD_PATH
ARG RUNTIME_PATH
ARG USER_ID
ARG USER
RUN set -eux && \
adduser -D -u $USER_ID $USER $USER
USER 1000
COPY --from=kubectl --chown=$USER_ID:$USER_ID --link ${DOWNLOAD_PATH}/kubectl ${RUNTIME_PATH}/kubectl
COPY --from=kustomize --chown=$USER_ID:$USER_ID --link ${DOWNLOAD_PATH}/kustomize ${RUNTIME_PATH}/kustomize
COPY --from=kubectl-neat --chown=$USER_ID:$USER_ID --link ${DOWNLOAD_PATH}/kubectl-neat ${RUNTIME_PATH}/kubectl-neat
COPY --from=kubectl-neat-diff --chown=$USER_ID:$USER_ID --link ${DOWNLOAD_PATH}/kubectl-neat-diff ${RUNTIME_PATH}/kubectl-neat-diff
COPY --from=sops --chown=$USER_ID:$USER_ID --link ${DOWNLOAD_PATH}/sops ${RUNTIME_PATH}/sops
FROM runtime AS test
USER 1000
RUN set -eux && \
kubectl --help && \
kustomize --help && \
kubectl-neat --help && \
kubectl-neat-diff --help && \
# sops --help && \
kubectl config set-cluster test --server=http://localhost --insecure-skip-tls-verify=true
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment