Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
49 commits
Select commit Hold shift + click to select a range
b19401b
Upgrade Debian base image to bookworm
Apr 30, 2024
8a1c229
Never block cluster-autoscaler
Apr 30, 2024
1038298
Eliminate termination grace period
Apr 30, 2024
da22c74
Merge pull request #24 from digitalocean/upgrade-debian-in-base-image
Apr 30, 2024
0a9432f
Merge pull request #23 from digitalocean/never-block-ca
Apr 30, 2024
c2a8572
Merge pull request #25 from digitalocean/no-termination-grace-period
Apr 30, 2024
61af11a
re-add iptables binaries
gottwald Apr 30, 2024
687be3c
Merge pull request #26 from digitalocean/ig/re-add-iptables
gottwald Apr 30, 2024
eb3e125
Use ClusterFirstWithHostNet DNS policy
Jul 3, 2024
47d8297
Merge pull request #27 from digitalocean/use-ClusterFirstWithHostNet-…
Jul 3, 2024
66ce3f5
remove docker socket mounts and cli
d-honeybadger Aug 22, 2024
923077f
Merge pull request #28 from digitalocean/dkomsa/remove-docker
d-honeybadger Aug 22, 2024
2cc0c8c
Add second '>' for correct output redirection in Dockerfile
okamidash Aug 23, 2024
1a41ee1
Update Dockerfile to include crictl
okamidash Aug 23, 2024
176c0d6
Add containerd mounts to daemonset
okamidash Aug 23, 2024
c3c7a3a
update deployment to include containerd mounts
okamidash Aug 23, 2024
6223905
Update README.md to clarify on wget and crictl
okamidash Aug 23, 2024
9dd15ee
Update README.md to remove duplicate 'atop' line
okamidash Aug 23, 2024
f631da5
Merge pull request #29 from okamidash/master
okamidash Aug 23, 2024
d4d08bf
Move image to ghcr (#30)
gottwald Apr 8, 2025
1319131
ci: fix ghcr auth (#31)
gottwald Apr 8, 2025
6877edf
ci: login to the correct registry (#32)
gottwald Apr 8, 2025
ee30931
added nmap and publish to ghcr.io
suvl May 30, 2023
c66d4d3
added two main platforms to build
suvl May 30, 2023
50fa626
upgrade to debian 11 and added description
suvl May 30, 2023
d333e88
Set backports to bullseye instead of buster
suvl Jun 1, 2023
4e6c31d
added httpie
suvl Jun 1, 2023
90bf4a2
added hey load balancing tool
suvl Jul 31, 2023
ab3296f
added redis-tools
suvl Feb 8, 2024
d36fb7a
upgrade cosign
suvl Feb 8, 2024
3890dfb
add --yes to cosign sign
suvl Feb 8, 2024
1ba1618
Update Dockerfile
jpsfalcao Apr 4, 2024
cc24f59
added speedtest cli latest version
suvl Apr 15, 2024
8a01f5a
added HTTP/3 support to cURL
suvl May 13, 2024
e7c8144
add httpstat script to PATH and runnable by all users
suvl May 14, 2024
f09f72b
add upgrade to docker image
suvl May 15, 2024
cbe78f2
Update README.md
suvl Aug 8, 2024
f5b3519
feat(docker): add wget and install Azure CLI
suvl Feb 10, 2026
366dede
feat(docker): upgrade base image to Debian 13 and enhance curl build
suvl Feb 10, 2026
5dececb
docs(readme): enhance README with detailed usage and tooling
suvl Feb 10, 2026
a9ab35f
docs(license): update copyright year for NOS Portugal
suvl Feb 10, 2026
d4d3e09
feat(k8s): update image references and Docker repo
suvl Feb 10, 2026
fe9a7f4
Merge branch 'master' into digitalocean-master
suvl Feb 10, 2026
2550970
fix(k8s): rename doks-debug to debug-pod in manifests
suvl Feb 10, 2026
13b566d
test(workflow): update smoke test to check kubectl version
suvl Feb 10, 2026
70d1090
ci(workflow): update release workflows and remove slim variant
suvl Feb 10, 2026
e52a77e
Update k8s/daemonset.yaml
suvl Feb 10, 2026
fdc36f6
chore(Slim): remove unused Dockerfile for slim variant
suvl Feb 10, 2026
2ad1496
perf(Dockerfile): optimize build process with parallel jobs
suvl Feb 10, 2026
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
37 changes: 6 additions & 31 deletions .github/workflows/release.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,7 @@ on:
- master

env:
# Use docker.io for Docker Hub if empty
REGISTRY: ghcr.io
# github.repository as <account>/<repo>
IMAGE_NAME: ${{ github.repository }}

jobs:
Expand All @@ -18,49 +16,36 @@ jobs:
permissions:
contents: read
packages: write
# This is used to complete the identity challenge
# with sigstore/fulcio when running outside of PRs.
id-token: write

steps:
- name: Checkout repository
uses: actions/checkout@v3
uses: actions/checkout@v6

# Install the cosign tool except on PR
# https://github.com/sigstore/cosign-installer
- name: Install cosign
if: github.event_name != 'pull_request'
uses: sigstore/cosign-installer@v3.3.0
with:
cosign-release: 'v2.2.2' # optional
uses: sigstore/cosign-installer@v4

# Workaround: https://github.com/docker/build-push-action/issues/461
- name: Setup Docker buildx
uses: docker/setup-buildx-action@79abd3f86f79a9d68a23c75a09a9a85889262adf
uses: docker/setup-buildx-action@v3

# Login against a Docker registry except on PR
# https://github.com/docker/login-action
- name: Log into registry ${{ env.REGISTRY }}
if: github.event_name != 'pull_request'
uses: docker/login-action@28218f9b04b4f3f62068d7b6ce6ca5b26e35336c
uses: docker/login-action@v3
with:
registry: ${{ env.REGISTRY }}
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}

# Extract metadata (tags, labels) for Docker
# https://github.com/docker/metadata-action
- name: Extract Docker metadata
id: meta
uses: docker/metadata-action@98669ae865ea3cffbcbaa878cf57c20bbf1c6c38
uses: docker/metadata-action@v5
with:
images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}

# Build and push Docker image with Buildx (don't push on PR)
# https://github.com/docker/build-push-action
- name: Build and push Docker image
id: build-and-push
uses: docker/build-push-action@ac9327eae2b366085ac7f6a2d02df8aa8ead720a
uses: docker/build-push-action@v6
with:
context: .
platforms: linux/amd64,linux/arm64
Expand All @@ -70,16 +55,6 @@ jobs:
cache-from: type=gha
cache-to: type=gha,mode=max


# Sign the resulting Docker image digest except on PRs.
# This will only write to the public Rekor transparency log when the Docker
# repository is public to avoid leaking data. If you would like to publish
# transparency data even for private images, pass --force to cosign below.
# https://github.com/sigstore/cosign
- name: Sign the published Docker image
if: ${{ github.event_name != 'pull_request' }}
env:
COSIGN_EXPERIMENTAL: "true"
# This step uses the identity token to provision an ephemeral certificate
# against the sigstore community Fulcio instance.
run: echo "${{ steps.meta.outputs.tags }}" | xargs -I {} cosign sign --yes {}@${{ steps.build-and-push.outputs.digest }}
90 changes: 0 additions & 90 deletions .github/workflows/release_slim.yaml

This file was deleted.

17 changes: 9 additions & 8 deletions .github/workflows/test.yaml
Original file line number Diff line number Diff line change
@@ -1,22 +1,23 @@
name: test

on:
pull_request:
paths-ignore:
- 'Slim/**'
pull_request:
paths-ignore:
- 'Slim/**'

jobs:
test:
runs-on: ubuntu-latest

steps:
- name: checkout
uses: actions/checkout@ec3a7ce113134d7a93b817d10a8272cb61118579 # v2.4.0
with:
fetch-depth: 1
uses: actions/checkout@v6

- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3

- name: build image
run: docker build -t doks-debug .
run: docker buildx build --platform linux/amd64 --load -t debug-pod .

- name: smoke test
run: docker run --rm doks-debug sleep 1
run: docker run --rm debug-pod curl --version | head -1
107 changes: 57 additions & 50 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -1,46 +1,54 @@
FROM debian:12 AS builder
FROM debian:13 AS builder

# this builder part is the work of Yury Muski, from https://github.com/yurymuski/curl-http3
LABEL maintainer="Yury Muski <muski.yury@gmail.com>"
# Build curl with HTTP/3 support using ngtcp2 (non-experimental) backend.
# Debian 13 ships OpenSSL 3.5 which has native QUIC API support for ngtcp2.
# https://github.com/curl/curl/blob/master/docs/HTTP3.md#ngtcp2-version

WORKDIR /opt

ARG CURL_VERSION=curl-8_2_1
# https://github.com/curl/curl/blob/master/docs/HTTP3.md#quiche-version
ARG QUICHE_VERSION=0.18.0
ARG CURL_VERSION=curl-8_18_0
ARG NGTCP2_VERSION=v1.20.0
ARG NGHTTP3_VERSION=v1.15.0

RUN export DEBIAN_FRONTEND=noninteractive && \
apt-get update && \
apt-get full-upgrade --auto-remove --purge -y && \
apt-get install -y build-essential git autoconf libtool cmake golang-go curl libnghttp2-dev zlib1g-dev;
apt-get install -y build-essential git autoconf libtool pkg-config \
libssl-dev libnghttp2-dev zlib1g-dev libpsl-dev;

# Build nghttp3
RUN git clone -b $NGHTTP3_VERSION https://github.com/ngtcp2/nghttp3 && \
cd nghttp3 && \
git submodule update --init && \
autoreconf -fi && \
./configure --prefix=/usr/local --enable-lib-only && \
make --jobs=$(nproc) && \
make install

# install rust & cargo
RUN curl https://sh.rustup.rs -sSf | sh -s -- -y -q;

RUN git clone --recursive https://github.com/cloudflare/quiche

# build quiche
RUN export PATH="$HOME/.cargo/bin:$PATH" && \
cd quiche && \
git checkout $QUICHE_VERSION && \
cargo build --package quiche --release --features ffi,pkg-config-meta,qlog && \
mkdir quiche/deps/boringssl/src/lib && \
ln -vnf $(find target/release -name libcrypto.a -o -name libssl.a) quiche/deps/boringssl/src/lib/

# add curl
RUN git clone https://github.com/curl/curl
RUN cd curl && \
# Build ngtcp2 (with system OpenSSL 3.5+)
RUN git clone -b $NGTCP2_VERSION https://github.com/ngtcp2/ngtcp2 && \
cd ngtcp2 && \
autoreconf -fi && \
./configure PKG_CONFIG_PATH=/usr/local/lib/pkgconfig \
--prefix=/usr/local --enable-lib-only --with-openssl && \
make --jobs=$(nproc) && \
make install

# Build curl with HTTP/3 (ngtcp2 + nghttp3) + HTTP/2 (nghttp2) + TLS (OpenSSL)
RUN git clone https://github.com/curl/curl && \
cd curl && \
git checkout $CURL_VERSION && \
autoreconf -fi && \
./configure LDFLAGS="-Wl,-rpath,/opt/quiche/target/release" --with-openssl=/opt/quiche/quiche/deps/boringssl/src --with-quiche=/opt/quiche/target/release --with-nghttp2 --with-zlib && \
make && \
make DESTDIR="/debian/" install
./configure PKG_CONFIG_PATH=/usr/local/lib/pkgconfig \
--with-openssl --with-nghttp3 --with-ngtcp2 --with-nghttp2 --with-zlib && \
make --jobs=$(nproc) && \
make install


FROM debian:13-slim

# match doks-debug version with DOKS worker node image version for kernel
# tooling compatibility reasons
FROM debian:stable-slim
# Specify the version of crictl to install
ARG CRICTL_VERSION="v1.33.0"

LABEL org.opencontainers.image.source=https://github.com/nosportugal/debug-pod
LABEL org.opencontainers.image.description="A debian image with some debugging tools installed."
Expand All @@ -50,20 +58,17 @@ WORKDIR /root

# use same dpkg path-exclude settings that come by default with ubuntu:focal
# image that we previously used
RUN echo 'path-exclude=/usr/share/locale/*/LC_MESSAGES/*.mo' > /etc/dpkg/dpkg.cfg.d/excludes
RUN echo 'path-exclude=/usr/share/doc/*' > /etc/dpkg/dpkg.cfg.d/excludes
RUN echo 'path-include=/usr/share/doc/*/copyright' > /etc/dpkg/dpkg.cfg.d/excludes
RUN echo 'path-include=/usr/share/doc/*/changelog.Debian.*' > /etc/dpkg/dpkg.cfg.d/excludes

RUN echo 'deb http://deb.debian.org/debian bullseye-backports main' > /etc/apt/sources.list.d/backports.list
RUN echo 'path-exclude=/usr/share/locale/*/LC_MESSAGES/*.mo' >> /etc/dpkg/dpkg.cfg.d/excludes
RUN echo 'path-exclude=/usr/share/doc/*' >> /etc/dpkg/dpkg.cfg.d/excludes
RUN echo 'path-include=/usr/share/doc/*/copyright' >> /etc/dpkg/dpkg.cfg.d/excludes
RUN echo 'path-include=/usr/share/doc/*/changelog.Debian.*' >> /etc/dpkg/dpkg.cfg.d/excludes

RUN export DEBIAN_FRONTEND=noninteractive && \
apt-get update && \
apt-get full-upgrade --auto-remove --purge -y && \
apt-get install -y \
apt-transport-https \
ca-certificates \
software-properties-common \
curl \
httping \
man \
man-db \
Expand All @@ -72,7 +77,7 @@ RUN export DEBIAN_FRONTEND=noninteractive && \
gnupg \
atop \
htop \
dstat \
sysstat \
jq \
dnsutils \
tcpdump \
Expand All @@ -91,26 +96,28 @@ RUN export DEBIAN_FRONTEND=noninteractive && \
bpftool \
nmap \
redis-tools \
kafkacat \
kcat \
nghttp2 \
zlib1g && \
libpsl5t64 \
zlib1g \
wget && \
rm -rf /var/lib/apt/lists/*

COPY --from=builder /debian/usr/local/ /usr/local/
COPY --from=builder /opt/quiche/target/release /opt/quiche/target/release
COPY --from=builder /usr/local/ /usr/local/

# Resolve any issues of C-level lib
# location caches ("shared library cache")
RUN ldconfig

RUN install -m 0755 -d /etc/apt/keyrings && \
. /etc/os-release && \
curl -fsSL "https://download.docker.com/linux/$ID/gpg" | gpg --dearmor -o "/etc/apt/keyrings/$ID.gpg" && \
chmod a+r "/etc/apt/keyrings/$ID.gpg" && \
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/$ID.gpg] https://download.docker.com/linux/$ID $VERSION_CODENAME stable" | \
tee /etc/apt/sources.list.d/docker.list > /dev/null && \
apt-get update -qq && \
apt-get install -y docker-ce
# Install crictl
RUN wget https://github.com/kubernetes-sigs/cri-tools/releases/download/${CRICTL_VERSION}/crictl-${CRICTL_VERSION}-linux-amd64.tar.gz && \
tar zxvf crictl-${CRICTL_VERSION}-linux-amd64.tar.gz -C /usr/local/bin && \
rm -f crictl-${CRICTL_VERSION}-linux-amd64.tar.gz

# Specify the default image endpoint for crictl
RUN echo 'runtime-endpoint: unix:///run/containerd/containerd.sock' >> /etc/crictl.yaml
RUN echo 'image-endpoint: unix:///run/containerd/containerd.sock' >> /etc/crictl.yaml
RUN echo 'timeout: 2' >> /etc/crictl.yaml

# for httpie
RUN curl -SsL https://packages.httpie.io/deb/KEY.gpg | gpg --dearmor -o /usr/share/keyrings/httpie.gpg && \
Expand Down
1 change: 1 addition & 0 deletions LICENSE
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
MIT License

Copyright (c) 2021 DigitalOcean
Copyright (c) 2025-2026 NOS Portugal

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
Expand Down
Loading
Loading