Skip to content

Commit 0920a67

Browse files
KSN2510Srinivasa Nikhil Kota
andauthored
Added support for in-transit encryption in OKE and custom kms_key for boot volume encryption support (#456)
* operator version changed to 3.0.1 from 3.0.0 Signed-off-by: Srinivasa Nikhil Kota <“srinivasa.nikhil.kota@oracle.com”> * Added support for in-transit encryption for the data volume's paravirtualized attachment and custom bootvolume kms_key in OKE Signed-off-by: Srinivasa Nikhil Kota <“srinivasa.nikhil.kota@oracle.com”> * Modified few variables name and updated instructions, configuration, terraformoptions docs and terraform.tfvars.example file Signed-off-by: Srinivasa Nikhil Kota <“srinivasa.nikhil.kota@oracle.com”> * changed variable naming convention to imperative style and added documentation for volume encryption support Signed-off-by: Srinivasa Nikhil Kota <“srinivasa.nikhil.kota@oracle.com”> Co-authored-by: Srinivasa Nikhil Kota <“srinivasa.nikhil.kota@oracle.com”>
1 parent 72d2048 commit 0920a67

File tree

8 files changed

+55
-10
lines changed

8 files changed

+55
-10
lines changed

docs/configuration.adoc

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -248,14 +248,16 @@ The Kubernetes Metrics Server parameter controls the installation of {uri-metric
248248

249249
== Configure KMS Integration parameters
250250

251-
The KMS integration parameters control whether {uri-oci-kms}[OCI Key Management Service] will be used for encrypting Kubernetes secrets. Additionally, the bastion and operator hosts must be enabled as well as instance_principal on the operator.
251+
The KMS integration parameters control whether {uri-oci-kms}[OCI Key Management Service] will be used for encrypting Kubernetes secrets and boot volumes/block volumes. Additionally, the bastion and operator hosts must be enabled as well as instance_principal on the operator.
252252

253253
----
254254
create_bastion_host = true
255255
create_operator = true
256256
enable_operator_instance_principal = true
257257
use_encryption = true
258258
kms_key_id = <kms_key_id>
259+
enable_pv_encryption_in_transit = false
260+
node_pool_volume_kms_key_id = <node_pool_volume_kms_key_id>
259261
----
260262

261263
OKE also supports enforcing the use of signed images. You can enforce the use of signed image using the following parameters:

docs/instructions.adoc

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,14 @@ If you wish to use {uri-oci-kms}[OCI KMS] to encrypt Kubernetes secrets, the fol
7474
* use_encryption must be set to _true_
7575
* kms_key_id must be provided
7676

77+
If you wish to use {uri-oci-kms}[OCI KMS] to encrypt OKE nodepool boot/block volume, the following is required:
78+
79+
* node_pool_volume_kms_key_id must be provided
80+
81+
If you wish to encrypt data in transit between the instance, the boot volume, and the block volumes.
82+
83+
* enable_pv_encryption_in_transit must be _true_
84+
7785
=== Creating the OKE Cluster
7886

7987
Initialize a working directory containing Terraform configuration files:

docs/terraformoptions.adoc

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -599,6 +599,16 @@ EOT
599599
|`ocid1.key.oc1....`
600600
|
601601

602+
|enable_pv_encryption_in_transit
603+
|Whether to encrypt data in transit between the instance, the boot volume, and the block volumes.
604+
|true/false
605+
|false
606+
607+
|node_pool_volume_kms_key_id
608+
|The id of the OCI KMS key to be used as the master encryption key for nodepools boot volume/block volume encryption..
609+
|`ocid1.key.oc1....`
610+
|
611+
602612
|`use_signed_images`
603613
|Whether to enforce the use of signed images. If set to true, at least 1 RSA key must be provided through image_signing_keys.
604614
|true/false

main.tf

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -226,11 +226,13 @@ module "oke" {
226226
admission_controller_options = var.admission_controller_options
227227

228228
# oke node pool parameters
229-
node_pools = var.node_pools
230-
node_pool_name_prefix = var.node_pool_name_prefix
231-
node_pool_image_id = var.node_pool_image_id
232-
node_pool_os = var.node_pool_os
233-
node_pool_os_version = var.node_pool_os_version
229+
node_pools = var.node_pools
230+
node_pool_name_prefix = var.node_pool_name_prefix
231+
node_pool_image_id = var.node_pool_image_id
232+
node_pool_os = var.node_pool_os
233+
node_pool_os_version = var.node_pool_os_version
234+
enable_pv_encryption_in_transit = var.enable_pv_encryption_in_transit
235+
node_pool_volume_kms_key_id = var.node_pool_volume_kms_key_id
234236

235237
# oke load balancer parameters
236238
preferred_load_balancer = var.preferred_load_balancer

modules/oke/nodepools.tf

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,9 +21,10 @@ resource "oci_containerengine_node_pool" "nodepools" {
2121
}
2222
}
2323
nsg_ids = var.worker_nsgs
24-
25-
# allow zero-sized node pools
26-
size = max(0, lookup(each.value, "node_pool_size", 0))
24+
is_pv_encryption_in_transit_enabled = var.enable_pv_encryption_in_transit
25+
kms_key_id = var.node_pool_volume_kms_key_id
26+
# allow zero-sized node pools
27+
size = max(0, lookup(each.value, "node_pool_size", 0))
2728
}
2829

2930
dynamic "node_shape_config" {

modules/oke/variables.tf

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,12 @@ variable "use_encryption" {
4747

4848
variable "kms_key_id" {}
4949

50+
variable "enable_pv_encryption_in_transit" {
51+
type = bool
52+
}
53+
54+
variable "node_pool_volume_kms_key_id" {}
55+
5056
# signed images
5157
variable "use_signed_images" {
5258
type = bool
@@ -77,4 +83,4 @@ variable "preferred_load_balancer" {}
7783

7884
variable "worker_nsgs" {
7985
type = list(any)
80-
}
86+
}

terraform.tfvars.example

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -136,6 +136,10 @@ services_cidr = "10.96.0.0/16"
136136
use_encryption = false
137137
kms_key_id = ""
138138

139+
### oke node pool volume kms integration
140+
enable_pv_encryption_in_transit = false
141+
node_pool_volume_kms_key_id = ""
142+
139143
## oke cluster container image policy and keys
140144
use_signed_images = false
141145
image_signing_keys = []

variables.tf

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -477,6 +477,18 @@ variable "kms_key_id" {
477477
type = string
478478
}
479479

480+
variable "enable_pv_encryption_in_transit" {
481+
description = "Whether to enable in-transit encryption for the data volume's paravirtualized attachment. This field applies to both block volumes and boot volumes. The default value is false"
482+
type = bool
483+
default = false
484+
}
485+
486+
variable "node_pool_volume_kms_key_id" {
487+
default = ""
488+
description = "The id of the OCI KMS key to be used as the master encryption key for Boot Volume and Block Volume encryption."
489+
type = string
490+
}
491+
480492
## oke cluster container image policy and keys
481493
variable "use_signed_images" {
482494
description = "Whether to enforce the use of signed images. If set to true, at least 1 RSA key must be provided through image_signing_keys."

0 commit comments

Comments
 (0)