Kubernetes Java 客户端:无法将现有的 configMap 挂载到 Pod
Kubernetes Java client: cannot mount an existing configMap to a Pod
我正在开发一个 Java 应用程序,它使用官方 Kubernetes Java 客户端创建一些 Kubernetes 作业。每个 Job 使用其配置目录,该目录已作为 configMap 存在于集群中。 (此 configMap 是使用 kubectl create configmap {name} --from-file=/...
创建的)
使用Java客户端,我成功创建了一个V1ConfigMap
对象,它引用了一个特定的configMap,我还发现V1Volume.setConfigMap()
会将V1ConfigMapVolumeSource
转换为V1Volume
可以被容器挂载。
但是,我找不到映射 V1ConfigMap
和 V1ConfigMapVolumeSource
的方法。
这是我的代码:
public void setConfigMap(V1ConfigMap cm, String mountPath){
V1ConfigMapVolumeSource volSource = new V1ConfigMapVolumeSource();
//Some additional mappings are needed here.
//volSource = ...(cm)
//create V1Volume from V1ConfigMapVolumeSource
String volName = "appSetting";
V1Volume settingVol = new V1Volume().name(volName);
settingVol.setConfigMap(volSource);
//create V1VolumeMount
V1VolumeMount volumeMount = new V1VolumeMount();
volumeMount.setMountPath(mountPath);
volumeMount.setName(volName);
//set created objects to the Job
job.getSpec().getTemplate().getSpec().addVolumesItem(settingVol);
job.getSpec().getTemplate().getSpec().getContainers().get(0).addVolumeMountsItem(volumeMount);
}
有谁知道解决这个问题的方法,还是我的方法完全错误?
如入documentation for V1ConfigMapVolumeSource
, there is a name
parameter (type String
) which is the name of the referent.
到link一个ConfigMap
里面一个ConfigMapVolumeSource
,只要把ConfigMap
的名字放在name参数里就可以了。
我正在开发一个 Java 应用程序,它使用官方 Kubernetes Java 客户端创建一些 Kubernetes 作业。每个 Job 使用其配置目录,该目录已作为 configMap 存在于集群中。 (此 configMap 是使用 kubectl create configmap {name} --from-file=/...
创建的)
使用Java客户端,我成功创建了一个V1ConfigMap
对象,它引用了一个特定的configMap,我还发现V1Volume.setConfigMap()
会将V1ConfigMapVolumeSource
转换为V1Volume
可以被容器挂载。
但是,我找不到映射 V1ConfigMap
和 V1ConfigMapVolumeSource
的方法。
这是我的代码:
public void setConfigMap(V1ConfigMap cm, String mountPath){
V1ConfigMapVolumeSource volSource = new V1ConfigMapVolumeSource();
//Some additional mappings are needed here.
//volSource = ...(cm)
//create V1Volume from V1ConfigMapVolumeSource
String volName = "appSetting";
V1Volume settingVol = new V1Volume().name(volName);
settingVol.setConfigMap(volSource);
//create V1VolumeMount
V1VolumeMount volumeMount = new V1VolumeMount();
volumeMount.setMountPath(mountPath);
volumeMount.setName(volName);
//set created objects to the Job
job.getSpec().getTemplate().getSpec().addVolumesItem(settingVol);
job.getSpec().getTemplate().getSpec().getContainers().get(0).addVolumeMountsItem(volumeMount);
}
有谁知道解决这个问题的方法,还是我的方法完全错误?
如入documentation for V1ConfigMapVolumeSource
, there is a name
parameter (type String
) which is the name of the referent.
到link一个ConfigMap
里面一个ConfigMapVolumeSource
,只要把ConfigMap
的名字放在name参数里就可以了。