@@ -28,6 +28,11 @@ const (
2828 // Extended resources for TEE
2929 intelTDXExtendedResource = "tdx.intel.com/keys"
3030 amdSNPExtendedResource = "sev-snp.amd.com/esids"
31+
32+ // INITDATA value for non-confidential peer pods, this is required in order
33+ // to override the default restrictive CoCo agent policy
34+ // created from sourced plaintxt: cat config/peerpods/default-non-cc-initdata.toml | gzip | base64 -w0
35+ defaultNonCCInitdata = "H4sIAAAAAAAAA42UwW7bMAyG734KwT3ktKDDehgG9NAl2VZgWQw7bQ7DMDAWYxOVRU+i03pPP7lGhx0muwddyE8U+ZPUhdrX5BVZEg0C6kQG1SN4VToEQa2OvZIaFfvyDbfoQNglYCp2JHWjrlXqa3j3/ipNzug8sR1Ml8u3y8s0Sb4PIX8kKcBSuDFp8C0Wi2Q4SdqyobJfOqz4xdFC+QAVqnCs/ByBJNF4gs6IutH6Js++IVX1kZ3P8VeHXtSHayWuw3+x4hHamHtl2GMhmmyU4Lb/FGSI+p+VWbEVIItuGivA6iM/xaB1MDruZ6jNE5aZ4xJ9tOrPKFsUR+UUsdttN+cgbRQZrGsMdZlomK/k5dYKuhOEfKaonDuJE1tsvrC0pqs+9qG2Y1TunTVB5lV2F27EmAw6P9+RrDPmtgnDFQNyBF1I6Fv0oRwbPs+/NGKFgMF7ckJ88kUNDrfcWYlKkqNH1HmYBW7WeJ7AumY+hwJl7GeYwj010aIDlz1vWhSgyoKZmb9Qq5P5nAZq76AkW00w4l8RiduZQHvpD8OWe/odLf6u1a/Z5RHbtDU24Qs0020c4b87Mo1NL8kBSGaEP4SPGP8/tMOX+geD8J3Z4AUAAA=="
3136)
3237
3338// When the feature is enabled, handleFeatureConfidential configures confidential computing support.
@@ -73,13 +78,13 @@ func (r *KataConfigOpenShiftReconciler) handleConfidentialPeerPods(state Feature
7378
7479 // Patch ImageConfigMap.
7580 imageConfigMapData := map [string ]string {"CONFIDENTIAL_COMPUTE_ENABLED" : "yes" }
76- if err := updateConfigMap (r .Client , r .Log , ig .getImageConfigMapName (), OperatorNamespace , imageConfigMapData ); err != nil {
81+ if err := updateConfigMap (r .Client , r .Log , ig .getImageConfigMapName (), OperatorNamespace , imageConfigMapData , nil ); err != nil {
7782 return err
7883 }
7984 } else {
8085 // Patch ImageConfigMap.
8186 imageConfigMapData := map [string ]string {"CONFIDENTIAL_COMPUTE_ENABLED" : "no" }
82- if err := updateConfigMap (r .Client , r .Log , ig .getImageConfigMapName (), OperatorNamespace , imageConfigMapData ); err != nil {
87+ if err := updateConfigMap (r .Client , r .Log , ig .getImageConfigMapName (), OperatorNamespace , imageConfigMapData , nil ); err != nil {
8388 if k8serrors .IsNotFound (err ) {
8489 // Nothing to do, feature is disabled and configMap doesn't exist.
8590 } else {
@@ -92,12 +97,19 @@ func (r *KataConfigOpenShiftReconciler) handleConfidentialPeerPods(state Feature
9297
9398 // Patch peer pods configMap, if it exists.
9499 var peerpodsCMData map [string ]string
100+ var keysToRemove map [string ]string
95101 if state == Enabled {
96102 peerpodsCMData = map [string ]string {"DISABLECVM" : "false" }
103+ // Remove INITDATA if it matches the default value
104+ keysToRemove = map [string ]string {"INITDATA" : defaultNonCCInitdata }
97105 } else {
98- peerpodsCMData = map [string ]string {"DISABLECVM" : "true" }
106+ peerpodsCMData = map [string ]string {
107+ "DISABLECVM" : "true" ,
108+ "INITDATA" : defaultNonCCInitdata ,
109+ }
110+ keysToRemove = nil
99111 }
100- if err := updateConfigMap (r .Client , r .Log , peerpodsCMName , OperatorNamespace , peerpodsCMData ); err != nil {
112+ if err := updateConfigMap (r .Client , r .Log , peerpodsCMName , OperatorNamespace , peerpodsCMData , keysToRemove ); err != nil {
101113 if k8serrors .IsNotFound (err ) {
102114 // When feature is Enabled: ConfigMap doesn't exist yet, will try again at the next reconcile run.
103115 // Else: Nothing to do, feature is disabled and configMap doesn't exist.
0 commit comments