【问题标题】:kubernetes Operator-sdk test with envTest使用 envTest 进行 kubernetes Operator-sdk 测试
【发布时间】:2020-11-10 16:22:40
【问题描述】:

我是operator-sdk 的新手。现在我正在使用envtest 框架为操作员编写测试,所以我有一个用于环境的假控制平面。

在控制器协调循环中,一旦我初始化了一个 CR,控制器就会为 pod 拉取一个镜像并部署该 Pod。

上述所有行为都发生在真实的 k8s 集群中。我的问题是,在envtest environemnts 下,controller 真的会拉下镜像来部署 Pod 吗?

【问题讨论】:

    标签: kubernetes operator-sdk ginkgo


    【解决方案1】:

    这取决于envtest 配置。以下是kubebuilder book的引述:

    [envtest] 设置和启动 etcd 实例和 Kubernetes API 服务器,无需 kubelet、controller-manager 或其他组件

    除非您使用的是现有集群,否则请记住,测试上下文中没有运行任何内置控制器

    因此,如果您不将 USE_EXISTING_CLUSTER env var 设置为 true,envtest 将设置控制平面仅具有 API 服务器和 etcd。例如,如果您的控制器应该在某些事件中创建 Deployment,那么在测试环境中没有会创建 ReplicaSet 和 Pod 的部署控制器。基本上,它所做的只是将测试环境的状态存储在 etcd 中。

    【讨论】:

    • 嗨@Grigoriy Mikhalkin,在假控制平面中,我的控制器将创建一个部署。我想知道即使 envTest 中没有部署控制器,是否可以成功创建部署对象。谢谢
    • @Joe,etcd 中会有关于 Deployment 对象的条目。但是因为缺少部署控制器,所以不会有与之关联的 Pod。因此,回答您的问题“控制器是否真的为部署 Pod 下拉映像”——不,如果您的控制器仅创建部署,则测试集群中将没有 Pod。
    • 谢谢@Grigoriy Mikhalkin
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-10-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-22
    • 2019-10-01
    • 2020-07-28
    相关资源
    最近更新 更多