Helm: ์ค‘์ฒฉ ๋œ 'null'๊ฐ’์€ ์˜ˆ์ƒ๋Œ€๋กœ ํ‚ค๋ฅผ ์ œ๊ฑฐํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์— ๋งŒ๋“  2019๋…„ 01์›” 18์ผ  ยท  36์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: helm/helm

https://github.com/helm/helm/pull/2648์„ ์‚ฌ์šฉํ•˜๋ฉด values.yaml ํŒŒ์ผ์—์„œ null ๊ฐ’์„ ์„ค์ •ํ•˜์—ฌ ํ‚ค๋ฅผ ์‚ญ์ œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ค‘์ฒฉ ๋œ ๊ฐ’์—๋Š” ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

web:
  livenessProbe:
    httpGet: null
    exec:
      command:
      - curl
      - -f
      - http://localhost:8080/api/v1/info

์›๋ž˜ ๊ฐ’์—์„œ web.livenessProbe.httpGet ๋ฅผ ์ œ๊ฑฐํ•˜์ง€ ์•Š๊ณ  null ๊ฐ’์„ ์žฌ์ •์˜ํ•˜๊ณ  ๊ฒฝ๊ณ ๋ฅผ ์ธ์‡„ํ•ฉ๋‹ˆ๋‹ค.

2019/01/18 11:30:07 Warning: Merging destination map for chart 'concourse'. Cannot overwrite table item 'httpGet', with non table value: map[path:/api/v1/info port:atc]

์•„์ด๋Ÿฌ๋‹ˆํ•˜๊ฒŒ๋„ ์œ„๋Š” ๋ฌธ์„œ์— ์ œ๊ณต๋œ ์˜ˆ์ œ์— ๋Œ€ํ•œ ์ž‘์€ ๋ณ€ํ˜•์ด๋ฉฐ ์‹ค์ œ๋กœ ์ฃผ์žฅํ•˜๋Š” ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. https://docs.helm.sh/chart_template_guide/#deleting-a-default-key

ํ…œํ”Œ๋ฆฟ ๋ Œ๋”๋ง์ด null ๊ฐ’๊ณผ ์ง€์ •๋˜์ง€ ์•Š์€ ๊ฐ’์„ ๋งŽ์ด ๊ตฌ๋ณ„ํ•˜์ง€ ์•Š๋Š” ๊ฒƒ ๊ฐ™๊ธฐ ๋•Œ๋ฌธ์—์ด ๊ฒฝ๊ณ ๊ฐ€ ๋ฌด์‹œ๋˜๊ณ  ๋งŽ์€ ์˜ํ–ฅ์„ ๋ฏธ์น˜์ง€ ์•Š๋Š” ๊ฒƒ์œผ๋กœ ์ƒ๊ฐ๋ฉ๋‹ˆ๋‹ค.

helm version ์ถœ๋ ฅ :

Client: &version.Version{SemVer:"v2.12.1", GitCommit:"02a47c7249b1fc6d8fd3b94e6b4babf9d818144e", GitTreeState:"clean"}
Server: &version.Version{SemVer:"v2.12.1", GitCommit:"02a47c7249b1fc6d8fd3b94e6b4babf9d818144e", GitTreeState:"clean"}

kubectl version ์ถœ๋ ฅ :

Client Version: version.Info{Major:"1", Minor:"13", GitVersion:"v1.13.1", GitCommit:"eec55b9ba98609a46fee712359c7b5b365bdd920", GitTreeState:"clean", BuildDate:"2018-12-13T10:39:04Z", GoVersion:"go1.11.2", Compiler:"gc", Platform:"linux/amd64"}
Server Version: version.Info{Major:"1", Minor:"11+", GitVersion:"v1.11.5-eks-6bad6d", GitCommit:"6bad6d9c768dc0864dab48a11653aa53b5a47043", GitTreeState:"clean", BuildDate:"2018-12-06T23:13:14Z", GoVersion:"go1.10.3", Compiler:"gc", Platform:"linux/amd64"}

ํด๋ผ์šฐ๋“œ ์ œ๊ณต ์—…์ฒด / ํ”Œ๋žซํผ (AKS, GKE, Minikube ๋“ฑ) :

EKS

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

๋˜ํ•œ ํ•˜์œ„ ์ฐจํŠธ๊ฐ€ 3.2.x์™€ ํ•จ๊ป˜ requirements.yaml์— ์ข…์†์„ฑ์œผ๋กœ ๋‚˜์—ด ๋  ๋•Œ ๊ฐ’ ์žฌ์ •์˜์— ๋Œ€ํ•ด "null"์ด ์ž‘๋™ํ•˜์ง€ ์•Š๋Š” ๋ฌธ์ œ (@vbuciuc์—์„œ ์„ค๋ช…ํ•œ ๊ฒƒ๊ณผ ์œ ์‚ฌ)๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด์ „ ๋ฒ„์ „ (3.1.x)์€ ์˜ˆ์ƒ๋Œ€๋กœ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

๋ชจ๋“  36 ๋Œ“๊ธ€

@scottrigby ,

์›์ €์ž์— ๋”ฐ๋ฅด๋ฉด ์ด๊ฒƒ์ด ์‹ค์ œ๋กœ ๋ฒ„๊ทธ๋ผ๋Š” ๊ฒƒ์ด ํ™•์ธ ๋  ๋•Œ๊นŒ์ง€ ์งˆ๋ฌธ / ์ง€์›์œผ๋กœ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค.

2.12.3์—์„œ๋„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. -f์™€ --set์„ ํ†ตํ•ด ๊ฐ’์„ null๋กœ ์„ค์ •ํ•˜๋Š” ๋™์•ˆ๋ณด๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์–ด๋Š ์ชฝ์ด๋“  ๊ธฐ๋ณธ๊ฐ’์„ ์ œ๊ฑฐํ•˜์ง€ ์•Š๊ณ  ๋ฌธ์ž์—ด (๋”ฐ์˜ดํ‘œ์—†์ด)๋กœ "null"๋กœ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.
๋‚ด ์ƒํ™ฉ :

> helm get values grafana
admin:
  existingSecret: ""
chownDataImage:
  pullPolicy: null
  repository: null
  tag: null
<...>

> helm upgrade grafana stable/grafana --tls --reuse-values --set chownDataImage.pullPolicy=null
<output indicating it works>

> helm get values grafana
admin:
  existingSecret: ""
chownDataImage:
  pullPolicy: null
  repository: null
  tag: null
<...>

์‚ฌ์šฉ ์‚ฌ๋ก€๋Š” ์ด์ œ helm์— ๊ณ ์ • ๋œ ๊ธฐ๋ณธ๊ฐ’ ๋Œ€์‹  ํ…œํ”Œ๋ฆฟ์˜ ๊ธฐ๋ณธ๊ฐ’์„ ์‚ฌ์šฉํ•˜๋„๋ก ์ด๋Ÿฌํ•œ ๊ฐ’์„ ์žฌ์„ค์ •ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์•ˆ์ • / ํŒŒ์ผ ๋น„ํŠธ

null ๋˜๋Š” nil ๊ฐ™์€ ๊ฒƒ์ด ๋ณด์ž…๋‹ˆ๋‹ค ... ํ‚ค๊ฐ€ ์ œ๊ฑฐ๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค ... null/nil ๋กœ ๋ฎ์–ด ์“ฐ์—ฌ์กŒ์ง€๋งŒ ์ œ๊ฑฐ๋˜์ง€ ์•Š๊ณ  ๊ต์ฒด ํ•  ๋•Œ ๋‹ค๋ฅธ ํ‚ค๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

---values.yml in the Chart
output.file:
  path: /var/log/foo.log

```yaml
--- ๋‚ด ์žฌ์ •์˜
output.elasticsearch :
ํ˜ธ์ŠคํŠธ :
- ' http : // localhost : 9200'
output.file : null

```yaml
---my overrides
output:
  elasticsearch:
     host:
      - 'http://localhost:9200'
  file: null

๋˜๋Š”

---my overrides
output:
  elasticsearch:
     hosts:
      - 'http://localhost:9200'
output.file: null
ยป k get secret filebeat -o jsonpath="{.data.filebeat\.yml}" | base64 -D
    filebeat.config:
      modules:
        path: ${path.config}/modules.d/*.yml
        reload.enabled: false
      prospectors:
        path: ${path.config}/prospectors.d/*.yml
        reload.enabled: false
    filebeat.prospectors:
    - enabled: true
      fields:
        apenv: dev
        app: kubernetes
        log_category: kubernetes
      fields_under_root: true
      paths:
      - /var/log/*.log
      - /var/log/messages
      - /var/log/syslog
      type: log
    - containers.ids:
      - '*'
      fields:
        apenv: dev
        app: kubernetes
        log_category: kubernetes
      fields_under_root: true
      processors:
      - add_kubernetes_metadata:
          in_cluster: true
      - drop_event:
          when:
            equals:
              kubernetes.container.name: filebeat
      type: docker
    http.enabled: true
    http.port: 5066
    output:
      elasticsearch:
        hosts:
        - http://localhost9200
    output.file: null
    processors:
    - add_cloud_metadata: null

ํฌ๋“œ ์˜ค๋ฅ˜ :

Exiting: error unpacking config data: more than one namespace configured accessing 'output' (source:'filebeat.yml')

๋˜ํ•œ filebeat ์ฐจํŠธ์—์„œ์ด ์ •ํ™•ํ•œ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

@cdenneen config.output.file.enabled=false ํ•˜์—ฌ ํŠน๋ณ„ํžˆ ํŒŒ์ผ ์ถœ๋ ฅ์„ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

filebeat์— ์ƒˆ inputs ํ‚ค๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๊ณ ํ•˜์ง€๋งŒ prospectors ํ‚ค๋ฅผ ์ œ๊ฑฐ ํ•  ์ˆ˜์—†๋Š” ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค.

๊ธฐ์กด ๊ฐ’ :

config:
  filebeat.prospectors:
    - type: log
      enabled: true
      paths:
        - /var/log/*.log
        - /var/log/messages
        - /var/log/syslog

๋‚ด ์žฌ์ •์˜ : --set config.filebeat.prospectors=null

๊ฒฐ๊ณผ : (๊ตฌ์„ฑ์€ ๋น„๋ฐ€ ๊ฐ’์„ ์„ค์ •ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋จ)

filebeat:
  prospectors: null

๋˜ํ•œ stable/kibana ๋ฐ stable/filebeat ์—์„œ๋„์ด ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค. !!null ๊ฐ€ ์ง€์ •๋œ ๊ฒฝ์šฐ์—๋„ ํ‚ค๊ฐ€ ์ฐจํŠธ ๊ฐ’์œผ๋กœ ๊ธฐ๋ณธ ์„ค์ •๋ฉ๋‹ˆ๋‹ค.

@aeijdenberg ๋Š” ๊ท€ํ•˜์˜ PR์ด ๊ฒ€ํ† ๋ฅผ ์œ„ํ•ด ์—…๋ฐ์ดํŠธ ๋œ ๋ ˆ์ด๋ธ” ๋งŒ ํ•„์š”ํ•˜๋‹ค๊ณ  ๋ฏฟ์Šต๋‹ˆ๋‹ค.

์•ˆ๋…•ํ•˜์„ธ์š” @bacongobbler https://github.com/helm/helm/issues/5184#issuecomment -456138448์—์„œ ์งˆ๋ฌธ์„ ๋†“์ณค์Šต๋‹ˆ๋‹ค. ๋ฒ„๊ทธ์ธ์ง€ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. # 2648์—์„œ ๋ฌธ์„œํ™” ๋œ ์˜ˆ์ œ์™€ ์ผ์น˜ํ•˜๋Š” ํ…Œ์ŠคํŠธ๋ฅผ ์ถ”๊ฐ€ํ•ด์•ผํ–ˆ์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ์ด๊ฒƒ์œผ๋กœ ๋Œ์•„ ๊ฐ€๋ ค๊ณ ํ–ˆ์ง€๋งŒ # 5185๋Š” ์œ ๋ง ํ•ด ๋ณด์ธ๋‹ค! ๐Ÿ‘ ์‘๋‹ตํ•ฉ๋‹ˆ๋‹ค

์•ˆ๋…•ํ•˜์„ธ์š” @scottrigby . ์–ด๋–ค ๋ฆด๋ฆฌ์Šค์— # 5185 ์ˆ˜์ • ์‚ฌํ•ญ์ด ํฌํ•จ๋˜๋Š”์ง€ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? istio ์ฐจํŠธ์—์„œ ๋ฆฌ์†Œ์Šค ์ •์˜๋ฅผ ์ œ๊ฑฐํ•˜๋ ค๊ณ  ํ•  ๋•Œ์ด ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ 2.14.2์— ์žˆ์–ด์•ผํ•˜์ง€๋งŒ ์ž‘๋™ํ•˜๋„๋ก ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

๋ฌธ์ œ์˜ ๋งจ ์œ„์—์žˆ๋Š” ๊ฒƒ๊ณผ ๋งค์šฐ ์œ ์‚ฌํ•œ ์˜ˆ๋ฅผ ๋”ฐ๋ฅด๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋‚ด๊ฐ€ ๋ณผ ์ˆ˜์žˆ๋Š” ์œ ์ผํ•œ ์ฐจ์ด์ ์€ ํ•˜์œ„ ์ฐจํŠธ (์ œ ๊ฒฝ์šฐ์—๋Š” logstash)์— ์„ค์ •๋œ ๊ฐ’์„ ์‚ญ์ œํ•˜๋ ค๊ณ ํ•œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋‚˜๋Š” ์‹œ๋„ํ–ˆ๋‹ค :

  • ๊ธฐ๋ณธ ์ฐจํŠธ์˜ values.yaml ๋˜๋Š” ๋ช…๋ น ์ค„์—์„œ logstash.livenessProbe.httpGet์„ null , ~ ๋ฐ {} ๋กœ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. ๋‘ ๊ฒฝ์šฐ ๋ชจ๋‘ "helm template"์€ ์›๋ž˜ ๊ฐ’์ด ์—ฌ์ „ํžˆ ์žˆ์Œ์„ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค (์˜ˆ : httpGet ์„ค์ •์ด ๊ณ„์†๋จ). ์ด๊ฒƒ์€ "helm install"์— ๋Œ€ํ•ด ๋ณด๋Š” ๊ฒƒ๊ณผ ์ผ์น˜ํ•ฉ๋‹ˆ๋‹ค.
  • logstash.livenessProbe.httpGet์„ "nil"๋กœ ์„ค์ •-์ด ๊ฒฝ์šฐ ๊ฐ’์„ ๋ฎ์–ด ์“ฐ์ง€๋งŒ ์—ฌ๊ธฐ์„œ ์‚ฌ์šฉํ•  ์ˆ˜์žˆ๋Š” ์œ ํšจํ•œ ๊ฐ’์ด ์•„๋‹Œ ๋ฌธ์ž์—ด "nil"๋กœ ์„ค์ •๋˜๋ฏ€๋กœ kubernetes๋Š” ํ…œํ”Œ๋ฆฟ์„ ๊ฑฐ๋ถ€ํ•ฉ๋‹ˆ๋‹ค.

๋‚ด๊ฐ€ ์˜คํ•ดํ–ˆ๊ณ  ์ด๊ฒƒ์ด 2.14.2๋กœ ๋“ค์–ด ๊ฐ€์ง€ ์•Š์•˜์Šต๋‹ˆ๊นŒ? ์•„๋‹ˆ๋ฉด ์—ฌ์ „ํžˆ ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ?

(์ด๋ฅผ ๋ณด์—ฌ์ฃผ๋Š” ์ฐจํŠธ : demo.zip )

ํŒจ์น˜๋Š” ๋ฆด๋ฆฌ์Šค ๋…ธํŠธ์— ๋”ฐ๋ผ 2.14.2๋กœ ์„ ๋ณ„๋˜์—ˆ์œผ๋ฏ€๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์–ด์•ผํ•ฉ๋‹ˆ๋‹ค.

์–ด๋–ค ๊ฒฝ์šฐ์—์ด ๋ฒ„๊ทธ๊ฐ€ ์ˆ˜์ •๋˜์—ˆ๋Š”์ง€ ํ™•์‹คํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋‹ค์‹œ ์—ด์–ด์•ผํ•ฉ๋‹ˆ๊นŒ ์•„๋‹ˆ๋ฉด ์ƒˆ๋กœ์šด ๋ฌธ์ œ๊ฐ€ ์ƒ์„ฑ๋˜์–ด์•ผํ•ฉ๋‹ˆ๊นŒ? ๋‚ด๊ฐ€ ์œ„์— ์ฒจ๋ถ€ ํ•œ ์ฐจํŠธ๋ฅผ ๋‹ค๋ฅธ ์‚ฌ๋žŒ์ด๋ณด๊ณ  ๋‹ค๋ฅด๊ฒŒ ๋ณด์ด๋Š”์ง€ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

@ cc-stjm @bacongobbler-๋ฌธ์ œ๋ฅผ ์žฌํ˜„ ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ์ด ํ…Œ์ŠคํŠธ๊ฐ€์ด๋ฅผ ์ž…์ฆํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

func TestSubchartCoaleseWithNullValue(t *testing.T) {
    v, err := CoalesceValues(&chart.Chart{
        Metadata: &chart.Metadata{Name: "demo"},
        Dependencies: []*chart.Chart{
            {
                Metadata: &chart.Metadata{Name: "logstash"},
                Values: &chart.Config{
                    Raw: `livenessProbe: {httpGet: {path: "/", port: monitor}}`,
                },
            },
        },
        Values: &chart.Config{
            Raw: `logstash: {livenessProbe: {httpGet: null, exec: "/bin/true"}}`,
        },
    }, &chart.Config{})
    if err != nil {
        t.Errorf("Failed with %s", err)
    }
    result := v.AsMap()
    expected := map[string]interface{}{
        "logstash": map[string]interface{}{
            "global": map[string]interface{}{},
            "livenessProbe": map[string]interface{}{
                "exec": "/bin/true",
            },
        },
    }
    if !reflect.DeepEqual(result, expected) {
        t.Errorf("got %+v, expected %+v", result, expected)
    }
}

๋‚ด๊ฐ€ ๋งํ•  ์ˆ˜์žˆ๋Š” ํ•œ ๋ฌธ์ œ๋Š” CoalesceValues() ๊ฒฐ๊ณผ ๊ฐ’์„ ๊ฒฐํ•ฉํ•˜๋Š” ๊ธฐ๋ณธ ํ•จ์ˆ˜์— ๋Œ€ํ•œ ํ˜ธ์ถœ์ด ๋‘ ๋ฒˆ ์ด์ƒ ๋ฐœ์ƒํ•œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.
https://github.com/helm/helm/blob/e04fa72f6f211cae68c362f9b7c62f06dc51493e/pkg/chartutil/values.go#L164 -L180

์ฆ‰, ์œ„์˜ 173 ํ–‰์€ httpGet ๊ฐ€ null ์„ค์ •๋œ ์ƒํƒœ๋กœ ํ˜ธ์ถœ๋˜์ง€๋งŒ ๋ฐ˜ํ™˜๋˜๋Š” ๊ฐ’์ด์ง€๋„์—์„œ ํ•ด๋‹น ํ‚ค๋ฅผ ์‚ญ์ œํ–ˆ์Šต๋‹ˆ๋‹ค (์˜๋„ ํ•œ๋Œ€๋กœ). ๊ทธ๋Ÿฌ๋‚˜ ๊ทธ ์ถœ๋ ฅ์€ ๋‘ ๋ฒˆ์งธ ๋ณ‘ํ•ฉ ์ง‘ํ•ฉ์— ๋Œ€ํ•œ ์ž…๋ ฅ์œผ๋กœ ๋‘ ๋ฒˆ์งธ๋กœ ์ „๋‹ฌ๋˜๊ณ  (179 ํ–‰) ํ‚ค๊ฐ€ ๋” ์ด์ƒ ์กด์žฌํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ์ฐจํŠธ์˜ ๊ฐ’์œผ๋กœ ๊ธฐ๋ณธ ์„ค์ •๋ฉ๋‹ˆ๋‹ค.

์•ˆํƒ€๊น๊ฒŒ๋„ ๊ฐ€๊นŒ์šด ์žฅ๋ž˜์— ๋” ๋‚˜์•„๊ฐˆ ์‹œ๊ฐ„์ด ์—†์„ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์—ญํ• ์„ ๋ณ€๊ฒฝํ–ˆ์œผ๋ฉฐ ํ˜„์žฌ Helm์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ  ์žˆ์œผ๋ฉฐ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ๋‹ต๋ณ€์ด ๋ช…ํ™•ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์œ„์˜ ๋‚ด์šฉ์ด ํ•ด๊ฒฐ์— ๋„์›€์ด๋˜๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค.

์‚ฌ์‹ค ๋ฐฉ๊ธˆ 2.14.0 => 2.14.2๋กœ ์—…๊ทธ๋ ˆ์ด๋“œํ–ˆ์Šต๋‹ˆ๋‹ค. null ed ํ‚ค๊ฐ€ ์—ฌ์ „ํžˆ ์กด์žฌํ• ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ์ด์ „ ๊ฐ’๋„ ํฌํ•จ๋ฉ๋‹ˆ๋‹ค. ์ด์ „ ๋™์ž‘์€ ๋ฐฉ๊ธˆ null๋กœ ๋งŒ๋“ค์—ˆ์œผ๋ฏ€๋กœ ์‹ค์ œ๋กœ ํšŒ๊ท€ํ–ˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

@aeijdenberg ๋‹น์‹ ์€ ์งˆ๋ฌธ์˜ @sgillespie์— ๋ชจ์Šต์„ ๊ธฐ์˜๊ฒŒ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? ํšŒ๊ท€๊ฐ€์žˆ๋Š” ๊ฒฝ์šฐ ์ˆ˜์ • ์‚ฌํ•ญ์„ ๊ฒฐ์ •ํ•  ์ˆ˜์—†๋Š” ๊ฒฝ์šฐ PR์„ ์ œ๊ฑฐํ•˜๋Š” ๊ฒƒ์ด ๋” ์•ˆ์ „ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋„์›€์„ ์ค„ ์ˆ˜ ์—†๋‹ค๋ฉด ์ปค๋ฐ‹์„ ๋˜๋Œ๋ฆฌ๊ณ  ์ œ๊ณฑ 1๋กœ ๋Œ์•„๊ฐ€๋Š” ๊ฒƒ์ด ๋” ์•ˆ์ „ ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ง„ํ–‰ ๋ฐฉ๋ฒ•์„ ์•Œ๋ ค์ฃผ์„ธ์š”.

๋‚ด๊ฐ€ ๋ช…์‹œ ์ ์œผ๋กœ @sgillespie ๋‚œ์— ์–ธ๊ธ‰ ๋œ ํ–‰๋™๊ณผ ์ผ์น˜ํ•˜๋Š” ๊ฒƒ์„ 2.14.0 ์‹œํ—˜์— ์‘์‹œํ•˜์ง€ ์•Š์€ ๋ฐ˜๋ฉด, @bacongobbler https://github.com/helm/helm/issues/5184#issuecomment-517059748์„ . ์•ˆํƒ€๊น๊ฒŒ๋„ ๋‹จ์œ„ ํ…Œ์ŠคํŠธ๊ฐ€ ํ†ต๊ณผ ํ•œ ๊ฒฝ์šฐ๋ผ๊ณ  ์ƒ๊ฐํ•˜์ง€๋งŒ ์ข…๋‹จ ๊ฐ„ ์‹คํŒจ์ž…๋‹ˆ๋‹ค. ๊ฐœ๋ณ„ ๊ตฌ์„ฑ ์š”์†Œ๊ฐ€ ์ง๋ ฌ๋กœ ์‚ฌ์šฉ๋˜๊ธฐ ๋•Œ๋ฌธ์— ์ดˆ๊ธฐ ๋‹จ๊ณ„์—์„œ ํ‚ค๋ฅผ ์ œ๊ฑฐํ•˜๋ฉด ์ดํ›„ ๋‹จ๊ณ„์—์„œ๋Š” ํšจ๊ณผ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ์›๋ž˜ ๊ฐ’์ด ์ „๋‹ฌ๋ฉ๋‹ˆ๋‹ค).

๋‚˜๋Š” ๊ทธ๊ฒƒ์ด ํšŒ๊ท€๋ผ๋Š” ๋ฐ ๋™์˜ํ•˜์ง€๋งŒ ๊ทธ๊ฒƒ์„ ์ฒ ํšŒํ•˜๋Š” ๊ฒƒ์€ ์ƒˆ๋กœ์šด ํ–‰๋™์— ์˜์กดํ•˜๋Š” ๋ชจ๋“  ์‚ฌ๋žŒ๋“ค์—๊ฒŒ ํšŒ๊ท€์ด๊ธฐ๋„ํ•ฉ๋‹ˆ๋‹ค.

๋‚˜๋Š” # 6146์—์„œ ์˜ํ–ฅ์„ ์ค„์ผ ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜๋Š” ๋น„๊ต์  ์‚ฌ์†Œํ•œ ํŒจ์น˜๋ฅผ ๋น ๋ฅด๊ฒŒ ์ง„ํ–‰ํ–ˆ์Šต๋‹ˆ๋‹ค (๊ทธ๋ฆฌ๊ณ  ์œ„์—์„œ ์ถ”๊ฐ€ ํ•œ ํ…Œ์ŠคํŠธ๋ฅผ ์ˆ˜์ •ํ–ˆ์Šต๋‹ˆ๋‹ค). ๋งˆ์ง€๋ง‰ ์‹œ๋„์—์„œ์ด ๋ฌธ์ œ๋ฅผ ์ž˜๋ชป ์•Œ์•„์„œ ์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค.

https://github.com/helm/helm/pull/6080 ์—์„œ ์ˆ˜์ •๋˜์—ˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค

๊ทธ๋ ‡๋‹ค๋ฉด # 6146์„ ๋‹ซ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? ์•„๋‹ˆ๋ฉด ๋ณ„๋„์˜ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋ ค๊ณ ํ•ฉ๋‹ˆ๊นŒ? ๋‚˜๋Š” ์—ฌ๊ธฐ ๋ฌธ์ œ ๊ณต๊ฐ„์— ๋Œ€ํ•œ ๋‚ด ๋จธ๋ฆฌ๋ฅผ ์žก์œผ๋ ค๊ณ  ๋…ธ๋ ฅํ•˜๊ณ  ์žˆ์ง€๋งŒ ์ด๋Ÿฌํ•œ PR์ด ํ•ด๊ฒฐํ•˜๋ ค๊ณ  ์‹œ๋„ํ•˜๋Š” ๊ฒƒ์ด ๋ฌด์—‡์ธ์ง€ ๋ช…ํ™•ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ ์‹ค์ œ๋กœ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๊ฐ„๋‹จํ•œ ํ…Œ์ŠคํŠธ :

ํ•˜์œ„ ์ฐจํŠธ ๊ฐ’ :

prop:
  nested:
    val: true

์ƒ์œ„ ์ฐจํŠธ ๊ฐ’ :

sub:
  prop:
    nested: null

์˜ˆ์ƒ๋Œ€๋กœ ์ถœ๋ ฅ์€ {}

์•ˆ๋…•ํ•˜์„ธ์š”,

2.15.0 ํˆฌ๊ตฌ๋ฅผ ์‚ฌ์šฉ ์ค‘์ด๋ฉฐ ์—ฌ์ „ํžˆ์ด ๋ฌธ์ œ๋ฅผ ๋งŒ๋‚ฌ์Šต๋‹ˆ๋‹ค.

๊ฐ’์ด์žˆ๋Š” ํ•˜์œ„ ์ฐจํŠธ๊ฐ€ ์ œ๊ณต๋ฉ๋‹ˆ๋‹ค.

securityContext:
  runAsUser: 65534
  fsGroup: 65534

๊ฐ’์ด toYaml ์™€ ํ•จ๊ป˜ ์‚ฌ์šฉ๋˜๋Š” ๊ฒฝ์šฐ

๊ทธ๋ฆฌ๊ณ  ์ƒ์œ„ ์ฐจํŠธ ๊ฐ’์—์„œ :

sub:
  securityContext:
  runAsUser: null

๊ทธ๋Ÿฌ๋ฉด ์‹ค์ œ ์ถœ๋ ฅ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

securityContext:
  runAsUser: 65534
  fsGroup: 65534

๊ทธ๋žฌ์–ด ์•ผํ–ˆ์ง€๋งŒ :

securityContext:
  fsGroup: 65534

ํผ๋ ˆ์ด๋“œ์— ๋น„๋ฅผ ๋‚ด๋ฆฌ๋ ค๊ณ ํ•˜์ง€ ์•Š์ง€๋งŒ, v3.0.1 ํ‚ค๋กœ ์—ฌ์ „ํžˆ ์ด๊ฒƒ์„๋ณด๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

version.BuildInfo {๋ฒ„์ „ : "v3.0.1", GitCommit : "7c22ef9ce89e0ebeb7125ba2ebf7d421f3e82ffa", GitTreeState : "clean", GoVersion : "go1.13.4"}

์•ˆ์ • / ์ ํ™”๋ฅผ ์„ค์น˜ํ•˜๋ ค๊ณ  ํ•  ๋•Œ ๊ฐ’์„ ์„ค์ • ํ•ด์ œํ•ด์•ผํ•˜์ง€๋งŒ helm์€ ๊ฐ’์„ null / nil๋กœ ์„ค์ •ํ•˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ด๋ฏ€๋กœ ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ ๋‹จ๊ณ„์—์„œ k8s๊ฐ€ ์ค‘๋‹จ๋ฉ๋‹ˆ๋‹ค.

์žฌํ˜„ํ•˜๋ ค๋ฉด bug5184-ignite.yaml ๋กœ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค (์ฐจํŠธ์˜ ๊ธฐ๋ณธ๊ฐ’ ์ธ https://github.com/helm/charts/blob/master/stable/ignite/values.yaml์—์„œ ๊ฐ’์„ ์žฌ์ •์˜ํ•˜๋ ค๋ฉด) :

persistence:
  enabled: true   # <-- without this, the keys in question are ignored
  persistenceVolume:
    provisionerParameters:
      type: null  # <-- I want to unset this key
  walVolume:
    provisionerParameters:
      type: null  # <-- I want to unset this key

๊ทธ๋Ÿฐ ๋‹ค์Œ ignite ์„ค์น˜๋ฅผ์œ„ํ•œ ๊ฐ’ ํŒŒ์ผ๋กœ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

helm install runtimedb stable/ignite --version 1.0.1 --values bug5184-ignite.yaml --debug --dry-run | less

๋‚ด๊ฐ€ ์–ป์€ ๊ฒฐ๊ณผ๋Š”์ด ์˜ค๋ฅ˜ ๋ฉ”์‹œ์ง€๋กœ, ์„ค์ • ํ•ด์ œํ•˜๋ ค๋Š” ๊ฐ’์ด nil ๋กœ ์„ค์ •๋˜์—ˆ์Œ์„ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค.

install.go:148: [debug] Original chart version: ""
install.go:165: [debug] CHART PATH: /home/creinig/.cache/helm/repository/ignite-1.0.1.tgz

Error: unable to build kubernetes objects from release manifest: error validating "": error validating data: unknown object type "nil" in StorageClass.parameters.type
helm.go:76: [debug] error validating "": error validating data: unknown object type "nil" in StorageClass.parameters.type
helm.sh/helm/v3/pkg/kube.scrubValidationError
        /home/circleci/helm.sh/helm/pkg/kube/client.go:520
helm.sh/helm/v3/pkg/kube.(*Client).Build
        /home/circleci/helm.sh/helm/pkg/kube/client.go:135
helm.sh/helm/v3/pkg/action.(*Install).Run
        /home/circleci/helm.sh/helm/pkg/action/install.go:229
[...]

๋‚ด๊ฐ€ ์‹œ๋„ํ•œ ๊ฒƒ :

  • ๊ฐ’์„ ๋‹ค๋ฅธ ๊ฒƒ์œผ๋กœ ์„ค์ • / ์ „ํ˜€ ๋ฌด์‹œํ•˜์ง€ ์•Š์Œ

    • => ๊ณต๊ธ‰์ž๊ฐ€ ์ง€์›ํ•˜์ง€ ์•Š๋Š” ์ถ”๊ฐ€ "์œ ํ˜•"์˜ต์…˜์ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— PersistentVolumeClaim์ด "๋ณด๋ฅ˜ ์ค‘"์œผ๋กœ ๋ฉˆ ์ถฅ๋‹ˆ ๋‹ค.

    • => ํ™•์‹คํžˆ ๋ฌธ์ œ๋ฅผ ์ผ์œผํ‚ค๋Š” ๊ฐ€์น˜

  • null ๋ฅผ ํ†ตํ•ด ๊ฐ’์„ --set

    • ํŒŒ์ผ์—์„œ ์„ค์ •ํ•  ๋•Œ์™€ ๋™์ผํ•œ ๋™์ž‘

๋ช…๋ น ์ค„์„ ํ†ตํ•ด ๋‹จ์ผ ๊ฐ’์„ null ๋กœ๋งŒ ์„ค์ •ํ•˜๊ณ  ๋™์‹œ์— ์ ํ™” ์ง€์†์„ฑ์„ ๋น„ํ™œ์„ฑํ™” ํ•  ๋•Œ (์Šคํ† ๋ฆฌ์ง€ ํด๋ž˜์Šค ํ…œํ”Œ๋ฆฟ์ด ์ƒ์„ฑ๋˜์ง€ ์•Š๊ณ  ํ•ด๋‹น ๋งค๊ฐœ ๋ณ€์ˆ˜๊ฐ€ ๋ฌด์‹œ๋˜๋„๋ก) ...

helm install myignite stable/ignite --version 1.0.1 --set persistence.persistenceVolume.provisionerParameters.type=null --debug --dry-run | less

... ์˜ค๋ฅ˜ ๋Œ€์‹  ์ ์ ˆํ•œ ๋””๋ฒ„๊ทธ ์ถœ๋ ฅ์ด ์žˆ์ง€๋งŒ ๊ฐ’์ด null (๋‚ด๊ฐ€ ์ถ”๊ฐ€ ํ•œ ์ฃผ์„)๋กœ ์„ค์ •๋˜์–ด ์žˆ์Œ์„ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค.

NAME: myignite
LAST DEPLOYED: Tue Dec 10 09:43:40 2019
NAMESPACE: default
STATUS: pending-install
REVISION: 1
TEST SUITE: None
USER-SUPPLIED VALUES:
persistence:
  persistenceVolume:
    provisionerParameters:
      type: null   # <-- Set via the command line

COMPUTED VALUES:
affinity: {}
dataStorage:
  config: ""
env:
  IGNITE_QUIET: "false"
  JVM_OPTS: -Djava.net.preferIPv4Stack=true
  OPTION_LIBS: ignite-kubernetes,ignite-rest-http
fullnameOverride: ""
image:
  pullPolicy: IfNotPresent
  repository: apacheignite/ignite
  tag: 2.7.6
nameOverride: ""
nodeSelector: {}
peerClassLoadingEnabled: false
persistence:
  enabled: false
  persistenceVolume:
    provisioner: kubernetes.io/aws-ebs
    provisionerParameters:
      fsType: ext4
      type: null  # <-- Set to null instead of removed
    size: 8Gi
  walVolume:
    provisioner: kubernetes.io/aws-ebs
    provisionerParameters:
      fsType: ext4
      type: gp2  # <-- This is what the default looks like
    size: 8Gi
rbac:
  create: true
replicaCount: 2
resources: {}
serviceAccount:
  create: true
  name: null
tolerations: []

3.0.1 ์‚ฌ์šฉํ•˜์—ฌ ๋˜‘๊ฐ™์€ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค.์ด ๋ฌธ์ œ๋ฅผ ๋‹ค์‹œ ์—ฌ๋Š” ๊ฒƒ์ด ์ข‹์„๊นŒ์š”?

helm v2.16.1์—์„œ v3.0.2๋กœ ์ด๋™ ํ•œ ํ›„. ๋‚˜๋Š” annoations unsetting ๋ฐ cpu limit ์œผ๋กœ์ด ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค.

2.14.1 ๋ฐ 3.0.2 ์—์„œ์ด ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์— ๋Œ€ํ•œ ์—…๋ฐ์ดํŠธ๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ?

helm ์ฐจํŠธ๊ฐ€ ๋‹จ์ˆœํžˆ ์‚ฌ์šฉ ์ค‘์ด๊ณ  ํ…Œ์ŠคํŠธ ์ธ ๊ฒฝ์šฐ true / false์ž„์„ ์•Œ๊ณ ์žˆ๋Š” ๊ฒฝ์šฐ 0๊ณผ ๊ฐ™์€ ํ…Œ์ด๋ธ”์ด ์•„๋‹Œ ๊ฐ’์œผ๋กœ ๊ฐ’์„ ์žฌ์ •์˜ํ•ฉ๋‹ˆ๋‹ค. Overwriting table item 'x', with non table value: 0 ์™€ ๊ฐ™์€ ๋งŽ์€ ๊ฒฝ๊ณ ๊ฐ€ ํ‘œ์‹œ๋˜์ง€๋งŒ ์ ์–ด๋„ ์Šคํƒ ์ž๋ฅผ ํฌํ•จํ•˜์ง€ ์•Š์œผ๋ ค๋Š” ๊ฒฝ์šฐ์˜ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค. ๋‚ด ์„ ํ˜ธ๋Š” null์ด ์ž‘๋™ํ•˜๋Š” ๊ฒƒ์ด์ง€๋งŒ ์ด๊ฒƒ์€ ์ถ”์•…ํ•œ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค.

๊ฐ’์„ null๋กœ ์„ค์ •ํ•˜๊ณ  (๊ฐ’ ํŒŒ์ผ์— null๋กœ ๋‘์—ˆ์Šต๋‹ˆ๋‹ค) ํ˜„์žฌ๋Š” ๊ดœ์ฐฎ์€ ๊ธด ํ…Œ์ด๋ธ” ๊ฒฝ๊ณ  ๋ชฉ๋ก์„ ๋ฌด์‹œํ•˜์ง€๋งŒ ์ €์žฅ๋œ ์ด์ „ ์ž˜๋ชป๋œ ๊ฐ’์„ ํ•œ ๋ฒˆ๋งŒ ์ •๋ฆฌํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. kubernetes. ์ด ๊ฐ’ ์‚ญ์ œ ๋ฒ„๊ทธ๊ฐ€ ์ˆ˜์ • ๋  ๋•Œ๊นŒ์ง€ ๋‹ค์šด ํƒ€์ž„์—†์ด ๊ธฐ์กด ๋ฐฐํฌ์˜ ๊ฐ’์„ ์ˆ˜๋™์œผ๋กœ ํŽธ์ง‘ ํ•  ์ˆ˜์žˆ๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ์Šต๋‹ˆ๊นŒ?

liveness ๋ฐ readiness ํ”„๋กœ๋ธŒ์—์„œ ๋™์ผํ•œ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.
ํ…œํ”Œ๋ฆฟ ๊ฐ€์ด๋“œ์—์„œ ๊ธฐ๋ณธ ํ‚ค ์‚ญ์ œ ๊ฐ€ ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

# 7743์„ ์‹œ๋„ํ•ด์ฃผ์„ธ์š”. Helm 2์— ๋Œ€ํ•œ ์ปค๋ฐ‹์ด Helm 3์œผ๋กœ ํฌํŒ…๋˜์ง€ ์•Š์€ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.์ด ๋•Œ๋ฌธ์— ๋งŽ์€ ์‚ฌ์šฉ์ž๊ฐ€์ด ๋™์ž‘์„ ๋ณด๊ฒŒ ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

helm 2.16.3์—์„œ์ด ๋ฌธ์ œ๊ฐ€ ๊ณ„์† ๋ฐœ์ƒํ•˜์ง€๋งŒ requirements.yaml์ด ํ•˜์œ„ ์ฐจํŠธ๋ฅผ ์ข…์†์„ฑ์œผ๋กœ ๋‚˜์—ดํ•˜๋Š” ๊ฒฝ์šฐ์—๋งŒ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

boo๋Š” ํ•˜์œ„ ์ฐจํŠธ์ด๊ณ  foo๋Š” ์ƒ์œ„ ์ฐจํŠธ์ž…๋‹ˆ๋‹ค.

vibu@item-ax35755:~/work$ cat boo/values.yaml 
object:
  fromSubchart:
    hello: from boo
vibu@item-ax35755:~/work$ cat foo/values.yaml 
boo:
  object:
    fromParent:
      hello: from foo
    fromSubchart: null
vibu@item-ax35755:~/work$ cat boo/templates/test.yaml 
{{ toYaml .Values.object }}
vibu@item-ax35755:~/work$ cat foo/requirements.yaml 
dependencies:
- name: boo
  repository: file://../boo
  version: 0.1.0
vibu@item-ax35755:~/work/foo$ helm version -c
Client: &version.Version{SemVer:"v2.16.3", GitCommit:"1ee0254c86d4ed6887327dabed7aa7da29d7eb0d", GitTreeState:"clean"}
vibu@item-ax35755:~/work/foo$ helm dep up
Hang tight while we grab the latest from your chart repositories...
...Successfully got an update from the "incubator" chart repository
...Successfully got an update from the "stable" chart repository
Update Complete.
Saving 1 charts
Deleting outdated charts

vibu@item-ax35755:~/work/foo$ helm template .
---
# Source: foo/charts/boo/templates/test.yaml
fromParent:
  hello: from foo
fromSubchart:
  hello: from boo


vibu@item-ax35755:~/work/foo$ mv requirements.yaml{,.bak}
vibu@item-ax35755:~/work/foo$ helm template .
---
# Source: foo/charts/boo/templates/test.yaml
fromParent:
  hello: from foo

์—ฌ๊ธฐ์— ๋‘ ์ฐจํŠธ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

helm_5184.zip

@bacongobbler 2.x์—์„œ์ด ๋ฌธ์ œ๋ฅผ ์ถ”๊ฐ€๋กœ ํ•ด๊ฒฐํ•  ์˜๋„๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ?

๋˜ํ•œ ํ•˜์œ„ ์ฐจํŠธ๊ฐ€ 3.2.x์™€ ํ•จ๊ป˜ requirements.yaml์— ์ข…์†์„ฑ์œผ๋กœ ๋‚˜์—ด ๋  ๋•Œ ๊ฐ’ ์žฌ์ •์˜์— ๋Œ€ํ•ด "null"์ด ์ž‘๋™ํ•˜์ง€ ์•Š๋Š” ๋ฌธ์ œ (@vbuciuc์—์„œ ์„ค๋ช…ํ•œ ๊ฒƒ๊ณผ ์œ ์‚ฌ)๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด์ „ ๋ฒ„์ „ (3.1.x)์€ ์˜ˆ์ƒ๋Œ€๋กœ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

@bacongobbler @technosophos Helm 3.3.4 ์—์„œ๋„์ด ๋ฌธ์ œ๋ฅผ

3.1.2 ์ž‘๋™ํ–ˆ์œผ๋ฉฐ @paleg์—์„œ ์–ธ๊ธ‰ 3.2.x ์ดํ›„ ์ž‘๋™์ด ์ค‘์ง€๋˜์—ˆ์Œ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ˜„์žฌ ๋กœ์„œ๋Š” @ tuzla0autopilot4 ์˜ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์œผ๋กœ false ์™€ ๊ฐ™์€ ๋น„๋งต ๊ฐ’์œผ๋กœ ์„ค์ •ํ•˜๋ฉด ์˜๋„ ํ•œ ๋™์ž‘์ด ์ƒ์„ฑ๋˜์ง€๋งŒ ์™„๋ฃŒ๋˜๋ฉด ์ถœ๋ ฅ ๊ฒฝ๊ณ ๊ฐ€ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

@ Chili-Man, ๋ฐฉ๊ธˆ 3.1.3 ์‹œ๋„ํ–ˆ์ง€๋งŒ ์ž‘๋™ํ•˜์ง€ ์•Š๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. null ๋˜์ง€๋งŒ ๊ฒฝ๊ณ ๊ฐ€ ํ‘œ์‹œ๋˜๊ณ  ์•„๋ฌด ์ž‘์—…๋„ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ๊ฒƒ ( false , 0 , [] )์€ (์˜ˆ :)

```coalesce.go : 196 : ๊ฒฝ๊ณ  : ์ž์›์— ๋Œ€ํ•œ ํ…Œ์ด๋ธ”์ด ์•„๋‹Œ ํ…Œ์ด๋ธ”์„ ๋ฎ์–ด ์“ธ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค (map [requests : map [cpu : 250m memory : 256Mi]]).
์˜ค๋ฅ˜ : UPGRADE FAILED : ๊ฐ’์ด ๋‹ค์Œ ์ฐจํŠธ์˜ ์Šคํ‚ค๋งˆ ์‚ฌ์–‘์„ ์ถฉ์กฑํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
postgresql :

  • ์ž์› : ์œ ํšจํ•˜์ง€ ์•Š์€ ์œ ํ˜•. ์˜ˆ์ƒ : ๊ฐ์ฒด, ์ฃผ์–ด์ง„ : ๋ถ€์šธ
    `` (or what the type that I try that is not a dict/hash). With 3.3.4 I get just silence and it does nothing with null` ๋ฐ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ๋‹ค๋ฅธ ๋ชจ๋“  ํ•ญ๋ชฉ๋„ ์ ์šฉ์„ ๊ฑฐ๋ถ€ํ•ฉ๋‹ˆ๋‹ค. ๊ฐ€์žฅ ์งœ์ฆ๋‚˜๋Š” ...

3.4.2์—์„œ๋„ ์—ฌ์ „ํžˆ์ด ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

์ด ๋ฌธ์ œ๋Š” 3.4.2์—๋„ ์—ฌ์ „ํžˆ ์กด์žฌํ•˜์ง€๋งŒ ํŠน์ • ์ƒํ™ฉ์—์„œ๋งŒ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.
์—ฌ๋Ÿฌ ํ•˜์œ„ ์ฐจํŠธ๊ฐ€์žˆ๋Š” ์ฐจํŠธ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.
ํ•˜์œ„ ์ฐจํŠธ ๊ฐ’์— ๊ธฐ๋ณธ๊ฐ’์„ ๋„ฃ์„ ๋•Œ null ์žฌ์ •์˜๊ฐ€ ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋™์ผํ•œ ๊ฐ’์„ ์ƒ์œ„ ์ฐจํŠธ ๊ฐ’์œผ๋กœ ์ด๋™ํ•˜๋ฉด ์˜ˆ์ƒ๋Œ€๋กœ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.
์ด๊ฒƒ์€ ํ•˜์œ„ ์ฐจํŠธ๋กœ๋งŒ ์žฌํ˜„ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹จ์ผ (ํ‰๋ฉด) ์ฐจํŠธ์— ๋„ฃ์œผ๋ฉด ๋ชจ๋“  ๊ฒƒ์ด ์ž˜ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

ํ•˜์œ„ ์ฐจํŠธ๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ 3.4.2์—์„œ ๋™์ผํ•œ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค (์œ„์˜ @BohdanKalytka์—์„œ ์„ค๋ช…ํ•œ๋Œ€๋กœ).
์ œ ๊ฒฝ์šฐ์—๋Š” OpenShift ํด๋Ÿฌ์Šคํ„ฐ์—์„œ ElasticSearch helm ์ฐจํŠธ ๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ securityContext๋ฅผ ๋ฎ์–ด ์“ฐ๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.
์ด ๋ฌธ์ œ๊ฐ€ ๋‹ค์‹œ ์—ด๋ฆฌ๋‚˜์š”? ์•„๋‹ˆ๋ฉด ์ƒˆ ๋ฌธ์ œ๋ฅผ ๋งŒ๋“ค์–ด์•ผํ•ฉ๋‹ˆ๊นŒ?

์ œ๊ธฐ # 9136

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰