in karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/kubernetes/KubernetesService.java [427:476]
private Pod getRunnerPod(String projectId, String name, String jbangOptions, Map<String, String> containerResources) {
Map<String, String> labels = new HashMap<>();
labels.putAll(getRuntimeLabels());
labels.putAll(getKaravanRunnerLabels(name));
labels.put(LABEL_PROJECT_ID, projectId);
ResourceRequirements resources = getResourceRequirements(containerResources);
ObjectMeta meta = new ObjectMetaBuilder()
.withName(name)
.withLabels(labels)
.withNamespace(getNamespace())
.build();
ContainerPort port = new ContainerPortBuilder()
.withContainerPort(8080)
.withName("http")
.withProtocol("TCP")
.build();
Container container = new ContainerBuilder()
.withName(name)
.withImage("ghcr.io/apache/camel-karavan-runner:" + version)
.withPorts(port)
.withResources(resources)
.withImagePullPolicy("Always")
.withEnv(new EnvVarBuilder().withName(ENV_VAR_JBANG_OPTIONS).withValue(jbangOptions).build())
.withVolumeMounts(
new VolumeMountBuilder().withName(name).withMountPath("/karavan/.jbang/cache").build(),
new VolumeMountBuilder().withName("maven-settings").withSubPath("maven-settings.xml")
.withMountPath("/karavan-config-map/maven-settings.xml").build())
.build();
PodSpec spec = new PodSpecBuilder()
.withTerminationGracePeriodSeconds(0L)
.withContainers(container)
.withRestartPolicy("Never")
.withVolumes(
new VolumeBuilder().withName(name)
.withNewPersistentVolumeClaim(name, false).build(),
new VolumeBuilder().withName("maven-settings")
.withConfigMap(new ConfigMapVolumeSourceBuilder()
.withName("karavan").build()).build())
.build();
return new PodBuilder()
.withMetadata(meta)
.withSpec(spec)
.build();
}