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

NGINX: Add NJS #12345

Open
wants to merge 1 commit into
base: main
Choose a base branch
from
Open

Conversation

anurag-rajawat
Copy link

@anurag-rajawat anurag-rajawat commented Nov 11, 2024

What this PR does / why we need it:

This PR is the continuation of #11248.

Types of changes

  • Bug fix (non-breaking change which fixes an issue)
  • New feature (non-breaking change which adds functionality)
  • CVE Report (Scanner found CVE and adding report)
  • Breaking change (fix or feature that would cause existing functionality to change)
  • Documentation only

Which issue/s this PR fixes

How Has This Been Tested?

I verified my changes by:

  • Deploying the ingress controller by following official doc
  • Using the image built with these changes.

Here is a screenshots that show it has nginx-njs module:
Screenshot 2024-11-11 at 15 03 02

Checklist:

  • My change requires a change to the documentation.
  • I have updated the documentation accordingly.
  • I've read the CONTRIBUTION guide
  • I have added unit and/or e2e tests to cover my changes.
  • All new and existing tests passed.

@k8s-ci-robot k8s-ci-robot added the cncf-cla: yes Indicates the PR's author has signed the CNCF CLA. label Nov 11, 2024
@k8s-ci-robot
Copy link
Contributor

[APPROVALNOTIFIER] This PR is NOT APPROVED

This pull-request has been approved by: anurag-rajawat
Once this PR has been reviewed and has the lgtm label, please assign rikatz 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 area/docs needs-triage Indicates an issue or PR lacks a `triage/foo` label and requires one. labels Nov 11, 2024
@k8s-ci-robot
Copy link
Contributor

Welcome @anurag-rajawat!

It looks like this is your first PR to kubernetes/ingress-nginx 🎉. Please refer to our pull request process documentation to help your PR have a smooth ride to approval.

You will be prompted by a bot to use commands during the review process. Do not be afraid to follow the prompts! It is okay to experiment. Here is the bot commands documentation.

You can also check if kubernetes/ingress-nginx has its own contribution guidelines.

You may want to refer to our testing guide if you run into trouble with your tests not passing.

If you are having difficulty getting your pull request seen, please follow the recommended escalation practices. Also, for tips and tricks in the contribution process you may want to read the Kubernetes contributor cheat sheet. We want to make sure your contribution gets all the attention it needs!

Thank you, and welcome to Kubernetes. 😃

@k8s-ci-robot k8s-ci-robot added needs-kind Indicates a PR lacks a `kind/foo` label and requires one. needs-ok-to-test Indicates a PR that requires an org member to verify it is safe to test. needs-priority labels Nov 11, 2024
@k8s-ci-robot
Copy link
Contributor

Hi @anurag-rajawat. Thanks for your PR.

I'm waiting for a kubernetes 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.

Copy link

netlify bot commented Nov 11, 2024

Deploy Preview for kubernetes-ingress-nginx canceled.

Name Link
🔨 Latest commit c00733a
🔍 Latest deploy log https://app.netlify.com/sites/kubernetes-ingress-nginx/deploys/673eadd81ca5490008db4dda

@k8s-ci-robot k8s-ci-robot added the size/S Denotes a PR that changes 10-29 lines, ignoring generated files. label Nov 11, 2024
@strongjz
Copy link
Member

Great start. Can you add an e2e test that exercises using the njs model?

@strongjz
Copy link
Member

Great start. Can you add an e2e test that exercises using the njs model?

This may have to wait till we release a new nignx base image. We do rebuild the controller in all e2e but not the nginx base.

@strongjz
Copy link
Member

/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 Nov 11, 2024
@strongjz
Copy link
Member

/kind feature
/priority backlog

@k8s-ci-robot k8s-ci-robot added kind/feature Categorizes issue or PR as related to a new feature. priority/backlog Higher priority than priority/awaiting-more-evidence. and removed needs-kind Indicates a PR lacks a `kind/foo` label and requires one. needs-priority labels Nov 11, 2024
@strongjz
Copy link
Member

We do build the nginx image, so we can add some e2e test for njs.
https://github.com/kubernetes/ingress-nginx/actions/runs/11776116543/job/32797881046#step:9:1

Copy link
Member

@Gacko Gacko left a comment

Choose a reason for hiding this comment

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

I'm not even sure if we should still add this on Ingress NGINX. @strongjz

/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 Nov 11, 2024
@anurag-rajawat
Copy link
Author

Hey @strongjz, should we proceed with further changes?

@strongjz
Copy link
Member

Hey @strongjz, should we proceed with further changes?

Let's chat after our maintainers talk tomorrow. We've got plans for things going forward.

@strongjz
Copy link
Member

Also need to rebase to get the go lint ci 0207d18

@Gacko Gacko changed the title feat: Add nginx njs dynamic module in base image NGINX: Add NJS. Nov 13, 2024
@anurag-rajawat anurag-rajawat changed the title NGINX: Add NJS. NGINX: Add NJS Nov 15, 2024
@@ -106,6 +106,9 @@ export OPENTELEMETRY_CPP_VERSION="v1.11.0"
# Check on https://github.com/open-telemetry/opentelemetry-proto
export OPENTELEMETRY_PROTO_VERSION="v1.1.0"

# http://hg.nginx.org/njs
export NGINX_NJS_VERSION="0.8.4"
Copy link
Contributor

Choose a reason for hiding this comment

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

Latest is 0.8.7

Copy link
Author

Choose a reason for hiding this comment

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

The latest one is not available at https://hg.nginx.org/njs/tags. However, if we want the latest we can build it from source.

@@ -447,6 +447,9 @@ type Configuration struct {
// MIME Types that will be compressed on-the-fly using Brotli module
BrotliTypes string `json:"brotli-types,omitempty"`

// Enables NGINX JS
EnableNJS bool `json:"enable-njs,omitempty"`
Copy link
Contributor

Choose a reason for hiding this comment

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

Let's not feature flag it now. I think we can just load the module but not do any operation.

It will help me migrating away from some openresty and C modules that are loaded just for very simple operations

@rikatz
Copy link
Contributor

rikatz commented Nov 18, 2024

/triage accepted
/priority important-soon

We need this to start removing some 3rd party modules from NGINX and some one-line openresty scripts that could be an njs script.

I think for now, only have the module but not load it nor hide it behind a flag is enough

@k8s-ci-robot k8s-ci-robot added triage/accepted Indicates an issue or PR is ready to be actively worked on. priority/important-soon Must be staffed and worked on either currently, or very soon, ideally in time for the next release. and removed needs-triage Indicates an issue or PR lacks a `triage/foo` label and requires one. labels Nov 18, 2024
@rikatz
Copy link
Contributor

rikatz commented Nov 18, 2024

/hold cancel

@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 Nov 18, 2024
@Gacko
Copy link
Member

Gacko commented Nov 18, 2024

Still we need to fix the NGINX build on main first for the v1.12 release.

/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 Nov 18, 2024
@Gacko
Copy link
Member

Gacko commented Nov 18, 2024

Also this branch is out-of-date and needs to be rebased.

@rikatz
Copy link
Contributor

rikatz commented Nov 18, 2024

@Gacko I am not following the relation here. Is main branch broken, or are you cutting 1.12 from a release branch?

What is broken? What is the status of the fix?

Comment on lines 738 to 739
## enable-njs
Enables or disables [njs](https://nginx.org/en/docs/njs/) module. _**default: false**_
Copy link
Member

Choose a reason for hiding this comment

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

Suggested change
## enable-njs
Enables or disables [njs](https://nginx.org/en/docs/njs/) module. _**default: false**_
## enable-njs
Enables or disables [NJS](https://nginx.org/en/docs/njs) module. _**default: false**_

@Gacko
Copy link
Member

Gacko commented Nov 18, 2024

Every branch is broken because we are doing an apk upgrade in the build.sh and we are building the NGINX base image for the release branches from main.

@rikatz
Copy link
Contributor

rikatz commented Nov 18, 2024

Specifically what is broken from the upgrade? Which part of the build?

@Gacko
Copy link
Member

Gacko commented Nov 18, 2024

There are compilation failures, I'm already working on this. You can see the release-cloud-build branch for it. Anyway: Please just postpone any changes to the NGINX base image until we got release v1.12 out.

Just keep in mind: What ever you change, we won't release it before v1.13 anyway as there already is a v1.12 on its way and we first need to fix this. So new features like this, cross plane or NGINX v1.27.1 are not urgent and can stay unmerged for now.

@rikatz
Copy link
Contributor

rikatz commented Nov 18, 2024

The idea is not to release on v1.12 any of crossplane or njs changes, I was more willing to not block changes that long and trying to understand what's going on the build.

I will take a look into your branch and recent cloud builds to understand what's going on

@Gacko
Copy link
Member

Gacko commented Nov 18, 2024

Of course we are not planning to release Crossplane or NJS on v1.12, but currently the NGINX base image Cloud Build is broken on all the branches and I'd like to prevent any changes to the NGINX base image before we haven't figured out what's wrong, also because we normally build the NGINX base image for all branches from the main branch. So merging anything to the main branch could possibly affect this.

Ideally we are building the NGINX base image per branch, but this is something we need to figure out via well thought release engineering and versions in the TAG file across branches.

@k8s-ci-robot k8s-ci-robot added size/XS Denotes a PR that changes 0-9 lines, ignoring generated files. and removed size/S Denotes a PR that changes 10-29 lines, ignoring generated files. labels Nov 20, 2024
Signed-off-by: Anurag Rajawat <[email protected]>
Copy link
Member

@Gacko Gacko left a comment

Choose a reason for hiding this comment

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

Requesting changes so this isn't getting merged, yet, as we are currently still working on fixing the NGINX build first.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
area/docs cncf-cla: yes Indicates the PR's author has signed the CNCF CLA. do-not-merge/hold Indicates that a PR should not merge because someone has issued a /hold command. kind/feature Categorizes issue or PR as related to a new feature. ok-to-test Indicates a non-member PR verified by an org member that is safe to test. priority/backlog Higher priority than priority/awaiting-more-evidence. priority/important-soon Must be staffed and worked on either currently, or very soon, ideally in time for the next release. size/XS Denotes a PR that changes 0-9 lines, ignoring generated files. triage/accepted Indicates an issue or PR is ready to be actively worked on.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants