Zachowywanie głównej kropki wewnątrz range
Używanie przechwyconego odwołania do korzenia w pętlach.
Zachowywanie głównej kropki wewnątrz range to bezpłatna lekcja DevOps Bootcamp na CoddyKit. To lekcja 2 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej DevOps Bootcamp, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs DevOps Bootcamp zawiera 4 lekcji w sumie.
Kropka może się zmieniać
Wewnątrz pętli range kropka przestaje oznaczać korzeń chartu i zaczyna wskazywać bieżący element. To często zaskakuje osoby piszące szablony po raz pierwszy.
Dlaczego to stanowi problem
Gdy kropka zostanie ponownie związana, wyrażenia takie jak .Values lub .Release przestają działać wewnątrz pętli, ponieważ główny kontekst nie jest już kropką.
Najpierw przechwyć korzeń
Rozwiązanie jest proste: przed pętlą należy zapisać kropkę korzenia w zmiennej. Następnie wewnątrz range można uzyskać dostęp do pierwotnego kontekstu za pośrednictwem tej zmiennej.
{{ $root := . }}Używanie zapisanego korzenia
Wewnątrz pętli każdą ścieżkę dotyczącą całego chartu należy poprowadzić przez zmienną. Należy zapisać $root.Values zamiast .Values, aby wyjść poza lokalną kropkę.
{{ range .Values.items }}
release: {{ $root.Release.Name }}
{{ end }}Lokalna kropka nadal działa
W przypadku samego elementu pętli należy nadal używać zwykłej kropki. Wewnątrz range kropka oznacza bieżący element, czyli dokładnie to, czego potrzeba.
{{ range .Values.ports }}
- port: {{ . }}
{{ end }}Łączenie elementu z korzeniem
Rzeczywiste szablony często potrzebują obu wartości jednocześnie: elementu wskazywanego przez kropkę oraz wartości chartu pochodzącej z korzenia. Przechwycenie $root pozwala odwoływać się do obu w czytelny sposób.
{{ $root := . }}
{{ range .Values.hosts }}
host: {{ . }}.{{ $root.Values.domain }}
{{ end }}Popularny wybór nazwy
W wielu chartach tę zmienną nazywa się $root lub $top, ale nazwa zależy od Państwa. Najważniejsze jest przechwycenie kropki, zanim range ponownie ją zwiąże.
range z indeksem i wartością
Forma z dwiema zmiennymi wiąże indeks i wartość bezpośrednio, dzięki czemu kropka pozostaje wolna. Mimo to przechwycenie korzenia nadal jest najbezpieczniejszym nawykiem.
{{ range $i, $v := .Values.ports }}
- {{ $i }}: {{ $v }}
{{ end }}Ta sama pułapka wewnątrz with
Blok with również ponownie wiąże kropkę z poddrzewem. Ten sam sposób przechwytywania korzenia pozwala odzyskać odwołania do wartości całego chartu.
Testowanie wyniku pętli
Należy wyrenderować chart i sprawdzić pętlę. helm template pokaże, czy w każdej iteracji wartości korzenia zostały rozwiązane zgodnie z oczekiwaniami.
helm template ./mychartPrzechwyć przed wejściem
Kolejność ma znaczenie: przypisanie $root := . należy wykonać poza pętlą. Jeśli zostanie wykonane wewnątrz range, kropka będzie już ponownie związana, więc zapisana zostanie niewłaściwa wartość.
Szybkie sprawdzenie
Wewnątrz pętli range wyrażenie {{ .Values.port }} nagle nie zwraca żadnej wartości.
Podsumowanie
Wiadomo już, że range ponownie wiąże kropkę, że $root := . zapisuje pierwotny kontekst oraz że lokalna kropka nadal oznacza element pętli. 🔁
Często zadawane pytania
Czy lekcja „Zachowywanie głównej kropki wewnątrz range” jest bezpłatna?
Tak — pełny tekst „Zachowywanie głównej kropki wewnątrz range” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu DevOps Bootcamp, przejdź na CoddyKit PRO. Kurs DevOps Bootcamp zawiera 4 lekcji w sumie.
Co nauczysz się w „Zachowywanie głównej kropki wewnątrz range”?
Używanie przechwyconego odwołania do korzenia w pętlach. Ćwiczysz DevOps Bootcamp z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.
Czy potrzebuję doświadczenia, aby zacząć DevOps Bootcamp?
Nie wymagamy żadnego doświadczenia. DevOps Bootcamp w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 2 z 4.
Ile czasu zajmuje lekcja „Zachowywanie głównej kropki wewnątrz range”?
Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.
Czy mogę pisać i uruchamiać kod w tej lekcji DevOps Bootcamp?
Tak. Każda lekcja DevOps Bootcamp zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.
Wszystkie lekcje w tym kursie
- Przypisywanie zmiennych szablonu
- Zachowywanie głównej kropki wewnątrz range
- nindent a indent w praktyce
- Debugowanie białych znaków po renderowaniu