Kubernetes 操作员向控制器传递ConfigMap或Secret的最佳实践

Kubernetes 操作员向控制器传递ConfigMap或Secret的最佳实践,kubernetes,kubernetes-custom-resources,operator-sdk,Kubernetes,Kubernetes Custom Resources,Operator Sdk,目前,我是newie,正在从事K8s Operator sdk的工作。我有一个用于初始化部署对象的协调控制器,该部署需要configmap和机密资源。比如 Volumes: []corev1.Volume{ { Name: "configmap-volume", VolumeSo

目前,我是newie,正在从事K8s Operator sdk的工作。我有一个用于初始化部署对象的协调控制器,该部署需要configmap和机密资源。比如

                    Volumes: []corev1.Volume{
                        {
                            Name: "configmap-volume",
                            VolumeSource: corev1.VolumeSource{
                                ConfigMap: &corev1.ConfigMapVolumeSource{
                                    LocalObjectReference: corev1.LocalObjectReference{
                                        Name: "configmap_name",
                                    },
                                },
                            },
                        },
                    },
                    ImagePullSecrets: []corev1.LocalObjectReference{
                        {
                            Name: "pull-image-credential",
                        },
                    },
我想知道如何将configmap和机密资源传递给控制器。我认为可能有两种选择:

  • 方法1:我在advanced中创建configmap对象和secret对象,然后我将它们的名称放入CRD中,然后ReconcileController将接收configmap/secret名称,并可以访问configmap对象和secret对象

  • 方法2:我将configmap/secret原始数据放在磁盘上,在ReconcileController中读取configmap/secret数据,并使用K8s API动态生成configmap/secret对象,然后我的部署可以访问它们。对于这种方法,我觉得ReconcileControl是一个正在运行的循环,虽然我希望configmap/secret可以生成一次,但我不确定它是否可行

我认为这是一个非常常见的情况,但我不知道什么是最好的做法


我很欣赏你的想法和观点。

当你在方法2中说“在磁盘上”时,数据会在哪里?(在什么文件中,在哪个节点/在哪个吊舱中?它是如何到达那里的?)嗨@Dave,我在想操作员是否可以从磁盘读取配置属性文件。我的意思是,当初始化Operator pod时,Operator读取它们,然后Operator将这些配置传递给app pod。原则上,您可以将文件构建到运行Operator的映像中,但如果您这样做,则可能更容易将其硬编码到Go源代码中,或者使用Kubernetes API生成它们。@DavidMaze,我认为你的评论甚至可以作为答案发布。