Skip to content

Commit 1a0141e

Browse files
committed
Fix missing certificate volume mounts to RayCluster
1 parent 0f75198 commit 1a0141e

File tree

2 files changed

+24
-6
lines changed

2 files changed

+24
-6
lines changed

pkg/controllers/raycluster_webhook.go

+19-6
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,8 @@ func (w *rayClusterWebhook) Default(ctx context.Context, obj runtime.Object) err
7979

8080
if ptr.Deref(w.Config.MTLSEnabled, true) {
8181
rayclusterlog.V(2).Info("Adding create-cert Init Containers")
82-
// HeadGroupSpec //
82+
// HeadGroupSpec
83+
8384
// Append the list of environment variables for the ray-head container
8485
for _, envVar := range envVarList() {
8586
rayCluster.Spec.HeadGroupSpec.Template.Spec.Containers[0].Env = upsert(rayCluster.Spec.HeadGroupSpec.Template.Spec.Containers[0].Env, envVar, withEnvVarName(envVar.Name))
@@ -92,7 +93,14 @@ func (w *rayClusterWebhook) Default(ctx context.Context, obj runtime.Object) err
9293
for _, caVol := range caVolumes(rayCluster) {
9394
rayCluster.Spec.HeadGroupSpec.Template.Spec.Volumes = upsert(rayCluster.Spec.HeadGroupSpec.Template.Spec.Volumes, caVol, withVolumeName(caVol.Name))
9495
}
95-
// WorkerGroupSpec //
96+
97+
// Append the certificate volume mounts
98+
for _, mount := range certVolumeMounts() {
99+
rayCluster.Spec.HeadGroupSpec.Template.Spec.Containers[0].VolumeMounts = upsert(rayCluster.Spec.HeadGroupSpec.Template.Spec.Containers[0].VolumeMounts, mount, byVolumeMountName)
100+
}
101+
102+
// WorkerGroupSpec
103+
96104
// Append the list of environment variables for the worker container
97105
for _, envVar := range envVarList() {
98106
rayCluster.Spec.WorkerGroupSpecs[0].Template.Spec.Containers[0].Env = upsert(rayCluster.Spec.WorkerGroupSpecs[0].Template.Spec.Containers[0].Env, envVar, withEnvVarName(envVar.Name))
@@ -102,9 +110,14 @@ func (w *rayClusterWebhook) Default(ctx context.Context, obj runtime.Object) err
102110
for _, caVol := range caVolumes(rayCluster) {
103111
rayCluster.Spec.WorkerGroupSpecs[0].Template.Spec.Volumes = upsert(rayCluster.Spec.WorkerGroupSpecs[0].Template.Spec.Volumes, caVol, withVolumeName(caVol.Name))
104112
}
113+
114+
// Append the certificate volume mounts
115+
for _, mount := range certVolumeMounts() {
116+
rayCluster.Spec.WorkerGroupSpecs[0].Template.Spec.Containers[0].VolumeMounts = upsert(rayCluster.Spec.WorkerGroupSpecs[0].Template.Spec.Containers[0].VolumeMounts, mount, byVolumeMountName)
117+
}
118+
105119
// Append the create-cert Init Container
106120
rayCluster.Spec.WorkerGroupSpecs[0].Template.Spec.InitContainers = upsert(rayCluster.Spec.WorkerGroupSpecs[0].Template.Spec.InitContainers, rayWorkerInitContainer(), withContainerName(initContainerName))
107-
108121
}
109122

110123
return nil
@@ -263,7 +276,7 @@ func oauthProxyTLSSecretVolume(rayCluster *rayv1.RayCluster) corev1.Volume {
263276
}
264277
}
265278

266-
func initCaVolumeMounts() []corev1.VolumeMount {
279+
func certVolumeMounts() []corev1.VolumeMount {
267280
return []corev1.VolumeMount{
268281
{
269282
Name: "ca-vol",
@@ -339,7 +352,7 @@ func rayHeadInitContainer(rayCluster *rayv1.RayCluster, domain string) corev1.Co
339352
"-c",
340353
`cd /home/ray/workspace/tls && openssl req -nodes -newkey rsa:2048 -keyout server.key -out server.csr -subj '/CN=ray-head' && printf "authorityKeyIdentifier=keyid,issuer\nbasicConstraints=CA:FALSE\nsubjectAltName = @alt_names\n[alt_names]\nDNS.1 = 127.0.0.1\nDNS.2 = localhost\nDNS.3 = ${FQ_RAY_IP}\nDNS.4 = $(awk 'END{print $1}' /etc/hosts)\nDNS.5 = ` + rayClientRoute + `\nDNS.6 = ` + svcDomain + `">./domain.ext && cp /home/ray/workspace/ca/* . && openssl x509 -req -CA ca.crt -CAkey ca.key -in server.csr -out server.crt -days 365 -CAcreateserial -extfile domain.ext`,
341354
},
342-
VolumeMounts: initCaVolumeMounts(),
355+
VolumeMounts: certVolumeMounts(),
343356
}
344357
return initContainerHead
345358
}
@@ -353,7 +366,7 @@ func rayWorkerInitContainer() corev1.Container {
353366
"-c",
354367
`cd /home/ray/workspace/tls && openssl req -nodes -newkey rsa:2048 -keyout server.key -out server.csr -subj '/CN=ray-head' && printf "authorityKeyIdentifier=keyid,issuer\nbasicConstraints=CA:FALSE\nsubjectAltName = @alt_names\n[alt_names]\nDNS.1 = 127.0.0.1\nDNS.2 = localhost\nDNS.3 = ${FQ_RAY_IP}\nDNS.4 = $(awk 'END{print $1}' /etc/hosts)">./domain.ext && cp /home/ray/workspace/ca/* . && openssl x509 -req -CA ca.crt -CAkey ca.key -in server.csr -out server.crt -days 365 -CAcreateserial -extfile domain.ext`,
355368
},
356-
VolumeMounts: initCaVolumeMounts(),
369+
VolumeMounts: certVolumeMounts(),
357370
}
358371
return initContainerWorker
359372
}

pkg/controllers/support.go

+5
Original file line numberDiff line numberDiff line change
@@ -141,6 +141,11 @@ func withVolumeName(name string) compare[corev1.Volume] {
141141
}
142142
}
143143

144+
var byVolumeMountName = compare[corev1.VolumeMount](
145+
func(v1, v2 corev1.VolumeMount) bool {
146+
return v1.Name == v2.Name
147+
})
148+
144149
var byEnvVarName = compare[corev1.EnvVar](
145150
func(e1, e2 corev1.EnvVar) bool {
146151
return e1.Name == e2.Name

0 commit comments

Comments
 (0)