Skip to content
This repository was archived by the owner on Jul 6, 2025. It is now read-only.
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
32 commits
Select commit Hold shift + click to select a range
32b2b04
add sample mise config
mircea-pavel-anton Jan 19, 2025
95f1f9c
add toml extension
mircea-pavel-anton Jan 19, 2025
d673dd7
remove requirements file as it is handled by mise now
mircea-pavel-anton Jan 19, 2025
559951b
WIP update dockerfile
mircea-pavel-anton Jan 19, 2025
061b783
fix bw cli version?
mircea-pavel-anton Jan 19, 2025
85570b5
fix jq version
mircea-pavel-anton Jan 19, 2025
be6345e
install bw CLI via npm
mircea-pavel-anton Jan 19, 2025
e8b997e
phone ops-ing sucks
mircea-pavel-anton Jan 19, 2025
5b42c7f
fix yq version
mircea-pavel-anton Jan 19, 2025
ab61d00
try fix for yamllint
mircea-pavel-anton Jan 19, 2025
721ab19
try fix 2
mircea-pavel-anton Jan 19, 2025
a352ef3
try fix 3
mircea-pavel-anton Jan 19, 2025
0427872
try fix 4
mircea-pavel-anton Jan 19, 2025
0ff4412
install uv?
mircea-pavel-anton Jan 19, 2025
75fa9f3
use pip packages
mircea-pavel-anton Jan 19, 2025
f72b56b
typo
mircea-pavel-anton Jan 19, 2025
3b79d57
install mc cli
mircea-pavel-anton Jan 19, 2025
10e28c6
use asdf?
mircea-pavel-anton Jan 19, 2025
2f712de
install mc cli via go
mircea-pavel-anton Jan 19, 2025
e9c712a
enable experimental
mircea-pavel-anton Jan 19, 2025
14d3a22
fix
mircea-pavel-anton Jan 19, 2025
b1db2df
install go
mircea-pavel-anton Jan 19, 2025
fd1c3a4
don't use uv
mircea-pavel-anton Jan 19, 2025
43e7f43
undo
mircea-pavel-anton Jan 19, 2025
011bebb
install golang
mircea-pavel-anton Jan 19, 2025
0e42da0
minio cli
mircea-pavel-anton Jan 19, 2025
84538e1
install tfctl
mircea-pavel-anton Jan 19, 2025
753d2d9
activate mise
mircea-pavel-anton Jan 19, 2025
f6b17a5
activate mise for zsh too
mircea-pavel-anton Jan 19, 2025
c6a78ed
downgrade tfctl
mircea-pavel-anton Jan 19, 2025
f4bf7d0
add kubecolor
mircea-pavel-anton Jan 19, 2025
b324da6
add cpgo
mircea-pavel-anton Jan 19, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion .vscode/extensions.json
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
"redhat.vscode-yaml",
"pkief.material-icon-theme",
"ms-azuretools.vscode-docker",
"DavidAnson.vscode-markdownlint"
"DavidAnson.vscode-markdownlint",
"tamasfe.even-better-toml"
],
}
185 changes: 14 additions & 171 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -1,179 +1,22 @@
## ================================================================================================
# Utility versions
## ================================================================================================
# Terraform Stuff
ARG TERRAFORM_VERSION=1.10.4@sha256:02748efdf0281628e4c30e56a03180a80640bf196fbb5aadc4c2638c6f90e500
ARG TFLINT_VERSION=v0.55.0@sha256:0402443a7d3d2940f4e4c6ef700618e03631b7faf1591aaa1f040cfe217a3566
FROM mcr.microsoft.com/devcontainers/base:debian-11

# Secret Encryption Stuff
ARG SOPS_VERSION=v3.9.3@sha256:3bef0abe94b4f8d167082b0edc8a6845f3070044c5e4469b70374796a47ebee3
ARG AGE_VERSION=v1.2.0@sha256:7708b4bcb7315f23163eed029cc0ccfc9bc8ad8b100d8da555c812565f845da7
ARG AGE_KEYGEN_VERSION=V1.2.0@sha256:3c741e8533806a5b45e5aaf8e8b1646d1570a3c95d654752727cf9b73b59ad12

# Flux Stuff
ARG FLUX_VERSION=v2.4.0@sha256:a9cb966cddc1a0c56dc0d57dda485d9477dd397f8b45f222717b24663471fd1f
ARG TFCTL_VERSION=v0.16.0-rc.4@sha256:5bc929e7c083e5357ea9c31716f857784a67e9371835e16357bb038378124748

# Kubectl + Plugins
ARG KUBECTL_VERSION=1.32.1@sha256:c1ad8e399fa68095782dcabfb43720fd419ba8095e061e381f35ae1693af9298
ARG KUBECOLOR_VERSION=v0.5.0@sha256:8a88ab0d5fd4e32b9e21ad4a4c2c4147617f548980a363cc84f3e1b58a3a1686
ARG KUBECTL_SWITCH_VERSION=v2.0.0@sha256:d4a04dbadb6dec078db12aff547add28af18a3e2e5951e430e33cce03e9aa8c3
ARG KUBECTL_PGO_VERSION=v0.5.0

# Misc K8S Tools
ARG KUSTOMIZE_VERSION=v5.6.0@sha256:b5f56e6becd1ba93a1a775a149763e3841a177beb10191624100bed81b44d297
ARG HELM_VERSION=v3.13.3
ARG K9S_VERSION=v0.32.7@sha256:a967991e635dc8327c25c9d20ea71089a9cad66793013c5675c81a1f6c79292b
ARG STERN_VERSION=1.31.0@sha256:6d4bc0513326811f8375da3a86e4ae3a4719412414c54d1b3409bddf1a183ac4

# Talos Stuff
ARG TALOSCTL_VERSION=v1.9.2@sha256:94f040316809b5ee6a20bb77b81bf61ded7d7ad9f397344dc02ac79b25bb671c
ARG TALSWITCHER_VERSION=v1.1.2@sha256:992edc9595db9d543f92eb7349c4db5d9359906a91a54383b9bd9525b3d760ce
ARG TALHELPER_VERSION=v3.0.16@sha256:ca8bde2778ab1312d97ca2f9dd4af655d627b3fd4b6e6a192a4798efcaaeeb8d

# Misc Tools
ARG TASKFILE_VERSION=v3.38.0@sha256:308c4f5be86bffae3f956cbd7225c4fec69b0e7a89012120b818a10df45d7c59
ARG MINIO_CLI_VERSION=RELEASE.2024-10-08T09-37-26Z@sha256:c0d345a438dcac5677c1158e4ac46637069b67b3cc38e7b04c08cf93bdee4a62
ARG BITWARDEN_CLI_VERSION=2024.8.1
ARG CMCTL_VERSION=v2.1.1

## ================================================================================================
# "Build" stage for utilities with docker images already present
## ================================================================================================
# Terraform Stuff
FROM docker.io/hashicorp/terraform:${TERRAFORM_VERSION} AS terraform
FROM ghcr.io/terraform-linters/tflint:${TFLINT_VERSION} AS tflint

# Secret Encryption Stuff
FROM ghcr.io/getsops/sops:${SOPS_VERSION} AS sops
FROM ghcr.io/mirceanton/age:${AGE_VERSION} AS age
FROM ghcr.io/mirceanton/age-keygen:${AGE_KEYGEN_VERSION} AS age-keygen

# Flux Stuff
FROM ghcr.io/fluxcd/flux-cli:${FLUX_VERSION} AS flux
FROM ghcr.io/mirceanton/tfctl:${TFCTL_VERSION} AS tfctl

# Kubectl + Plugins
FROM docker.io/bitnami/kubectl:${KUBECTL_VERSION} AS kubectl
FROM ghcr.io/kubecolor/kubecolor:${KUBECOLOR_VERSION} as kubecolor
FROM ghcr.io/mirceanton/kubectl-switch:${KUBECTL_SWITCH_VERSION} AS kubectl-switch

# Misc K8S Tools
FROM registry.k8s.io/kustomize/kustomize:${KUSTOMIZE_VERSION} AS kustomize
#TODO: helm container
FROM docker.io/derailed/k9s:${K9S_VERSION} AS k9s
FROM ghcr.io/stern/stern:${STERN_VERSION} AS stern

# Talos Stuff
FROM ghcr.io/siderolabs/talosctl:${TALOSCTL_VERSION} AS talosctl
FROM ghcr.io/mirceanton/talswitcher:${TALSWITCHER_VERSION} AS talswitcher
FROM ghcr.io/budimanjojo/talhelper:${TALHELPER_VERSION} AS talhelper

# Misc Tools
FROM ghcr.io/mirceanton/taskfile:${TASKFILE_VERSION} AS taskfile
#TODO: bw-cli container
FROM docker.io/minio/mc:${MINIO_CLI_VERSION} AS minio-cli


## ================================================================================================
# Build stages for other utilities
## ================================================================================================
FROM alpine@sha256:56fa17d2a7e7f168a043a2712e63aed1f8543aeafdcee47c58dcffe38ed51099 AS bitwarden-cli
ARG BITWARDEN_CLI_VERSION
RUN wget https://github.com/bitwarden/clients/releases/download/cli-v${BITWARDEN_CLI_VERSION}/bw-oss-linux-${BITWARDEN_CLI_VERSION}.zip -O bitwarden.zip && \
unzip bitwarden.zip && \
mv bw /bin/bw

FROM alpine@sha256:56fa17d2a7e7f168a043a2712e63aed1f8543aeafdcee47c58dcffe38ed51099 AS helm
ARG HELM_VERSION
RUN wget https://get.helm.sh/helm-${HELM_VERSION}-linux-amd64.tar.gz -O helm.tar.gz && \
tar xvf helm.tar.gz && \
mv linux-amd64/helm /bin/helm

FROM alpine@sha256:56fa17d2a7e7f168a043a2712e63aed1f8543aeafdcee47c58dcffe38ed51099 AS kubectl-pgo
ARG KUBECTL_PGO_VERSION
RUN wget https://github.com/CrunchyData/postgres-operator-client/releases/download/${KUBECTL_PGO_VERSION}/kubectl-pgo-linux-amd64 && \
mv kubectl-pgo-linux-amd64 /bin/kubectl-pgo && \
chmod +x /bin/kubectl-pgo

FROM alpine@sha256:56fa17d2a7e7f168a043a2712e63aed1f8543aeafdcee47c58dcffe38ed51099 AS cmctl
ARG CMCTL_VERSION
RUN wget https://github.com/cert-manager/cmctl/releases/download/${CMCTL_VERSION}/cmctl_linux_amd64 && \
mv cmctl_linux_amd64 /bin/cmctl && \
chmod +x /bin/cmctl

## ================================================================================================
## Main image
## ================================================================================================
FROM mcr.microsoft.com/devcontainers/python:3.13-bullseye@sha256:71f720b19b88465475ccf71206c52cede6495bf42992250c41d2ec320ee4d119 AS workspace
# Set environment variables
ENV EDITOR=vim

# Install tools
COPY --from=k9s /bin/k9s /usr/local/bin/k9s
COPY --from=sops /usr/local/bin/sops /usr/local/bin/sops
COPY --from=age /age /usr/local/bin/age
COPY --from=age-keygen /age-keygen /usr/local/bin/age-keygen
COPY --from=kustomize /app/kustomize /usr/local/bin/kustomize
COPY --from=stern /usr/local/bin/stern /usr/local/bin/stern
COPY --from=terraform /bin/terraform /usr/local/bin/terraform
COPY --from=tflint /usr/local/bin/tflint /usr/local/bin/tflint
COPY --from=talosctl /talosctl /usr/local/bin/talosctl
COPY --from=talhelper /bin/talhelper /usr/local/bin/talhelper
COPY --from=talswitcher /talswitcher /usr/local/bin/talswitcher
COPY --from=taskfile /task /usr/local/bin/task
COPY --from=kubectl /opt/bitnami/kubectl/bin/kubectl /usr/local/bin/kubectl
COPY --from=kubectl-switch /kubectl-switch /usr/local/bin/kubectl-switch
COPY --from=helm /bin/helm /usr/local/bin/helm
COPY --from=flux /usr/local/bin/flux /usr/local/bin/flux
COPY --from=tfctl /tfctl /usr/local/bin/tfctl
COPY --from=bitwarden-cli /bin/bw /usr/local/bin/bw
COPY --from=kubecolor /usr/local/bin/kubecolor /usr/local/bin/kubecolor
COPY --from=minio-cli /usr/bin/mc /usr/local/bin/mc
COPY --from=kubectl-pgo /bin/kubectl-pgo /usr/local/bin/kubectl-pgo
COPY --from=cmctl /bin/cmctl /usr/local/bin/cmctl
# Install mise
RUN sudo apt update -y && sudo apt install -y gpg sudo wget curl && \
sudo install -dm 755 /etc/apt/keyrings && \
wget -qO - https://mise.jdx.dev/gpg-key.pub | gpg --dearmor | sudo tee /etc/apt/keyrings/mise-archive-keyring.gpg 1> /dev/null && \
echo "deb [signed-by=/etc/apt/keyrings/mise-archive-keyring.gpg arch=amd64] https://mise.jdx.dev/deb stable main" | sudo tee /etc/apt/sources.list.d/mise.list && \
sudo apt update && sudo apt install -y mise
RUN echo 'eval "$(~/.local/bin/mise activate bash)"' >> ~/.bashrc && \
echo 'eval "$(~/.local/bin/mise activate zsh)"' >> ~/.zshrc

# Setup bash completions
RUN kustomize completion bash | sudo tee /etc/bash_completion.d/kustomize.bash > /dev/null
RUN stern --completion=bash | sudo tee /etc/bash_completion.d/stern.bash > /dev/null
RUN talosctl completion bash | sudo tee /etc/bash_completion.d/talosctl.bash > /dev/null
RUN talhelper completion bash | sudo tee /etc/bash_completion.d/talhelper.bash > /dev/null
RUN kubectl completion bash | sudo tee /etc/bash_completion.d/kubectl.bash > /dev/null
RUN kubectl switch completion bash | sudo tee /etc/bash_completion.d/kubectl-switch.bash > /dev/null
RUN kubectl pgo completion bash | sudo tee /etc/bash_completion.d/kubectl-pgo.bash > /dev/null
RUN helm completion bash | sudo tee /etc/bash_completion.d/helm.bash > /dev/null
RUN flux completion bash | sudo tee /etc/bash_completion.d/flux.bash > /dev/null
RUN tfctl completion bash | sudo tee /etc/bash_completion.d/tfctl.bash > /dev/null
RUN cmctl completion bash | sudo tee /etc/bash_completion.d/cmctl.bash > /dev/null
RUN terraform -install-autocomplete
RUN echo "complete -C /usr/local/bin/mc mc" | sudo tee /etc/bash_completion.d/mc.bash > /dev/null

# Install additional OS packages
RUN DEBIAN_FRONTEND=noninteractive \
apt-get update && apt-get upgrade -y && \
apt-get install -y \
sudo \
git \
bash-completion \
vim \
curl \
wget \
unzip \
htop \
net-tools \
iputils-ping \
docker-compose \
dnsutils && \
apt-get clean && \
rm -rf /var/lib/apt/lists/*

COPY requirements.txt /tmp/requirements.txt
RUN pip install --upgrade pip && \
pip install -r /tmp/requirements.txt
# Copy over mise config
WORKDIR /workspace
COPY mise.toml .
RUN mise trust mise.toml && mise install -y

# Enable passwordless sudo :kek:
RUN echo 'vscode ALL=(ALL) NOPASSWD:ALL' >> /etc/sudoers

RUN usermod -aG docker vscode
USER vscode
WORKDIR /workspace
ENTRYPOINT [ "/bin/bash", "-l", "-c" ]
52 changes: 52 additions & 0 deletions mise.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
[settings]
experimental = true

[tools]
# Runtimes
node = "22.13.0"
python = "3.13.1"
uv = "0.5.21"
go = "1.23.5"

# Terraform Stuff: https://mise.jdx.dev/mise-cookbook/terraform.html
terraform = "1.10.4"
"aqua:terraform-linters/tflint" = "0.55.0"

# Secret Encryption Stuff
"aqua:getsops/sops" = "3.9.3"
"aqua:FiloSottile/age" = "1.2.1"

# Flux Stuff
"aqua:fluxcd/flux2" = "2.4.0"
"aqua:flux-iac/tofu-controller/tfctl" = "0.15.1"

# Kubectl + Plugins
"aqua:kubernetes/kubectl" = "1.32.1"
"aqua:kubecolor" = "0.0.25"
# kubectl-switch
"ubi:CrunchyData/postgres-operator-client" = "0.5.1"

# Misc K8S Tools
"aqua:kubernetes-sigs/kustomize" = "5.6.0"
"aqua:helm/helm" = "3.13.0"
"aqua:derailed/k9s" = "0.32.7"
"aqua:stern/stern" = "1.31.0"

# Talos Stuff
"aqua:siderolabs/talos" = "1.9.0"
"aqua:budimanjojo/talhelper" = "3.0.15"
# talswitcher

# Misc Tools
"aqua:go-task/task" = "3.38.0"
"go:github.com/minio/mc" = "RELEASE.2024-10-08T09-37-26Z"
"npm:@bitwarden/cli" = "v2024.8.1"
"aqua:cert-manager/cmctl" = "2.1.1"

# Linters
"pipx:yamllint" = "1.35.1"
"aqua:mikefarah/yq" = "4.45.1"
"aqua:jqlang/jq" = "1.7.1"

[hooks]
postinstall = ["alias cpgo=postgres-operator-client"]
3 changes: 0 additions & 3 deletions requirements.txt

This file was deleted.

Loading