-
Notifications
You must be signed in to change notification settings - Fork 2.3k
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
feat: support inline configurations #5657
base: master
Are you sure you want to change the base?
Conversation
Welcome @TLDMain! |
Hi @TLDMain. 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 Once the patch is verified, the new status will be reflected by the 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/test-infra repository. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Hi there, @TLDMain!
Thanks for your contribution!
This PR is referring to an old issue that was closed before it was triaged. Could you please elaborate on what is the use case you're trying to address here?
/hold
The Kubernetes project currently lacks enough contributors to adequately respond to all PRs. This bot triages PRs according to the following rules:
You can:
Please send feedback to sig-contributor-experience at kubernetes/community. /lifecycle stale |
This PR has multiple commits, and the default merge method is: merge. 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. |
Hi there, @stormqueen1990! Thanks for your feedback! This PR addresses the need to streamline kustomize configurations by allowing inlined configurations directly within the kustomization.yaml file, similar to how patches are currently handled. The use case here is to simplify the sharing and management of kustomize configurations by embedding them within a single file, eliminating the need for separate configuration files. This makes it easier to provide comprehensive and portable examples. For instance, with this change, configurations can be inlined as follows: apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
resources:
- helmrelease.yaml
configMapGenerator:
- name: helmrelease-values
files:
- values.yaml=helmrelease.values.yaml
configurations:
- |
nameReference:
- kind: ConfigMap
version: v1
fieldSpecs:
- path: spec/valuesFrom/name
kind: HelmRelease This enhancement allows users to consolidate their configurations, making it more convenient to manage and share kustomize setups. /remove-lifecycle stale |
/triage under-consideration |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This looks good to me! Thank you!
/lgtm
I'll wait for approval, still some other maintainer can also take a look.
cc: @stormqueen1990 @antoooks
[APPROVALNOTIFIER] This PR is NOT APPROVED This pull-request has been approved by: stormqueen1990, TLDMain 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 |
/remove-triage under-consideration |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Hi there, @TLDMain!
After reviewing this change, I noticed that the configurations
field was meant to explicitly only accept paths to transformer configuration files:
kustomize/api/types/kustomization.go
Lines 168 to 169 in 77354d7
// Configurations is a list of transformer configuration files | |
Configurations []string `json:"configurations,omitempty" yaml:"configurations,omitempty"` |
Accepting paths and inline configurations in the same configuration list without separate fields for each is inconsistent with how other configurations in the Kustomization API work right now -- for instance, patches
have separate fields for a file path (path
) and an inline patch (patch
):
Lines 12 to 24 in f96ac2d
type Patch struct { | |
// Path is a relative file path to the patch file. | |
Path string `json:"path,omitempty" yaml:"path,omitempty"` | |
// Patch is the content of a patch. | |
Patch string `json:"patch,omitempty" yaml:"patch,omitempty"` | |
// Target points to the resources that the patch is applied to | |
Target *Selector `json:"target,omitempty" yaml:"target,omitempty"` | |
// Options is a list of options for the patch | |
Options map[string]bool `json:"options,omitempty" yaml:"options,omitempty"` | |
} |
Could you please add a new field in the Kustomization type for these inline patches?
I suggest inlineConfigurations
as the name. The type can still be a string slice, just like the current configurations
field.
Thanks in advance!
|
Hi there, @stormqueen1990! Apologies for the incorrect analogy. I based these changes on the behavior of the transformers and generators fields, not on patches. Here's a similar PR: #3225. However, I can create a separate field if that's critical. Also, the comments for these fields are similar to those in the kustomize/api/types/kustomization.go Lines 171 to 175 in 77354d7
I'll wait for your decision. |
Hi @TLDMain I think there is a many consideration point and need take a time that add new Please add more strict check for string in |
Hi @koba1t. I suggest two options for checking: either use regex to verify that the string contains a file path, or check if the string contains multiple lines. Alternatively, you can propose your own method for checking. |
@TLDMain I have one suggestion.
|
New changes are detected. LGTM label has been removed. |
Hi. @koba1t. Thank you for the suggestion! However, this led to unexpected behavior: YAML files can be written in a single line, which caused issues with accurately interpreting the variable's content. configurations:
- '{ images: [ { kind: MyKind, path: spec/container/image } ] }' The previous approach, which attempted to parse YAML directly into a |
Relevant issue #1966