-
Notifications
You must be signed in to change notification settings - Fork 280
K8s: Zeppelin maint 1 - INE cert changes #2424
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -756,6 +756,20 @@ RS Cluster Certificates. Used to modify the certificates used by the cluster. Se | |
| Secret name to use for cluster's CM (Cluster Manager) certificate. If left blank, a cluster-provided certificate will be used.<br/> | ||
| </td> | ||
| <td>false</td> | ||
| </tr><tr> | ||
| <td>cpInterNodeEncryptionCertificateSecretName</td> | ||
| <td>string</td> | ||
| <td> | ||
| Secret name to use for control plane internode encryption certificate. If left blank, a cluster-provided certificate will be used.<br/> | ||
| </td> | ||
| <td>false</td> | ||
| </tr><tr> | ||
| <td>dpInterNodeEncryptionCertificateSecretName</td> | ||
|
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. ditto (and many more in this PR) |
||
| <td>string</td> | ||
| <td> | ||
| Secret name to use for data plane internode encryption certificate. If left blank, a cluster-provided certificate will be used.<br/> | ||
| </td> | ||
| <td>false</td> | ||
| </tr><tr> | ||
| <td>ldapClientCertificateSecretName</td> | ||
| <td>string</td> | ||
|
|
||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -4,14 +4,16 @@ categories: | |
| - docs | ||
| - operate | ||
| - kubernetes | ||
| description: Enable encryption for communication between REC nodes in your K8s cluster. | ||
| description: Enable encryption for communication between REC nodes and configure custom certificates. | ||
| linkTitle: Internode encryption | ||
| weight: 99 | ||
| url: '/operate/kubernetes/7.22/security/internode-encryption/' | ||
| --- | ||
|
|
||
| Internode encryption provides added security by encrypting communication between nodes in your Redis Enterprise cluster (REC). | ||
|
|
||
| ## Enable internode encryption | ||
|
|
||
| Enable internode encryption in the `spec` section of your REC custom resource file. | ||
|
|
||
| ```yaml | ||
|
|
@@ -24,8 +26,112 @@ This change will apply to all databases created in the REC. You can override the | |
| Edit your Redis Enterprise database (REDB) custom resource file to disable internode encryption for only that database. | ||
|
|
||
| ```yaml | ||
| spec: | ||
| spec: | ||
| dataInternodeEncryption: false | ||
| ``` | ||
|
|
||
| To learn more about internode encryption, see [Internode encryption for Redis Enterprise Software]({{< relref "/operate/rs/security/encryption/internode-encryption.md" >}}). | ||
|
|
||
| ## Use custom certificates for internode encryption | ||
|
|
||
| By default, Redis Enterprise uses self-signed certificates for internode encryption. You can provide your own certificates for both control plane and data plane internode encryption by storing them in Kubernetes secrets and referencing them in your REC specification. | ||
|
|
||
| ### Prerequisites | ||
|
|
||
| - Internode encryption must be enabled (`dataInternodeEncryption: true`) | ||
|
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I don’t think that’s accurate. Could you provide a reference if I’m mistaken? |
||
| - Certificates must be in PEM format | ||
| - You must create the Kubernetes secrets before referencing them in the REC spec | ||
| - Certificates should include the full certificate chain if using a certificate authority | ||
|
|
||
| ### Create secrets for internode encryption certificates | ||
|
|
||
| Create Kubernetes secrets to store your internode encryption certificates. You need separate secrets for control plane and data plane encryption. | ||
|
|
||
| 1. Create a secret for control plane internode encryption: | ||
|
|
||
| ```sh | ||
| kubectl create secret generic cp-internode-cert \ | ||
| --from-file=certificate=</path/to/cp-certificate.pem> \ | ||
| --from-file=key=</path/to/cp-key.pem> \ | ||
| --from-literal=name=cp_internode_encryption | ||
| ``` | ||
|
|
||
| 2. Create a secret for data plane internode encryption: | ||
|
|
||
| ```sh | ||
| kubectl create secret generic dp-internode-cert \ | ||
| --from-file=certificate=</path/to/dp-certificate.pem> \ | ||
| --from-file=key=</path/to/dp-key.pem> \ | ||
| --from-literal=name=dp_internode_encryption | ||
| ``` | ||
|
|
||
| ### Configure certificates in REC spec | ||
|
|
||
| Add the certificate secret names to the `certificates` section of your REC specification: | ||
|
|
||
| ```yaml | ||
| spec: | ||
| dataInternodeEncryption: true | ||
| certificates: | ||
| cpInterNodeEncryptionCertificateSecretName: cp-internode-cert | ||
| dpInterNodeEncryptionCertificateSecretName: dp-internode-cert | ||
| ``` | ||
|
|
||
| You can configure one or both certificate types. If you don't specify a certificate secret name, the cluster uses a self-signed certificate for that encryption type. | ||
|
|
||
| Apply the updated REC specification: | ||
|
|
||
| ```sh | ||
| kubectl apply -f <rec-file>.yaml | ||
| ``` | ||
|
|
||
| ### Certificate rotation | ||
|
|
||
| You can rotate internode encryption certificates using either of these methods: | ||
|
|
||
| #### Method 1: Update the existing secret | ||
|
|
||
| Edit the certificate data in the existing Kubernetes secret. The operator automatically detects the change and applies the new certificate. | ||
|
|
||
| ```sh | ||
| kubectl create secret generic cp-internode-cert \ | ||
| --from-file=certificate=</path/to/new-cp-certificate.pem> \ | ||
| --from-file=key=</path/to/new-cp-key.pem> \ | ||
| --from-literal=name=cp_internode_encryption \ | ||
| --dry-run=client -o yaml | kubectl apply -f - | ||
| ``` | ||
|
|
||
| #### Method 2: Create a new secret and update the REC spec | ||
|
|
||
| 1. Create a new secret with the updated certificate: | ||
|
|
||
| ```sh | ||
| kubectl create secret generic cp-internode-cert-new \ | ||
| --from-file=certificate=</path/to/new-cp-certificate.pem> \ | ||
| --from-file=key=</path/to/new-cp-key.pem> \ | ||
| --from-literal=name=cp_internode_encryption | ||
| ``` | ||
|
|
||
| 2. Update the REC specification to reference the new secret: | ||
|
|
||
| ```yaml | ||
| spec: | ||
| certificates: | ||
| cpInterNodeEncryptionCertificateSecretName: cp-internode-cert-new | ||
| ``` | ||
|
|
||
| 3. Apply the updated REC specification: | ||
|
|
||
| ```sh | ||
| kubectl apply -f <rec-file>.yaml | ||
| ``` | ||
|
|
||
| ### Certificate lifecycle | ||
|
|
||
| When you remove a certificate secret reference from the REC specification, the operator does not delete the certificate from the Redis Enterprise cluster. The cluster continues to use the previously configured certificate until you explicitly replace it or the cluster reverts to using a self-signed certificate. | ||
|
|
||
| ## More info | ||
|
|
||
| - [Manage REC certificates]({{< relref "/operate/kubernetes/7.22/security/manage-rec-certificates" >}}) - General certificate management for Redis Enterprise clusters | ||
| - [Configuration secrets]({{< relref "/operate/kubernetes/7.22/security/configuration-secrets" >}}) - Best practices for storing configuration in Kubernetes secrets | ||
| - [Internode encryption for Redis Enterprise Software]({{< relref "/operate/rs/security/encryption/internode-encryption.md" >}}) - Detailed information about how internode encryption works | ||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -4,13 +4,15 @@ categories: | |
| - docs | ||
| - operate | ||
| - kubernetes | ||
| description: Enable encryption for communication between REC nodes in your K8s cluster. | ||
| description: Enable encryption for communication between REC nodes and configure custom certificates. | ||
| linkTitle: Internode encryption | ||
| weight: 99 | ||
| --- | ||
|
|
||
| Internode encryption provides added security by encrypting communication between nodes in your Redis Enterprise cluster (REC). | ||
|
|
||
| ## Enable internode encryption | ||
|
|
||
| Enable internode encryption in the `spec` section of your REC custom resource file. | ||
|
|
||
| ```yaml | ||
|
|
@@ -23,8 +25,112 @@ This change will apply to all databases created in the REC. You can override the | |
| Edit your Redis Enterprise database (REDB) custom resource file to disable internode encryption for only that database. | ||
|
|
||
| ```yaml | ||
| spec: | ||
| spec: | ||
| dataInternodeEncryption: false | ||
| ``` | ||
|
|
||
| To learn more about internode encryption, see [Internode encryption for Redis Enterprise Software]({{< relref "/operate/rs/security/encryption/internode-encryption.md" >}}). | ||
|
|
||
| ## Use custom certificates for internode encryption | ||
|
|
||
| By default, Redis Enterprise uses self-signed certificates for internode encryption. You can provide your own certificates for both control plane and data plane internode encryption by storing them in Kubernetes secrets and referencing them in your REC specification. | ||
|
|
||
| ### Prerequisites | ||
|
|
||
| - Internode encryption must be enabled (`dataInternodeEncryption: true`) | ||
|
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. ditto |
||
| - Certificates must be in PEM format | ||
| - You must create the Kubernetes secrets before referencing them in the REC spec | ||
| - Certificates should include the full certificate chain if using a certificate authority | ||
|
|
||
| ### Create secrets for internode encryption certificates | ||
|
|
||
| Create Kubernetes secrets to store your internode encryption certificates. You need separate secrets for control plane and data plane encryption. | ||
|
|
||
| 1. Create a secret for control plane internode encryption: | ||
|
|
||
| ```sh | ||
| kubectl create secret generic cp-internode-cert \ | ||
| --from-file=certificate=</path/to/cp-certificate.pem> \ | ||
| --from-file=key=</path/to/cp-key.pem> \ | ||
| --from-literal=name=cp_internode_encryption | ||
| ``` | ||
|
|
||
| 2. Create a secret for data plane internode encryption: | ||
|
|
||
| ```sh | ||
| kubectl create secret generic dp-internode-cert \ | ||
| --from-file=certificate=</path/to/dp-certificate.pem> \ | ||
| --from-file=key=</path/to/dp-key.pem> \ | ||
| --from-literal=name=dp_internode_encryption | ||
| ``` | ||
|
|
||
| ### Configure certificates in REC spec | ||
|
|
||
| Add the certificate secret names to the `certificates` section of your REC specification: | ||
|
|
||
| ```yaml | ||
| spec: | ||
| dataInternodeEncryption: true | ||
| certificates: | ||
| cpInterNodeEncryptionCertificateSecretName: cp-internode-cert | ||
| dpInterNodeEncryptionCertificateSecretName: dp-internode-cert | ||
| ``` | ||
|
|
||
| You can configure one or both certificate types. If you don't specify a certificate secret name, the cluster uses a self-signed certificate for that encryption type. | ||
|
|
||
| Apply the updated REC specification: | ||
|
|
||
| ```sh | ||
| kubectl apply -f <rec-file>.yaml | ||
| ``` | ||
|
|
||
| ### Certificate rotation | ||
|
|
||
| You can rotate internode encryption certificates using either of these methods: | ||
|
|
||
| #### Method 1: Update the existing secret | ||
|
|
||
| Edit the certificate data in the existing Kubernetes secret. The operator automatically detects the change and applies the new certificate. | ||
|
|
||
| ```sh | ||
| kubectl create secret generic cp-internode-cert \ | ||
| --from-file=certificate=</path/to/new-cp-certificate.pem> \ | ||
| --from-file=key=</path/to/new-cp-key.pem> \ | ||
| --from-literal=name=cp_internode_encryption \ | ||
| --dry-run=client -o yaml | kubectl apply -f - | ||
| ``` | ||
|
|
||
| #### Method 2: Create a new secret and update the REC spec | ||
|
|
||
| 1. Create a new secret with the updated certificate: | ||
|
|
||
| ```sh | ||
| kubectl create secret generic cp-internode-cert-new \ | ||
| --from-file=certificate=</path/to/new-cp-certificate.pem> \ | ||
| --from-file=key=</path/to/new-cp-key.pem> \ | ||
| --from-literal=name=cp_internode_encryption | ||
| ``` | ||
|
|
||
| 2. Update the REC specification to reference the new secret: | ||
|
|
||
| ```yaml | ||
| spec: | ||
| certificates: | ||
| cpInterNodeEncryptionCertificateSecretName: cp-internode-cert-new | ||
| ``` | ||
|
|
||
| 3. Apply the updated REC specification: | ||
|
|
||
| ```sh | ||
| kubectl apply -f <rec-file>.yaml | ||
| ``` | ||
|
|
||
| ### Certificate lifecycle | ||
|
|
||
| When you remove a certificate secret reference from the REC specification, the operator does not delete the certificate from the Redis Enterprise cluster. The cluster continues to use the previously configured certificate until you explicitly replace it or the cluster reverts to using a self-signed certificate. | ||
|
|
||
| ## More info | ||
|
|
||
| - [Manage REC certificates]({{< relref "/operate/kubernetes/security/manage-rec-certificates" >}}) - General certificate management for Redis Enterprise clusters | ||
| - [Configuration secrets]({{< relref "/operate/kubernetes/security/configuration-secrets" >}}) - Best practices for storing configuration in Kubernetes secrets | ||
| - [Internode encryption for Redis Enterprise Software]({{< relref "/operate/rs/security/encryption/internode-encryption.md" >}}) - Detailed information about how internode encryption works | ||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Can you please change this to Intenode... Instead of InterNode with a lower case N?
This was the final name which has been chosen in my PR to conform with officials docs