diff --git a/Dockerfile b/Dockerfile index 4627a61f7..f98b8deff 100644 --- a/Dockerfile +++ b/Dockerfile @@ -11,13 +11,10 @@ RUN go mod download # Do actual build COPY . /go/node-feature-discovery -ARG NFD_VERSION +ARG VERSION ARG HOSTMOUNT_PREFIX -RUN go install \ - -ldflags "-s -w -X sigs.k8s.io/node-feature-discovery/pkg/version.version=$NFD_VERSION -X sigs.k8s.io/node-feature-discovery/source.pathPrefix=$HOSTMOUNT_PREFIX" \ - ./cmd/* -RUN install -D -m644 nfd-worker.conf.example /etc/kubernetes/node-feature-discovery/nfd-worker.conf +RUN make install VERSION=$VERSION HOSTMOUNT_PREFIX=$HOSTMOUNT_PREFIX RUN make test @@ -31,5 +28,5 @@ USER 65534:65534 # Use more verbose logging of gRPC ENV GRPC_GO_LOG_SEVERITY_LEVEL="INFO" -COPY --from=builder /etc/kubernetes/node-feature-discovery /etc/kubernetes/node-feature-discovery -COPY --from=builder /go/bin/nfd-* /usr/bin/ +COPY --from=builder /go/node-feature-discovery/nfd-worker.conf.example /etc/kubernetes/node-feature-discovery/nfd-worker.conf +COPY --from=builder /go/bin/* /usr/bin/ diff --git a/Makefile b/Makefile index d13b81fd6..1de4199d7 100644 --- a/Makefile +++ b/Makefile @@ -16,18 +16,36 @@ IMAGE_TAG_NAME := $(VERSION) IMAGE_REPO := $(IMAGE_REGISTRY)/$(IMAGE_NAME) IMAGE_TAG := $(IMAGE_REPO):$(IMAGE_TAG_NAME) K8S_NAMESPACE := kube-system -HOSTMOUNT_PREFIX := /host- + +# We use different mount prefix for local and container builds. +# Take CONTAINER_HOSTMOUNT_PREFIX from HOSTMOUNT_PREFIX if only the latter is specified +ifdef HOSTMOUNT_PREFIX + CONTAINER_HOSTMOUNT_PREFIX := $(HOSTMOUNT_PREFIX) +else + CONTAINER_HOSTMOUNT_PREFIX := /host- +endif +HOSTMOUNT_PREFIX := / + KUBECONFIG := E2E_TEST_CONFIG := +LDFLAGS = -ldflags "-s -w -X sigs.k8s.io/node-feature-discovery/pkg/version.version=$(VERSION) -X sigs.k8s.io/node-feature-discovery/source.pathPrefix=$(HOSTMOUNT_PREFIX)" + yaml_templates := $(wildcard *.yaml.template) yaml_instances := $(patsubst %.yaml.template,%.yaml,$(yaml_templates)) all: image +build: + @mkdir -p bin + $(GO_CMD) build -v -o bin $(LDFLAGS) ./cmd/... + +install: + $(GO_CMD) install -v $(LDFLAGS) ./cmd/... + image: yamls - $(IMAGE_BUILD_CMD) --build-arg NFD_VERSION=$(VERSION) \ - --build-arg HOSTMOUNT_PREFIX=$(HOSTMOUNT_PREFIX) \ + $(IMAGE_BUILD_CMD) --build-arg VERSION=$(VERSION) \ + --build-arg HOSTMOUNT_PREFIX=$(CONTAINER_HOSTMOUNT_PREFIX) \ -t $(IMAGE_TAG) \ $(IMAGE_BUILD_EXTRA_OPTS) ./ @@ -40,7 +58,7 @@ yamls: $(yaml_instances) -e s',^(\s*)name: node-feature-discovery # NFD namespace,\1name: ${K8S_NAMESPACE},' \ -e s',^(\s*)image:.+$$,\1image: ${IMAGE_TAG},' \ -e s',^(\s*)namespace:.+$$,\1namespace: ${K8S_NAMESPACE},' \ - -e s',^(\s*)mountPath: "/host-,\1mountPath: "${HOSTMOUNT_PREFIX},' \ + -e s',^(\s*)mountPath: "/host-,\1mountPath: "${CONTAINER_HOSTMOUNT_PREFIX},' \ $< > $@ mock: diff --git a/README.md b/README.md index df3578c18..d512118e0 100644 --- a/README.md +++ b/README.md @@ -877,19 +877,21 @@ attribute in the spec template(s) to the new location There are several Makefile variables that control the build process and the name of the resulting container image. -| Variable | Description | Default value -| ---------------------- | -------------------------------------------- | ----------- | -| IMAGE_BUILD_CMD | Command to build the image | docker build -| IMAGE_BUILD_EXTRA_OPTS | Extra options to pass to build command | *empty* -| IMAGE_PUSH_CMD | Command to push the image to remote registry | docker push -| IMAGE_REGISTRY | Container image registry to use | k8s.gcr.io/nfd -| IMAGE_NAME | Container image name | node-feature-discovery -| IMAGE_TAG_NAME | Container image tag name | <nfd version> -| IMAGE_REPO | Container image repository to use | <IMAGE_REGISTRY>/<IMAGE_NAME> -| IMAGE_TAG | Full image:tag to tag the image with | <IMAGE_REPO>/<IMAGE_NAME> -| K8S_NAMESPACE | nfd-master and nfd-worker namespace | kube-system -| KUBECONFIG | Kubeconfig for running e2e-tests | *empty* -| E2E_TEST_CONFIG | Parameterization file of e2e-tests (see [example](test/e2e/e2e-test-config.exapmle.yaml)) | *empty* +| Variable | Description | Default value +| -------------------------- | ----------------------------------------------------------------- | ----------- | +| HOSTMOUNT_PREFIX | Prefix of system directories for feature discovery (local builds) | / +| CONTAINER_HOSTMOUNT_PREFIX | Prefix of system directories for feature discovery (container builds) | <HOSTMOUNT_PREFIX> (*if specified*) /host- (*otherwise*) +| IMAGE_BUILD_CMD | Command to build the image | docker build +| IMAGE_BUILD_EXTRA_OPTS | Extra options to pass to build command | *empty* +| IMAGE_PUSH_CMD | Command to push the image to remote registry | docker push +| IMAGE_REGISTRY | Container image registry to use | k8s.gcr.io/nfd +| IMAGE_NAME | Container image name | node-feature-discovery +| IMAGE_TAG_NAME | Container image tag name | <nfd version> +| IMAGE_REPO | Container image repository to use | <IMAGE_REGISTRY>/<IMAGE_NAME> +| IMAGE_TAG | Full image:tag to tag the image with | <IMAGE_REPO>/<IMAGE_NAME> +| K8S_NAMESPACE | nfd-master and nfd-worker namespace | kube-system +| KUBECONFIG | Kubeconfig for running e2e-tests | *empty* +| E2E_TEST_CONFIG | Parameterization file of e2e-tests (see [example](test/e2e/e2e-test-config.exapmle.yaml)) | *empty* For example, to use a custom registry: ```