문제:
Kubernetes YAML 파일을 Go 구조체로 역직렬화합니다.
발생한 오류:
no kind "Deployment" is registered for version "apps/v1beta1"
해결 방법:
오류를 해결하려면 필요한 Kubernetes 스키마 패키지를 가져와야 합니다. . 이는 YAML을 역직렬화할 때 고려해야 할 유형을 디코더에 지시합니다.
다음 패키지를 가져옵니다.
<code class="go">_ "k8s.io/client-go/pkg/apis/extensions/install"</code>
이유:
Kubernetes 스키마는 디코더에 자동으로 등록되지 않습니다. 설치 패키지를 가져오면 배포 리소스 유형을 포함하는 Extensions/v1beta1 API 그룹에 대한 스키마를 명시적으로 등록합니다.
전체 작업 예:
<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: extensions/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>
참고:
업데이트된 예에서 배포 리소스는 1.9 이전 Kubernetes 버전의 배포 리소스에 대한 올바른 API 그룹인 Extensions/v1beta1 API 그룹을 사용하여 정의됩니다. Kubernetes 1.9 이상의 경우 apps/v1 API 그룹을 대신 사용해야 합니다.
위 내용은 Kubernetes YAML 파일을 Go 구조체로 역직렬화하는 방법: \"no kind \'Deployment\' is listed for version \'apps/v1beta1\'\" 오류가 발생하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!