YAML 편집기
YAML은 Kubernetes에서 리소스를 선언적으로 정의하는 표준 형식입니다. COP Console의 YAML 편집기는 웹 기반의 코드 편집기를 제공하며, 구문 하이라이팅, 자동 들여쓰기, 오류 표시 등의 기능을 통해 효율적인 YAML 편집 경험을 제공합니다.
개요
YAML 편집기는 다음과 같은 상황에서 사용합니다.
- 새로운 Kubernetes 리소스를 YAML로 직접 생성할 때
- 기존 리소스의 YAML을 확인하고 수정할 때
- 폼 편집기에서 지원하지 않는 고급 설정을 변경할 때
- 외부에서 작성한 YAML 매니페스트를 클러스터에 적용할 때
편집 화면 구성
편집기 영역
화면의 주요 영역을 차지하는 코드 편집기입니다. YAML 내용을 입력하고 수정하는 공간으로, 줄 번호가 좌측에 표시됩니다. 편집기 내에서 마우스와 키보드를 사용하여 텍스트를 선택, 복사, 붙여넣기할 수 있습니다.
도구 모음
편집기 상단에 위치한 도구 모음에서는 다음 기능을 사용할 수 있습니다.
- Apply 버튼: 현재 YAML을 클러스터에 적용합니다.
- 폼 전환 버튼: 폼 편집기로 전환합니다 (지원되는 리소스 타입인 경우).
- Managed Fields 토글: Managed Fields 표시/숨기기를 전환합니다.
새 리소스 생성
리소스 목록 화면 상단의 + 버튼을 클릭하면 YAML 편집기가 열립니다.
빈 YAML 템플릿에서 시작
YAML 편집기가 열리면 선택한 리소스 타입에 맞는 기본 YAML 템플릿이 제공됩니다. 템플릿에는 apiVersion, kind, metadata 등 필수 필드가 미리 채워져 있으며, 사용자는 이를 기반으로 필요한 설정을 추가합니다.
예를 들어, 새 Deployment를 생성하는 경우 다음과 같은 기본 구조가 제공됩니다.
apiVersion: apps/v1
kind: Deployment
metadata:
name: my-deployment
namespace: default
spec:
replicas: 1
selector:
matchLabels:
app: my-app
template:
metadata:
labels:
app: my-app
spec:
containers:
- name: my-container
image: nginx:latest
외부 YAML 붙여넣기
다른 도구나 문서에서 작성한 YAML 매니페스트를 편집기에 직접 붙여넣어 사용할 수 있습니다. 기존 템플릿 내용을 모두 선택(Ctrl+A)한 후 외부 YAML을 붙여넣으면 됩니다.
기존 리소스 편집
기존 리소스의 상세 화면에서 편집 버튼을 클릭하면 YAML 편집기가 열립니다.
현재 YAML 로드
편집기가 열리면 클러스터에서 가져온 리소스의 현재 YAML이 자동으로 로드됩니다. 여기에는 리소스의 모든 필드가 포함되며, status 필드와 같이 서버에서 관리하는 읽기 전용 필드도 함께 표시됩니다.
수정 및 Apply
YAML 내용을 원하는 대로 수정한 후 Apply 버튼을 클릭하여 변경 사항을 클러스터에 적용합니다. Apply는 kubectl apply와 동일한 방식으로 동작하며, 변경된 필드만 서버 측에서 업데이트됩니다.
참고:
metadata.name,metadata.namespace,apiVersion,kind등 불변(Immutable) 필드는 수정할 수 없습니다. 이러한 필드를 변경하려고 하면 Apply 시 오류가 발생합니다.
구문 하이라이팅
YAML 편집기는 구문 하이라이팅을 지원하여 YAML 구조를 시각적으로 구분합니다.
- 키(Key): 볼드체 또는 강조 색상으로 표시됩니다.
- 문자열 값: 일반 텍스트 색상으로 표시됩니다.
- 숫자 값: 별도 색상으로 표시됩니다.
- 불린 값:
true/false가 별도 색상으로 표시됩니다. - 주석: 회색 또는 이탤릭체로 표시됩니다.
Managed Fields 표시/숨기기
Kubernetes 리소스의 YAML에는 metadata.managedFields 필드가 포함되어 있습니다. 이 필드는 서버 측 Apply(Server-Side Apply)에서 각 필드의 관리자 정보를 추적하는 데 사용되며, 내용이 매우 길어서 편집 시 방해가 될 수 있습니다.
YAML 편집기 도구 모음의 Managed Fields 토글을 사용하여 이 필드의 표시 여부를 전환할 수 있습니다.
- 숨기기(기본값):
managedFields필드가 YAML에서 제거되어 표시됩니다. 편집 시 핵심 설정에 집중할 수 있습니다. - 표시하기:
managedFields필드가 포함된 전체 YAML이 표시됩니다. 필드 소유권 충돌을 진단할 때 유용합니다.
참고: Managed Fields 표시/숨기기는 화면 표시만 제어하며, Apply 시에는 실제 리소스 상태에 영향을 주지 않습니다.
유효성 검증
구문 오류 감지
YAML 문법에 맞지 않는 내용이 입력되면, 해당 줄에 오류 표시가 나타납니다. 들여쓰기 오류, 잘못된 문자, 중복 키 등의 구문 오류를 사전에 감지합니다.
Apply 시 서버 측 검증
Apply 버튼을 클릭하면 Kubernetes API 서버에서 추가적인 유효성 검증이 수행됩니다. 필수 필드 누락, 잘못된 값, 스키마 불일치 등 서버 측에서 감지된 오류가 있으면 에러 메시지가 표시됩니다.
Apply 결과
Apply 버튼을 클릭하면 Kubernetes API 서버에 요청이 전송되며, 결과에 따라 다이얼로그가 표시됩니다.
성공
리소스가 성공적으로 생성되거나 수정되면 성공 메시지가 표시됩니다. 새 리소스가 생성된 경우 해당 리소스의 상세 화면으로 자동으로 이동합니다.
실패
API 서버에서 오류가 반환되면 실패 다이얼로그가 표시됩니다. 다이얼로그에는 오류의 원인을 설명하는 메시지가 포함됩니다. 주요 실패 원인은 다음과 같습니다.
- 유효성 검증 실패: 필수 필드 누락, 잘못된 값 타입, 스키마 불일치 등
- 권한 부족: 현재 사용자에게 해당 리소스를 생성/수정할 권한이 없는 경우
- 충돌(Conflict): 다른 사 용자가 동시에 같은 리소스를 수정한 경우
- 리소스 할당량 초과: 네임스페이스의 리소스 할당량을 초과한 경우
오류 메시지를 확인한 후 YAML을 수정하여 다시 Apply할 수 있습니다.