feat(deploy/chart): adding hostUsers property to pods #7973
feat(deploy/chart): adding hostUsers property to pods #7973cert-manager-prow[bot] merged 4 commits intocert-manager:masterfrom
Conversation
d49a30d to
5c7c2ab
Compare
f524509 to
6339771
Compare
|
Hey @hjoshi123, thanks for taking the time to add this. I think there are 2 issues or points to discuss:
|
@hawksight yes it does make sense to use with here I think.. I can refactor the code and try to make it better. |
|
Also, I am not sure if coalesce can handle booleans, was reading the documentation to make sure and they seem to mention lists |
|
@hjoshi123 - I'll join stand up today to talk about it hopefully, you are probably right. I did a quick test in kind 1.27: ➜ cert-manager git:(feat/user-namespace-feature) ✗ k explain deployment.spec.template.spec.hostUsers
GROUP: apps
KIND: Deployment
VERSION: v1
FIELD: hostUsers <boolean>
DESCRIPTION:
Use the host's user namespace. Optional: Default to true. If set to true or
not present, the pod will be run in the host user namespace, useful for when
the pod needs a feature only available to the host user namespace, such as
loading a kernel module with CAP_SYS_MODULE. When set to false, a new userns
is created for the pod. Setting false is useful for mitigating container
breakout vulnerabilities even allowing users to run their containers as root
without actually having root privileges on the host. This field is
alpha-level and is only honored by servers that enable the
UserNamespacesSupport feature.
➜ cert-manager git:(feat/user-namespace-feature) ✗ k version
Client Version: v1.34.0
Kustomize Version: v5.7.1
Server Version: v1.27.13
Warning: version difference between client (1.34) and server (1.27) exceeds the supported minor version skew of +/-1It's confusingly worded I find:
I actually think we want to default it to false, unless someone explicitly needs it true. |
|
If we assume we want to set it to a safe default of "false", then the logic could be shorter: {{- if hasKey .Values.cainjector "hostUsers" }}
hostUsers: {{ .Values.cainjector.hostUsers }}
{{- else }}
hostUsers: {{ .Values.global.hostUsers }}
{{- end }} |
Ah yes that makes it simpler. So it is a valid field in 1.27 too then. I will make the change. Thank you @hawksight |
6339771 to
2c4f3a8
Compare
|
@hawksight changed the code.. could you take a look at it again? |
|
/release-note-edit |
|
/retest |
2c4f3a8 to
f57cb82
Compare
|
not sure why the tests are failing.. locally all tests seem to be running.. |
de7b4df to
a4401ab
Compare
|
/retest |
Ah I understand now.. so we make the field optional then i.e. not set any value at all and then add comments about the fact that its an experimental feature? I understand what you are arriving at but still confused how i would implement it 😅 |
That's a typical Helm issue. I think you need to distinguish between an unset value and the |
cbc99c8 to
0afdc2f
Compare
|
@erikgb pushed some changes according to our discussions.. the comments may not be that polished so let me know if it needs changing |
…ce-feature Signed-off-by: hjoshi123 <mail@hjoshi.me>
0afdc2f to
80e38ec
Compare
Co-authored-by: Erik Godding Boye <egboye@gmail.com> Signed-off-by: Hemant Joshi <mail2hemantjoshi@pm.me> Signed-off-by: hjoshi123 <mail@hjoshi.me>
b34d68f to
13f2ed8
Compare
erikgb
left a comment
There was a problem hiding this comment.
Thanks a lot for working on this, @hjoshi123. It's a very interesting subject, and I am glad we spent some time deciding on where to go here. Your solution looks good now, and I hope both you and @hawksight agree?
I've added a suggestion to the value docs. The last part is no longer correct, and I think the text was a bit hard to read. With a little help from ChatGPT, I put in a suggestion. Feel free to adjust.
/approve
|
@hjoshi123: The following tests failed, say
Full PR test history. Your PR dashboard. Please help us cut down on flakes by linking to an open issue when you hit one in your PR. DetailsInstructions 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. I understand the commands that are listed here. |
Co-authored-by: Erik Godding Boye <egboye@gmail.com> Signed-off-by: Hemant Joshi <mail2hemantjoshi@pm.me> Signed-off-by: hjoshi123 <mail@hjoshi.me>
a7fd37e to
caeb2d0
Compare
erikgb
left a comment
There was a problem hiding this comment.
Great work, @hjoshi123! 🚀
/lgtm
/approve
|
[APPROVALNOTIFIER] This PR is APPROVED This pull-request has been approved by: erikgb The full list of commands accepted by this bot can be found here. The pull request process is described here DetailsNeeds approval from an approver in each of these files:
Approvers can indicate their approval by writing |
|
/hold Can you update release notes, please? |
|
/unhold |
|
/release-note-edit |
This PR contains the following updates: | Package | Update | Change | |---|---|---| | [cert-manager](https://cert-manager.io) ([source](https://github.com/cert-manager/cert-manager)) | minor | `v1.18.2` -> `v1.19.0` | --- ### Release Notes <details> <summary>cert-manager/cert-manager (cert-manager)</summary> ### [`v1.19.0`](https://github.com/cert-manager/cert-manager/releases/tag/v1.19.0) [Compare Source](cert-manager/cert-manager@v1.18.2...v1.19.0) cert-manager is the easiest way to automatically manage certificates in Kubernetes and OpenShift clusters. This release focuses on expanding platform compatibility, improving deployment flexibility, enhancing observability, and addressing key reliability issues. > 📖 Read the full release notes at cert-manager.io: <https://cert-manager.io/docs/releases/release-notes/release-notes-1.19> Changes since `v1.18.0`: #### Feature - Add IPv6 rules to the default network policy ([#​7726](cert-manager/cert-manager#7726), [@​jcpunk](https://github.com/jcpunk)) - Add `global.nodeSelector` to helm chart to allow for a single `nodeSelector` to be set across all services. ([#​7818](cert-manager/cert-manager#7818), [@​StingRayZA](https://github.com/StingRayZA)) - Add a feature gate to default to Ingress `pathType` `Exact` in ACME HTTP01 Ingress challenge solvers. ([#​7795](cert-manager/cert-manager#7795), [@​sspreitzer](https://github.com/sspreitzer)) - Add generated `applyconfigurations` allowing clients to make type-safe server-side apply requests for cert-manager resources. ([#​7866](cert-manager/cert-manager#7866), [@​erikgb](https://github.com/erikgb)) - Added API defaults to issuer references group (cert-manager.io) and kind (Issuer). ([#​7414](cert-manager/cert-manager#7414), [@​erikgb](https://github.com/erikgb)) - Added `certmanager_certificate_challenge_status` Prometheus metric. ([#​7736](cert-manager/cert-manager#7736), [@​hjoshi123](https://github.com/hjoshi123)) - Added `protocol` field for `rfc2136` DNS01 provider ([#​7881](cert-manager/cert-manager#7881), [@​hjoshi123](https://github.com/hjoshi123)) - Added experimental field `hostUsers` flag to all pods. Not set by default. ([#​7973](cert-manager/cert-manager#7973), [@​hjoshi123](https://github.com/hjoshi123)) - Support configurable resource requests and limits for ACME HTTP01 solver pods through ClusterIssuer and Issuer specifications, allowing granular resource management that overrides global `--acme-http01-solver-resource-*` settings. ([#​7972](cert-manager/cert-manager#7972), [@​lunarwhite](https://github.com/lunarwhite)) - The `CAInjectorMerging` feature has been promoted to BETA and is now enabled by default ([#​8017](cert-manager/cert-manager#8017), [@​ThatsMrTalbot](https://github.com/ThatsMrTalbot)) - The controller, webhook and ca-injector now log their version and git commit on startup for easier debugging and support. ([#​8072](cert-manager/cert-manager#8072), [@​prasad89](https://github.com/prasad89)) - Updated `certificate` metrics to the collector approach. ([#​7856](cert-manager/cert-manager#7856), [@​hjoshi123](https://github.com/hjoshi123)) #### Bug or Regression - ACME: Increased challenge authorization timeout to 2 minutes to fix `error waiting for authorization` ([#​7796](cert-manager/cert-manager#7796), [@​hjoshi123](https://github.com/hjoshi123)) - BUGFIX: permitted URI domains were incorrectly used to set the excluded URI domains in the CSR's name constraints ([#​7816](cert-manager/cert-manager#7816), [@​kinolaev](https://github.com/kinolaev)) - Enforced ACME HTTP-01 solver validation to properly reject configurations when multiple ingress options (`class`, `ingressClassName`, `name`) are specified simultaneously ([#​8021](cert-manager/cert-manager#8021), [@​lunarwhite](https://github.com/lunarwhite)) - Increase maximum sizes of PEM certificates and chains which can be parsed in cert-manager, to handle leaf certificates with large numbers of DNS names or other identities ([#​7961](cert-manager/cert-manager#7961), [@​SgtCoDFish](https://github.com/SgtCoDFish)) - Reverted adding the `global.rbac.disableHTTPChallengesRole` Helm option. ([#​7836](cert-manager/cert-manager#7836), [@​inteon](https://github.com/inteon)) - This change removes the `path` label of core ACME client metrics and will require users to update their monitoring dashboards and alerting rules if using those metrics. ([#​8109](cert-manager/cert-manager#8109), [@​mladen-rusev-cyberark](https://github.com/mladen-rusev-cyberark)) - Use the latest version of `ingress-nginx` in E2E tests to ensure compatibility ([#​7792](cert-manager/cert-manager#7792), [@​wallrj](https://github.com/wallrj)) #### Other (Cleanup or Flake) - Helm: Fix naming template of `tokenrequest` RoleBinding resource to improve consistency ([#​7761](cert-manager/cert-manager#7761), [@​lunarwhite](https://github.com/lunarwhite)) - Improve error messages when certificates, CRLs or private keys fail admission due to malformed or missing PEM data ([#​7928](cert-manager/cert-manager#7928), [@​SgtCoDFish](https://github.com/SgtCoDFish)) - Major upgrade of Akamai SDK. NOTE: The new version has not been fully tested end-to-end due to the lack of cloud infrastructure. ([#​8003](cert-manager/cert-manager#8003), [@​hjoshi123](https://github.com/hjoshi123)) - Update kind images to include the Kubernetes 1.33 node image ([#​7786](cert-manager/cert-manager#7786), [@​wallrj](https://github.com/wallrj)) - Use `maps.Copy` for cleaner map handling ([#​8092](cert-manager/cert-manager#8092), [@​quantpoet](https://github.com/quantpoet)) - Vault: Migrate Vault E2E add-on tests from deprecated `vault-client-go` to the new `vault/api` client. ([#​8059](cert-manager/cert-manager#8059), [@​armagankaratosun](https://github.com/armagankaratosun)) </details> --- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR is behind base branch, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0MS4xMzUuNCIsInVwZGF0ZWRJblZlciI6IjQxLjEzNS40IiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6WyJjaGFydCJdfQ==--> Reviewed-on: https://gitea.alexlebens.dev/alexlebens/infrastructure/pulls/1711 Co-authored-by: Renovate Bot <renovate-bot@alexlebens.net> Co-committed-by: Renovate Bot <renovate-bot@alexlebens.net>
|
@hjoshi123 We have released this. Please test and feedback: https://github.com/cert-manager/cert-manager/releases/tag/v1.19.1 |
|
Adding a note here: |
Pull Request Motivation
Fixes #7885
Refer to https://kubernetes.io/blog/2025/04/25/userns-enabled-by-default/ for more context on the feature.
Kind
/kind feature
Release Note