Kubernetes YAML 파일을 Go 구조체로 역직렬화
Kubernetes YAML 파일을 Go 구조체로 역직렬화하면 Kubernetes 매니페스트를 프로그래밍 방식으로 작업할 수 있습니다. 그러나 "apps/v1beta1" 버전에 "배포" 종류가 등록되지 않음"과 같은 오류가 발생하면 실망스러울 수 있습니다.
이 문제를 해결하려면 적절한 스키마 패키지를 가져와서 디시리얼라이저가 제대로 작동하는지 확인해야 합니다. 특정 Kubernetes 개체의 유형 정보에 액세스합니다. 이 경우 "apps/v1beta1" 버전으로 배포하려면 "_ k8s.io/client-go/pkg/apis/extensions/install"을 가져와야 합니다.
<code class="go">import _ "k8s.io/client-go/pkg/apis/extensions/install"</code>
스키마가 일단 가져오면 역직렬 변환기는 "배포" 종류와 버전을 인식하고 YAML 파일을 적절하게 역직렬화할 수 있습니다. 수정된 코드:
<code class="go">package main import ( "fmt" "k8s.io/client-go/pkg/api" _ "k8s.io/client-go/pkg/api/install" _ "k8s.io/client-go/pkg/apis/extensions/install" ) var service = ` apiVersion: apps/v1beta1 kind: Deployment metadata: name: my-nginx spec: replicas: 2 template: metadata: labels: run: my-nginx spec: containers: - name: my-nginx image: nginx ports: - containerPort: 80 ` func main() { decode := api.Codecs.UniversalDeserializer().Decode obj, _, err := decode([]byte(service), nil, nil) if err != nil { panic(err) } fmt.Printf("%#v\n", obj) }</code>
이 솔루션은 다른 리소스 유형에도 적용됩니다. 예를 들어 서비스에서 유사한 오류가 발생하는 경우 "_ k8s.io/client-go/pkg/apis/core/install"을 가져옵니다.
성공적인 역직렬화를 위해서는 적절한 스키마 패키지를 가져오는 것이 중요합니다. Kubernetes YAML 파일. 이렇게 하면 YAML 매니페스트를 Go 구조체로 변환하는 데 필요한 유형 정보에 액세스할 수 있습니다.
위 내용은 Go에서 Kubernetes YAML 파일을 역직렬화할 때 \'no kind \'Deployment\' isregistered for version \'apps/v1beta1\'\' 오류를 해결하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!