要做什么?
在之前的文章中我们可以创建operator并且通过operator来创建我们的k8s Pod了。
这次我们要对pod进行拓展,三个方面ConfigMap,Service和ReplicaSet, 并最终创建Deployment
怎么做
ConfigMap
ConfigMap用于保存配置数据的键值对,可以用来保存单个属性,也可以用来保存配置文件。ConfigMap跟secret很类似,但它可以更方便地处理不包含敏感信息的字符串。
https://www.kubernetes.org.cn/configmap
创建
func NewConfigMap(cr *mykindv1alpha1.Mykind) *corev1.ConfigMap {
labels := map[string]string{
"app": cr.Name,
}
m1 := make(map[string]string)
m1["a"] = cr.Spec.EnvsValue
return &corev1.ConfigMap{
ObjectMeta: metav1.ObjectMeta{
Name: cr.Name + "-configmap",
Namespace: cr.Namespace,
Labels: labels,
},
Data: m1,
}
}
configMap := NewConfigMap(instance)
r.client.Create(context.TODO(), configMap)
传值
传值我们需要通过corev1.EnvVarSource和corev1.ConfigMapKeySelector,
func NewConfigMapKeySelector(configmap *corev1.ConfigMap) *corev1.ConfigMapKeySelector {
return &corev1.ConfigMapKeySelector{
LocalObjectReference: corev1.LocalObjectReference{
Name: configmap.ObjectMeta.Name,
},
Key: "a",
}
}
func NewEnvVarSource(configMapSelector *corev1.ConfigMapKeySelector) *corev1.EnvVarSource {
return &corev1.EnvVarSource{
ConfigMapKeyRef: configMapSelector,
}