mergeOverwrite 및 dict로 깊은 병합하기
구조화된 값을 프로그래밍 방식으로 조합합니다.
mergeOverwrite 및 dict로 깊은 병합하기은(는) CoddyKit의 무료 DevOps Bootcamp 강의입니다. 이것은 4개 중 1번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 DevOps Bootcamp 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. DevOps Bootcamp 강의에는 총 4개의 강의가 포함되어 있습니다.
템플릿에서 맵 만들기
때로는 템플릿 내부에서 맵을 조합해야 합니다. dict 함수는 키와 값 쌍을 번갈아 지정해 맵을 만듭니다.
{{ $cfg := dict "level" "info" "json" true }}맵을 결합하는 이유
차트 기본값과 사용자 재정의 값이 함께 있고 이를 하나의 맵으로 결합하고 싶은 경우가 많습니다. 바로 이 작업을 merge가 수행합니다.
얕은 병합
merge 함수는 원본 맵의 키를 대상에 복사하지만, 키가 이미 있으면 대상의 값을 그대로 유지합니다.
{{ $out := merge $user $defaults }}merge는 대상을 우선합니다
merge에서는 충돌하는 키에 대해 첫 번째 인수가 우선하므로, 사용자 입력으로 기본값을 재정의해야 할 때 적합합니다.
mergeOverwrite 사용하기
mergeOverwrite 함수는 반대로 동작합니다. 나중의 원본 맵이 대상의 값을 덮어쓰므로 값을 위에 차례로 추가할 수 있습니다.
{{ $out := mergeOverwrite $defaults $user }}얕은 병합이 아닌 깊은 병합
두 도우미 함수 모두 재귀적으로 병합합니다. 중첩된 맵은 전체 하위 트리를 통째로 바꾸는 대신 키별로 결합됩니다.
변경에 대한 주의
주의하십시오. merge와 mergeOverwrite는 첫 번째 인수를 제자리에서 변경합니다. 원본을 그대로 유지해야 한다면 새 dict를 전달하십시오.
{{ $base := dict }}{{ $r := mergeOverwrite $base .Values.extra }}계층형 기본값 패턴
일반적인 패턴은 기본값 dict에서 시작한 다음 사용자 값을 위에 적용하는 것입니다. 그러면 설정되지 않은 키가 안전하게 기본값으로 대체됩니다.
{{ $merged := mergeOverwrite (dict "port" 80) .Values.service }}병합된 값 읽기
병합이 끝나면 결과를 일반적인 맵처럼 다루고, 평소처럼 dot이나 index 함수로 키를 가져올 수 있습니다.
{{ $merged.port }}결과 직렬화하기
병합된 구조를 YAML로 출력하려면 toYaml을 거치도록 파이프하고 nindent를 사용해 블록이 올바른 들여쓰기 위치에 오도록 하십시오.
{{ toYaml $merged | nindent 4 }}키 하나 골라내기
키 이름이 동적이거나 특수한 문자를 포함할 때는 dot 접근 대신 index 함수로 맵 안의 값에 접근하십시오.
{{ index $merged "log-level" }}빠른 확인
덮어쓰기 방향을 확인해 보겠습니다.
복습
맵을 만들기 위한 dict, 대상 키를 유지하는 merge, 나중의 값이 우선하도록 하는 mergeOverwrite를 배웠으며, 모두 깊은 병합을 수행한다는 것도 알아보았습니다. 🎉
자주 묻는 질문
“mergeOverwrite 및 dict로 깊은 병합하기” 강의는 무료인가요?
네 — “mergeOverwrite 및 dict로 깊은 병합하기” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 DevOps Bootcamp 강의 전체를 잠금 해제할 수 있습니다. DevOps Bootcamp 강의에는 총 4개의 강의가 포함되어 있습니다.
“mergeOverwrite 및 dict로 깊은 병합하기”에서 뭘 배우나요?
구조화된 값을 프로그래밍 방식으로 조합합니다. 브라우저에서 직접 실행하는 실습 코드로 DevOps Bootcamp을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.
DevOps Bootcamp을(를) 시작하는 데 경험이 필요한가요?
사전 경험은 필요하지 않습니다. CoddyKit의 DevOps Bootcamp은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 1번째 강의입니다.
“mergeOverwrite 및 dict로 깊은 병합하기” 강의는 얼마나 걸리나요?
대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.
이 DevOps Bootcamp 강의에서 코드를 작성하고 실행할 수 있나요?
네. 모든 DevOps Bootcamp 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.
이 강의의 모든 강의
- mergeOverwrite 및 dict로 깊은 병합하기
- tpl: 값에서 문자열 렌더링하기
- .Files.Glob에 range 적용해 파일 순회하기
- fail과 사용자 지정 유효성 검사 보호 절