简体   繁体   中英

Kubernetes Java client: cannot mount an existing configMap to a Pod

I'm developing a Java application that creates some Kubernetes Jobs using the official Kubernetes Java client. Each Job uses its configuration directory, which already exists as a configMap in the cluster. (This configMap was created using kubectl create configmap {name} --from-file=/... )

Using Java client, I successfully created a V1ConfigMap object that refers to a specific configMap, and I also found that V1Volume.setConfigMap() will convert V1ConfigMapVolumeSource to V1Volume that can be mounted by a container.

However, I couldn't find the way to map V1ConfigMap and V1ConfigMapVolumeSource .

Here is my code:

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);
}

Does anyone know the way to solve this, or is my way to approach completely wrong?

As stated into the documentation for V1ConfigMapVolumeSource , there is a name parameter (type String ) which is the name of the referent .

To link a ConfigMap inside a ConfigMapVolumeSource , just put the name of the ConfigMap in the name parameter, that should be enough.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM