mirror of
https://github.com/k8snetworkplumbingwg/multus-cni.git
synced 2025-10-22 07:52:12 +00:00
This change introduces per-node certification for multus pods. Once multus pod is launched, then specified bootstrap kubeconfig is used for initial access, then multus sends CSR request to kube API to get original certs for kube API access. Once it is accepted then the multus pod uses generated certs for kube access.
83 lines
2.9 KiB
Bash
Executable File
83 lines
2.9 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
set -e
|
|
|
|
DEST_DIR="bin"
|
|
|
|
if [ ! -d ${DEST_DIR} ]; then
|
|
mkdir ${DEST_DIR}
|
|
fi
|
|
|
|
# Specify correspondingGOARCH from TARGETPLATFORM
|
|
if [ "$TARGETPLATFORM" = "linux/amd64" ]; then
|
|
export GOARCH=amd64
|
|
elif [ "$TARGETPLATFORM" = "linux/arm64" ]; then
|
|
export GOARCH=arm64
|
|
elif [ "$TARGETPLATFORM" = "linux/arm/v7" ]; then
|
|
export GOARCH=arm
|
|
elif [ "$TARGETPLATFORM" = "linux/ppc64le" ]; then
|
|
export GOARCH=ppc64le
|
|
elif [ "$TARGETPLATFORM" = "linux/s390x" ]; then
|
|
export GOARCH=s390x
|
|
fi
|
|
|
|
# version information
|
|
hasGit=true
|
|
git version > /dev/null 2>&1 || hasGit=false
|
|
GIT_SHA=""
|
|
GIT_TREE_STATE=""
|
|
GIT_TAG=""
|
|
GIT_TAG_LAST=""
|
|
RELEASE_STATUS=""
|
|
if $hasGit; then
|
|
set +e
|
|
GIT_SHA=$(git rev-parse --short HEAD)
|
|
# Tree state is "dirty" if there are uncommitted changes, untracked files are ignored
|
|
GIT_TREE_STATE=$(test -n "`git status --porcelain --untracked-files=no`" && echo "dirty" || echo "clean")
|
|
# Empty string if we are not building a tag
|
|
GIT_TAG=$(git describe --tags --abbrev=0 --exact-match 2>/dev/null || true)
|
|
# Find most recent tag
|
|
GIT_TAG_LAST=$(git describe --tags --abbrev=0 2>/dev/null || true)
|
|
set -e
|
|
fi
|
|
|
|
# VERSION override mechanism if needed
|
|
VERSION=${VERSION:-}
|
|
if [[ -n "${VERSION}" || -n "${GIT_TAG}" ]]; then
|
|
RELEASE_STATUS=",released"
|
|
fi
|
|
|
|
if [ -z "$VERSION" ]; then
|
|
VERSION=$GIT_TAG_LAST
|
|
fi
|
|
# Add version/commit/date into binary
|
|
DATE=$(date -u -d "@${SOURCE_DATE_EPOCH:-$(date +%s)}" --iso-8601=seconds)
|
|
COMMIT=${COMMIT:-$(git rev-parse --verify HEAD)}
|
|
LDFLAGS="-X gopkg.in/k8snetworkplumbingwg/multus-cni.v4/pkg/multus.version=${VERSION} \
|
|
-X gopkg.in/k8snetworkplumbingwg/multus-cni.v4/pkg/multus.commit=${COMMIT} \
|
|
-X gopkg.in/k8snetworkplumbingwg/multus-cni.v4/pkg/multus.gitTreeState=${GIT_TREE_STATE} \
|
|
-X gopkg.in/k8snetworkplumbingwg/multus-cni.v4/pkg/multus.releaseStatus=${RELEASE_STATUS} \
|
|
-X gopkg.in/k8snetworkplumbingwg/multus-cni.v4/pkg/multus.date=${DATE}"
|
|
export CGO_ENABLED=${CGO_ENABLED:-0}
|
|
|
|
# build with go modules
|
|
export GO111MODULE=on
|
|
|
|
if [ -n "$MODMODE" ]; then
|
|
BUILD_ARGS=(-mod "$MODMODE")
|
|
fi
|
|
|
|
echo "Building multus"
|
|
go build -o ${DEST_DIR}/multus ${BUILD_ARGS} -ldflags "${LDFLAGS}" "$@" ./cmd/multus
|
|
echo "Building multus-daemon"
|
|
go build -o "${DEST_DIR}"/multus-daemon ${BUILD_ARGS} -ldflags "${LDFLAGS}" ./cmd/multus-daemon
|
|
echo "Building multus-shim"
|
|
go build -o "${DEST_DIR}"/multus-shim ${BUILD_ARGS} -ldflags "${LDFLAGS}" ./cmd/multus-shim
|
|
echo "Building install_multus"
|
|
go build -o "${DEST_DIR}"/install_multus ${BUILD_ARGS} -ldflags "${LDFLAGS}" ./cmd/install_multus
|
|
echo "Building thin_entrypoint"
|
|
go build -o "${DEST_DIR}"/thin_entrypoint ${BUILD_ARGS} -ldflags "${LDFLAGS}" ./cmd/thin_entrypoint
|
|
echo "Building kubeconfig_generator"
|
|
go build -o "${DEST_DIR}"/kubeconfig_generator ${BUILD_ARGS} -ldflags "${LDFLAGS}" ./cmd/kubeconfig_generator
|
|
echo "Building cert-approver"
|
|
go build -o "${DEST_DIR}"/cert-approver ${BUILD_ARGS} -ldflags "${LDFLAGS}" ./cmd/cert-approver
|