mirror of
https://github.com/kubernetes-sigs/node-feature-discovery.git
synced 2024-12-14 11:57:51 +00:00
6149000637
Switch to fully statically linked binaries and use scratch as a base image. Switching to the virtually empty scratch base image means that the default/minimal NFD image only supports running hooks that are truly statically linked (e.g. normal go binaries that are "almost" statically linked stop working). The documentation has been already stating this (i.e. that only statically-linked binaries are supported) - i.e. we have had no promise of supporting other than that. Also, hooks are now deprecated and even disabled by default so the possibility of real user impact should be small.
53 lines
1.7 KiB
Docker
53 lines
1.7 KiB
Docker
ARG BUILDER_IMAGE
|
|
ARG BASE_IMAGE_FULL
|
|
ARG BASE_IMAGE_MINIMAL
|
|
|
|
# Build node feature discovery
|
|
FROM ${BUILDER_IMAGE} as builder
|
|
|
|
# Build and install the grpc-health-probe binary
|
|
RUN GRPC_HEALTH_PROBE_VERSION=v0.4.19 && \
|
|
go install -tags osusergo,netgo -ldflags -extldflags=-static \
|
|
github.com/grpc-ecosystem/grpc-health-probe@${GRPC_HEALTH_PROBE_VERSION} \
|
|
# Rename it as it's referenced as grpc_health_probe in the deployment yamls
|
|
# and in its own project https://github.com/grpc-ecosystem/grpc-health-probe
|
|
&& mv /go/bin/grpc-health-probe /go/bin/grpc_health_probe
|
|
|
|
# Get (cache) deps in a separate layer
|
|
COPY go.mod go.sum /go/node-feature-discovery/
|
|
|
|
WORKDIR /go/node-feature-discovery
|
|
|
|
RUN go mod download
|
|
|
|
# Do actual build
|
|
COPY . /go/node-feature-discovery
|
|
|
|
ARG VERSION
|
|
ARG HOSTMOUNT_PREFIX
|
|
|
|
RUN make install VERSION=$VERSION HOSTMOUNT_PREFIX=$HOSTMOUNT_PREFIX
|
|
|
|
# Create full variant of the production image
|
|
FROM ${BASE_IMAGE_FULL} as full
|
|
|
|
# Run as unprivileged user
|
|
USER 65534:65534
|
|
|
|
# Use more verbose logging of gRPC
|
|
ENV GRPC_GO_LOG_SEVERITY_LEVEL="INFO"
|
|
|
|
COPY --from=builder /go/node-feature-discovery/deployment/components/worker-config/nfd-worker.conf.example /etc/kubernetes/node-feature-discovery/nfd-worker.conf
|
|
COPY --from=builder /go/bin/* /usr/bin/
|
|
|
|
# Create minimal variant of the production image
|
|
FROM ${BASE_IMAGE_MINIMAL} as minimal
|
|
|
|
# Run as unprivileged user
|
|
USER 65534:65534
|
|
|
|
# Use more verbose logging of gRPC
|
|
ENV GRPC_GO_LOG_SEVERITY_LEVEL="INFO"
|
|
|
|
COPY --from=builder /go/node-feature-discovery/deployment/components/worker-config/nfd-worker.conf.example /etc/kubernetes/node-feature-discovery/nfd-worker.conf
|
|
COPY --from=builder /go/bin/* /usr/bin/
|