登录
首页 >  Golang >  Go问答

用 kubebuilder 解释 YAML 值的字节序列

来源:stackoverflow

时间:2024-02-14 12:57:25 103浏览 收藏

从现在开始,努力学习吧!本文《用 kubebuilder 解释 YAML 值的字节序列》主要讲解了等等相关知识点,我会在golang学习网中持续更新相关的系列文章,欢迎大家关注并积极留言建议。下面就先一起来看一下本篇正文内容吧,希望能帮到你!

问题内容

我们正在使用 kubebuilder 构建自定义控制器,问题是我们无法解析原始数据,因为当您应用文件时它会变为空。

我创建了一个非常小的示例来描述该问题。

api版本:mygroup.test.com/v1alpha1

kind: Rawtest
metadata:
  name: rawtest-sample
spec:
  system:
    type: test
    provider:
      type: aws
      infrastructureConfig:
        kind: InfrastructureConfig
        apiVersion: v1alpha1
        networks:
          vpc:
            cidr: aaa
          zones:
            - name: abc
              internal: 123
      workers:
        - name: myworker
          machine:
            type: "mt"
            image:
              name: name1
              version: "2"
          maximum: 2
          minimum: 1
          maxUnavailable: 0
          volume:
            type: a1
            size: 20Gi
          zones:
            - zone1

在运行时,我能够获取 spec.system.type value=test 和 spec.system.provider.type value="aws",但是我无法获取 infrastructionconfig: 下的所有数据(第 10 行)知道如何克服这个问题吗?

我创建了这个非常简单的项目来演示这个问题, 查看 api/type 文件夹,获取协调对象后(应用 config/sample/ 文件后,您会看到 infrastructconfig 和所有相关数据

https://github.com/jennymet/

这是尝试读取原始值的代码 https://github.com/jennymet/kuberaw/blob/master/controllers/rawtest_controller.go#l57

&rawtest 应包含所有数据

请查看类型 https://github.com/jennymet/kuberaw/blob/master/api/v1alpha1/rawtest_types.go#l32

原始类型 https://github.com/gardener/gardener/blob/bf32324d9d1a366d8a0a7514956dc39c2f22f7b7/pkg/apis/core/v1beta1/types_shoot.go#l945

https://github.com/gardener/gardener/blob/bf32324d9d1a366d8a0a7514956dc39c2f22f7b7/pkg/apis/core/types_shoot.go#l774

https://github.com/gardener/gardener/blob/bf32324d9d1a366d8a0a7514956dc39c2f22f7b7/vendor/k8s.io/apimachinery/pkg/runtime/types.go#l94:6

我需要一种方法让它在 kubebuilder 中工作,因为当我应用文件时我没有在调试中获得值......

调试图片

如果缺少某些内容,请告诉我。


解决方案


我做了以下事情

  1. 访问 https://yaml.to-go.online/ 等网站,将 yaml 转换为 go Struct

  2. 创建一个结构体

    t := 自动生成{}

  3. 我假设 yaml 数据以 []byte 的形式加载到内存中

  4. 使用“gopkg.in/yaml.v2”,将 yaml 解组到结构

    err := yaml.Unmarshal([]byte(data), &t)

  5. infrastructionconfig 字段可用作 t.Spec.System.Provider.InfrastructureConfig

参见https://play.golang.org/p/syx8v7gAmDH

终于介绍完啦!小伙伴们,这篇关于《用 kubebuilder 解释 YAML 值的字节序列》的介绍应该让你收获多多了吧!欢迎大家收藏或分享给更多需要学习的朋友吧~golang学习网公众号也会发布Golang相关知识,快来关注吧!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>