Fixes pod-readback labeling issue.
This commit is contained in:
parent
a6f7bc2393
commit
fcb5a527a9
|
@ -37,13 +37,26 @@ namespace KubernetesWorkflow
|
||||||
var deploymentName = CreateDeployment(containerRecipes, location, podLabel);
|
var deploymentName = CreateDeployment(containerRecipes, location, podLabel);
|
||||||
var (serviceName, servicePortsMap) = CreateService(containerRecipes);
|
var (serviceName, servicePortsMap) = CreateService(containerRecipes);
|
||||||
|
|
||||||
var pods = client.Run(c => c.ListNamespacedPod(K8sNamespace));
|
var pod = FindPodByLabel(podLabel);
|
||||||
var pod = pods.Items.Single(p => p.Labels().Any(l => l.Key == podLabelKey && l.Value == podLabel));
|
|
||||||
var podInfo = CreatePodInfo(pod);
|
var podInfo = CreatePodInfo(pod);
|
||||||
|
|
||||||
return new RunningPod(cluster, podInfo, deploymentName, serviceName, servicePortsMap.ToArray());
|
return new RunningPod(cluster, podInfo, deploymentName, serviceName, servicePortsMap.ToArray());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private V1Pod FindPodByLabel(string podLabel)
|
||||||
|
{
|
||||||
|
var pods = client.Run(c => c.ListNamespacedPod(K8sNamespace));
|
||||||
|
foreach (var pod in pods.Items)
|
||||||
|
{
|
||||||
|
var label = pod.GetLabel(podLabelKey);
|
||||||
|
if (label == podLabel)
|
||||||
|
{
|
||||||
|
return pod;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
throw new Exception("Unable to find pod by label.");
|
||||||
|
}
|
||||||
|
|
||||||
public void Stop(RunningPod pod)
|
public void Stop(RunningPod pod)
|
||||||
{
|
{
|
||||||
log.Debug();
|
log.Debug();
|
||||||
|
@ -468,23 +481,7 @@ namespace KubernetesWorkflow
|
||||||
|
|
||||||
private V1Volume CreateVolume(VolumeMount v)
|
private V1Volume CreateVolume(VolumeMount v)
|
||||||
{
|
{
|
||||||
client.Run(c => c.CreateNamespacedPersistentVolumeClaim(new V1PersistentVolumeClaim
|
CreatePersistentVolumeClaimIfNeeded(v);
|
||||||
{
|
|
||||||
ApiVersion = "v1",
|
|
||||||
Metadata = new V1ObjectMeta
|
|
||||||
{
|
|
||||||
Name = v.VolumeName,
|
|
||||||
},
|
|
||||||
Spec = new V1PersistentVolumeClaimSpec
|
|
||||||
{
|
|
||||||
|
|
||||||
AccessModes = new List<string>
|
|
||||||
{
|
|
||||||
"ReadWriteOnce"
|
|
||||||
},
|
|
||||||
Resources = CreateVolumeResourceRequirements(v),
|
|
||||||
},
|
|
||||||
}, K8sNamespace));
|
|
||||||
|
|
||||||
if (!string.IsNullOrEmpty(v.HostPath))
|
if (!string.IsNullOrEmpty(v.HostPath))
|
||||||
{
|
{
|
||||||
|
@ -517,6 +514,30 @@ namespace KubernetesWorkflow
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void CreatePersistentVolumeClaimIfNeeded(VolumeMount v)
|
||||||
|
{
|
||||||
|
var pvcs = client.Run(c => c.ListNamespacedPersistentVolumeClaim(K8sNamespace));
|
||||||
|
if (pvcs != null && pvcs.Items.Any(i => i.Name() != v.VolumeName)) return;
|
||||||
|
|
||||||
|
client.Run(c => c.CreateNamespacedPersistentVolumeClaim(new V1PersistentVolumeClaim
|
||||||
|
{
|
||||||
|
ApiVersion = "v1",
|
||||||
|
Metadata = new V1ObjectMeta
|
||||||
|
{
|
||||||
|
Name = v.VolumeName,
|
||||||
|
},
|
||||||
|
Spec = new V1PersistentVolumeClaimSpec
|
||||||
|
{
|
||||||
|
|
||||||
|
AccessModes = new List<string>
|
||||||
|
{
|
||||||
|
"ReadWriteOnce"
|
||||||
|
},
|
||||||
|
Resources = CreateVolumeResourceRequirements(v),
|
||||||
|
},
|
||||||
|
}, K8sNamespace));
|
||||||
|
}
|
||||||
|
|
||||||
private V1SecretVolumeSource CreateVolumeSecret(VolumeMount v)
|
private V1SecretVolumeSource CreateVolumeSecret(VolumeMount v)
|
||||||
{
|
{
|
||||||
if (string.IsNullOrWhiteSpace(v.Secret)) return null!;
|
if (string.IsNullOrWhiteSpace(v.Secret)) return null!;
|
||||||
|
|
Loading…
Reference in New Issue