Ctrl K
ComunidadGuías…

patches/vitess-control-permissions-test.go.txt

Rama main · réplica de lectura del repositorio original.

Archivo original ↗Preguntar a KiBot
package vitessbackupschedule

import (
	"testing"

	appsv1 "k8s.io/api/apps/v1"
	corev1 "k8s.io/api/core/v1"
	planetscalev2 "planetscale.dev/vitess-operator/pkg/apis/planetscale/v2"
	"planetscale.dev/vitess-operator/pkg/operator/vtctld"
	"planetscale.dev/vitess-operator/pkg/operator/vtgate"
	"planetscale.dev/vitess-operator/pkg/operator/vtorc"
	"sigs.k8s.io/controller-runtime/pkg/client"
)

func TestHakopodControlPodsReadGroupOnlySecrets(t *testing.T) {
	key := client.ObjectKey{Namespace: "fixture", Name: "control"}
	mode := int32(0440)
	volumes := []corev1.Volume{{Name: "tls", VolumeSource: corev1.VolumeSource{Secret: &corev1.SecretVolumeSource{SecretName: "fixture-tls", DefaultMode: &mode}}}}
	mounts := []corev1.VolumeMount{{Name: "tls", MountPath: "/etc/hakopod/tls", ReadOnly: true}}
	pods := map[string]*appsv1.Deployment{
		"vtgate": vtgate.NewDeployment(key, &vtgate.Spec{Cell: &planetscalev2.VitessCellSpec{}, Authentication: &planetscalev2.VitessGatewayAuthentication{}, ExtraVolumes: volumes, ExtraVolumeMounts: mounts}, "mysql:8.4.6"),
		"vtctld": vtctld.NewDeployment(key, &vtctld.Spec{Cell: &planetscalev2.VitessCellTemplate{}, GlobalLockserver: &planetscalev2.VitessLockserverParams{}, ExtraVolumes: volumes, ExtraVolumeMounts: mounts}, "mysql:8.4.6"),
		"vtorc":  vtorc.NewDeployment(key, &vtorc.Spec{ExtraVolumes: volumes, ExtraVolumeMounts: mounts}),
	}
	for name, deployment := range pods {
		pod := deployment.Spec.Template.Spec
		if pod.SecurityContext == nil || pod.SecurityContext.FSGroup == nil || *pod.SecurityContext.FSGroup != planetscalev2.DefaultVitessFSGroup {
			t.Fatalf("%s cannot read TLS files with group-only mode", name)
		}
		if len(pod.Containers) != 1 || pod.Containers[0].SecurityContext == nil || pod.Containers[0].SecurityContext.RunAsUser == nil || *pod.Containers[0].SecurityContext.RunAsUser == 0 {
			t.Fatalf("%s lost its non-root process identity", name)
		}
		if len(pod.Volumes) != 1 || pod.Volumes[0].Secret == nil || *pod.Volumes[0].Secret.DefaultMode != mode || len(pod.Containers[0].VolumeMounts) != 1 || !pod.Containers[0].VolumeMounts[0].ReadOnly {
			t.Fatalf("%s weakened its projected TLS volume", name)
		}
	}
}