Skip to content

Conversation

dawid-nowak
Copy link
Contributor

Kubvernor Rust API Gateway is an open-source, highly experimental implementation of API controller in Rust programming language. Currently, Kubernor supports Envoy Proxy. The project aims to be as generic as possible so Kubvernor can be used to manage/deploy different gateways (Envoy, Nginx, HAProxy, etc.). Kubvernor Rust API Gateway implements Inference Extensions v0.5.1.

@k8s-ci-robot k8s-ci-robot added the cncf-cla: yes Indicates the PR's author has signed the CNCF CLA. label Aug 6, 2025
Copy link

netlify bot commented Aug 6, 2025

Deploy Preview for gateway-api-inference-extension ready!

Name Link
🔨 Latest commit 4683dca
🔍 Latest deploy log https://app.netlify.com/projects/gateway-api-inference-extension/deploys/68d5570908b624000872bc8f
😎 Deploy Preview https://deploy-preview-1313--gateway-api-inference-extension.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify project configuration.

@k8s-ci-robot k8s-ci-robot added the needs-ok-to-test Indicates a PR that requires an org member to verify it is safe to test. label Aug 6, 2025
@k8s-ci-robot
Copy link
Contributor

Hi @dawid-nowak. Thanks for your PR.

I'm waiting for a kubernetes-sigs member to verify that this patch is reasonable to test. If it is, they should reply with /ok-to-test on its own line. Until that is done, I will not automatically test new commits in this PR, but the usual testing commands by org members will still work. Regular contributors should join the org to skip this step.

Once the patch is verified, the new status will be reflected by the ok-to-test label.

I understand the commands that are listed here.

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes-sigs/prow repository.

@k8s-ci-robot k8s-ci-robot added the size/M Denotes a PR that changes 30-99 lines, ignoring generated files. label Aug 6, 2025
@k8s-ci-robot k8s-ci-robot added the needs-rebase Indicates a PR cannot be merged because it has merge conflicts with HEAD. label Aug 13, 2025
@k8s-ci-robot k8s-ci-robot removed the needs-rebase Indicates a PR cannot be merged because it has merge conflicts with HEAD. label Aug 13, 2025
@dawid-nowak
Copy link
Contributor Author

ping @danehans @liu-cong

@dawid-nowak
Copy link
Contributor Author

ping @robscott

@robscott
Copy link
Member

Thanks @dawid-nowak!

/lgtm
/ok-to-test

@k8s-ci-robot k8s-ci-robot added ok-to-test Indicates a non-member PR verified by an org member that is safe to test. and removed needs-ok-to-test Indicates a PR that requires an org member to verify it is safe to test. labels Aug 15, 2025
@k8s-ci-robot k8s-ci-robot added the lgtm "Looks good to me", indicates that a PR is ready to be merged. label Aug 15, 2025
@k8s-ci-robot k8s-ci-robot added the needs-rebase Indicates a PR cannot be merged because it has merge conflicts with HEAD. label Aug 23, 2025
Signed-off-by: Dawid Nowak <[email protected]>
@k8s-ci-robot k8s-ci-robot removed the lgtm "Looks good to me", indicates that a PR is ready to be merged. label Aug 25, 2025
@k8s-ci-robot
Copy link
Contributor

[APPROVALNOTIFIER] This PR is NOT APPROVED

This pull-request has been approved by: dawid-nowak
Once this PR has been reviewed and has the lgtm label, please assign danehans for approval. For more information see the 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 removed the needs-rebase Indicates a PR cannot be merged because it has merge conflicts with HEAD. label Aug 25, 2025
Signed-off-by: Dawid Nowak <[email protected]>
@k8s-ci-robot k8s-ci-robot added size/L Denotes a PR that changes 100-499 lines, ignoring generated files. and removed needs-rebase Indicates a PR cannot be merged because it has merge conflicts with HEAD. size/M Denotes a PR that changes 30-99 lines, ignoring generated files. labels Sep 21, 2025
@dawid-nowak dawid-nowak force-pushed the adding_kubvernor_implementor_v2 branch from a4fcea3 to c1ce80f Compare September 21, 2025 20:00
@k8s-ci-robot k8s-ci-robot added size/M Denotes a PR that changes 30-99 lines, ignoring generated files. and removed size/L Denotes a PR that changes 100-499 lines, ignoring generated files. labels Sep 21, 2025
@dawid-nowak dawid-nowak force-pushed the adding_kubvernor_implementor_v2 branch from c1ce80f to 8b85635 Compare September 21, 2025 20:05
@k8s-ci-robot k8s-ci-robot added size/S Denotes a PR that changes 10-29 lines, ignoring generated files. and removed size/M Denotes a PR that changes 30-99 lines, ignoring generated files. labels Sep 21, 2025
@dawid-nowak
Copy link
Contributor Author

@robscott @danehans @kfswain please review,
I have removed Kubvernor from the guide section.

@robscott
Copy link
Member

Thanks @dawid-nowak!

/lgtm

@k8s-ci-robot k8s-ci-robot added the lgtm "Looks good to me", indicates that a PR is ready to be merged. label Sep 23, 2025
@danehans
Copy link
Contributor

Yeah, but that would potentially make this page even more unreadable. And even for GKE there is a link to external docs. Perhaps it is ok to proceed as is. Given that this is going to change anyway.

True but I don't believe the GKE docs or any other docs are requiring the user to build the implementation's binary. Whether the steps are local or referenced, we are focused on the UX. Instead of requiring the user to build the binary, can you publish it to Docker Hub and provide a manifest for deployment? IMHO this would make a big difference in the UX, regardless of where the guide lives.

@danehans
Copy link
Contributor

I just tried repro'ing the Kubvernor v0.5.1 conformance test, but I get the following error:

$ ./run_kubvernor.sh
gatewayclass.gateway.networking.k8s.io/kubvernor-gateway created
gatewayclass.gateway.networking.k8s.io/kubvernor-inference-gateway created
gatewayclass.gateway.networking.k8s.io/gateway-conformance created
   Compiling envoy-api-rs v0.1.1 (https://github.com/kubvernor/envoy-api-rs?branch=main#2fbaeed5)
error: failed to run custom build command for `envoy-api-rs v0.1.1 (https://github.com/kubvernor/envoy-api-rs?branch=main#2fbaeed5)`

Caused by:
  process didn't exit successfully: `/Users/solo-system-dhansen/go/src/github.com/kubvernor/target/debug/build/envoy-api-rs-c6f27526c19d991f/build-script-build` (exit status: 1)
  --- stdout
...
 --- stderr
  Error: Custom { kind: Other, error: "protoc failed: google/protobuf/timestamp.proto: File not found.\ngoogle/protobuf/descriptor.proto: File not found.\nudpa/annotations/status.proto: Import \"google/protobuf/descriptor.proto\" was not found or had errors.\nudpa/annotations/status.proto:15:8: \"google.protobuf.FileOptions\" is not defined.\nudpa/annotations/versioning.proto: Import \"google/protobuf/descriptor.proto\" was not found or had errors.\nudpa/annotations/versioning.proto:13:8: \"google.protobuf.MessageOptions\" is not defined.\nenvoy/admin/v3/certs.proto: Import \"google/protobuf/timestamp.proto\" was not found or had errors.\nenvoy/admin/v3/certs.proto: Import \"udpa/annotations/status.proto\" was not found or had errors.\nenvoy/admin/v3/certs.proto: Import \"udpa/annotations/versioning.proto\" was not found or had errors.\nenvoy/admin/v3/certs.proto:45:5: \"google.protobuf.Timestamp\" is not defined.\nenvoy/admin/v3/certs.proto:48:5: \"google.protobuf.Timestamp\" is not defined.\nenvoy/admin/v3/certs.proto:64:3: \"google.protobuf.Timestamp\" is not defined.\nenvoy/admin/v3/certs.proto:67:3: \"google.protobuf.Timestamp\" is not defined.\n" }

/hold

@k8s-ci-robot k8s-ci-robot added the do-not-merge/hold Indicates that a PR should not merge because someone has issued a /hold command. label Sep 23, 2025
@dawid-nowak
Copy link
Contributor Author

I just tried repro'ing the Kubvernor v0.5.1 conformance test, but I get the following error:

$ ./run_kubvernor.sh
gatewayclass.gateway.networking.k8s.io/kubvernor-gateway created
gatewayclass.gateway.networking.k8s.io/kubvernor-inference-gateway created
gatewayclass.gateway.networking.k8s.io/gateway-conformance created
   Compiling envoy-api-rs v0.1.1 (https://github.com/kubvernor/envoy-api-rs?branch=main#2fbaeed5)
error: failed to run custom build command for `envoy-api-rs v0.1.1 (https://github.com/kubvernor/envoy-api-rs?branch=main#2fbaeed5)`

Caused by:
  process didn't exit successfully: `/Users/solo-system-dhansen/go/src/github.com/kubvernor/target/debug/build/envoy-api-rs-c6f27526c19d991f/build-script-build` (exit status: 1)
  --- stdout
...
 --- stderr
  Error: Custom { kind: Other, error: "protoc failed: google/protobuf/timestamp.proto: File not found.\ngoogle/protobuf/descriptor.proto: File not found.\nudpa/annotations/status.proto: Import \"google/protobuf/descriptor.proto\" was not found or had errors.\nudpa/annotations/status.proto:15:8: \"google.protobuf.FileOptions\" is not defined.\nudpa/annotations/versioning.proto: Import \"google/protobuf/descriptor.proto\" was not found or had errors.\nudpa/annotations/versioning.proto:13:8: \"google.protobuf.MessageOptions\" is not defined.\nenvoy/admin/v3/certs.proto: Import \"google/protobuf/timestamp.proto\" was not found or had errors.\nenvoy/admin/v3/certs.proto: Import \"udpa/annotations/status.proto\" was not found or had errors.\nenvoy/admin/v3/certs.proto: Import \"udpa/annotations/versioning.proto\" was not found or had errors.\nenvoy/admin/v3/certs.proto:45:5: \"google.protobuf.Timestamp\" is not defined.\nenvoy/admin/v3/certs.proto:48:5: \"google.protobuf.Timestamp\" is not defined.\nenvoy/admin/v3/certs.proto:64:3: \"google.protobuf.Timestamp\" is not defined.\nenvoy/admin/v3/certs.proto:67:3: \"google.protobuf.Timestamp\" is not defined.\n" }

/hold

@danehans
But it works for me 😃

To be honest i am not too sure what goes wrong. It looks like this is a problem during compilation of Kubvernor and it seems that proto builder can't resolve the proto fiiles properly.

The one thing that looks suspicious is the path that you executing Kubernor script from /Users/solo-system-dhansen/go/src/github.com/kubvernor/target/debug/build/envoy-api-rs-c6f27526c19d991f/build-script-build.

It is a long shot but is it possible that you have some other protos in that directory tree ... and maybe if you could move Kubvernor to /Users/solo-system-dhansen/kubvernor and run it from there?

Also could you check your version of protobuf-compiler. It really should be one of the latest one.

I have created a simple dockerfile which does work for me:

FROM rust:1.86 AS kubvernor-builder
WORKDIR /tmp
RUN <<EOF
apt update
apt install -y git ca-certificates protobuf-compiler 
EOF
RUN git clone https://github.com/kubvernor/kubvernor
WORKDIR /tmp/kubvernor
RUN git checkout 0.1.1
RUN cargo build --release

@danehans
Copy link
Contributor

@dawid-nowak if publishing a docker image and providing a deployment manifest is an issue, I think a compromise is to capture the build in a Docker container as you did in #1313 (comment). If this sounds like a reasonable approach to you, please update the report's readme so it can be easily validated across platforms with minimal dependencies.

@dawid-nowak
Copy link
Contributor Author

@danehans

This PR is about adding to the list of implementors and not about the conformance. I appreciate your effort in testing it but at the same time I am not sure why this PR would be blocked because of it. Your suggestions are valid and maybe for the next conformance attempt I will add some Docker instructions.

To satisfy your requests I will remove the sentence about being conformant and the link to our conformance report from the description.

I hope that this is agreeable unless there is some very strong requirement that an application needs to be conformant in order to be added to the list of implementors.

@k8s-ci-robot k8s-ci-robot removed the lgtm "Looks good to me", indicates that a PR is ready to be merged. label Sep 25, 2025
@k8s-ci-robot
Copy link
Contributor

New changes are detected. LGTM label has been removed.

@dawid-nowak
Copy link
Contributor Author

/retest-required

@danehans
Copy link
Contributor

danehans commented Sep 25, 2025

Removing my hold since the implementations page does not explicitly state the listed implementations must be conformant. Tracking this for additional discussion with #1651.

/unhold

@k8s-ci-robot k8s-ci-robot removed the do-not-merge/hold Indicates that a PR should not merge because someone has issued a /hold command. label Sep 25, 2025
@dawid-nowak
Copy link
Contributor Author

/retest

@dawid-nowak
Copy link
Contributor Author

@robscott @danehans @kfswain please review,
Apologies to have to nag you again, but this PR needs necessary labels again to move it forward.

@dawid-nowak
Copy link
Contributor Author

/retest-required

@nirrozenbaum
Copy link
Contributor

seems like an issue in CI.
I tried to fix, checking if the fix works:

/retest

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. ok-to-test Indicates a non-member PR verified by an org member that is safe to test. 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.

7 participants