Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Use ubi-micro instead of ubi-minimal to reduce the threat surface attack area. #4228

Merged
merged 1 commit into from
Jan 30, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
1 change: 1 addition & 0 deletions anax-in-container/Dockerfile.alpine.amd64
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ ARG DOCKER_VER=19.03.8
# install docker cli
# make required directories
RUN microdnf update -y --nodocs && microdnf clean all && microdnf install --nodocs -y shadow-utils \
&& microdnf install -y curl \
&& microdnf install --nodocs -y openssl ca-certificates \
&& microdnf install -y wget iptables vim-minimal procps tar \
&& wget -O jq https://github.com/stedolan/jq/releases/download/jq-1.6/jq-linux64 \
Expand Down
18 changes: 17 additions & 1 deletion anax-in-container/Dockerfile.ubi.amd64
Original file line number Diff line number Diff line change
@@ -1,9 +1,24 @@
FROM registry.access.redhat.com/ubi9/ubi-minimal:9.2
# Building microdnf from ubi9-minimal base
FROM registry.access.redhat.com/ubi9-minimal:latest AS base

#---------------------------------------------------------------
FROM registry.access.redhat.com/ubi9-micro:latest AS runtime

LABEL vendor="IBM"
LABEL summary="The agent in a general purpose container."
LABEL description="A container which holds the edge node agent, to be used in environments where there is no operating system package that can install the agent natively."

# Copy microdnf necessary files from the base stage
COPY --from=base /usr/bin/microdnf /usr/bin/
COPY --from=base /usr/bin/gpg /usr/bin/
COPY --from=base /usr/bin/gpg2 /usr/bin/
COPY --from=base /lib64 /lib64/
COPY --from=base /usr/lib64 /usr/lib64/
COPY --from=base /usr/lib/rpm /usr/lib/rpm/
COPY --from=base /etc/dnf /etc/dnf/
COPY --from=base /etc/rpm /etc/rpm/
COPY --from=base /etc/pki /etc/pki/

ARG DOCKER_VER=26.1.4

# The anax binary (secrets manager code) shells out to groupadd, groupdel (from shadow-utils), pkill (from procps-ng)
Expand All @@ -15,6 +30,7 @@ ARG REQUIRED_RPMS="openssl ca-certificates shadow-utils jq iptables vim-minimal
RUN microdnf update -y --nodocs --setopt=install_weak_deps=0 --disableplugin=subscription-manager \
&& microdnf install -y --nodocs --setopt=install_weak_deps=0 --disableplugin=subscription-manager ${REQUIRED_RPMS} \
&& microdnf upgrade -y --nodocs --setopt=install_weak_deps=0 --disableplugin=subscription-manager krb5-libs \
&& microdnf install -y curl \
&& curl -4fsSLO https://download.docker.com/linux/static/stable/x86_64/docker-${DOCKER_VER}.tgz \
&& tar xzvf docker-${DOCKER_VER}.tgz --strip 1 -C /usr/bin docker/docker \
&& rm docker-${DOCKER_VER}.tgz \
Expand Down
18 changes: 17 additions & 1 deletion anax-in-container/Dockerfile.ubi.arm64
Original file line number Diff line number Diff line change
@@ -1,9 +1,24 @@
FROM registry.access.redhat.com/ubi9/ubi-minimal:9.2
# Building microdnf from ubi9-minimal base
FROM registry.access.redhat.com/ubi9-minimal:latest AS base

#---------------------------------------------------------------
FROM registry.access.redhat.com/ubi9-micro:latest AS runtime

LABEL vendor="IBM"
LABEL summary="The agent in a general purpose container."
LABEL description="A container which holds the edge node agent, to be used in environments where there is no operating system package that can install the agent natively."

# Copy microdnf necessary files from the base stage
COPY --from=base /usr/bin/microdnf /usr/bin/
COPY --from=base /usr/bin/gpg /usr/bin/
COPY --from=base /usr/bin/gpg2 /usr/bin/
COPY --from=base /lib64 /lib64/
COPY --from=base /usr/lib64 /usr/lib64/
COPY --from=base /usr/lib/rpm /usr/lib/rpm/
COPY --from=base /etc/dnf /etc/dnf/
COPY --from=base /etc/rpm /etc/rpm/
COPY --from=base /etc/pki /etc/pki/

ARG DOCKER_VER=24.0.9

# The anax binary (secrets manager code) shells out to groupadd, groupdel (from shadow-utils), pkill (from procps-ng)
Expand All @@ -14,6 +29,7 @@ ARG DOCKER_VER=24.0.9
ARG REQUIRED_RPMS="openssl ca-certificates shadow-utils jq iptables vim-minimal psmisc procps-ng tar gzip"
RUN microdnf update -y --nodocs --setopt=install_weak_deps=0 --disableplugin=subscription-manager \
&& microdnf install -y --nodocs --setopt=install_weak_deps=0 --disableplugin=subscription-manager ${REQUIRED_RPMS} \
&& microdnf install -y curl \
&& curl -4fsSLO https://download.docker.com/linux/static/stable/aarch64/docker-${DOCKER_VER}.tgz \
&& tar xzvf docker-${DOCKER_VER}.tgz --strip 1 -C /usr/bin docker/docker \
&& rm docker-${DOCKER_VER}.tgz \
Expand Down
18 changes: 17 additions & 1 deletion anax-in-container/Dockerfile.ubi.ppc64el
Original file line number Diff line number Diff line change
@@ -1,9 +1,24 @@
FROM registry.access.redhat.com/ubi9/ubi-minimal:9.2
# Building microdnf from ubi9-minimal base
FROM registry.access.redhat.com/ubi9-minimal:latest AS base

#---------------------------------------------------------------
FROM registry.access.redhat.com/ubi9-micro:latest AS runtime

LABEL vendor="IBM"
LABEL summary="The agent in a general purpose container."
LABEL description="A container which holds the edge node agent, to be used in environments where there is no operating system package that can install the agent natively."

# Copy microdnf necessary files from the base stage
COPY --from=base /usr/bin/microdnf /usr/bin/
COPY --from=base /usr/bin/gpg /usr/bin/
COPY --from=base /usr/bin/gpg2 /usr/bin/
COPY --from=base /lib64 /lib64/
COPY --from=base /usr/lib64 /usr/lib64/
COPY --from=base /usr/lib/rpm /usr/lib/rpm/
COPY --from=base /etc/dnf /etc/dnf/
COPY --from=base /etc/rpm /etc/rpm/
COPY --from=base /etc/pki /etc/pki/

ARG DOCKER_VER=18.06.3-ce

# add EPEL repo with jq pkg and all deps
Expand All @@ -19,6 +34,7 @@ RUN microdnf clean all \
&& rm -rf /var/cache/dnf /var/cache/PackageKit \
&& microdnf update -y --nodocs --nobest --setopt=install_weak_deps=0 --disableplugin=subscription-manager \
&& microdnf install -y --nodocs --setopt=install_weak_deps=0 --disableplugin=subscription-manager ${REQUIRED_RPMS} \
&& microdnf install -y curl \
&& curl -4fsSLO https://download.docker.com/linux/static/stable/ppc64le/docker-${DOCKER_VER}.tgz \
&& tar xzvf docker-${DOCKER_VER}.tgz --strip 1 -C /usr/bin docker/docker \
&& rm docker-${DOCKER_VER}.tgz \
Expand Down
18 changes: 17 additions & 1 deletion anax-in-container/Dockerfile.ubi.s390x
Original file line number Diff line number Diff line change
@@ -1,9 +1,24 @@
FROM registry.access.redhat.com/ubi9/ubi-minimal:9.2
# Building microdnf from ubi9-minimal base
FROM registry.access.redhat.com/ubi9-minimal:latest AS base

#---------------------------------------------------------------
FROM registry.access.redhat.com/ubi9-micro:latest AS runtime

LABEL vendor="IBM"
LABEL summary="The agent in a general purpose container."
LABEL description="A container which holds the edge node agent, to be used in environments where there is no operating system package that can install the agent natively."

# Copy microdnf necessary files from the base stage
COPY --from=base /usr/bin/microdnf /usr/bin/
COPY --from=base /usr/bin/gpg /usr/bin/
COPY --from=base /usr/bin/gpg2 /usr/bin/
COPY --from=base /lib64 /lib64/
COPY --from=base /usr/lib64 /usr/lib64/
COPY --from=base /usr/lib/rpm /usr/lib/rpm/
COPY --from=base /etc/dnf /etc/dnf/
COPY --from=base /etc/rpm /etc/rpm/
COPY --from=base /etc/pki /etc/pki/

ARG DOCKER_VER=18.06.3-ce

# The anax binary (secrets manager code) shells out to groupadd, groupdel (from shadow-utils), pkill (from procps-ng)
Expand All @@ -14,6 +29,7 @@ ARG DOCKER_VER=18.06.3-ce
ARG REQUIRED_RPMS="openssl ca-certificates shadow-utils jq iptables vim-minimal psmisc procps-ng tar gzip"
RUN microdnf update -y --nodocs --setopt=install_weak_deps=0 --disableplugin=subscription-manager \
&& microdnf install -y --nodocs --setopt=install_weak_deps=0 --disableplugin=subscription-manager ${REQUIRED_RPMS} \
&& microdnf install -y curl \
&& curl -4fsSLO https://download.docker.com/linux/static/stable/s390x/docker-${DOCKER_VER}.tgz \
&& tar xzvf docker-${DOCKER_VER}.tgz --strip 1 -C /usr/bin docker/docker \
&& rm docker-${DOCKER_VER}.tgz \
Expand Down
18 changes: 17 additions & 1 deletion anax-in-container/Dockerfile_agbot.ubi
Original file line number Diff line number Diff line change
@@ -1,9 +1,24 @@
FROM registry.access.redhat.com/ubi9/ubi-minimal:9.2
# Building microdnf from ubi9-minimal base
FROM registry.access.redhat.com/ubi9-minimal:latest AS base

#---------------------------------------------------------------
FROM registry.access.redhat.com/ubi9-micro:latest AS runtime

LABEL vendor="IBM"
LABEL summary="The deployment engine."
LABEL description="The Agbot scans all the edge nodes in the system initiating deployment of services and model to all eligible nodes."

# Copy microdnf necessary files from the base stage
COPY --from=base /usr/bin/microdnf /usr/bin/
COPY --from=base /usr/bin/gpg /usr/bin/
COPY --from=base /usr/bin/gpg2 /usr/bin/
COPY --from=base /lib64 /lib64/
COPY --from=base /usr/lib64 /usr/lib64/
COPY --from=base /usr/lib/rpm /usr/lib/rpm/
COPY --from=base /etc/dnf /etc/dnf/
COPY --from=base /etc/rpm /etc/rpm/
COPY --from=base /etc/pki /etc/pki/

# The anax binary (secrets manager code) shells out to groupadd, groupdel (from shadow-utils), pkill (from procps-ng)
# The anax.service calls jq (from jq) and killall (from psmisc)
# anax does not use iptables directly but the github.com/coreos/go-iptables/iptables dependency needs the directory structure
Expand All @@ -12,6 +27,7 @@ LABEL description="The Agbot scans all the edge nodes in the system initiating d
# Create required directories
ARG REQUIRED_RPMS="openssl ca-certificates shadow-utils jq iptables vim-minimal psmisc procps-ng gettext"
RUN microdnf update -y --nodocs --setopt=install_weak_deps=0 --disableplugin=subscription-manager \
&& microdnf install -y curl \
&& microdnf install -y --nodocs --setopt=install_weak_deps=0 --disableplugin=subscription-manager ${REQUIRED_RPMS} \
&& microdnf upgrade -y --nodocs --setopt=install_weak_deps=0 --disableplugin=subscription-manager krb5-libs \
&& microdnf clean all --disableplugin=subscription-manager \
Expand Down
18 changes: 17 additions & 1 deletion anax-in-k8s/Dockerfile.ubi.amd64
Original file line number Diff line number Diff line change
@@ -1,15 +1,31 @@
FROM registry.access.redhat.com/ubi9/ubi-minimal:9.2
# Building microdnf from ubi9-minimal base
FROM registry.access.redhat.com/ubi9-minimal:latest AS base

#---------------------------------------------------------------
FROM registry.access.redhat.com/ubi9-micro:latest AS runtime

LABEL vendor="IBM"
LABEL summary="The agent for edge clusters."
LABEL description="The agent in a container that is used solely for the purpose of running the agent in a kubernetes edge cluster."

# Copy microdnf necessary files from the base stage
COPY --from=base /usr/bin/microdnf /usr/bin/
COPY --from=base /usr/bin/gpg /usr/bin/
COPY --from=base /usr/bin/gpg2 /usr/bin/
COPY --from=base /lib64 /lib64/
COPY --from=base /usr/lib64 /usr/lib64/
COPY --from=base /usr/lib/rpm /usr/lib/rpm/
COPY --from=base /etc/dnf /etc/dnf/
COPY --from=base /etc/rpm /etc/rpm/
COPY --from=base /etc/pki /etc/pki/

# The anax binary (secrets manager code) shells out to groupadd, groupdel (from shadow-utils), pkill (from procps-ng)
# The anax.service calls jq (from jq) and killall (from psmisc)
# anax does not use iptables directly but the github.com/coreos/go-iptables/iptables dependency needs the directory structure
# Create required directories
ARG REQUIRED_RPMS="openssl ca-certificates shadow-utils jq iptables vim-minimal psmisc procps-ng tar"
RUN microdnf update -y --nodocs --setopt=install_weak_deps=0 --disableplugin=subscription-manager \
&& microdnf install -y curl \
&& microdnf install -y --nodocs --setopt=install_weak_deps=0 --disableplugin=subscription-manager ${REQUIRED_RPMS} \
&& microdnf clean all --disableplugin=subscription-manager \
&& rm -rf /mnt/rootfs/var/cache/* /mnt/rootfs/var/log/dnf* /mnt/rootfs/var/log/yum.* \
Expand Down
18 changes: 17 additions & 1 deletion anax-in-k8s/Dockerfile.ubi.arm64
Original file line number Diff line number Diff line change
@@ -1,15 +1,31 @@
FROM registry.access.redhat.com/ubi9/ubi-minimal:9.2
# Building microdnf from ubi9-minimal base
FROM registry.access.redhat.com/ubi9-minimal:latest AS base

#---------------------------------------------------------------
FROM registry.access.redhat.com/ubi9-micro:latest AS runtime

LABEL vendor="IBM"
LABEL summary="The agent for edge clusters."
LABEL description="The agent in a container that is used solely for the purpose of running the agent in a kubernetes edge cluster."

# Copy microdnf necessary files from the base stage
COPY --from=base /usr/bin/microdnf /usr/bin/
COPY --from=base /usr/bin/gpg /usr/bin/
COPY --from=base /usr/bin/gpg2 /usr/bin/
COPY --from=base /lib64 /lib64/
COPY --from=base /usr/lib64 /usr/lib64/
COPY --from=base /usr/lib/rpm /usr/lib/rpm/
COPY --from=base /etc/dnf /etc/dnf/
COPY --from=base /etc/rpm /etc/rpm/
COPY --from=base /etc/pki /etc/pki/

# The anax binary (secrets manager code) shells out to groupadd, groupdel (from shadow-utils), pkill (from procps-ng)
# The anax.service calls jq (from jq) and killall (from psmisc)
# anax does not use iptables directly but the github.com/coreos/go-iptables/iptables dependency needs the directory structure
# Create required directories
ARG REQUIRED_RPMS="openssl ca-certificates shadow-utils jq iptables vim-minimal psmisc procps-ng tar"
RUN microdnf update -y --nodocs --setopt=install_weak_deps=0 --disableplugin=subscription-manager \
&& microdnf install -y curl \
&& microdnf install -y --nodocs --setopt=install_weak_deps=0 --disableplugin=subscription-manager ${REQUIRED_RPMS} \
&& microdnf clean all --disableplugin=subscription-manager \
&& rm -rf /mnt/rootfs/var/cache/* /mnt/rootfs/var/log/dnf* /mnt/rootfs/var/log/yum.* \
Expand Down
18 changes: 17 additions & 1 deletion anax-in-k8s/Dockerfile.ubi.auto-upgrade-cron.amd64
Original file line number Diff line number Diff line change
@@ -1,9 +1,24 @@
FROM registry.access.redhat.com/ubi9/ubi-minimal:9.2
# Building microdnf from ubi9-minimal base
FROM registry.access.redhat.com/ubi9-minimal:latest AS base

#---------------------------------------------------------------
FROM registry.access.redhat.com/ubi9-micro:latest AS runtime

LABEL vendor="IBM"
LABEL summary="The agent auto upgrade cron job for edge clusters."
LABEL description=""

# Copy microdnf necessary files from the base stage
COPY --from=base /usr/bin/microdnf /usr/bin/
COPY --from=base /usr/bin/gpg /usr/bin/
COPY --from=base /usr/bin/gpg2 /usr/bin/
COPY --from=base /lib64 /lib64/
COPY --from=base /usr/lib64 /usr/lib64/
COPY --from=base /usr/lib/rpm /usr/lib/rpm/
COPY --from=base /etc/dnf /etc/dnf/
COPY --from=base /etc/rpm /etc/rpm/
COPY --from=base /etc/pki /etc/pki/

# The build calls adduser (from shadow-utils)
# The auto-upgrade-cronjob.sh calls jq (from jq)
# Download kubectl
Expand All @@ -13,6 +28,7 @@ ARG REQUIRED_RPMS="shadow-utils jq"
RUN microdnf update -y --nodocs --setopt=install_weak_deps=0 --disableplugin=subscription-manager \
&& microdnf install -y --nodocs --setopt=install_weak_deps=0 --disableplugin=subscription-manager ${REQUIRED_RPMS} \
&& microdnf clean all --disableplugin=subscription-manager \
&& microdnf install -y curl \
&& rm -rf /mnt/rootfs/var/cache/* /mnt/rootfs/var/log/dnf* /mnt/rootfs/var/log/yum.* \
&& curl -4LO https://storage.googleapis.com/kubernetes-release/release/`curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt`/bin/linux/amd64/kubectl \
&& chmod +x ./kubectl \
Expand Down
18 changes: 17 additions & 1 deletion anax-in-k8s/Dockerfile.ubi.auto-upgrade-cron.arm64
Original file line number Diff line number Diff line change
@@ -1,9 +1,24 @@
FROM registry.access.redhat.com/ubi9/ubi-minimal:9.2
# Building microdnf from ubi9-minimal base
FROM registry.access.redhat.com/ubi9-minimal:latest AS base

#---------------------------------------------------------------
FROM registry.access.redhat.com/ubi9-micro:latest AS runtime

LABEL vendor="IBM"
LABEL summary="The agent auto upgrade cron job for edge clusters."
LABEL description=""

# Copy microdnf necessary files from the base stage
COPY --from=base /usr/bin/microdnf /usr/bin/
COPY --from=base /usr/bin/gpg /usr/bin/
COPY --from=base /usr/bin/gpg2 /usr/bin/
COPY --from=base /lib64 /lib64/
COPY --from=base /usr/lib64 /usr/lib64/
COPY --from=base /usr/lib/rpm /usr/lib/rpm/
COPY --from=base /etc/dnf /etc/dnf/
COPY --from=base /etc/rpm /etc/rpm/
COPY --from=base /etc/pki /etc/pki/

# The build calls adduser (from shadow-utils)
# The auto-upgrade-cronjob.sh calls jq (from jq)
# Download kubectl
Expand All @@ -13,6 +28,7 @@ ARG REQUIRED_RPMS="shadow-utils jq"
RUN microdnf update -y --nodocs --setopt=install_weak_deps=0 --disableplugin=subscription-manager \
&& microdnf install -y --nodocs --setopt=install_weak_deps=0 --disableplugin=subscription-manager ${REQUIRED_RPMS} \
&& microdnf clean all --disableplugin=subscription-manager \
&& microdnf install -y curl \
&& rm -rf /mnt/rootfs/var/cache/* /mnt/rootfs/var/log/dnf* /mnt/rootfs/var/log/yum.* \
&& curl -4LO https://storage.googleapis.com/kubernetes-release/release/`curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt`/bin/linux/arm64/kubectl \
&& chmod +x ./kubectl \
Expand Down
18 changes: 17 additions & 1 deletion anax-in-k8s/Dockerfile.ubi.auto-upgrade-cron.ppc64el
Original file line number Diff line number Diff line change
@@ -1,9 +1,24 @@
FROM registry.access.redhat.com/ubi9/ubi-minimal:9.2
# Building microdnf from ubi9-minimal base
FROM registry.access.redhat.com/ubi9-minimal:latest AS base

#---------------------------------------------------------------
FROM registry.access.redhat.com/ubi9-micro:latest AS runtime

LABEL vendor="IBM"
LABEL summary="The agent auto upgrade cron job for edge clusters."
LABEL description=""

# Copy microdnf necessary files from the base stage
COPY --from=base /usr/bin/microdnf /usr/bin/
COPY --from=base /usr/bin/gpg /usr/bin/
COPY --from=base /usr/bin/gpg2 /usr/bin/
COPY --from=base /lib64 /lib64/
COPY --from=base /usr/lib64 /usr/lib64/
COPY --from=base /usr/lib/rpm /usr/lib/rpm/
COPY --from=base /etc/dnf /etc/dnf/
COPY --from=base /etc/rpm /etc/rpm/
COPY --from=base /etc/pki /etc/pki/

# add EPEL repo with jq pkg and all deps
COPY EPEL.repo /etc/yum.repos.d

Expand All @@ -18,6 +33,7 @@ RUN microdnf clean all \
&& microdnf update -y --nodocs --nobest --setopt=install_weak_deps=0 --disableplugin=subscription-manager \
&& microdnf install -y --nodocs --setopt=install_weak_deps=0 --disableplugin=subscription-manager ${REQUIRED_RPMS} \
&& microdnf clean all --disableplugin=subscription-manager \
&& microdnf install -y curl \
&& rm -rf /mnt/rootfs/var/cache/* /mnt/rootfs/var/log/dnf* /mnt/rootfs/var/log/yum.* \
&& curl -4LO https://storage.googleapis.com/kubernetes-release/release/`curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt`/bin/linux/ppc64le/kubectl \
&& chmod +x ./kubectl \
Expand Down
18 changes: 17 additions & 1 deletion anax-in-k8s/Dockerfile.ubi.auto-upgrade-cron.s390x
Original file line number Diff line number Diff line change
@@ -1,9 +1,24 @@
FROM registry.access.redhat.com/ubi9/ubi-minimal:9.2
# Building microdnf from ubi9-minimal base
FROM registry.access.redhat.com/ubi9-minimal:latest AS base

#---------------------------------------------------------------
FROM registry.access.redhat.com/ubi9-micro:latest AS runtime

LABEL vendor="IBM"
LABEL summary="The agent auto upgrade cron job for edge clusters."
LABEL description=""

# Copy microdnf necessary files from the base stage
COPY --from=base /usr/bin/microdnf /usr/bin/
COPY --from=base /usr/bin/gpg /usr/bin/
COPY --from=base /usr/bin/gpg2 /usr/bin/
COPY --from=base /lib64 /lib64/
COPY --from=base /usr/lib64 /usr/lib64/
COPY --from=base /usr/lib/rpm /usr/lib/rpm/
COPY --from=base /etc/dnf /etc/dnf/
COPY --from=base /etc/rpm /etc/rpm/
COPY --from=base /etc/pki /etc/pki/

# add EPEL repo with jq pkg and all deps
COPY EPEL.repo /etc/yum.repos.d

Expand All @@ -16,6 +31,7 @@ ARG REQUIRED_RPMS="shadow-utils jq"
RUN microdnf update -y --nodocs --setopt=install_weak_deps=0 --disableplugin=subscription-manager \
&& microdnf install -y --nodocs --setopt=install_weak_deps=0 --disableplugin=subscription-manager ${REQUIRED_RPMS} \
&& microdnf clean all --disableplugin=subscription-manager \
&& microdnf install -y curl \
&& rm -rf /mnt/rootfs/var/cache/* /mnt/rootfs/var/log/dnf* /mnt/rootfs/var/log/yum.* \
&& curl -4LO https://storage.googleapis.com/kubernetes-release/release/`curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt`/bin/linux/s390x/kubectl \
&& chmod +x ./kubectl \
Expand Down
Loading