|
| 1 | +FROM alpine |
| 2 | + |
| 3 | +ARG ARCH |
| 4 | + |
| 5 | +# Ignore to update versions here |
| 6 | +# docker build --no-cache --build-arg KUBECTL_VERSION=${tag} --build-arg HELM_VERSION=${helm} --build-arg KUSTOMIZE_VERSION=${kustomize_version} -t ${image}:${tag} . |
| 7 | +ARG HELM_VERSION=3.2.1 |
| 8 | +ARG KUBECTL_VERSION=1.17.5 |
| 9 | +ARG KUSTOMIZE_VERSION=v3.8.1 |
| 10 | +ARG KUBESEAL_VERSION=0.18.1 |
| 11 | +ARG KREW_VERSION=v0.4.4 |
| 12 | +ARG VALS_VERSION=0.28.1 |
| 13 | +ARG KUBECONFORM_VERSION=0.6.3 |
| 14 | + |
| 15 | +# Install helm (latest release) |
| 16 | +# ENV BASE_URL="https://storage.googleapis.com/kubernetes-helm" |
| 17 | +RUN case `uname -m` in \ |
| 18 | + x86_64) ARCH=amd64; ;; \ |
| 19 | + armv7l) ARCH=arm; ;; \ |
| 20 | + aarch64) ARCH=arm64; ;; \ |
| 21 | + ppc64le) ARCH=ppc64le; ;; \ |
| 22 | + s390x) ARCH=s390x; ;; \ |
| 23 | + *) echo "un-supported arch, exit ..."; exit 1; ;; \ |
| 24 | + esac && \ |
| 25 | + echo "export ARCH=$ARCH" > /envfile && \ |
| 26 | + cat /envfile |
| 27 | + |
| 28 | +RUN . /envfile && echo $ARCH && \ |
| 29 | + apk add --update --no-cache curl ca-certificates bash git && \ |
| 30 | + curl -sL https://get.helm.sh/helm-v${HELM_VERSION}-linux-${ARCH}.tar.gz | tar -xvz && \ |
| 31 | + mv linux-${ARCH}/helm /usr/bin/helm && \ |
| 32 | + chmod +x /usr/bin/helm && \ |
| 33 | + rm -rf linux-${ARCH} |
| 34 | + |
| 35 | +# add helm-diff |
| 36 | +RUN helm plugin install https://github.com/databus23/helm-diff --verify=false && rm -rf /tmp/helm-* && \ |
| 37 | + rm -rf ~/.cache/helm/plugins/https-github.com-databus23-helm-diff/.git |
| 38 | + |
| 39 | +# add helm-unittest |
| 40 | +RUN helm plugin install https://github.com/helm-unittest/helm-unittest --verify=false && rm -rf /tmp/helm-* |
| 41 | + |
| 42 | +# add helm-push |
| 43 | +RUN helm plugin install https://github.com/chartmuseum/helm-push --verify=false && \ |
| 44 | + rm -rf /tmp/helm-* \ |
| 45 | + /root/.local/share/helm/plugins/helm-push/testdata \ |
| 46 | + /root/.cache/helm/plugins/https-github.com-chartmuseum-helm-push/testdata |
| 47 | + |
| 48 | +# Install kubectl |
| 49 | +RUN . /envfile && echo $ARCH && \ |
| 50 | + curl -sLO "https://dl.k8s.io/release/v${KUBECTL_VERSION}/bin/linux/${ARCH}/kubectl" && \ |
| 51 | + mv kubectl /usr/bin/kubectl && \ |
| 52 | + chmod +x /usr/bin/kubectl |
| 53 | + |
| 54 | +# Install kustomize (latest release) |
| 55 | +RUN . /envfile && echo $ARCH && \ |
| 56 | + curl -sLO https://github.com/kubernetes-sigs/kustomize/releases/download/kustomize%2F${KUSTOMIZE_VERSION}/kustomize_${KUSTOMIZE_VERSION}_linux_${ARCH}.tar.gz && \ |
| 57 | + tar xvzf kustomize_${KUSTOMIZE_VERSION}_linux_${ARCH}.tar.gz && \ |
| 58 | + mv kustomize /usr/bin/kustomize && \ |
| 59 | + chmod +x /usr/bin/kustomize && \ |
| 60 | + rm kustomize_${KUSTOMIZE_VERSION}_linux_${ARCH}.tar.gz |
| 61 | + |
| 62 | +# Install eksctl (latest version) |
| 63 | +RUN . /envfile && echo $ARCH && \ |
| 64 | + curl -sL "https://github.com/weaveworks/eksctl/releases/latest/download/eksctl_$(uname -s)_${ARCH}.tar.gz" | tar xz -C /tmp && \ |
| 65 | + mv /tmp/eksctl /usr/bin && \ |
| 66 | + chmod +x /usr/bin/eksctl |
| 67 | + |
| 68 | +# Install awscli |
| 69 | +# Temp fix to allow system-wide package installation: |
| 70 | +# https://stackoverflow.com/a/76540031/3671801 |
| 71 | +RUN apk add --update --no-cache py3-pip && \ |
| 72 | + pip3 install --break-system-packages --upgrade pip setuptools && \ |
| 73 | + pip3 install --break-system-packages awscli && \ |
| 74 | + pip3 cache purge |
| 75 | + |
| 76 | +# Install jq |
| 77 | +RUN apk add --update --no-cache jq yq |
| 78 | + |
| 79 | +# https://docs.aws.amazon.com/eks/latest/userguide/install-aws-iam-authenticator.html |
| 80 | +# Install aws-iam-authenticator (latest version) |
| 81 | +RUN . /envfile && echo $ARCH && \ |
| 82 | + authenticator=$(curl -fs https://api.github.com/repos/kubernetes-sigs/aws-iam-authenticator/releases/latest | jq --raw-output '.name' | sed 's/^v//') && \ |
| 83 | + curl -fL https://github.com/kubernetes-sigs/aws-iam-authenticator/releases/download/v${authenticator}/aws-iam-authenticator_${authenticator}_linux_${ARCH} -o /usr/bin/aws-iam-authenticator && \ |
| 84 | + chmod +x /usr/bin/aws-iam-authenticator |
| 85 | + |
| 86 | +# Install for envsubst |
| 87 | +RUN apk add --update --no-cache gettext |
| 88 | + |
| 89 | +# Install kubeseal |
| 90 | +RUN . /envfile && echo $ARCH && \ |
| 91 | + curl -L https://github.com/bitnami-labs/sealed-secrets/releases/download/v${KUBESEAL_VERSION}/kubeseal-${KUBESEAL_VERSION}-linux-${ARCH}.tar.gz -o - | tar xz -C /usr/bin/ && \ |
| 92 | + chmod +x /usr/bin/kubeseal |
| 93 | + |
| 94 | +# Install vals |
| 95 | +RUN . /envfile && echo $ARCH && \ |
| 96 | + curl -L https://github.com/helmfile/vals/releases/download/v${VALS_VERSION}/vals_${VALS_VERSION}_linux_${ARCH}.tar.gz -o -| tar xz -C /usr/bin/ && \ |
| 97 | + chmod +x /usr/bin/vals |
| 98 | + |
| 99 | +# Install krew (latest release) |
| 100 | +RUN . /envfile && echo $ARCH && \ |
| 101 | + curl -fsSLO "https://github.com/kubernetes-sigs/krew/releases/download/v${KREW_VERSION}/krew-linux_${ARCH}.tar.gz" && \ |
| 102 | + tar zxvf krew-linux_${ARCH}.tar.gz && \ |
| 103 | + ./krew-linux_${ARCH} install krew && \ |
| 104 | + echo 'export PATH=/root/.krew/bin:$PATH' >> ~/.bashrc && \ |
| 105 | + rm krew-linux_${ARCH}.tar.gz |
| 106 | + |
| 107 | +# Install kubeconform |
| 108 | +RUN . /envfile && echo $ARCH && \ |
| 109 | + curl -L https://github.com/yannh/kubeconform/releases/download/v${KUBECONFORM_VERSION}/kubeconform-linux-${ARCH}.tar.gz -o - | tar xz -C /usr/bin/ && \ |
| 110 | + chmod +x /usr/bin/kubeconform |
| 111 | + |
| 112 | +WORKDIR /apps |
0 commit comments