gpt4 book ai didi

kubebuilder - kubebuilder脚手架中的 "domain"是什么?

转载 作者:行者123 更新时间:2023-12-05 05:40:58 26 4
gpt4 key购买 nike

kubebuilder 脚手架命令包括一个 repo 和域,例如

kubebuilder init --domain tutorial.kubebuilder.io --repo tutorial.kubebuilder.io/project

我在 kubebuilder 书中发现了以下关于“域”的文字:

domain: Store the domain of the project. This information can be provided by the user when the project is generate with the init sub-command and the domain flag.And domain: domain for groups (default "my.domain")

我理解域通常是为了设置边界以避免命名冲突,例如公司中的不同团队可以使用不同的域/子域,并可以自由选择该域/子域下的名称。但是在 kubebuilder 项目的上下文中:

  • 我们要避免哪些名称冲突?如果团队不同但仍然部署到共享集群怎么办?如果域名本身是重复的怎么办?你什么时候发现有冲突?
  • 域的功能含义是什么,例如在 CRD、API 等方面?
  • 您以后可以更改它吗?有什么问题吗?
  • 你能不能没有域,甚至没有默认域 - my.domain ?

我知道如果详细说明这些答案对于一篇文章来说可能会更长,这方面的任何指导或 Material 都会有所帮助。谢谢。

最佳答案

域是 Kubernetes“组”,如您所述,它用于命名空间和避免命名冲突。“组”连同“版本”和“种类”唯一标识 Kubernetes API 服务器知道的一种资源。

回答您的问题:

  • 您要避免的名称冲突通常是两个不同的组有一个他们想用相似名称表示的概念。通常,资源的友好名称位于“种类”字段中,例如'桶'。如果您有两个独立的存储桶概念,那么在不存在“组”的情况下,您可以调用一个 kind: AWSBucket 和另一个 kind: GCPBucket。通过群组,您可以执行以下操作:

    apiVersion: aws.amazon.com/v1
    kind: Bucket

    独立于

    apiVersion: gcp.google.com/v1
    kind: Bucket
  • 前面的点暗示了这一点。从功能上讲,'domain'/'group' 连同版本构成您针对 CRD 提供的任何资源的 apiVersion 字段,并将构成 Custom Resource Definitiongroup 字段.

  • 您可以稍后更改它。有一个明显的陷阱,其他团队可能已经在使用您的命名空间。您还需要更新和重新部署将此域用作自定义资源一部分的任何资源。实际上,从 Kubernetes 的角度来看,这也可能是一个新的 API。您将在没有此类资源的情况下重新开始,因此您需要更新并重新部署针对旧类型创建的任何资源。这可能会导致问题,尽管应该可以将这些问题作为 Controller 的一部分来处理(例如,将针对旧资源记录的任何 Controller 状态迁移到新资源)。

  • 不,不可能不定义域。如果您不提供此标志,我不确定 Kubebuilder 会做什么。但实际上,groupCustomResourceDefinition 资源上的必填字段,用于向 Kubernetes 注册自定义资源。见 the API documentation for CustomResourceDefinition

资源:

关于kubebuilder - kubebuilder脚手架中的 "domain"是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72337882/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com