mirror of
https://github.com/kubernetes-sigs/kustomize.git
synced 2026-06-12 01:14:22 +00:00
add Story of yaml in configmap and json in Annotations
This commit is contained in:
@@ -341,13 +341,112 @@ metadata:
|
|||||||
|
|
||||||
#### Story 3
|
#### Story 3
|
||||||
|
|
||||||
Scenario summary: As a [end user, extension developer, ...], I want to [...]
|
Scenario summary: Replacement the value inside for yaml in the configMap.
|
||||||
<!--
|
<!--
|
||||||
A walkthrough of what it will look like for a user to take advantage of the new feature.
|
A walkthrough of what it will look like for a user to take advantage of the new feature.
|
||||||
Include the the steps the user will take and samples of the commands they'll run
|
Include the the steps the user will take and samples of the commands they'll run
|
||||||
and config they'll use.
|
and config they'll use.
|
||||||
-->
|
-->
|
||||||
|
|
||||||
|
A few applications require to use yaml format config file, and some major cloudnative applications are using that.(ex, Prometheus,AlertManager)\
|
||||||
|
A value you want to overlay in yaml is usually into a nested yaml structure. So if you can overlay value inside yaml, you won't need to copy a whole yaml file.
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
## source
|
||||||
|
apiVersion: v1
|
||||||
|
kind: ConfigMap
|
||||||
|
metadata:
|
||||||
|
name: environment-config
|
||||||
|
data:
|
||||||
|
env: dev
|
||||||
|
---
|
||||||
|
apiVersion: v1
|
||||||
|
kind: ConfigMap
|
||||||
|
metadata:
|
||||||
|
name: prometheus-config
|
||||||
|
data:
|
||||||
|
prometheus.yml: |-
|
||||||
|
global:
|
||||||
|
external_labels:
|
||||||
|
prometheus_env: TARGET_ENVIROMENT
|
||||||
|
scrape_configs:
|
||||||
|
- job_name: "prometheus"
|
||||||
|
static_configs:
|
||||||
|
- targets: ["localhost:9090"]
|
||||||
|
```
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
## replacement
|
||||||
|
replacements:
|
||||||
|
- source:
|
||||||
|
kind: ConfigMap
|
||||||
|
name: environment-config
|
||||||
|
fieldPath: data.env
|
||||||
|
targets:
|
||||||
|
- select:
|
||||||
|
kind: ConfigMap
|
||||||
|
name: prometheus-config
|
||||||
|
fieldPaths:
|
||||||
|
- prometheus\.yml
|
||||||
|
options:
|
||||||
|
format: 'yaml'
|
||||||
|
formatPath: '/global/external_labels/prometheus_env'
|
||||||
|
```
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
## expected
|
||||||
|
apiVersion: v1
|
||||||
|
kind: ConfigMap
|
||||||
|
metadata:
|
||||||
|
name: environment-config
|
||||||
|
data:
|
||||||
|
env: dev
|
||||||
|
---
|
||||||
|
apiVersion: v1
|
||||||
|
kind: ConfigMap
|
||||||
|
metadata:
|
||||||
|
name: prometheus-config
|
||||||
|
data:
|
||||||
|
prometheus.yml: |-
|
||||||
|
global:
|
||||||
|
external_labels:
|
||||||
|
prometheus_env: dev
|
||||||
|
scrape_configs:
|
||||||
|
- job_name: "prometheus"
|
||||||
|
static_configs:
|
||||||
|
- targets: ["localhost:9090"]
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Story 4
|
||||||
|
|
||||||
|
Scenario summary: Replacement the value inside for json in the annotations.
|
||||||
|
<!--
|
||||||
|
A walkthrough of what it will look like for a user to take advantage of the new feature.
|
||||||
|
Include the the steps the user will take and samples of the commands they'll run
|
||||||
|
and config they'll use.
|
||||||
|
-->
|
||||||
|
|
||||||
|
A few times, an application on your cluster requires to set json format config for the *Annotations* on kubernetes yaml resources. We need to overlay in this position value.
|
||||||
|
|
||||||
|
##### Example
|
||||||
|
```yaml
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Service
|
||||||
|
metadata:
|
||||||
|
annotations:
|
||||||
|
cloud-provider/backend-config: '{"ports": {"appA":"referrence_from_appA"}}'
|
||||||
|
spec:
|
||||||
|
ports:
|
||||||
|
- name: appA
|
||||||
|
port: 1234
|
||||||
|
protocol: TCP
|
||||||
|
targetPort: 8080
|
||||||
|
```
|
||||||
|
|
||||||
|
- https://cloud.google.com/kubernetes-engine/docs/how-to/ingress-features#unique_backendconfig_per_service_port
|
||||||
|
- https://kubernetes-sigs.github.io/aws-load-balancer-controller/v2.2/guide/ingress/annotations/#listen-ports
|
||||||
|
|
||||||
|
|
||||||
### Risks and Mitigations
|
### Risks and Mitigations
|
||||||
<!--
|
<!--
|
||||||
What are the risks of this proposal, and how do we mitigate? Think broadly.
|
What are the risks of this proposal, and how do we mitigate? Think broadly.
|
||||||
|
|||||||
Reference in New Issue
Block a user