Skip to content

Commit b692f8a

Browse files
build: upgrade kubectl (#82)
* build: upgrade kubectl BREAKING CHANGE: drop `kubectl < 1.30`. * build: keep 2 latest kubectl * build: optimize Dockerfile * docs: add comments to Dockerfile * refactor: optimize Dockerfile * build: upgrade Debian * revert me: break dockerfile * Revert "revert me: break dockerfile" This reverts commit 54f6e6f. * build: upgrade base image * build: upgrade `kubectl` * fix: remove deprecated flag
1 parent a6fc499 commit b692f8a

File tree

3 files changed

+20
-77
lines changed

3 files changed

+20
-77
lines changed

Dockerfile

Lines changed: 14 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -1,53 +1,18 @@
1-
FROM alpine:3.20 AS builder
2-
3-
RUN apk update && apk add curl
4-
5-
RUN export ARCH=$([[ "$(uname -m)" == "aarch64" ]] && echo "arm64" || echo "amd64") && \
6-
mkdir -p /tmp/kubectl-versions && cd /tmp/kubectl-versions && \
7-
curl -o kubectl1.30 -L https://storage.googleapis.com/kubernetes-release/release/v1.30.0/bin/linux/${ARCH}/kubectl && \
8-
curl -o kubectl1.29 -L https://storage.googleapis.com/kubernetes-release/release/v1.29.0/bin/linux/${ARCH}/kubectl && \
9-
curl -o kubectl1.28 -L https://storage.googleapis.com/kubernetes-release/release/v1.28.0/bin/linux/${ARCH}/kubectl && \
10-
curl -o kubectl1.27 -L https://storage.googleapis.com/kubernetes-release/release/v1.27.0/bin/linux/${ARCH}/kubectl && \
11-
curl -o kubectl1.26 -L https://storage.googleapis.com/kubernetes-release/release/v1.26.0/bin/linux/${ARCH}/kubectl && \
12-
curl -o kubectl1.25 -L https://storage.googleapis.com/kubernetes-release/release/v1.25.0/bin/linux/${ARCH}/kubectl && \
13-
curl -o kubectl1.24 -L https://storage.googleapis.com/kubernetes-release/release/v1.24.0/bin/linux/${ARCH}/kubectl && \
14-
curl -o kubectl1.23 -L https://storage.googleapis.com/kubernetes-release/release/v1.23.0/bin/linux/${ARCH}/kubectl && \
15-
curl -o kubectl1.22 -L https://storage.googleapis.com/kubernetes-release/release/v1.22.0/bin/linux/${ARCH}/kubectl && \
16-
curl -o kubectl1.21 -L https://storage.googleapis.com/kubernetes-release/release/v1.21.0/bin/linux/${ARCH}/kubectl && \
17-
curl -o kubectl1.20 -L https://storage.googleapis.com/kubernetes-release/release/v1.20.0/bin/linux/${ARCH}/kubectl && \
18-
curl -o kubectl1.19 -L https://storage.googleapis.com/kubernetes-release/release/v1.19.0/bin/linux/${ARCH}/kubectl && \
19-
curl -o kubectl1.18 -L https://storage.googleapis.com/kubernetes-release/release/v1.18.0/bin/linux/${ARCH}/kubectl && \
20-
curl -o kubectl1.17 -L https://storage.googleapis.com/kubernetes-release/release/v1.17.0/bin/linux/${ARCH}/kubectl && \
21-
curl -o kubectl1.16 -L https://storage.googleapis.com/kubernetes-release/release/v1.16.0/bin/linux/${ARCH}/kubectl && \
22-
curl -o kubectl1.15 -L https://storage.googleapis.com/kubernetes-release/release/v1.15.0/bin/linux/${ARCH}/kubectl && \
23-
curl -o kubectl1.14 -L https://storage.googleapis.com/kubernetes-release/release/v1.14.0/bin/linux/${ARCH}/kubectl && \
24-
curl -o kubectl1.13 -L https://storage.googleapis.com/kubernetes-release/release/v1.13.0/bin/linux/${ARCH}/kubectl && \
25-
curl -o kubectl1.12 -L https://storage.googleapis.com/kubernetes-release/release/v1.12.0/bin/linux/${ARCH}/kubectl && \
26-
curl -o kubectl1.11 -L https://storage.googleapis.com/kubernetes-release/release/v1.11.0/bin/linux/${ARCH}/kubectl && \
27-
curl -o kubectl1.10 -L https://storage.googleapis.com/kubernetes-release/release/v1.10.0/bin/linux/${ARCH}/kubectl && \
28-
curl -o kubectl1.6 -L https://storage.googleapis.com/kubernetes-release/release/v1.6.0/bin/linux/${ARCH}/kubectl
29-
30-
31-
FROM debian:bookworm-20240812-slim
32-
33-
RUN apt-get update -y
34-
# install busybox by building source until it's unavailable by apt-get for v1.36.1 ad no need to link [[
35-
RUN apt-get install --no-install-recommends wget build-essential -y && \
36-
wget --no-check-certificate https://busybox.net/downloads/busybox-1.36.1.tar.bz2 && \
37-
tar -xvjf busybox-1.36.1.tar.bz2 && \
38-
cd busybox-1.36.1 && \
39-
make defconfig && \
40-
make && \
41-
make CONFIG_PREFIX="/" install
42-
43-
RUN adduser --gecos "" --disabled-password --home /home/cfu --shell /bin/bash cfu
44-
45-
#copy all versions of kubectl to switch between them later.
46-
COPY --chown=cfu --chmod=775 --from=builder /tmp/kubectl-versions/* /usr/local/bin/
47-
COPY --chown=cfu --chmod=775 --from=builder /tmp/kubectl-versions/kubectl1.10 /usr/local/bin/kubectl
1+
FROM debian:trixie-20251117-slim AS prod
2+
ARG TARGETPLATFORM
3+
RUN /sbin/useradd --home /home/cfu --shell /bin/bash cfu
4+
COPY --chown=cfu --chmod=775 cf-deploy-kubernetes.sh /cf-deploy-kubernetes
5+
COPY --chown=cfu --chmod=775 template.sh /template.sh
6+
COPY --from=busybox:1.37.0-glibc /bin/busybox /usr/bin/busybox
7+
RUN busybox --install
8+
# ⚠️ We support 3 most recent minor versions: https://kubernetes.io/releases/
9+
# Please update `./cf-deploy-kubernetes.sh` accordingly.
10+
ADD --chown=cfu --chmod=775 https://dl.k8s.io/release/v1.34.2/bin/${TARGETPLATFORM}/kubectl /usr/local/bin/kubectl1.34
11+
ADD --chown=cfu --chmod=775 https://dl.k8s.io/release/v1.33.6/bin/${TARGETPLATFORM}/kubectl /usr/local/bin/kubectl1.33
12+
ADD --chown=cfu --chmod=775 https://dl.k8s.io/release/v1.32.10/bin/${TARGETPLATFORM}/kubectl /usr/local/bin/kubectl1.32
13+
# ⚠️ Defaults to the latest version. Please update with new versions as needed.
14+
RUN ln -s /usr/local/bin/kubectl1.34 /usr/local/bin/kubectl
4815

4916
WORKDIR /
50-
ADD --chown=cfu --chmod=775 cf-deploy-kubernetes.sh /cf-deploy-kubernetes
51-
ADD --chown=cfu --chmod=775 template.sh /template.sh
5217
USER cfu
5318
CMD ["bash"]

cf-deploy-kubernetes.sh

Lines changed: 5 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -47,39 +47,17 @@ if [[ -n "${SERVER_VERSION}" ]]; then
4747
cp -f "/usr/local/bin/kubectl1.${SERVER_VERSION}" /usr/local/bin/kubectl 2>/dev/null
4848
else
4949
#check the cluster version and decide which version of kubectl to use:
50-
SERVER_VERSION=$(kubectl version --short=true --context "${KUBECONTEXT}" | grep -i server | cut -d ':' -f2 | cut -d '.' -f2 | sed 's/[^0-9]*//g')
50+
SERVER_VERSION=$(kubectl version --context "${KUBECONTEXT}" | grep -i server | cut -d ':' -f2 | cut -d '.' -f2 | sed 's/[^0-9]*//g')
5151
echo "Server minor version: $SERVER_VERSION"
52-
if (( "$SERVER_VERSION" <= "6" )); then cp -f /usr/local/bin/kubectl1.6 /usr/local/bin/kubectl; fi 2>/dev/null
53-
if (( "$SERVER_VERSION" <= "7" )); then cp -f /usr/local/bin/kubectl1.7 /usr/local/bin/kubectl; fi 2>/dev/null
54-
if (( "$SERVER_VERSION" <= "8" )); then cp -f /usr/local/bin/kubectl1.8 /usr/local/bin/kubectl; fi 2>/dev/null
55-
if (( "$SERVER_VERSION" <= "9" )); then cp -f /usr/local/bin/kubectl1.9 /usr/local/bin/kubectl; fi 2>/dev/null
56-
if (( "$SERVER_VERSION" <= "10" )); then cp -f /usr/local/bin/kubectl1.10 /usr/local/bin/kubectl; fi 2>/dev/null
57-
if (( "$SERVER_VERSION" <= "11" )); then cp -f /usr/local/bin/kubectl1.11 /usr/local/bin/kubectl; fi 2>/dev/null
58-
if (( "$SERVER_VERSION" <= "12" )); then cp -f /usr/local/bin/kubectl1.12 /usr/local/bin/kubectl; fi 2>/dev/null
59-
if (( "$SERVER_VERSION" <= "13" )); then cp -f /usr/local/bin/kubectl1.13 /usr/local/bin/kubectl; fi 2>/dev/null
60-
if (( "$SERVER_VERSION" == "14" )); then cp -f /usr/local/bin/kubectl1.14 /usr/local/bin/kubectl; fi 2>/dev/null
61-
if (( "$SERVER_VERSION" == "15" )); then cp -f /usr/local/bin/kubectl1.15 /usr/local/bin/kubectl; fi 2>/dev/null
62-
if (( "$SERVER_VERSION" == "16" )); then cp -f /usr/local/bin/kubectl1.16 /usr/local/bin/kubectl; fi 2>/dev/null
63-
if (( "$SERVER_VERSION" == "17" )); then cp -f /usr/local/bin/kubectl1.17 /usr/local/bin/kubectl; fi 2>/dev/null
64-
if (( "$SERVER_VERSION" == "18" )); then cp -f /usr/local/bin/kubectl1.18 /usr/local/bin/kubectl; fi 2>/dev/null
65-
if (( "$SERVER_VERSION" == "19" )); then cp -f /usr/local/bin/kubectl1.19 /usr/local/bin/kubectl; fi 2>/dev/null
66-
if (( "$SERVER_VERSION" == "20" )); then cp -f /usr/local/bin/kubectl1.20 /usr/local/bin/kubectl; fi 2>/dev/null
67-
if (( "$SERVER_VERSION" == "21" )); then cp -f /usr/local/bin/kubectl1.21 /usr/local/bin/kubectl; fi 2>/dev/null
68-
if (( "$SERVER_VERSION" == "22" )); then cp -f /usr/local/bin/kubectl1.22 /usr/local/bin/kubectl; fi 2>/dev/null
69-
if (( "$SERVER_VERSION" == "23" )); then cp -f /usr/local/bin/kubectl1.23 /usr/local/bin/kubectl; fi 2>/dev/null
70-
if (( "$SERVER_VERSION" >= "24" )); then cp -f /usr/local/bin/kubectl1.24 /usr/local/bin/kubectl; fi 2>/dev/null
71-
if (( "$SERVER_VERSION" >= "25" )); then cp -f /usr/local/bin/kubectl1.25 /usr/local/bin/kubectl; fi 2>/dev/null
72-
if (( "$SERVER_VERSION" >= "26" )); then cp -f /usr/local/bin/kubectl1.26 /usr/local/bin/kubectl; fi 2>/dev/null
73-
if (( "$SERVER_VERSION" >= "27" )); then cp -f /usr/local/bin/kubectl1.27 /usr/local/bin/kubectl; fi 2>/dev/null
74-
if (( "$SERVER_VERSION" >= "28" )); then cp -f /usr/local/bin/kubectl1.28 /usr/local/bin/kubectl; fi 2>/dev/null
75-
if (( "$SERVER_VERSION" >= "29" )); then cp -f /usr/local/bin/kubectl1.29 /usr/local/bin/kubectl; fi 2>/dev/null
76-
if (( "$SERVER_VERSION" >= "30" )); then cp -f /usr/local/bin/kubectl1.30 /usr/local/bin/kubectl; fi 2>/dev/null
52+
if (( "$SERVER_VERSION" >= "32" )); then cp -f /usr/local/bin/kubectl1.32 /usr/local/bin/kubectl; fi 2>/dev/null
53+
if (( "$SERVER_VERSION" >= "33" )); then cp -f /usr/local/bin/kubectl1.33 /usr/local/bin/kubectl; fi 2>/dev/null
54+
if (( "$SERVER_VERSION" >= "34" )); then cp -f /usr/local/bin/kubectl1.34 /usr/local/bin/kubectl; fi 2>/dev/null
7755
[ ! -f "${deployment_file}" ] && echo "Couldn't find $deployment_file file at $(pwd)" && exit 1;
7856
fi
7957

8058
# Simple testing logic for making sure override versions are set
8159
if [[ -n "${KUBE_CTL_TEST_VERSION}" ]]; then
82-
KUBE_CTL_VERSION=`kubectl version --client --short`
60+
KUBE_CTL_VERSION=`kubectl version --client`
8361
echo "Testing kubectl version is set..."
8462
if [[ "${KUBE_CTL_VERSION}" == *"${KUBE_CTL_TEST_VERSION}"* ]]; then
8563
echo "Version correctly set"

service.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
version: 16.2.9
1+
version: 17.0.0

0 commit comments

Comments
 (0)