mirror of
https://github.com/kubernetes-sigs/kustomize.git
synced 2026-05-18 07:45:23 +00:00
93 lines
2.4 KiB
Markdown
93 lines
2.4 KiB
Markdown
## create-setter
|
|
|
|
[Alpha] Create a custom setter for a Resource field
|
|
|
|
### Synopsis
|
|
|
|
Create a custom setter for a Resource field by inlining OpenAPI as comments.
|
|
|
|
DIR
|
|
|
|
A directory containing Resource configuration.
|
|
|
|
NAME
|
|
|
|
The name of the setter to create.
|
|
|
|
VALUE
|
|
|
|
The current value of the field, or a substring within the field.
|
|
|
|
### Creating a Custom Setter
|
|
|
|
**Given the YAML:**
|
|
|
|
# resource.yaml
|
|
apiVersion: v1
|
|
kind: Service
|
|
metadata:
|
|
...
|
|
spec:
|
|
...
|
|
ports:
|
|
...
|
|
- name: http
|
|
port: 8080
|
|
...
|
|
|
|
**Create a new setter:**
|
|
|
|
# create a setter for ports
|
|
$ kustomize cfg set create DIR/ http-port 8080 --type "integer" --field "port"
|
|
|
|
Resources fields with a field name matching `--field` and field value matching `VALUE` will
|
|
have a line comment added marking this field as settable.
|
|
|
|
**Newly modified YAML:**
|
|
|
|
# resource.yaml
|
|
apiVersion: v1
|
|
kind: Service
|
|
metadata:
|
|
...
|
|
spec:
|
|
...
|
|
ports:
|
|
...
|
|
- name: http
|
|
port: 8080 # {"type":"integer","x-kustomize":{"partialFieldSetters":[{"name":"http-port","value":"8080"}]}}
|
|
...
|
|
|
|
Setters may also be defined directly by editing the yaml and adding the comment.
|
|
|
|
Users may not set the field value using the `set` command:
|
|
|
|
# change the http-port value to 8081
|
|
$ kustomize cfg set DIR/ http-port 8081
|
|
|
|
### Using default values
|
|
|
|
The default values for a setter may be:
|
|
|
|
- valid field values (e.g. `8080` or `008080` for a port)
|
|
- invalid values that adhere to the schema (e.g. `0000` for a port)
|
|
- values that do not adhere to the schema (e.g. `[PORT]` for port)
|
|
|
|
A setter may be for a substring of a full field:
|
|
|
|
$ kustomize cfg set create DIR/ image-tag v1.0.01 --type "string" --field "image"
|
|
|
|
image: gcr.io/example/app:v1.0.1 # # {"type":"string","x-kustomize":{"partialFieldSetters":[{"name":"image-tag","value":"v1.0.1"}]}}
|
|
|
|
A single field value may have multiple setters applied to it for different parts of the field.
|
|
|
|
### Examples
|
|
|
|
# create a setter for port fields matching "8080"
|
|
kustomize cfg create-setter DIR/ port 8080 --type "integer" --field port \
|
|
--description "default port used by the app"
|
|
|
|
# create a setter for a substring of a field rather than the full field -- e.g. only the
|
|
# image tag, not the full image
|
|
kustomize cfg create-setter DIR/ image-tag v1.0.1 --type "string" \
|
|
--field image --description "current stable release" |