Skip to content

Commit 3d48a4d

Browse files
committed
WIP - working on CPO creating the seed and passing it to the KMS provider
1 parent d0e3b6b commit 3d48a4d

File tree

10 files changed

+275
-71
lines changed

10 files changed

+275
-71
lines changed

control-plane-operator/controllers/hostedcontrolplane/manifests/azure.go

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
package manifests
22

33
import (
4+
"github.com/openshift/hypershift/support/config"
5+
46
corev1 "k8s.io/api/core/v1"
57
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
68
)
@@ -51,3 +53,12 @@ func AzureFileConfigWithCredentials(ns string) *corev1.Secret {
5153
},
5254
}
5355
}
56+
57+
func AzureKMSSeed(ns string) *corev1.Secret {
58+
return &corev1.Secret{
59+
ObjectMeta: metav1.ObjectMeta{
60+
Name: config.AzureKMSSeedSecretName,
61+
Namespace: ns,
62+
},
63+
}
64+
}
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
apiVersion: v1
2+
data:
3+
kubeconfig: ""
4+
kind: Secret
5+
metadata:
6+
# This name is hardcoded everyone else. It's listed as AzureKMSSeedSecretName in constants.go.
7+
name: azure-kms-provider-seed-active
8+
namespace: HCP_NAMESPACE
9+
type: Opaque

control-plane-operator/controllers/hostedcontrolplane/v2/kas/component.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -115,6 +115,10 @@ func NewComponent() component.ControlPlaneComponent {
115115
component.WithAdaptFunction(kms.AdaptAzureSecretProvider),
116116
component.WithPredicate(enableAzureKMSSecretProvider),
117117
).
118+
WithManifestAdapter(
119+
"azure-kms-seed.yaml",
120+
component.WithAdaptFunction(kms.AdaptAzureKMSSeed),
121+
).
118122
Build()
119123
}
120124

control-plane-operator/controllers/hostedcontrolplane/v2/kas/deployment.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,7 @@ func adaptDeployment(cpContext component.WorkloadContext, deployment *appsv1.Dep
8181
applyGenericSecretEncryptionConfig(&deployment.Spec.Template.Spec)
8282
switch secretEncryption.Type {
8383
case hyperv1.KMS:
84-
if err := applyKMSConfig(&deployment.Spec.Template.Spec, secretEncryption, newKMSImages(hcp)); err != nil {
84+
if err := applyKMSConfig(hcp.Namespace, &deployment.Spec.Template.Spec, secretEncryption, newKMSImages(hcp)); err != nil {
8585
return err
8686
}
8787
}

control-plane-operator/controllers/hostedcontrolplane/v2/kas/kms.go

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -12,12 +12,12 @@ import (
1212
corev1 "k8s.io/api/core/v1"
1313
)
1414

15-
func applyKMSConfig(podSpec *corev1.PodSpec, secretEncryptionData *hyperv1.SecretEncryptionSpec, images kmsImages) error {
15+
func applyKMSConfig(namespace string, podSpec *corev1.PodSpec, secretEncryptionData *hyperv1.SecretEncryptionSpec, images kmsImages) error {
1616
if secretEncryptionData.KMS == nil {
1717
return fmt.Errorf("kms metadata not specified")
1818
}
1919

20-
provider, err := getKMSProvider(secretEncryptionData.KMS, images)
20+
provider, err := getKMSProvider(namespace, secretEncryptionData.KMS, images)
2121
if err != nil {
2222
return err
2323
}
@@ -34,8 +34,8 @@ func applyKMSConfig(podSpec *corev1.PodSpec, secretEncryptionData *hyperv1.Secre
3434
return nil
3535
}
3636

37-
func generateKMSEncryptionConfig(kmsSpec *hyperv1.KMSSpec, apiVersion string) ([]byte, error) {
38-
provider, err := getKMSProvider(kmsSpec, kmsImages{})
37+
func generateKMSEncryptionConfig(namespace string, kmsSpec *hyperv1.KMSSpec, apiVersion string) ([]byte, error) {
38+
provider, err := getKMSProvider(namespace, kmsSpec, kmsImages{})
3939
if err != nil {
4040
return nil, err
4141
}
@@ -53,14 +53,14 @@ func generateKMSEncryptionConfig(kmsSpec *hyperv1.KMSSpec, apiVersion string) ([
5353
return bufferInstance.Bytes(), nil
5454
}
5555

56-
func getKMSProvider(kmsSpec *hyperv1.KMSSpec, images kmsImages) (kms.KMSProvider, error) {
56+
func getKMSProvider(namespace string, kmsSpec *hyperv1.KMSSpec, images kmsImages) (kms.KMSProvider, error) {
5757
switch kmsSpec.Provider {
5858
case hyperv1.IBMCloud:
5959
return kms.NewIBMCloudKMSProvider(kmsSpec.IBMCloud, images.IBMCloudKMS)
6060
case hyperv1.AWS:
6161
return kms.NewAWSKMSProvider(kmsSpec.AWS, images.AWSKMS, images.TokenMinterImage)
6262
case hyperv1.AZURE:
63-
return kms.NewAzureKMSProvider(kmsSpec.Azure, images.AzureKMS)
63+
return kms.NewAzureKMSProvider(namespace, kmsSpec.Azure, images.AzureKMS)
6464
default:
6565
return nil, fmt.Errorf("unrecognized kms provider %s", kmsSpec.Provider)
6666
}

0 commit comments

Comments
 (0)