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

fix: add correct binary for manager and set runAsUser: 1000 in deployment.yaml #313

Open
wants to merge 5 commits into
base: main
Choose a base branch
from

Conversation

jokestax
Copy link
Contributor

@jokestax jokestax commented Dec 3, 2024

Description:

This PR addresses the issue related to the missing manager binary in the Dockerfile and an error encountered due to user permissions in the deployment.yaml.

  1. Dockerfile Update:

  2. Deployment Update:

    • Added runAsUser: 1000 to the deployment.yaml to resolve the permission error shown below:

      Permission Error

Testing

To test this change:

  1. Clone the repository.
  2. Run make build.image.controlplane.
  3. Create a Kubernetes cluster using either Kind or K3d.
  4. Run kubectl apply -k config/default to deploy the changes.

@k8s-ci-robot
Copy link
Contributor

[APPROVALNOTIFIER] This PR is NOT APPROVED

This pull-request has been approved by: jokestax
Once this PR has been reviewed and has the lgtm label, please assign astoycos for approval. For more information see the Kubernetes Code Review Process.

The full list of commands accepted by this bot can be found here.

Needs approval from an approver in each of these files:

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

@k8s-ci-robot k8s-ci-robot added the cncf-cla: yes Indicates the PR's author has signed the CNCF CLA. label Dec 3, 2024
@k8s-ci-robot k8s-ci-robot added the size/S Denotes a PR that changes 10-29 lines, ignoring generated files. label Dec 3, 2024
build/Containerfile.controlplane Show resolved Hide resolved
build/Containerfile.controlplane Outdated Show resolved Hide resolved
config/manager/manager.yaml Show resolved Hide resolved
@shaneutt
Copy link
Member

shaneutt commented Dec 5, 2024

/cc @aryan9600

build/Containerfile.controlplane Show resolved Hide resolved
build/Containerfile.controlplane Outdated Show resolved Hide resolved
Copy link
Member

@aryan9600 aryan9600 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

thanks for sending this PR! needs a couple of changes.

@@ -43,6 +43,7 @@ spec:
name: manager
securityContext:
allowPrivilegeEscalation: false
runAsUser: 1000
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

we should be setting the user in the dockerfile itself like so:

USER 1000:1000

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

sorry for the late reply,been travelling to attend Kubecon India 😅 ,i will make the changes

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hi @aryan9600 ,i tried by placing USER 1001:1001 in dockerfile,it shows the same error as error: container has runasnonroot and image will run as root

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

you might be setting the user in the build step of the Dockerfile. you should set it in the final step of the Dockerfile:

FROM --platform=$BUILDPLATFORM tonistiigi/xx AS xx-tools

FROM --platform=$BUILDPLATFORM rust:alpine AS builder

RUN apk add --no-cache clang lld

WORKDIR /workspace

COPY --from=xx-tools / /

ARG TARGETPLATFORM
ARG PROJECT_DIR=/workspace
ARG BUILD_DIR=$PROJECT_DIR/build

RUN --mount=type=bind,source=../controlplane/src/,target=src \
    --mount=type=bind,source=../controlplane/Cargo.toml,target=Cargo.toml \
    --mount=type=bind,source=../controlplane/Cargo.lock,target=Cargo.lock \
    xx-cargo build --release --target-dir $BUILD_DIR && \
    xx-verify ./build/$(xx-cargo --print-target-triple)/release/controller

RUN cp ./build/$(xx-cargo --print-target-triple)/release/controller /workspace/manager

FROM alpine:latest

WORKDIR /

USER 1000:1000
COPY --from=builder /workspace/manager /manager

i can get the application to run with this Dockerfile and without the need for runAsUser in the deployment configuration.

Copy link
Contributor Author

@jokestax jokestax Dec 27, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

hi @aryan9600 ,i did set in the final step but its not working 🥲 ,can we hop on a meet whenever you are free?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

could you share the error you're seeing?

build/Containerfile.controlplane Outdated Show resolved Hide resolved
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
cncf-cla: yes Indicates the PR's author has signed the CNCF CLA. size/S Denotes a PR that changes 10-29 lines, ignoring generated files.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants