Google Cloud 및 Kubernetes YAML 작업

Cloud Code는 구조 및 유효한 값 모두에 대한 스키마를 린트하고 자세한 오류를 제공하여 Kubernetes 및 Cloud Build 구성을 쉽게 만들 수 있도록 설계되어 있습니다. 일반 스키마, 스마트 완성, 마우스를 가져가면 열리는 문서 등 바로 사용할 수 있는 솔루션이 Cloud Code에 함께 제공됩니다.

지원되는 YAML 구성 파일

또한 Cloud Code는 Kubeflow와 같이 즉시 구성 가능한 인기 있는 Kubernetes 커스텀 리소스 정의(CRD)를 지원합니다.

커스텀 스키마 사용

Cloud Code를 사용하면 settings.json 파일의 cloudcode.yaml.crdSchemaLocations 설정을 자체 CRD 스키마에 제공할 수 있습니다. 로컬 파일 또는 URL을 가리킬 수 있습니다. github.com을 가리키는 URL은 자동으로 raw.githubusercontent.com으로 변환됩니다.

클러스터에서 스키마 가져오기

Kubernetes 탐색기에서 Kubernetes v1.16 이상을 실행하는 클러스터로 전환하면 Cloud Code는 설치된 모든 CRD의 스키마를 자동으로 가져옵니다.

스니펫으로 구성

일반 YAML 스키마에 바로 사용할 수 있는 스니펫(옵션을 보려면 Command/Ctrl+Space 사용)으로 권장사항을 따르면서 손쉽게 새로운 YAML 파일을 시작하거나 오류 없이 기존 YAML 파일에 추가할 수 있습니다. Cloud Code를 사용하면 반복 필드 작업이 쉬워집니다. 필드 하나를 입력하면 Cloud Code가 나머지 인스턴스를 채워줍니다.

반복되는 필드에 스니펫 사용

Cloud Code는 다음 스니펫을 제공합니다.

  • Anthos Config Management - Cluster
  • Anthos Config Management - Cluster Selector
  • Anthos Config Management - Config Management
  • Anthos Config Management - Namespace Selector
  • Cloud Build - Cloud Run deployment
  • Cloud Build - Docker container build
  • Cloud Build - GKE deployment
  • Cloud Build - GKE Skaffold deployment
  • Cloud Build - Go build
  • Cloud Build - Terraform plan + apply
  • Config Connector - BigQueryDataset
  • Config Connector - BigQueryTable
  • Config Connector - BigtableCluster
  • Config Connector - BigtableInstance
  • Config Connector - PubSubSubscription
  • Config Connector - PubSubTopic
  • Config Connector - RedisInstance
  • Config Connector - SpannerInstance
  • Kubernetes - ConfigMap
  • Kubernetes - Deployment
  • Kubernetes - Ingress
  • Kubernetes - Pod
  • Kubernetes - Secret
  • Kubernetes - Service
  • Migrate for Anthos - Export
  • Migrate for Anthos - PersistentVolumeClaim
  • Migrate for Anthos - StatefulSet
  • Skaffold - Bazel
  • Skaffold - Getting-started
  • Skaffold - Helm deployment
  • Skaffold - Kaniko

Skaffold 파일 동기화 및 핫 리로드(Hot reloading) 사용 설정

Skaffold는 로컬 개발 워크플로의 효율성을 높이고 pod를 다시 빌드, 재배포, 다시 시작할 필요가 없도록 변경된 파일을 배포된 컨테이너에 복사하는 기능을 지원합니다. 즉, 정적 및 소스 코드 파일을 변경하면 몇 초 만에 변경사항이 적용되며 신속한 피드백 루프가 발생합니다.

정적 파일(예: HTML 및 CSS 파일)의 경우 이 파일 복사 동작을 파일 동기화라고 합니다.

소스 코드 파일의 경우 이 동작을 핫 리로드(Hot reloading)라고 하며 다음 파일 유형을 지원합니다.

  • Go: *.go
  • 자바: *.java, *.kt, *.scala, *.groovy, *.clj
  • NodeJS: *.js, *.mjs, *.coffee, *.litcoffee, *.json

핫 리로드를 구성하면 Skaffold는 지원되는 파일의 변경사항을 감지하고 이러한 변경사항을 클러스터에서 실행 중인 컨테이너와 동기화합니다. 핫 리로드를 지원하지 않는 파일 유형 변경사항은 이미지 다시 빌드 및 Pod 다시 시작을 트리거합니다.

기본 빌더로 Buildpacks를 사용하면 자동 파일 동기화와 핫 리로드는 기본적으로 사용 설정됩니다. Docker와 같은 다른 빌더의 경우 맞춤설정할 아티팩트에 skaffold.yaml에서 sync 섹션을 지정할 수 있습니다.

동기화 설정은 다음 중 하나일 수 있습니다(선호도 순서).

  • auto(Jib 및 Buildpacks 아티팩트에만 해당합니다. Buildpacks에 지정되지 않은 경우 기본값입니다.)
  • infer
  • manual

skaffold.yaml 파일에서 다음 샘플 sync 섹션은 모든 /static-html HTML 파일을 컨테이너의 static 폴더에 동기화하기 위해 manual 동기화를 지정합니다.

build:
  artifacts:
    - image: gcr.io/k8s-skaffold/node-example
      context: node
      sync:
        manual:
          - src: 'static-html/*.html'
            dest: static

파일 동기화 및 동기화 규칙 지정에 대한 자세한 내용은 파일 동기화에 대한 Skaffold 가이드를 참조하세요.

컨텍스트 완성

현재 스키마에 따라 Cloud Code는 상황별 완료와 적합한 옵션을 선택하는 데 유용한 관련 문서를 제공합니다.

Kubernetes 스키마의 컨텍스트 완성

YAML 스키마 검사

Cloud Code는 YAML 파일의 잘못된 태그와 값을 표시하고 가능한 경우 수정을 제안하여 스키마 유효성 검사 지원을 제공합니다.

잘못된 값 '1234'를 강조표시하기 위해 빨간색으로 밑줄 표시된 이름 필드 값으로 마우스를 가져가면 다음 텍스트가 표시됩니다. '잘못된 유형. 예상 문자열.'

마우스를 가져가면 열리는 문서

스키마의 값에 마우스를 가져가면 Cloud Code에서 관련 문서가 표시됩니다.

스키마에 마우스를 가져가 문서 정보 표시

리소스 정의 액세스

정의로 이동 또는 정의 미리보기를 마우스 오른쪽 버튼으로 클릭하고 선택하여 리소스에 대한 정의를 빠르게 확인합니다.

스키마에서 마우스 오른쪽 버튼을 클릭하여 정의 정보 표시

YAML 파일 적용

현재 파일을 사용하여 구성 변경사항을 적용하려면 명령어 팔레트(관리 메뉴 관리 아이콘에서 액세스 가능)에서 Cloud Code: 현재 JSON/YAML 파일을 Kubernetes 배포 리소스에 적용을 실행할 수 있습니다.

이 명령어는 변경사항을 검토할 수 있는 차이점 뷰를 표시합니다. 변경사항을 적용할 것인지 묻는 확인 창이 표시되면 적용을 클릭합니다. 그러면 kubectl apply -f가 실행됩니다.

YAML 파일 간 비교

소스 컨트롤의 YAML 파일과 배포된 YAML 파일 간의 차이점을 보려면 명령어 팔레트에서(관리관리 아이콘 메뉴에서 액세스 가능) Cloud Code: Diff the current JSON/YAML file with Kubernetes deployed resource 명령어를 사용하면 됩니다. 그러면 두 스키마 파일을 비교하고 대조할 수 있는 차이점 뷰가 나타납니다.

Kubernetes 스키마의 차이점 뷰

YAML 파일의 테스트 실행 수행

구성의 테스트 실행을 수행하고 유효성을 검증하려면 명령어 팔레트에서(관리 메뉴관리 아이콘에서 액세스 가능) Cloud Code: Dry-run current config for server-side validationCloud Code: Dry-run current config for client-side validation 명령어를 사용하면 됩니다.

명령어 팔레트에 나열된 명령어 테스트 실행 및 서버 측 유효성 검사에 대해 현재 구성 테스트 실행 선택됨

그러면 kubectl apply -f dry-run=server(클라이언트 옵션의 경우 kubectl apply -f dry-run=client)가 실행되며 유효성 검사가 성공하면(또는 구성 파일이 유효하지 않은 경우 오류 메시지) 토스트 메시지가 표시됩니다.

다음 예시에서 구성 파일 hello.deployment.yaml의 서버 측 테스트 실행 유효성 검사는 지정된 네임스페이스인 random-namespace가 없으므로 배포를 만들려는 경우 오류를 반환합니다.

토스트로 표시되는 오류 메시지와 함께 `hello.deployment.yaml`에서 서버 측 테스트 실행 검증이 실패합니다. 오류 세부정보는 출력 채널에 표시됩니다. 'random-namespace' 네임스페이스가 존재하지 않습니다.

보안 비밀 작업

구성 맵과 보안 비밀의 사용은 Kubernetes 작업에서 중요한 부분입니다. Cloud Code에서 Base64 보안 비밀의 컨텍스트를 보려면 보안 비밀 위로 마우스를 가져가 디코딩합니다.

Cloud Code에서 마우스를 가져가 보안 비밀 디코딩

지원 받기

의견을 보내려면 GitHub에서 문제를 신고하거나 Stack Overflow에서 질문하세요.