wcięcia, kreski yaml kubernetes

0

Witam uczę sie kubernetes yaml, i mam problem z zrozumieniem czemu w kubernetes yaml czasem pojawiają sie kreski a czasem nie przykładowo, impelemtacja deployment:
....
metadata:
name: jakieś name

containers:

  • name: jakies name

w metadata przy name nie wstawiamy kreski ale już w containers name jest kreska.
jaka ide przyświeca takiej składni, jaka jest reguła do tego ?

Pzdr
Tadeusz

5

kreski to elementy listy, a bez kresti to mapy (czy słowniki). Np

moja_lista:
  - "element1"
  - "element2"
  - "element3"
  - "element4"
moja_mapa:
  klucz1: "wartość1"
  klucz2: "wartość2"
  klucz3: "wartość3"
moja_lista_slownikow:
  - klucz: "wartość1"
  - klucz: "wartość2"
  - klucz: "wartość3"

To ostatnie to po JSONowemu:

[{"klucz": "wartość1"},{"klucz": "wartość2"},{"klucz": "wartość3"}]
2

Różnica jest taka jak między słownikiem, a listą. To nie jest specyficzne dla K8S, tylko dla YAML. Np. tu jest wytłumaczone na przykładach:
https://docs.ansible.com/ansible/latest/reference_appendices/YAMLSyntax.html

0
KamilAdam napisał(a):

kreski to elementy listy, a bez kresti to mapy (czy słowniki). Np

moja_lista:
  - "element1"
  - "element2"
  - "element3"
  - "element4"
moja_mapa:
  klucz1: "wartość1"
  klucz2: "wartość2"
  klucz3: "wartość3"
moja_lista_slownikow:
  - klucz: "wartość1"
  - klucz: "wartość2"
  - klucz: "wartość3"

To ostatnie to po JSONowemu:

[{"klucz": "wartość1"},{"klucz": "wartość2"},{"klucz": "wartość3"}]

ok kiedy wszystkie elementy listy mają kreski to jest to logiczne ale w kubernetesie
ports:
- protocol: TCP
port: 80
targetPort: 9376

  protocol ma  kreske reszta nie.

lub
pec:
containers:
- name: nginx
image: nginx
ports:

1
ports:
    - protocol: TCP
      port: 80
      targetPort: 9376

to jest jsonowy:

{
  "ports" : [{
      "protocol": "TCP",
      "port": 80,
      "targetPort": 9376
  }]
}

Czyli lista słowników :D

I teraz niech mi ktoś powie że YAML jest czytelny dla człowieka :P

0
KamilAdam napisał(a):
ports:
    - protocol: TCP
      port: 80
      targetPort: 9376

to jest jsonowy:

{
  "ports" : [{
      "protocol": "TCP",
      "port": 80,
      "targetPort": 9376
  }]
}

Czyli lista słowników :D

I teraz niech mi ktoś powie że YAML jest czytelny dla człowieka :P

jakieś jeszcze inne pomysły ?

2

I teraz niech mi ktoś powie że YAML jest czytelny dla człowieka :P

Z doku ansibla:

We use YAML because it is easier for humans to read and write than other common data formats like XML or JSON. ```
😅
0
Tadeusz_k napisał(a):

jakieś jeszcze inne pomysły ?

Tu nie ma miejsca na inne pomysły. Ale jak i nie wierzysz to wejdź np na stronę https://onlineyamltools.com/convert-yaml-to-json wklej tego yamla co masz i przekonwersuj na jsona

0
KamilAdam napisał(a):
Tadeusz_k napisał(a):

jakieś jeszcze inne pomysły ?

Tu nie ma miejsca na inne pomysły. Ale jak i nie wierzysz to wejdź np na stronę https://onlineyamltools.com/convert-yaml-to-json wklej tego yamla co masz i przekonwersuj na jsona

już ogarnąłem - kreska, myślnik oznacza poczatek tablicy - a nie że stoi przy name albo image to nie ma znaczenia "-" jest znakiem dla kubernetesa czy czegoś tam innego że zaczyna sie wartośc która jest tablicą. I teraz yaml jest przyjazny środowisku i humanosom.

1 użytkowników online, w tym zalogowanych: 0, gości: 1