An error occurred while loading the file. Please try again.
-
Brandon Booker authoredc8153c7a
Dockerfile 6.74 KiB
FROM ubuntu:latest AS builder
# ------------------
# Install Packer
# ------------------
ARG PACKER_VERSION=1.7.10
RUN apt-get clean && apt-get update && apt-get install -y curl unzip git && \
curl -L -O https://releases.hashicorp.com/packer/${PACKER_VERSION}/packer_${PACKER_VERSION}_linux_amd64.zip && \
unzip packer_${PACKER_VERSION}_linux_amd64.zip && \
mv packer /usr/bin && \
rm packer_${PACKER_VERSION}_linux_amd64.zip && \
packer -version
# ------------------
# Install Vault
# ------------------
ARG VAULT_VERSION=1.5.2
RUN curl -L -O https://releases.hashicorp.com/vault/${VAULT_VERSION}/vault_${VAULT_VERSION}_linux_amd64.zip && \
unzip vault_${VAULT_VERSION}_linux_amd64.zip && \
mv vault /usr/bin && \
rm vault_${VAULT_VERSION}_linux_amd64.zip && \
vault -version
# ------------------
# Install govc
# ------------------
ARG GOVC_VERSION=0.23.0
RUN curl -L -O https://github.com/vmware/govmomi/releases/download/v${GOVC_VERSION}/govc_linux_amd64.gz && \
gunzip govc_linux_amd64.gz && \
mv govc_linux_amd64 /usr/bin/govc && \
chmod 755 /usr/bin/govc && \
govc version
# ------------------
# Install tfswitch
# ------------------
RUN curl -Lo tfswitch_install.sh https://raw.githubusercontent.com/warrensbox/terraform-switcher/release/install.sh && \
chmod +x ./tfswitch_install.sh && \
./tfswitch_install.sh -b /usr/local/bin && \
tfswitch --version
# ------------------
# Install aws-iam-authenticator
# ------------------
ARG AWS_IAM_AUTHENTICATOR_VERSION=0.5.9
RUN curl -Lo aws-iam-authenticator https://github.com/kubernetes-sigs/aws-iam-authenticator/releases/download/v${AWS_IAM_AUTHENTICATOR_VERSION}/aws-iam-authenticator_${AWS_IAM_AUTHENTICATOR_VERSION}_linux_amd64 && \
mv aws-iam-authenticator /usr/bin/aws-iam-authenticator && \
chmod +x /usr/bin/aws-iam-authenticator && \
aws-iam-authenticator version
# ------------------
# Install flux cli
# ------------------
RUN curl -Lo flux_install.sh https://fluxcd.io/install.sh && \
chmod +x ./flux_install.sh && \
./flux_install.sh
# ------------------
# Install kubeseal
# ------------------
ARG KUBESEAL_VERSION=0.26.2
RUN curl -Lo kubeseal-${KUBESEAL_VERSION}-linux-amd64.tar.gz \
https://github.com/bitnami-labs/sealed-secrets/releases/download/v${KUBESEAL_VERSION}/kubeseal-${KUBESEAL_VERSION}-linux-amd64.tar.gz && \
tar -xvzf kubeseal-${KUBESEAL_VERSION}-linux-amd64.tar.gz kubeseal && \
chmod +x kubeseal && \
mv kubeseal /usr/local/bin/kubeseal
# ------------------
# Install eksctl and eksctl-anywhere
# ------------------
RUN curl -sLO "https://anywhere-assets.eks.amazonaws.com/releases/eks-a/1/artifacts/eks-a/v0.5.0/linux/eksctl-anywhere-v0.5.0-linux-amd64.tar.gz" && \
tar -xzf eksctl-anywhere-v0.5.0-linux-amd64.tar.gz -C /usr/local/bin && \
curl -sLO "https://github.com/weaveworks/eksctl/releases/latest/download/eksctl_linux_amd64.tar.gz" && \
tar -xzf eksctl_linux_amd64.tar.gz -C /usr/local/bin
# ------------------
# Install kubent
# ------------------
ARG KUBENT_VERSION=0.7.0
RUN curl -sLO "https://github.com/doitintl/kube-no-trouble/releases/download/${KUBENT_VERSION}/kubent-${KUBENT_VERSION}-linux-amd64.tar.gz" && \
tar -xzf kubent-${KUBENT_VERSION}-linux-amd64.tar.gz -C /usr/local/bin
# ------------------
# Install kubectx and kubens
# ------------------
RUN git clone https://github.com/ahmetb/kubectx && \
mv kubectx/kubectx kubectx/kubens /usr/local/bin/ && \
chmod +x /usr/local/bin/kubectx /usr/local/bin/kubens
# ------------------
# Install starship
# ------------------
RUN curl -sLO "https://github.com/starship/starship/releases/latest/download/starship-x86_64-unknown-linux-gnu.tar.gz" && \
tar -xzf starship-x86_64-unknown-linux-gnu.tar.gz -C /usr/local/bin
# ------------------
# Install base
# ------------------
FROM ubuntu:jammy
COPY entrypoint.sh /
# ------------------
# Install packages
# ------------------
COPY requirements.txt /tmp
RUN apt-get clean && apt-get update && apt-get install -y curl unzip locales sshpass git jq vim sudo apt-transport-https \
dnsutils inetutils-traceroute inetutils-ping netcat gnupg wget \
ca-certificates uuid-runtime openconnect python3 python3-pkg-resources python3-distutils python3-pip tmux zsh zsh-autosuggestions && \
curl -fsSL https://pkgs.k8s.io/core:/stable:/v1.30/deb/Release.key | gpg --dearmor -o /etc/apt/keyrings/kubernetes-apt-keyring.gpg 1> /dev/null && \
chmod 644 /etc/apt/keyrings/kubernetes-apt-keyring.gpg && \
echo "deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] https://pkgs.k8s.io/core:/stable:/v1.30/deb/ /" | tee /etc/apt/sources.list.d/kubernetes.list && \
chmod 644 /etc/apt/sources.list.d/kubernetes.list && \
curl https://baltocdn.com/helm/signing.asc | gpg --dearmor | tee /etc/apt/trusted.gpg.d/helm.gpg 1> /dev/null && \
echo "deb https://baltocdn.com/helm/stable/debian/ all main" | tee /etc/apt/sources.list.d/helm-stable-debian.list && \
curl https://proget.makedeb.org/debian-feeds/prebuilt-mpr.pub | gpg --dearmor | tee /etc/apt/trusted.gpg.d/prebuilt-mpr-archive-keyring.gpg 1> /dev/null && \
echo "deb https://proget.makedeb.org prebuilt-mpr jammy" | tee /etc/apt/sources.list.d/prebuilt-mpr.list && \
curl https://aquasecurity.github.io/trivy-repo/deb/public.key | gpg --dearmor | tee /etc/apt/trusted.gpg.d/trivy.gpg 1> /dev/null && \
echo "deb https://aquasecurity.github.io/trivy-repo/deb jammy main" | tee -a /etc/apt/sources.list.d/trivy.list && \
apt-get clean && apt-get update && apt-get install -y kubectl \
git jq ca-certificates vim sudo uuid-runtime openconnect python3 python3-pkg-resources python3-distutils python3-pip \
curl unzip locales sshpass silversearcher-ag helm glab trivy pinentry-tty bash-completion && \
pip3 install -r /tmp/requirements.txt && \
apt-mark hold kubelet kubeadm kubectl
# ------------------
# Install vmware-ovftool
# ------------------
COPY VMware-ovftool-4.4.0-16360108-lin.x86_64.bundle /tmp
RUN locale-gen en_US.UTF-8 && \
/tmp/VMware-ovftool-4.4.0-16360108-lin.x86_64.bundle --console --required --eulas-agreed && \
rm -f /tmp/VMware-ovftool-4.4.0-16360108-lin.x86_64.bundle
# ------------------
# Install saml2aws
# ------------------
COPY saml2aws /usr/local/bin
# ------------------
# Install aws-sts-client
# ------------------
COPY aws-sts-client.sh /etc/profile.d/
# ------------------
# Install vcommands
# ------------------
COPY vcommands.sh /etc/profile.d/
# ------------------
# Copy tools from builder
# ------------------
COPY --from=builder /usr/bin/packer /usr/bin
COPY --from=builder /usr/bin/vault /usr/bin
COPY --from=builder /usr/local/bin /usr/local/bin
COPY --from=builder /usr/bin/govc /usr/bin
COPY --from=builder /usr/bin/aws-iam-authenticator /usr/bin
ENTRYPOINT ["/entrypoint.sh"]