in pkg/controller/keyvault/placeholder_pod.go [254:337]
func (p *PlaceholderPodController) buildDeployment(ctx context.Context, dep *appsv1.Deployment, spc *secv1.SecretProviderClass, obj client.Object) error {
old, err := p.getCurrentDeployment(ctx, client.ObjectKeyFromObject(dep))
if err != nil {
return fmt.Errorf("getting current deployment: %w", err)
}
labels := map[string]string{"app": spc.Name}
if old != nil { // we need to ensure that immutable fields are not changed
labels = old.Spec.Selector.MatchLabels
}
var ownerAnnotation string
switch obj.(type) {
case *v1alpha1.NginxIngressController:
ownerAnnotation = "kubernetes.azure.com/nginx-ingress-controller-owner"
case *netv1.Ingress:
ownerAnnotation = "kubernetes.azure.com/ingress-owner"
case *gatewayv1.Gateway:
ownerAnnotation = "kubernetes.azure.com/gateway-owner"
default:
return fmt.Errorf("failed to build deployment: object type not ingress, nginxingresscontroller, or gateway")
}
dep.Spec = appsv1.DeploymentSpec{
Replicas: util.Int32Ptr(1),
RevisionHistoryLimit: util.Int32Ptr(2),
Selector: &metav1.LabelSelector{MatchLabels: labels},
Template: corev1.PodTemplateSpec{
ObjectMeta: metav1.ObjectMeta{
Labels: labels,
Annotations: map[string]string{
"kubernetes.azure.com/observed-generation": strconv.FormatInt(spc.Generation, 10),
"kubernetes.azure.com/purpose": "hold CSI mount to enable keyvault-to-k8s secret mirroring",
ownerAnnotation: obj.GetName(),
"openservicemesh.io/sidecar-injection": "disabled",
},
},
Spec: *manifests.WithPreferSystemNodes(&corev1.PodSpec{
AutomountServiceAccountToken: util.ToPtr(false),
Containers: []corev1.Container{{
Name: "placeholder",
Image: path.Join(p.config.Registry, "/oss/kubernetes/pause:3.10"),
VolumeMounts: []corev1.VolumeMount{{
Name: "secrets",
MountPath: "/mnt/secrets",
ReadOnly: true,
}},
Resources: corev1.ResourceRequirements{
Limits: corev1.ResourceList{
corev1.ResourceCPU: resource.MustParse("20m"),
corev1.ResourceMemory: resource.MustParse("24Mi"),
},
},
SecurityContext: &corev1.SecurityContext{
Privileged: util.ToPtr(false),
AllowPrivilegeEscalation: util.ToPtr(false),
Capabilities: &corev1.Capabilities{
Drop: []corev1.Capability{"ALL"},
},
RunAsNonRoot: util.ToPtr(true),
RunAsUser: util.Int64Ptr(65535),
RunAsGroup: util.Int64Ptr(65535),
ReadOnlyRootFilesystem: util.ToPtr(true),
SeccompProfile: &corev1.SeccompProfile{
Type: corev1.SeccompProfileTypeRuntimeDefault,
},
},
}},
Volumes: []corev1.Volume{{
Name: "secrets",
VolumeSource: corev1.VolumeSource{
CSI: &corev1.CSIVolumeSource{
Driver: "secrets-store.csi.k8s.io",
ReadOnly: util.ToPtr(true),
VolumeAttributes: map[string]string{"secretProviderClass": spc.Name},
},
},
}},
}),
},
}
return nil
}