iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > GO >如何在 Kubernetes API 对象中使用默认值来填充空字段?
  • 110
分享到

如何在 Kubernetes API 对象中使用默认值来填充空字段?

2024-04-04 23:04:33 110人浏览 八月长安
摘要

学习知识要善于思考,思考,再思考!今天编程网小编就给大家带来《如何在 kubernetes api 对象中使用默认值来填充空字段?》,以下内容主要包含等知识点,如果你正在学习或准备学习golang,

学习知识要善于思考,思考,再思考!今天编程网小编就给大家带来《如何在 kubernetes api 对象中使用默认值来填充空字段?》,以下内容主要包含等知识点,如果你正在学习或准备学习golang,就都不要错过本文啦~让我们一起来看看吧,能帮助到你就更好了!

问题内容

我想比较两个 kubernetes api 对象(例如 v1.podspecs):其中一个是手动创建的(预期状态),另一个是从 kubernetes api/客户端接收的(实际状态)。 问题在于,即使两个对象在语义上相等,手动创建的结构体的未指定字段的值为零,而另一个结构体具有默认值,因此两者不匹配。这意味着简单的 reflect.deepequal() 调用不足以进行比较。

例如之后:

expected := &v1.container{
    name:  "busybox",
    image: "busybox",
}

actual := getcontainerspecfromapi(...)

expected.imagepullpolicy 将是 "",而 actual.imagepullpolicy 将是 "ifnotpresent"(默认值),因此比较失败。

是否有一种惯用的方法可以将 kubernetes api 结构中的零值替换为默认值?或者是一个构造函数,它使用某个地方可用的默认值来初始化结构?

编辑: 目前,我正在对每个 k8s api 对象类型使用手写相等测试,但这对我来说似乎无法维护。我正在寻找一个简单的(一组)函数,它“知道”所有内置 kubernetes api 对象字段的默认值(可能在 k8s.io/api* 下的某个地方?)。像这样的事情:

expected = api.ApplyContainerDefaults(expected)
if !reflect.DeepEqual(expected, actual) {
    reconcile(expected, actual)
}


解决方案


有一些帮助程序可以填充默认值来代替空/零值。

例如,查看 SetObjectDefaults_Deployment 的部署。

看起来正确的调用方式是通过 (*runtime.Scheme).Default。 下面是显示总体思路的片段:

import (
    "reflect"

    appsv1 "k8s.io/api/apps/v1"
    "k8s.io/client-Go/kubernetes/scheme"
)

func compare() {
    scheme := scheme.Scheme

    // fetch the existing &appsv1.Deployment via API
    actual := ...
    expected := &appsv1.Deployment{}

    // fill in the fields to generate your expected state
    // ...

    scheme.Default(expected)
    // now you should have your empty values filled in
    if !reflect.DeepEqual(expected.Spec, actual.Spec) {
        reconcile(expected, actual)
    }
}

如果您需要不太严格的比较,例如,如果您需要容忍一些注入的容器,那么应​​该使用更宽松的东西,例如 this。

以上就是《如何在 Kubernetes API 对象中使用默认值来填充空字段?》的详细内容,更多关于的资料请关注编程网公众号!

您可能感兴趣的文档:

--结束END--

本文标题: 如何在 Kubernetes API 对象中使用默认值来填充空字段?

本文链接: https://www.lsjlt.com/news/595830.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 如何在 Kubernetes API 对象中使用默认值来填充空字段?
    学习知识要善于思考,思考,再思考!今天编程网小编就给大家带来《如何在 Kubernetes API 对象中使用默认值来填充空字段?》,以下内容主要包含等知识点,如果你正在学习或准备学习Golang,...
    99+
    2024-04-04
  • Spring boot Jpa添加对象字段使用数据库默认值操作
    目录项目搭建错误测试解决问题jpa做持久层框架,项目中数据库字段有默认值和非空约束,这样在保存对象是必须保存一个完整的对象,但在开发中我们往往只是先保存部分特殊的字段其余字段用数据库...
    99+
    2024-04-02
  • 如何在Spring Boot中利用Mybatis Plus 自动填充字段
    这篇文章将为大家详细讲解有关如何在Spring Boot中利用Mybatis Plus 自动填充字段,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。加入依赖下面就通过 MyBatis Plus...
    99+
    2023-06-09
  • 如何在ASP中使用API对象来管理Git?
    在ASP中使用API对象管理Git是一种非常方便的方法,让我们能够更加轻松地管理Git仓库。在本文中,我们将会介绍如何在ASP中使用API对象来管理Git,并且会穿插一些演示代码。 在开始之前,我们需要先了解一下Git和ASP的一些基本知识...
    99+
    2023-11-03
    api 对象 git
  • 如何在 Python 中使用二维码来填充容器?
    二维码是一种广泛使用的矩阵条码,它可以存储大量信息,并且易于扫描。在 Python 中,我们可以使用第三方库来生成二维码,并将其填充到容器中,以便在应用程序中使用。在本文中,我们将介绍如何在 Python 中使用二维码来填充容器,以及如何...
    99+
    2023-08-22
    关键字 二维码 容器
  • 如何在SASS 中使用变量的默认值
    今天就跟大家聊聊有关如何在SASS 中使用变量的默认值,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。SASS 中定义的变量,后设置的值会覆盖旧的值。$color: red;...
    99+
    2023-06-08
  • 如何在 Golang 中使用 exec.Command().Output() 命令填充结构值?
    学习知识要善于思考,思考,再思考!今天编程网小编就给大家带来《如何在 Golang 中使用 exec.Command().Output() 命令填充结构值?》,以下内容主要包含等知识点,如果你正在学...
    99+
    2024-04-04
  • python如何在函数声明中使用默认值
    小编给大家分享一下python如何在函数声明中使用默认值,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!在函数声明中使用默认值在几乎所有的Python项目中,大多数...
    99+
    2023-06-27
  • 如何在Java编程中使用对象和API?
    在Java编程中,对象和API是非常重要的概念。对象是Java中的基本编程单元,而API则提供了许多功能强大的类和方法,可以让我们更方便地编写Java程序。在本文中,我们将介绍如何在Java编程中使用对象和API。 一、什么是对象? 在Ja...
    99+
    2023-10-24
    对象 编程算法 api
  • 如何在Java中使用关键字来操作对象容器?
    Java中的关键字是为了方便开发者编写代码和操作对象而设计的。在Java中,我们可以使用关键字来操作对象容器。本文将介绍如何在Java中使用关键字来操作对象容器。 一、Java中的关键字 Java中有很多关键字,其中一些关键字可以用于操作对...
    99+
    2023-11-03
    关键字 对象 容器
  • 如何在Laravel中使用PHP来同步对象?
    Laravel是一个流行的PHP框架,它提供了许多有用的工具和功能,使得Web应用程序的开发变得更加容易和高效。其中一个重要的功能是对象同步,它允许我们在不同的应用程序之间同步数据和状态。在本文中,我们将学习如何在Laravel中使用PHP...
    99+
    2023-07-19
    laravel 同步 对象
  • 如何在Python中使用numpy对象来处理数据?
    如果你是一个Python开发者或数据科学家,你应该已经听过NumPy。NumPy是一个用Python实现的基于数组的科学计算包,它可以让你在Python中高效地进行向量和矩阵计算。在本文中,我们将介绍如何使用NumPy来处理数据。 安装N...
    99+
    2023-07-21
    数据类型 numy 对象
  • 如何在PHP中使用Git来处理数组对象?
    在PHP开发中,Git是一个非常流行的版本控制工具。它可以让开发者轻松地管理代码,协作开发和追踪代码变更。在本文中,我们将探讨如何在PHP中使用Git来处理数组对象。 Git的基础知识 在开始之前,我们需要了解Git的基础知识。Git是一个...
    99+
    2023-09-23
    git 对象 数组
  • 如何在 Laravel 中使用重定向来跟踪 Go 对象?
    Laravel 是一个流行的 PHP 框架,它提供了许多有用的功能来简化 Web 应用程序的开发。其中之一是重定向。重定向是将用户从一个 URL 重定向到另一个 URL 的过程。在本文中,我们将探讨如何在 Laravel 中使用重定向来跟踪...
    99+
    2023-08-08
    对象 重定向 laravel
  • 如何在ASP编程中使用对象来提高效率?
    ASP编程是一种广泛使用的编程语言,它可以用于开发各种不同类型的Web应用程序。在编写ASP代码时,使用对象可以大大提高效率和灵活性。本文将介绍如何在ASP编程中使用对象来提高效率。 一、什么是对象? 对象是ASP编程中的核心概念,它是一种...
    99+
    2023-11-11
    编程算法 对象 apache
  • 如何在Go中使用对象来提高代码质量?
    在Go语言中,对象是一种非常重要的编程概念。通过使用对象,我们可以提高代码的可读性和可维护性,同时也可以减少代码的重复性和错误。本文将介绍如何在Go中使用对象来提高代码质量。 一、什么是对象? 在面向对象编程中,对象是一个实例,包含数据和方...
    99+
    2023-11-10
    对象 bash npm
  • 如何在 Go 中使用接口来管理对象容器?
    Go 是一种强类型、编译型的语言,它支持面向对象编程,其中接口是 Go 中一个非常重要的概念。接口提供了一种将方法与具体类型分离的方式,从而使得代码更加灵活、可扩展和易于维护。在本文中,我们将介绍如何使用接口来管理对象容器。 接口简介 在 ...
    99+
    2023-07-03
    对象 容器 接口
  • java中使用BeanUtils.copyProperties方法对象复制同名字段类型不同赋值为空问题解析
    项目场景: 对象之间的复制,dto对象中字段类型为String,model中字段类型为BigDecimal。使用BeanUtils.copyProperties方法进行对象批量复制。 问题描述 提示:这里描述项目中遇到的问题: 使用Spr...
    99+
    2023-08-17
    java 开发语言
  • 如何在 Go 中使用 json.Marshal 外部结构并排除空字段?
    各位小伙伴们,大家好呀!看看今天我又给各位带来了什么文章?本文标题是《如何在 Go 中使用 json.Marshal 外部结构并排除空字段?》,很明显是关于Golang的文章哈哈哈,其中内容主要会涉...
    99+
    2024-04-04
  • 如何在 PHP 中使用 JavaScript 对象来操作 Apache 服务器?
    PHP 和 JavaScript 是两种不同的编程语言,但它们可以在一起使用,为我们的应用程序提供更多的功能和灵活性。在本文中,我们将介绍如何在 PHP 中使用 JavaScript 对象来操作 Apache 服务器。 Apache 服务器...
    99+
    2023-08-19
    javascript 对象 apache
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作