Skip to content

Commit ccbd70b

Browse files
butler54claude
andcommitted
feat: Update CoCo pattern docs for v4 GA release (Trustee 1.0, OSC 1.11)
Update confidential containers pattern documentation for the v4 GA release: - Upgrade component versions: Trustee 1.0, OSC 1.11, OCP 4.17+ - Add multi-cluster deployment support with ACM/MCH - Add new tested environments and version history page - Update Azure requirements with terminology and guidance fixes - Add missing technical terms to spellcheck wordlist Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
1 parent 752a231 commit ccbd70b

File tree

5 files changed

+195
-63
lines changed

5 files changed

+195
-63
lines changed

.wordlist.txt

Lines changed: 25 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
12
aaaee
23
aab
34
aap
@@ -14,7 +15,6 @@ additionalimages
1415
addon
1516
addons
1617
addr
17-
addr
1818
adoc
1919
ae
2020
aeg
@@ -39,9 +39,9 @@ anattama
3939
anonymized
4040
anonymizer
4141
ansible
42+
api's
4243
apicast
4344
apicurito
44-
api's
4545
apis
4646
apiversion
4747
appdev
@@ -107,7 +107,9 @@ byo
107107
cacert
108108
cakephp
109109
canarypausestep
110+
cas
110111
cdd
112+
cdh
111113
cdn
112114
centos
113115
centric
@@ -155,11 +157,13 @@ cmzwn
155157
cncf
156158
cnv
157159
cockroachdb
160+
coco
158161
codepath
159162
coffeeshop
160163
colocated
161164
compliancetype
162165
conf
166+
confidentialcontainers
163167
config
164168
configmanagement
165169
configmap
@@ -171,6 +175,7 @@ containerimage
171175
controlplane
172176
controlplaneendpoint
173177
coreos
178+
cosign
174179
cp
175180
crd
176181
crds
@@ -192,6 +197,7 @@ ctrl
192197
cuda
193198
customerloyalty
194199
customermocker
200+
customise
195201
customizable
196202
customizations
197203
cves
@@ -413,13 +419,15 @@ hybridcloudpatterns
413419
hyperconverged
414420
hyperscaler
415421
hypershift
422+
hyperthreading
416423
iaa
417424
iam
418425
ib
419426
ibmcloud
420427
idempotence
421428
idms
422429
idp
430+
ietf
423431
iframe
424432
ignoredifferences
425433
iio
@@ -504,6 +512,9 @@ kam
504512
kamelet
505513
kasten
506514
kastendr
515+
kata
516+
katacontainers
517+
kbs
507518
keycloak
508519
keypair
509520
keypairs
@@ -563,6 +574,7 @@ lsv
563574
lvm
564575
lvms
565576
machineapi
577+
machineconfig
566578
machineconfigpool
567579
machineconfigs
568580
machineset
@@ -618,6 +630,7 @@ mq
618630
mqtt
619631
multicloud
620632
multicluster
633+
multiclusterhub
621634
multisource
622635
multisourceconfig
623636
musthave
@@ -686,8 +699,8 @@ opendatahub
686699
openid
687700
openjdk
688701
openshift
689-
openshiftpullsecret
690702
openshift's
703+
openshiftpullsecret
691704
openshiftsdn
692705
openshiftversion
693706
openssl
@@ -700,6 +713,7 @@ operatorgroups
700713
operatorhub
701714
operatorsource
702715
opr
716+
osc
703717
osspa
704718
osx
705719
ouput
@@ -722,6 +736,7 @@ patternsh
722736
patternsoperator
723737
pbivukilnpoe
724738
pci
739+
pcr
725740
pem
726741
performant
727742
persistentvolumeclaim
@@ -787,6 +802,7 @@ querier
787802
quickassist
788803
quickstart
789804
rabbitmq
805+
raci
790806
rbac
791807
rbklxs
792808
rdma
@@ -803,8 +819,8 @@ renderers
803819
replicaset
804820
replicasets
805821
repo
806-
repolist
807822
repo's
823+
repolist
808824
repos
809825
repourl
810826
reranked
@@ -847,6 +863,7 @@ runtimes
847863
rxpm
848864
saas
849865
saml
866+
sandboxed
850867
sas
851868
sbom
852869
scada
@@ -880,6 +897,7 @@ signin
880897
sigstore
881898
siteadmin
882899
skipdryrunonmissingresource
900+
skopeo
883901
sla
884902
slas
885903
sme
@@ -939,6 +957,7 @@ targetport
939957
tbd
940958
tcp
941959
techpreview
960+
tee
942961
tei
943962
tekron
944963
tekton
@@ -984,6 +1003,7 @@ tradeoff
9841003
tradeoffs
9851004
transactional
9861005
travelops
1006+
trustee
9871007
trvlops
9881008
tsa
9891009
tst
@@ -1002,8 +1022,8 @@ unsealvault
10021022
untrusted
10031023
updatingconfig
10041024
updatingversion
1005-
upstreaming
10061025
upstream's
1026+
upstreaming
10071027
ure
10081028
uri
10091029
usecsv

content/patterns/coco-pattern/_index.adoc

Lines changed: 26 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -25,48 +25,59 @@ include::modules/comm-attributes.adoc[]
2525

2626
= About the Confidential Containers pattern
2727

28-
Confidential computing is a technology for securing data in use. It uses a https://en.wikipedia.org/wiki/Trusted_execution_environment[Trusted Execution Environment] provided within the hardware of the processor to prevent access from others who have access to the system.
29-
https://confidentialcontainers.org/[Confidential containers] is a project to standardize the consumption of confidential computing by making the security boundary for confidential computing to be a Kubernetes pod. https://katacontainers.io/[Kata containers] is used to establish the boundary via a shim VM.
28+
Confidential computing is a technology for securing data in use. It uses a https://en.wikipedia.org/wiki/Trusted_execution_environment[Trusted Execution Environment] (TEE) provided within the hardware of the processor to prevent access from others who have access to the system, including cluster administrators and hypervisor operators.
29+
https://confidentialcontainers.org/[Confidential containers] is a project to standardize the consumption of confidential computing by making the security boundary for confidential computing a Kubernetes pod. https://katacontainers.io/[Kata containers] is used to establish the boundary via a shim VM.
3030

31-
A core goal of confidential computing is to use this technology to isolate the workload from both Kubernetes and hypervisor administrators.
31+
A core goal of confidential computing is to use this technology to isolate the workload from both Kubernetes and hypervisor administrators. In practice this means that even a `kubeadmin` user cannot `exec` into a running confidential container or inspect its memory.
3232

33-
image::coco-pattern/isolation.png[Schematic describing the isolation of confidential contains from the hosting system]
33+
image::coco-pattern/isolation.png[Schematic describing the isolation of confidential containers from the hosting system]
3434

3535

36-
This pattern uses https://docs.redhat.com/en/documentation/openshift_sandboxed_containers/1.7/html/user_guide/deploying-on-azure#deploying-cc_azure-cc[Red Hat OpenShift sandbox containers] to deploy and configure confidential containers on Microsoft Azure.
36+
This pattern uses https://docs.redhat.com/en/documentation/openshift_sandboxed_containers/1.11/html/deploying_confidential_containers/cc-overview[Red Hat OpenShift sandbox containers] to deploy and configure confidential containers on Microsoft Azure. On Azure, confidential containers run as "peer pods" — VMs from the `Standard_DCas_v5` family provisioned directly on the Azure hypervisor rather than nested inside OpenShift worker nodes.
3737

38-
It deploys three copies of 'Hello OpenShift' to demonstrate some of the security boundaries that enforced with confidential containers.
38+
It deploys three copies of 'Hello OpenShift' to demonstrate some of the security boundaries enforced with confidential containers, along with a `kbs-access` application that verifies end-to-end secret delivery from the Key Broker Service.
3939

4040
== Requirements
4141

42-
- An an azure account with the link:./coco-pattern-azure-requirements/[required access rights]
43-
- An OpenShift cluster, within the Azure environment updated beyond 4.16.10
42+
- An Azure account with the link:./coco-pattern-azure-requirements/[required access rights], including quota for `Standard_DCas_v5` confidential VMs
43+
- An OpenShift 4.17+ cluster within the Azure environment
44+
- Tools: `podman`, `yq`, `jq`, `skopeo`
45+
- An OpenShift pull secret at `~/pull-secret.json`
4446

4547

4648
== Security considerations
4749

4850
**This pattern is a demonstration only and contains configuration that is not best practice**
4951

50-
- The default configuration deploys everything in a single cluster for testing purposes. The https://www.ietf.org/archive/id/draft-ietf-rats-architecture-22.html[RATS] architecture mandates that the Key Broker Service (e.g. https://github.com/confidential-containers/trustee[Trustee]) is in a trusted security zone.
51-
- The https://github.com/confidential-containers/trustee/tree/main/attestation-service[Attestation Service] has wide open security policies.
52+
- The pattern supports both single-cluster (`simple` clusterGroup) and multi-cluster (`trusted-hub` + `spoke`) topologies. The default is single-cluster, which breaks the RACI separation expected in a remote attestation architecture. In the single-cluster topology, the Key Broker Service and the workloads it protects run on the same cluster, meaning a compromised cluster could affect both. The multi-cluster topology addresses this by separating the trusted zone (Trustee, Vault, ACM on the hub) from the untrusted workload zone (spoke). The https://www.ietf.org/archive/id/draft-ietf-rats-architecture-22.html[RATS] architecture mandates that the Key Broker Service (e.g. https://github.com/confidential-containers/trustee[Trustee]) is in a trusted security zone.
53+
- The https://github.com/confidential-containers/trustee/tree/main/attestation-service[Attestation Service] has wide open security policies. The default `insecure` policy accepts all images without signature verification. For production use, configure the `signed` policy in `values-secret.yaml.template` and provide cosign public keys.
5254

5355
== Future work
5456

55-
* Deploying the environment the 'Trusted' environment including the KBS on a separate cluster to the secured workloads
5657
* Deploying to alternative environments supporting confidential computing including bare metal x86 clusters; IBM Cloud; IBM Z
57-
* Finishing the sample AI application
58+
* Finishing the sample AI application for confidential inference with protected GPUs
59+
* Supporting air-gapped deployments
5860

5961
== Architecture
6062

61-
Confidential Containers typically has two environments. A trusted zone, and an untrusted zone. In these zones, Trustee, and the sandbox container operator are deployed, respectively.
63+
Confidential Containers typically has two environments. A trusted zone, and an untrusted zone. In the trusted zone, the Key Broker Service (Trustee), attestation service, and secrets management (Vault) are deployed. In the untrusted zone, the sandboxed containers operator provisions confidential VMs and runs workloads.
6264

63-
** For demonstration purposes the pattern currently is converged on one cluster**
65+
The pattern supports both single-cluster and multi-cluster topologies. In the single-cluster topology (`simple` clusterGroup), all components are converged on one cluster. In the multi-cluster topology, the `trusted-hub` clusterGroup runs on the hub cluster and the `spoke` clusterGroup runs on one or more managed clusters imported via ACM. See link:./coco-pattern-getting-started/[Getting started] for deployment options.
6466

6567
image::coco-pattern/overview-schematic.png[Schematic describing the high level architecture of confidential containers]
6668

69+
=== Key components
6770

71+
- **Red Hat Build of Trustee 1.0**: The Key Broker Service (KBS) and attestation service. Trustee verifies that workloads are running in a genuine TEE before releasing secrets. Certificates for Trustee are managed by cert-manager using self-signed CAs.
72+
- **HashiCorp Vault**: Secrets backend for the Validated Patterns framework. Stores KBS keys, attestation policies, and PCR measurements.
73+
- **OpenShift Sandboxed Containers 1.11**: Deploys and manages peer-pod VMs for confidential workloads. Operator subscriptions are pinned to specific CSV versions with manual install plan approval to ensure version consistency.
74+
- **Red Hat Advanced Cluster Management (ACM)**: Manages the spoke cluster in multi-cluster deployments. Policies and applications are deployed to the spoke via ACM's application lifecycle management.
6875

6976

7077
== References
71-
- https://docs.redhat.com/en/documentation/openshift_sandboxed_containers/1.7/html/user_guide/about-osc#about-confidential-containers_about-osc[OpenShift sandboxed containers documentation]
78+
- https://docs.redhat.com/en/documentation/openshift_sandboxed_containers/1.11[OpenShift Sandboxed Containers 1.11 documentation]
79+
- https://docs.redhat.com/en/documentation/openshift_sandboxed_containers/1.11/html/deploying_confidential_containers/cc-overview[Deploying confidential containers on OpenShift]
80+
- https://docs.redhat.com/en/documentation/red_hat_build_of_trustee/1.0[Red Hat Build of Trustee 1.0 documentation]
81+
- https://www.redhat.com/en/blog/red-hat-openshift-sandboxed-containers-111-and-red-hat-build-trustee-10-accelerate-confidential-computing-across-hybrid-cloud[OSC 1.11 and Trustee 1.0 announcement blog]
7282
- https://www.redhat.com/en/blog/exploring-openshift-confidential-containers-solution[OpenShift confidential containers solution blog]
83+
- https://www.redhat.com/en/blog/introducing-confidential-containers-trustee-attestation-services-solution-overview-and-use-cases[Trustee attestation services overview]

content/patterns/coco-pattern/coco-pattern-azure-requirements.adoc

Lines changed: 15 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -11,16 +11,15 @@ include::modules/comm-attributes.adoc[]
1111
:imagesdir: ../../../images
1212
= Azure requirements
1313

14-
This demo currently has been tested only on azure.
15-
The configuration tested used the `openshift-install`.
16-
https://docs.openshift.com/container-platform/4.16/installing/installing_azure/installing-azure-default.html[OpenShift documentation] contains details on how to do this.
14+
This pattern has been tested on Microsoft Azure using self-managed OpenShift clusters provisioned with `openshift-install`.
15+
https://docs.openshift.com/container-platform/4.17/installing/installing_azure/installing-azure-default.html[OpenShift documentation] contains details on how to install a cluster on Azure.
1716

18-
The documentation outlines https://docs.openshift.com/container-platform/4.16/installing/installing_azure/installing-azure-account.html[minimum required configuration] for an azure account.
17+
The documentation outlines the https://docs.openshift.com/container-platform/4.17/installing/installing_azure/installing-azure-account.html[minimum required configuration] for an Azure account.
1918

2019
== Changes required
2120

22-
Do not accept default sizes for OpenShift install. It is recommended to up the workers to at least `Standard_D8s_v5`.
23-
This can be done by using `openshift-install create install-config` first and adjusting the workers under platform e.g.:
21+
Do not accept default sizes for OpenShift install. It is recommended to increase the worker node size to at least `Standard_D8s_v5`.
22+
This can be done by using `openshift-install create install-config` first and adjusting the workers under platform, for example:
2423

2524
[source,yaml]
2625
----
@@ -35,29 +34,31 @@ This can be done by using `openshift-install create install-config` first and ad
3534

3635
On a cloud provider the virtual machines for the kata containers use "peer pods" which are running directly on the cloud provider's hypervisor (see the diagram below).
3736
This means that access is required to the "confidential computing" virtual machine class. On Azure the `Standard_DCas_v5` class of virtual machines are used.
38-
These virtual machines are *NOT* available in all regions. Users will also need to up the specific limits for `Standard_DC2as_v5` virtual machines.
37+
These virtual machines are *NOT* available in all regions. Check https://azure.microsoft.com/en-us/explore/global-infrastructure/products-by-region/[Azure products by region] to confirm availability in your target region.
38+
39+
Users will also need to request quota increases for the `Standard_DC2as_v5` (and optionally `Standard_DC4as_v5`, `Standard_DC8as_v5`, `Standard_DC16as_v5`) virtual machine families in their target region. By default, Azure subscriptions may have zero quota for confidential computing VM sizes.
3940

4041
image::coco-pattern/peer_pods.png[Schematic diagram of peer pods vs standard kata containers]
4142

42-
DNS for the openshift cluster also *MUST* be provided by azure DNS.
43+
DNS for the OpenShift cluster *MUST* be provided by Azure DNS. The pattern uses Azure DNS for both the cluster's ingress and for cert-manager DNS01 challenge validation when issuing certificates.
4344

4445
== Azure configuration required for the validated pattern
4546

46-
The validated pattern requires access to azure apis to provision peer-pod VMs and to obtain certificates from let's encrypt.
47+
The validated pattern requires access to Azure APIs to provision peer-pod VMs.
4748

4849
Azure configuration information must be provided in two places:
4950

50-
- The a secret must be loaded using a ../../../learn/secrets-management-in-the-validated-patterns-framework/[values-secret] file.
51-
The https://github.com/validatedpatterns/coco-pattern/blob/main/values-secret.yaml.template[`values-secret.yaml.template`] file provides the appropriate structure
51+
- A secret must be loaded using a ../../../learn/secrets-management-in-the-validated-patterns-framework/[values-secret] file.
52+
The https://github.com/validatedpatterns/coco-pattern/blob/main/values-secret.yaml.template[`values-secret.yaml.template`] file provides the appropriate structure. The Azure client secret (service principal password) is stored here and loaded into Vault.
5253

53-
- A broader set of information about the cluster is required in https://github.com/validatedpatterns/coco-pattern/blob/main/values-global.yaml[`values-global.yaml`] (see below).
54+
- A broader set of information about the cluster is required in https://github.com/validatedpatterns/coco-pattern/blob/main/values-global.yaml[`values-global.yaml`] (see below). These values are used by the sandboxed containers operator to provision peer-pod VMs in the correct Azure subscription, resource group, and virtual network.
5455

5556

5657
[source,yaml]
5758
----
5859
global:
5960
azure:
60-
clientID: '' # Service principle ID
61+
clientID: '' # Service principal ID
6162
subscriptionID: ''
6263
tenantID: '' # Tenant ID
6364
DNSResGroup: '' # Resource group for the azure DNS hosted zone
@@ -68,3 +69,4 @@ global:
6869
clusterRegion: ''
6970
----
7071

72+
The `clusterResGroup`, `clusterSubnet`, and `clusterNSG` values can be found in the Azure portal after the cluster has been provisioned, or via `openshift-install` metadata. The `DNSResGroup` and `hostedZoneName` correspond to the Azure DNS zone used for the cluster's base domain.

0 commit comments

Comments
 (0)