diff --git a/.github/workflows/nightly.yml b/.github/workflows/nightly.yml new file mode 100644 index 000000000..4d9429bf5 --- /dev/null +++ b/.github/workflows/nightly.yml @@ -0,0 +1,59 @@ +name: Nightly +on: + schedule: + - cron: '0 0 * * *' # Every day at midnight + pull_request: + paths: + - '.github/workflows/nightly.yml' + +# This nightly test helps us to track changes on containerd on daily basis +# and enable us to quickly fix snapshotter when some of recent changes on +# containerd cause incompatibility with this snapshotter. +# +# TODO1(ktock): Output binaries if needed. +# TODO2(ktock): Ideally, this test should be invoked in containerd/containerd's CI on each PR. +# This will make sure that each commit merged into containerd/containerd safely +# works with stargz snapshotter. + +env: + DOCKER_BUILDKIT: 1 + DOCKER_BUILD_ARGS: --build-arg=CONTAINERD_VERSION=master # do tests with the latest containerd + +jobs: + integration: + runs-on: ubuntu-20.04 + name: Integration + steps: + - name: Install htpasswd for setting up private registry + run: sudo apt-get update -y && sudo apt-get --no-install-recommends install -y apache2-utils + - uses: actions/checkout@v2 + - name: Run integration test + run: make integration + + test-optimize: + runs-on: ubuntu-20.04 + name: Optimize + steps: + - name: Install htpasswd for setting up private registry + run: sudo apt-get update -y && sudo apt-get --no-install-recommends install -y apache2-utils + - uses: actions/checkout@v2 + - name: Run test for optimize subcommand of ctr-remote + run: make test-optimize + + test-pullsecrets: + runs-on: ubuntu-20.04 + name: PullSecrets + steps: + - name: Install htpasswd for setting up private registry + run: sudo apt-get update -y && sudo apt-get --no-install-recommends install -y apache2-utils + - uses: actions/checkout@v2 + - name: Run test for pulling image from private registry on Kubernetes + run: make test-pullsecrets + + test-cri: + runs-on: ubuntu-20.04 + name: CRIValidation + steps: + - uses: actions/checkout@v2 + - name: Varidate the runtime through CRI + run: make test-cri diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index cc6cdb55f..50483b7ce 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -6,21 +6,23 @@ env: jobs: build: - runs-on: ubuntu-18.04 + runs-on: ubuntu-20.04 name: Build steps: - uses: actions/checkout@v2 - name: Build all run: ./script/util/make.sh build -j2 + test: - runs-on: ubuntu-18.04 + runs-on: ubuntu-20.04 name: Test steps: - uses: actions/checkout@v2 - name: Test all run: ./script/util/make.sh test-all -j2 + linter: - runs-on: ubuntu-18.04 + runs-on: ubuntu-20.04 name: Linter steps: - uses: actions/checkout@v2 @@ -28,39 +30,67 @@ jobs: fetch-depth: '0' - name: Run Linter run: ./script/util/make.sh install-check-tools check + integration: - runs-on: ubuntu-18.04 + runs-on: ubuntu-20.04 name: Integration + strategy: + fail-fast: false + matrix: + buildargs: ["", "--build-arg=CONTAINERD_VERSION=master"] # released version & master version steps: - name: Install htpasswd for setting up private registry run: sudo apt-get update -y && sudo apt-get --no-install-recommends install -y apache2-utils - uses: actions/checkout@v2 - name: Run integration test + env: + DOCKER_BUILD_ARGS: ${{ matrix.buildargs }} run: make integration + test-optimize: - runs-on: ubuntu-18.04 + runs-on: ubuntu-20.04 name: Optimize + strategy: + fail-fast: false + matrix: + buildargs: ["", "--build-arg=CONTAINERD_VERSION=master"] # released version & master version steps: - name: Install htpasswd for setting up private registry run: sudo apt-get update -y && sudo apt-get --no-install-recommends install -y apache2-utils - uses: actions/checkout@v2 - name: Run test for optimize subcommand of ctr-remote + env: + DOCKER_BUILD_ARGS: ${{ matrix.buildargs }} run: make test-optimize + test-pullsecrets: - runs-on: ubuntu-18.04 + runs-on: ubuntu-20.04 name: PullSecrets + strategy: + fail-fast: false + matrix: + buildargs: ["", "--build-arg=CONTAINERD_VERSION=master"] # released version & master version steps: - name: Install htpasswd for setting up private registry run: sudo apt-get update -y && sudo apt-get --no-install-recommends install -y apache2-utils - uses: actions/checkout@v2 - name: Run test for pulling image from private registry on Kubernetes + env: + DOCKER_BUILD_ARGS: ${{ matrix.buildargs }} run: make test-pullsecrets + test-cri: - runs-on: ubuntu-18.04 + runs-on: ubuntu-20.04 name: CRIValidation + strategy: + fail-fast: false + matrix: + buildargs: ["", "--build-arg=CONTAINERD_VERSION=master"] # released version & master version steps: - uses: actions/checkout@v2 - name: Varidate the runtime through CRI + env: + DOCKER_BUILD_ARGS: ${{ matrix.buildargs }} run: make test-cri # @@ -71,7 +101,7 @@ jobs: project: name: Project Checks - runs-on: ubuntu-18.04 + runs-on: ubuntu-20.04 timeout-minutes: 5 steps: - uses: actions/checkout@v2 diff --git a/Dockerfile b/Dockerfile index 4f76fdbd3..c0fafe6a8 100644 --- a/Dockerfile +++ b/Dockerfile @@ -56,11 +56,12 @@ COPY --from=snapshotter-dev /out/* / # `docker-ce-cli` is used only for users to `docker login` to registries (e.g. DockerHub) # with configuring ~/.docker/config.json FROM golang-base AS containerd-base +ARG TARGETARCH RUN apt-get update -y && apt-get --no-install-recommends install -y fuse \ apt-transport-https gnupg2 software-properties-common && \ curl -fsSL https://download.docker.com/linux/debian/gpg | apt-key add - && \ add-apt-repository \ - "deb [arch=amd64] https://download.docker.com/linux/debian $(lsb_release -cs) stable" && \ + "deb [arch=${TARGETARCH:-amd64}] https://download.docker.com/linux/debian $(lsb_release -cs) stable" && \ apt-get update -y && apt-get --no-install-recommends install -y docker-ce-cli COPY --from=containerd-dev /out/bin/containerd /out/bin/containerd-shim-runc-v2 /usr/local/bin/ COPY --from=runc-dev /out/sbin/* /usr/local/sbin/ diff --git a/script/benchmark/config/config.cni.conflist b/script/benchmark/config/config.cni.conflist deleted file mode 100644 index a5b6c1056..000000000 --- a/script/benchmark/config/config.cni.conflist +++ /dev/null @@ -1,19 +0,0 @@ -{ - "cniVersion": "0.4.0", - "name": "demo", - "plugins" : [{ - "type": "bridge", - "bridge": "optimizer0", - "isDefaultGateway": true, - "forceAddress": false, - "ipMasq": true, - "hairpinMode": true, - "ipam": { - "type": "host-local", - "subnet": "10.10.0.0/16" - } - }, - { - "type": "loopback" - }] -} diff --git a/script/benchmark/test.sh b/script/benchmark/test.sh index fceac3f71..6a2c25892 100755 --- a/script/benchmark/test.sh +++ b/script/benchmark/test.sh @@ -23,12 +23,11 @@ BENCHMARKING_BASE_IMAGE_NAME="benchmark-image-base" BENCHMARKING_NODE_IMAGE_NAME="benchmark-image-test" BENCHMARKING_NODE=hello-bench BENCHMARKING_CONTAINER=hello-bench-container -BENCHMARKING_CNI_PLUGIN_URL="https://github.com/containernetworking/plugins/releases/download/v0.8.7/cni-plugins-linux-amd64-v0.8.7.tgz" if [ "${BENCHMARKING_NO_RECREATE:-}" != "true" ] ; then echo "Preparing node image..." - docker build -t "${BENCHMARKING_BASE_IMAGE_NAME}" --target snapshotter-base \ - ${DOCKER_BUILD_ARGS:-} "${REPO}" + docker build ${DOCKER_BUILD_ARGS:-} -t "${BENCHMARKING_BASE_IMAGE_NAME}" \ + --target snapshotter-base "${REPO}" fi DOCKER_COMPOSE_YAML=$(mktemp) @@ -47,9 +46,7 @@ cat < "${TMP_CONTEXT}/Dockerfile" FROM ${BENCHMARKING_BASE_IMAGE_NAME} RUN apt-get update -y && \ - apt-get --no-install-recommends install -y python jq iptables && \ - update-alternatives --set iptables /usr/sbin/iptables-legacy && \ - mkdir -p /opt/cni/bin && curl -Ls "${BENCHMARKING_CNI_PLUGIN_URL}" | tar xzv -C /opt/cni/bin && \ + apt-get --no-install-recommends install -y python jq && \ git clone https://github.com/google/go-containerregistry \ \${GOPATH}/src/github.com/google/go-containerregistry && \ cd \${GOPATH}/src/github.com/google/go-containerregistry && \ @@ -58,7 +55,6 @@ RUN apt-get update -y && \ COPY ./config/config.containerd.toml /etc/containerd/config.toml COPY ./config/config.stargz.toml /etc/containerd-stargz-grpc/config.toml -COPY ./config/config.cni.conflist /etc/cni/net.d/optimizer.conflist ENV CONTAINERD_SNAPSHOTTER="" diff --git a/script/cri/const.sh b/script/cri/const.sh index bdc0c8aba..46ce3f89e 100644 --- a/script/cri/const.sh +++ b/script/cri/const.sh @@ -18,3 +18,4 @@ set -euo pipefail NODE_BASE_IMAGE_NAME="cri-image-base" NODE_TEST_IMAGE_NAME="cri-image-test" +PREPARE_NODE_IMAGE="cri-prepare-image" diff --git a/script/cri/mirror.sh b/script/cri/mirror.sh index 309bb4451..cc602daf8 100644 --- a/script/cri/mirror.sh +++ b/script/cri/mirror.sh @@ -16,8 +16,6 @@ set -euo pipefail -CONTAINERD_VERSION="1.4.3" -RUNC_VERSION="v1.0.0-rc92" if [ "${TOOLS_DIR}" == "" ] ; then echo "tools dir must be provided" exit 1 @@ -46,18 +44,13 @@ function retry { fi } -apt-get update -y && apt-get --no-install-recommends install -y wget -wget https://github.com/opencontainers/runc/releases/download/"${RUNC_VERSION}"/runc.amd64 -O /bin/runc -chmod 755 /bin/runc -wget https://github.com/containerd/containerd/releases/download/v"${CONTAINERD_VERSION}"/containerd-"${CONTAINERD_VERSION}"-linux-amd64.tar.gz -tar zxf containerd-1.4.3-linux-amd64.tar.gz -C / -containerd & -retry ctr version - cd "${SS_REPO}" PREFIX=/out/ make ctr-remote mv /out/ctr-remote /bin/ctr-remote +containerd & +retry ctr-remote version + HOST=$(cat "${HOST_FILE}") cat "${LIST_FILE}" | sort | uniq | while read IMAGE ; do MIRROR_URL="${HOST}"$(echo "${IMAGE}" | sed -E 's/^[^/]*//g' | sed -E 's/@.*//g') diff --git a/script/cri/test-legacy.sh b/script/cri/test-legacy.sh index 557ecae39..7045cdd8b 100755 --- a/script/cri/test-legacy.sh +++ b/script/cri/test-legacy.sh @@ -52,7 +52,13 @@ done # If container started successfully, varidate the runtime through CRI if [ "${FAIL}" == "" ] ; then - if ! docker exec -i "${TEST_NODE_ID}" /go/bin/critest --runtime-endpoint=${CONTAINERD_SOCK} ; then + if ! ( + echo "===== VERSION INFORMATION =====" && \ + docker exec "${TEST_NODE_ID}" runc --version && \ + docker exec "${TEST_NODE_ID}" containerd --version && \ + echo "===============================" && \ + docker exec -i "${TEST_NODE_ID}" /go/bin/critest --runtime-endpoint=${CONTAINERD_SOCK} + ) ; then FAIL=true fi fi diff --git a/script/cri/test-stargz.sh b/script/cri/test-stargz.sh index 75d3f4220..0d0c1bd98 100755 --- a/script/cri/test-stargz.sh +++ b/script/cri/test-stargz.sh @@ -65,7 +65,7 @@ services: - "critest-containerd-data:/var/lib/containerd" - "critest-containerd-stargz-grpc-data:/var/lib/containerd-stargz-grpc" image-prepare: - image: golang:1.15-buster + image: "${PREPARE_NODE_IMAGE}" container_name: "${PREPARE_NODE_NAME}" privileged: true entrypoint: @@ -168,6 +168,10 @@ if [ "${CONNECTED}" != "true" ] ; then echo "Failed to connect to containerd" exit 1 fi +echo "===== VERSION INFORMATION =====" +docker exec "${TEST_NODE_NAME}" runc --version +docker exec "${TEST_NODE_NAME}" containerd --version +echo "===============================" docker exec "${TEST_NODE_NAME}" /go/bin/critest --runtime-endpoint=${CONTAINERD_SOCK} # Check if stargz snapshotter is working diff --git a/script/cri/test.sh b/script/cri/test.sh index f128a7ca4..84822ee83 100755 --- a/script/cri/test.sh +++ b/script/cri/test.sh @@ -23,7 +23,8 @@ source "${CONTEXT}/const.sh" if [ "${CRI_NO_RECREATE:-}" != "true" ] ; then echo "Preparing node image..." - docker build -t "${NODE_BASE_IMAGE_NAME}" "${REPO}" + docker build ${DOCKER_BUILD_ARGS:-} -t "${NODE_BASE_IMAGE_NAME}" "${REPO}" + docker build ${DOCKER_BUILD_ARGS:-} -t "${PREPARE_NODE_IMAGE}" --target containerd-base "${REPO}" fi TMP_CONTEXT=$(mktemp -d) @@ -38,12 +39,16 @@ trap 'cleanup "$?"' EXIT SIGHUP SIGINT SIGQUIT SIGTERM # Prepare the testing node cat < "${TMP_CONTEXT}/Dockerfile" +# Legacy builder that doesn't support TARGETARCH should set this explicitly using --build-arg. +# If TARGETARCH isn't supported by the builder, the default value is "amd64". + FROM ${NODE_BASE_IMAGE_NAME} +ARG TARGETARCH ENV PATH=$PATH:/usr/local/go/bin ENV GOPATH=/go RUN apt install -y --no-install-recommends git make gcc build-essential jq && \ - curl https://dl.google.com/go/go1.15.6.linux-amd64.tar.gz \ + curl https://dl.google.com/go/go1.15.6.linux-\${TARGETARCH:-amd64}.tar.gz \ | tar -C /usr/local -xz && \ go get -u github.com/onsi/ginkgo/ginkgo && \ git clone -b v1.19.0 https://github.com/kubernetes-sigs/cri-tools \ diff --git a/script/integration/containerd/entrypoint.sh b/script/integration/containerd/entrypoint.sh index b2e1ba29d..3af1bc97b 100755 --- a/script/integration/containerd/entrypoint.sh +++ b/script/integration/containerd/entrypoint.sh @@ -117,6 +117,11 @@ function reboot_containerd { retry ctr snapshots --snapshotter="${PLUGIN}" prepare "connectiontest-dummy-${UNIQUE_SUFFIX}" "" } +echo "===== VERSION INFORMATION =====" +containerd --version +runc --version +echo "===============================" + echo "Logging into the registry..." cp /auth/certs/domain.crt /usr/local/share/ca-certificates update-ca-certificates diff --git a/script/integration/test.sh b/script/integration/test.sh index 79b636f8b..4faae6c11 100755 --- a/script/integration/test.sh +++ b/script/integration/test.sh @@ -33,10 +33,9 @@ if [ "${INTEGRATION_NO_RECREATE:-}" != "true" ] ; then echo "Preparing node image..." # Enable to check race - docker build -t "${INTEGRATION_BASE_IMAGE_NAME}" \ + docker build ${DOCKER_BUILD_ARGS:-} -t "${INTEGRATION_BASE_IMAGE_NAME}" \ --target snapshotter-base \ --build-arg=SNAPSHOTTER_BUILD_FLAGS="-race" \ - ${DOCKER_BUILD_ARGS:-} \ "${REPO}" fi @@ -80,7 +79,7 @@ ENV CONTAINERD_SNAPSHOTTER="" ENTRYPOINT [ "/entrypoint.sh" ] EOF -docker build -t "${INTEGRATION_TEST_IMAGE_NAME}" ${DOCKER_BUILD_ARGS:-} "${TMP_CONTEXT}" +docker build ${DOCKER_BUILD_ARGS:-} -t "${INTEGRATION_TEST_IMAGE_NAME}" ${DOCKER_BUILD_ARGS:-} "${TMP_CONTEXT}" echo "Preparing creds..." prepare_creds "${AUTH_DIR}" "${REGISTRY_HOST}" "${DUMMYUSER}" "${DUMMYPASS}" diff --git a/script/optimize/optimize/entrypoint.sh b/script/optimize/optimize/entrypoint.sh index e278c36c6..7c308b992 100755 --- a/script/optimize/optimize/entrypoint.sh +++ b/script/optimize/optimize/entrypoint.sh @@ -147,6 +147,11 @@ function check_optimization { return 0 } +echo "===== VERSION INFORMATION =====" +containerd --version +runc --version +echo "===============================" + echo "Connecting to the docker server..." retry ls /docker/client/cert.pem /docker/client/ca.pem mkdir -p /root/.docker/ && cp /docker/client/* /root/.docker/ @@ -240,38 +245,15 @@ check_optimization "${NOOPT_IMAGE_TAG}" \ # c.f. https://github.com/moby/moby/issues/26824 update-alternatives --set iptables /usr/sbin/iptables-legacy -# Install CNI plugins and configs to the customized paths (not /opt/cni/bin and /etc/cni/net.d) -mkdir /tmp/cni/ /tmp/bin/ -curl -Ls https://github.com/containernetworking/plugins/releases/download/v0.8.7/cni-plugins-linux-amd64-v0.8.7.tgz | tar xzv -C /tmp/bin -cat <<'EOF' > /tmp/cni/test.conflist -{ - "cniVersion": "0.4.0", - "name": "test", - "plugins" : [{ - "type": "bridge", - "bridge": "test0", - "isDefaultGateway": true, - "forceAddress": false, - "ipMasq": true, - "hairpinMode": true, - "ipam": { - "type": "host-local", - "subnet": "10.10.0.0/16" - } - }, - { - "type": "loopback" - }] -} -EOF - # Try to connect to the internet from the container +# CNI-related files are installed to irregular paths (see Dockerfile for more details). +# Check if these files are recognized through flags. TESTDIR=$(mktemp -d) /tmp/out/ctr-remote ${OPTIMIZE_COMMAND} \ --period=20 \ --cni \ - --cni-plugin-conf-dir='/tmp/cni' \ - --cni-plugin-dir='/tmp/bin' \ + --cni-plugin-conf-dir='/etc/tmp/cni/net.d' \ + --cni-plugin-dir='/opt/tmp/cni/bin' \ --add-hosts='testhost:1.2.3.4,test2:5.6.7.8' \ --dns-nameservers='8.8.8.8' \ --mount="type=bind,src=${TESTDIR},dst=/mnt,options=bind" \ diff --git a/script/optimize/test.sh b/script/optimize/test.sh index 5a29bff79..18eb840ec 100755 --- a/script/optimize/test.sh +++ b/script/optimize/test.sh @@ -24,6 +24,7 @@ DUMMYUSER=dummyuser DUMMYPASS=dummypass OPTIMIZE_BASE_IMAGE_NAME="optimize-image-base" OPTIMIZE_TEST_IMAGE_NAME="optimize-image-test" +CNI_VERSION="v0.9.0" source "${REPO}/script/util/utils.sh" @@ -31,10 +32,9 @@ if [ "${OPTIMIZE_NO_RECREATE:-}" != "true" ] ; then echo "Preparing node image..." # Enable to check race - docker build -t "${OPTIMIZE_BASE_IMAGE_NAME}" \ + docker build ${DOCKER_BUILD_ARGS:-} -t "${OPTIMIZE_BASE_IMAGE_NAME}" \ --target snapshotter-base \ --build-arg=SNAPSHOTTER_BUILD_FLAGS="-race" \ - ${DOCKER_BUILD_ARGS:-} \ "${REPO}" fi @@ -50,12 +50,46 @@ function cleanup { } trap 'cleanup "$?"' EXIT SIGHUP SIGINT SIGQUIT SIGTERM +cat <<'EOF' > "${TMP_CONTEXT}/test.conflist" +{ + "cniVersion": "0.4.0", + "name": "test", + "plugins" : [{ + "type": "bridge", + "bridge": "test0", + "isDefaultGateway": true, + "forceAddress": false, + "ipMasq": true, + "hairpinMode": true, + "ipam": { + "type": "host-local", + "subnet": "10.10.0.0/16" + } + }, + { + "type": "loopback" + }] +} +EOF + cat < "${TMP_CONTEXT}/Dockerfile" +# Legacy builder that doesn't support TARGETARCH should set this explicitly using --build-arg. +# If TARGETARCH isn't supported by the builder, the default value is "amd64". + FROM ${OPTIMIZE_BASE_IMAGE_NAME} +ARG TARGETARCH RUN apt-get update -y && \ apt-get --no-install-recommends install -y jq iptables && \ - GO111MODULE=on go get github.com/google/go-containerregistry/cmd/crane + GO111MODULE=on go get github.com/google/go-containerregistry/cmd/crane && \ + mkdir -p /opt/tmp/cni/bin /etc/tmp/cni/net.d && \ + curl -Ls https://github.com/containernetworking/plugins/releases/download/${CNI_VERSION}/cni-plugins-linux-\${TARGETARCH:-amd64}-${CNI_VERSION}.tgz | tar xzv -C /opt/tmp/cni/bin + +# Installs CNI-related files to irregular paths (/opt/tmp/cni/bin and /etc/tmp/cni/net.d) for test. +# see entrypoint.sh for more details. + +COPY ./test.conflist /etc/tmp/cni/net.d/test.conflist + EOF docker build -t "${OPTIMIZE_TEST_IMAGE_NAME}" ${DOCKER_BUILD_ARGS:-} "${TMP_CONTEXT}" diff --git a/script/pullsecrets/mirror.sh b/script/pullsecrets/mirror.sh index c6273ee40..b28ec8e1b 100644 --- a/script/pullsecrets/mirror.sh +++ b/script/pullsecrets/mirror.sh @@ -16,8 +16,6 @@ set -euo pipefail -CONTAINERD_VERSION="1.4.3" -RUNC_VERSION="v1.0.0-rc92" SRC="${1}" DST="${2}" SS_REPO="/go/src/github.com/containerd/stargz-snapshotter" @@ -42,16 +40,13 @@ function retry { fi } -apt-get update -y && apt-get --no-install-recommends install -y wget update-ca-certificates -wget https://github.com/opencontainers/runc/releases/download/"${RUNC_VERSION}"/runc.amd64 -O /bin/runc -chmod 755 /bin/runc -wget https://github.com/containerd/containerd/releases/download/v"${CONTAINERD_VERSION}"/containerd-"${CONTAINERD_VERSION}"-linux-amd64.tar.gz -tar zxf containerd-1.4.3-linux-amd64.tar.gz -C / -containerd &retry ctr version cd "${SS_REPO}" PREFIX=/out/ make ctr-remote + +containerd & +retry /out/ctr-remote version /out/ctr-remote images pull "${SRC}" /out/ctr-remote images optimize --oci "${SRC}" "${DST}" /out/ctr-remote images push -u "${REGISTRY_CREDS}" "${DST}" diff --git a/script/pullsecrets/run-kind.sh b/script/pullsecrets/run-kind.sh index ce70de57a..86eb6a06f 100755 --- a/script/pullsecrets/run-kind.sh +++ b/script/pullsecrets/run-kind.sh @@ -42,7 +42,7 @@ trap 'cleanup "$?"' EXIT SIGHUP SIGINT SIGQUIT SIGTERM if [ "${KIND_NO_RECREATE:-}" != "true" ] ; then echo "Preparing node image..." - docker build -t "${NODE_BASE_IMAGE_NAME}" "${REPO}" + docker build ${DOCKER_BUILD_ARGS:-} -t "${NODE_BASE_IMAGE_NAME}" "${REPO}" fi # Prepare the testing node with enabling k8s keychain @@ -75,6 +75,11 @@ docker cp "${KIND_REGISTRY_CA}" "${KIND_NODENAME}:${NODE_TEST_CERT_FILE}" docker exec -i "${KIND_NODENAME}" update-ca-certificates docker exec -i "${KIND_NODENAME}" systemctl restart stargz-snapshotter +echo "===== VERSION INFORMATION =====" +docker exec "${KIND_NODENAME}" containerd --version +docker exec "${KIND_NODENAME}" runc --version +echo "===============================" + echo "Configuring kubernetes cluster..." CONFIGJSON_BASE64="$(cat ${DOCKERCONFIGJSON_DATA} | base64 -i -w 0)" cat <