Kyverno CLI를 사용하여 k8s 매니페스트의 유효성을 검사하는 방법은 무엇입니까?

이전 기사에서 우리는 Kyverno가 무엇인지, 기능, 사용 사례 및 작동하는 방법을 살펴보았습니다. 이 기사에서는 로컬 컴퓨터에 kyverno cli를 설치하고 사용 사례를 살펴봅니다.

Kyverno CLI 설치


  • Kyverno CLI는 리소스를 클러스터에 추가하기 전에 리소스에 대한 정책 동작을 검증하고 테스트하도록 설계되었습니다.
  • 매니페스트를 배포하기 전에 검증하기 위해 CI/CD 파이프라인에서 사용됩니다.
  • 사전 커밋 후크에 통합 가능

  • Krew를 통해 Kyverno CLI 설치



    Krew는 kubectl 명령줄 도구의 플러그인 관리자입니다. 아직 krew를 설치하지 않은 경우 지침 --> https://krew.sigs.k8s.io/docs/user-guide/setup/install/을 따르십시오.

    # Install Kyverno CLI using kubectl krew plugin manager
    kubectl krew install kyverno
    
    # test the Kyverno CLI
    kubectl kyverno version  
    


    Brew를 통해 Kyverno CLI 설치(MacOS)




    # Install Kyverno CLI using brew
    brew install kyverno
    
    # test the Kyverno CLI
    kyverno version 
    


    Kyverno CLI 명령어



    적용하다


  • 지정된 매니페스트에 대해 하나 이상의 정책에 대해 테스트 실행을 수행합니다
  • .
  • 변경 정책을 실행하고 변경된 리소스를 출력으로 표시합니다.

  • kyverno apply /path/to/policy.yaml --resource /path/to/resource.yaml
    


    테스트


  • git repo 또는 로컬 디렉토리에서 정책을 테스트합니다
  • .
  • 디렉터리에서 재귀적으로 YAML 파일을 찾고 테스트를 실행함
  • kyverno 테스트 정의는 테스트 이름, 정책, 리소스 및 예상 결과로 구성됩니다.

  • 예제 테스트는 다음과 같습니다.

    name: disallow_latest_tag
    policies:
      - policy.yaml
    resources:
      - resource.yaml
    results:
      - policy: disallow-latest-tag
        rule: require-image-tag
        resource: myapp-pod
        kind: Pod
        result: pass
      - policy: disallow-latest-tag
        rule: validate-image-tag
        resource: myapp-pod
        kind: Pod
        result: pass
    
    


    테스트를 실행하려면

    kyverno test /path/to/yamls
    


    확인


  • 정책이 구문상 유효한지 확인합니다.
  • 은 여러 정책 리소스 설명 파일 또는 정책 리소스 설명 파일이 포함된 폴더의 유효성을 검사할 수 있습니다.

  • kyverno validate /path/to/policy1.yaml /path/to/policy2.yaml /path/to/folderFullOfPolicies
    
    


    Jp



    Kyverno CLI는 JMESPath 및 표현식과 함께 작동하는 유틸리티jp도 제공합니다.

    $ echo '{"foo": "BAR"}' | kyverno jp 'to_lower(foo)'
    "bar"
    



    $ cat pod.json
    {
      "apiVersion": "v1",
      "kind": "Pod",
      "metadata": {
        "name": "mypod",
        "namespace": "foo"
      },
      "spec": {
        "containers": [
          {
            "name": "busybox",
            "image": "busybox"
          }
        ]
      }
    }
    
    $ kyverno jp -f pod.json 'spec.containers[0].name' -u
    busybox
    


    Kyverno 사전 커밋 후크



    Kyverno는 사전 커밋 후크에 통합되어 정책을 테스트하고 검증할 수 있습니다. 사전 커밋 후크를 설정하려면 체크아웃 -> https://github.com/kyverno/pre-commit-hook

    .pre-commit-config.yaml

    repos:
      - repo: https://github.com/kyverno/pre-commit-hook
        rev: v1.0.0
        hooks:
          - id: kyverno-test
            args: ["kyverno-policies"]
          - id: kyverno-validate
            args: ["kyverno-policies"]
    


    If you like this article, subscribe to the newsletter and Connect with me on to get updates on my future articles. ✅

    좋은 웹페이지 즐겨찾기