From cacdeb3ca2c5e1f45f0c2e56c25b05428adb3944 Mon Sep 17 00:00:00 2001 From: Paul Wright Date: Thu, 14 Aug 2025 12:40:23 +0100 Subject: [PATCH 1/3] custom-certs --- input/advanced-deployments/custom-certs.md | 199 +++++++++++++++++++++ 1 file changed, 199 insertions(+) create mode 100644 input/advanced-deployments/custom-certs.md diff --git a/input/advanced-deployments/custom-certs.md b/input/advanced-deployments/custom-certs.md new file mode 100644 index 0000000..488e6b7 --- /dev/null +++ b/input/advanced-deployments/custom-certs.md @@ -0,0 +1,199 @@ +## Custom Certificates + +By default, the Skupper V2 controller generates internal Certificate Authorities (CAs) and self-signed certificates. +For example, it creates certificates to authenticate incoming Skupper links from external Skupper sites. + +The CA and server certificate used for this authentication are named `skupper-site-ca` (default issuer for a Skupper Site) and `skupper-site-server`, respectively. + +The self-signed server certificate (`skupper-site-server`) is issued for the public hostname or IP address associated with the `skupper-router` service. This depends on the ingress method used, for example an OpenShift Route or a Kubernetes LoadBalancer Service. + +Although this behavior is automatic, you can override it by providing your own custom server certificate or even your own CA. + +### Providing a Custom Server Certificate + +To authenticate incoming Skupper links using your own server certificate, create a Kubernetes Secret named `skupper-site-server` in the namespace where your Skupper site is (or will be) deployed: + +```yaml +apiVersion: v1 +kind: Secret +metadata: + name: skupper-site-server +data: + ca.crt: LS0tLS1C...redacted + tls.crt: LS0tLS1C...redacted + tls.key: LS0tLS1C...redacted +``` + +Make sure the certificate specified in `tls.crt` is valid for the hostname or IP address that will be referenced in your `Link` resource. In this example, consider the server certificate as being valid for the hostname: `skupper.public.host`. + +In case your Skupper Site is already created, you can find the appropriate Hostname or IP by looking at the Endpoint element of a Site status, like in the example below: + +```bash +kubectl get site -o json | jq -r .items[].status.endpoints[0].host +``` + +And you will see something like: + +``` +skupper.public.host +``` + +**_Note:_** Make sure you specify the appropriate namespace when running the commands from this example. + +Again, if your Site has already been created, Skupper will recognize your custom secret. You can confirm this with the following command: + +```bash +kubectl get certificate skupper-site-server -o json | jq -r .status.conditions[].message +``` + +You should see a message like: + +``` +Secret exists but is not controlled by skupper +``` + +This confirms that Skupper has detected your certificate but is not managing it. + +### Generating a Link for Remote Sites + +Once your Skupper site is configured to use your custom server certificate, you can create a `Link` resource and an associated client `Secret`. If the `skupper-site-ca` Issuer has been provided, you can create a Certificate resource and Skupper will generate the client Secret to be used, but it is only possible if the Issuer has been provided, otherwise, you have to provide the client Secret yourself. + +Here is how you can generate a Secret for a client certificate _(again, only if the Issuer has been provided)_: + +```bash +cat << EOF | kubectl create -f - +apiVersion: skupper.io/v2alpha1 +kind: Certificate +metadata: + name: skupper-link +spec: + ca: skupper-site-ca + client: true + subject: skupper.public.host +EOF +``` + +You should see an output like: + +``` +certificate.skupper.io/skupper-link created +``` + +Then a Secret named `skupper-link` should be created and it can be used to compose your link file. + +Now, regardless of whether Skupper generated your client certificate Secret or if you generated it yourself, to define a Skupper Link, that can be shared with remote sites allowing them to initiate a secure outgoing link to your site, you will need to write a YAML file that contains both documents: + +- A `Link`, and +- A Client `Secret` + +You can generate a Link using the `skupper` CLI, using `kubectl` or manually (as long as retrieve the list of endpoints). +Here are these three examples: + +#### Using the skupper CLI + +This is the easiest way to generate a Link. + +There are three ways you can run it. + +1. If you provided the `skupper-site-ca` Issuer to Skupper: + +```bash +skupper link generate +``` + +2. If your client certificates is defined as a Kubernetes secret named skupper-link: + +```bash +skupper link generate --tls-credentials skupper-link +``` + +3. If you are providing the `skupper-link` client certificate yourself: + +```bash +skupper link generate --generate-credential=false --tls-credentials=skupper-link +``` + +In this last example, you will need to combine the Link resource returned by the command +above with the client Secret named `skupper-link`. Suppose your client Secret is stored locally +on a file named `client-secret.yaml`, you could run: + +```bash +skupper link generate --generate-credential=false --tls-credentials=skupper-link; echo "---"; cat client-secret.yaml +``` + +#### Using kubectl + +The following command uses `kubectl`, `yq`, `jq` and `tee` to extract and compose the information needed to define a Link, storing the Link document into `skupper-link.yaml`. + +```bash +endpoints=$(kubectl get site -o json | jq -r '.items[].status.endpoints') +cat << EOF | yq -y --argjson endpoints "${endpoints}" '.spec.endpoints = $endpoints' | tee skupper-link.yaml +apiVersion: skupper.io/v2alpha1 +kind: Link +metadata: + name: skupper-link +spec: + cost: 1 + tlsCredentials: skupper-link +EOF +``` + +Then you need to combine it in a YAML file that contains both the Link above and the client Secret. +Suppose your client Secret is stored in a file named `client-secret.yaml`, you could run: + +```bash +echo "---" >> skupper-link.yaml +cat client-secret.yaml >> skupper-link.yaml +``` + +#### Manually generation + +You can retrieve the list of endpoints from the Site definition, using: + +```bash +kubectl get site -o yaml | yq -y .items[].status.endpoints +``` + +The command above uses both `kubectl` and `yq`. And the output should be something like: + +```yaml +- group: skupper-router + host: skupper.public.host + name: inter-router + port: '55671' +- group: skupper-router + host: skupper.public.host + name: edge + port: '45671' +``` + +Then you can create your Link file with: + +```yaml +--- +apiVersion: skupper.io/v2alpha1 +kind: Link +metadata: + name: skupper-link +spec: + cost: 1 + tlsCredentials: skupper-link + endpoints: + - group: skupper-router + host: skupper.public.host # The hostname or IP specified in your custom certificate + name: inter-router + port: '55671' + - group: skupper-router + host: skupper.public.host # The same hostname or IP + name: edge + port: '45671' +--- +apiVersion: v1 +kind: Secret +metadata: + name: skupper-link +data: + ca.crt: LS0tLS1C...redacted # The trusted CA certificate + tls.crt: LS0tLS1C...redacted # The client certificate + tls.key: LS0tLS1C...redacted # The corresponding private key +``` \ No newline at end of file From de4d39337f3bcc0c75ad75c594e3f665ee5931c2 Mon Sep 17 00:00:00 2001 From: Paul Wright Date: Thu, 14 Aug 2025 16:03:28 +0100 Subject: [PATCH 2/3] update --- input/advanced-deployments/custom-certs.md | 222 +++++++-------------- input/images/app-traffic.png | Bin 0 -> 30419 bytes input/index.html.in | 9 + 3 files changed, 83 insertions(+), 148 deletions(-) create mode 100644 input/images/app-traffic.png diff --git a/input/advanced-deployments/custom-certs.md b/input/advanced-deployments/custom-certs.md index 488e6b7..472fab6 100644 --- a/input/advanced-deployments/custom-certs.md +++ b/input/advanced-deployments/custom-certs.md @@ -1,17 +1,39 @@ -## Custom Certificates +## Using custom certificates for incoming links on Kubernetes -By default, the Skupper V2 controller generates internal Certificate Authorities (CAs) and self-signed certificates. -For example, it creates certificates to authenticate incoming Skupper links from external Skupper sites. +This section describes how to replace the default certificates for Kubernetes sites. -The CA and server certificate used for this authentication are named `skupper-site-ca` (default issuer for a Skupper Site) and `skupper-site-server`, respectively. +By default, the Skupper controller creates its own Certificate Authority (CA) and self-signed server certificates. +For example, it generates certificates to authenticate incoming links from other Skupper sites. -The self-signed server certificate (`skupper-site-server`) is issued for the public hostname or IP address associated with the `skupper-router` service. This depends on the ingress method used, for example an OpenShift Route or a Kubernetes LoadBalancer Service. +The default CA is named `skupper-site-ca`. +The default server certificate is named `skupper-site-server` and is issued for the public hostname or IP address of the `skupper-router` service, based on the ingress type (for example, OpenShift Route or LoadBalancer). -Although this behavior is automatic, you can override it by providing your own custom server certificate or even your own CA. +You can replace these defaults with your own CA or server certificate. -### Providing a Custom Server Certificate +## Mutual TLS between sites -To authenticate incoming Skupper links using your own server certificate, create a Kubernetes Secret named `skupper-site-server` in the namespace where your Skupper site is (or will be) deployed: +When two Skupper sites are linked, the routers use mutual TLS (mTLS) for authentication. + +![Application traffic encrypted](../images/app-traffic.png) + + + +The certificates and keys for this process are stored in Kubernetes Secrets: + +- **`skupper-site-server`** + Contains the key, certificate, and CA certificate used by the `skupper-router` when accepting incoming links from other sites. +- **Client credential Secret** + Contains the key, certificate, and CA certificate used by the `skupper-router` when creating outgoing links to other sites. The Secret name is user-defined and referenced in the `Link` resource’s `spec.tlsCredentials` field. + +Both routers must trust the peer’s CA and verify that the certificate’s hostname or IP matches the link’s address. + +If `skupper-site-server` or the client credential Secret are not provided, Skupper generates them using a self-signed CA stored in the `skupper-site-ca` Secret. + +> **Note:** Skupper uses the `skupper-site-ca` Secret only if a custom `skupper-site-server` or client credential Secret is not already present. + +### Use a Custom Server Certificate + +To use your own server certificate, create a secret named `skupper-site-server` in the namespace of your Skupper site: ```yaml apiVersion: v1 @@ -19,49 +41,41 @@ kind: Secret metadata: name: skupper-site-server data: - ca.crt: LS0tLS1C...redacted - tls.crt: LS0tLS1C...redacted - tls.key: LS0tLS1C...redacted + ca.crt: + tls.crt: + tls.key: ``` -Make sure the certificate specified in `tls.crt` is valid for the hostname or IP address that will be referenced in your `Link` resource. In this example, consider the server certificate as being valid for the hostname: `skupper.public.host`. - -In case your Skupper Site is already created, you can find the appropriate Hostname or IP by looking at the Endpoint element of a Site status, like in the example below: +The certificate in `tls.crt` must be valid for the hostname or IP address used in your `Link` resource. To find this value for an existing site: ```bash kubectl get site -o json | jq -r .items[].status.endpoints[0].host ``` -And you will see something like: - -``` -skupper.public.host -``` - -**_Note:_** Make sure you specify the appropriate namespace when running the commands from this example. - -Again, if your Site has already been created, Skupper will recognize your custom secret. You can confirm this with the following command: +If the site exists, Skupper detects the secret and stops managing the server certificate. Verify with: ```bash kubectl get certificate skupper-site-server -o json | jq -r .status.conditions[].message ``` -You should see a message like: - +Expected output: ``` Secret exists but is not controlled by skupper ``` -This confirms that Skupper has detected your certificate but is not managing it. +--- -### Generating a Link for Remote Sites +### Generate a Link for Remote Sites -Once your Skupper site is configured to use your custom server certificate, you can create a `Link` resource and an associated client `Secret`. If the `skupper-site-ca` Issuer has been provided, you can create a Certificate resource and Skupper will generate the client Secret to be used, but it is only possible if the Issuer has been provided, otherwise, you have to provide the client Secret yourself. +A **Link** lets a remote Skupper site connect securely to your site (incoming link). A link requires: -Here is how you can generate a Secret for a client certificate _(again, only if the Issuer has been provided)_: +- A `Link` resource with your site’s connection details. +- A client certificate secret (`skupper-link`) that the remote site uses for authentication. + +If you provide `skupper-site-ca` to Skupper, it can create the client certificate secret for you. Example: ```bash -cat << EOF | kubectl create -f - +kubectl create -f - <> skupper-link.yaml -cat client-secret.yaml >> skupper-link.yaml -``` - -#### Manually generation - -You can retrieve the list of endpoints from the Site definition, using: +--- +### Create the Link + +You can create a link in three ways: + +**1. Skupper CLI** +- Auto-generate (when CA is available): + ```bash + skupper link generate + ``` +- Use existing secret: + ```bash + skupper link generate --tls-credentials skupper-link + ``` +- Provide your own secret: + ```bash + skupper link generate --generate-credential=false --tls-credentials=skupper-link + ``` + +**2. kubectl** +Extract endpoints and create the `Link` YAML, then append the client secret. + +**3. Manual** +Get endpoints: ```bash kubectl get site -o yaml | yq -y .items[].status.endpoints ``` +Write a YAML file containing both the `Link` resource and the client secret. -The command above uses both `kubectl` and `yq`. And the output should be something like: - -```yaml -- group: skupper-router - host: skupper.public.host - name: inter-router - port: '55671' -- group: skupper-router - host: skupper.public.host - name: edge - port: '45671' -``` - -Then you can create your Link file with: - -```yaml --- -apiVersion: skupper.io/v2alpha1 -kind: Link -metadata: - name: skupper-link -spec: - cost: 1 - tlsCredentials: skupper-link - endpoints: - - group: skupper-router - host: skupper.public.host # The hostname or IP specified in your custom certificate - name: inter-router - port: '55671' - - group: skupper-router - host: skupper.public.host # The same hostname or IP - name: edge - port: '45671' ---- -apiVersion: v1 -kind: Secret -metadata: - name: skupper-link -data: - ca.crt: LS0tLS1C...redacted # The trusted CA certificate - tls.crt: LS0tLS1C...redacted # The client certificate - tls.key: LS0tLS1C...redacted # The corresponding private key -``` \ No newline at end of file + +**Key points:** +- Replace default certs to use your own trust setup. +- Ensure hostname/IP in cert matches your site’s public address. +- Links are for remote sites to connect **to** your site. diff --git a/input/images/app-traffic.png b/input/images/app-traffic.png new file mode 100644 index 0000000000000000000000000000000000000000..27864da50f20e37e381dc9dec106ea829fcc6b64 GIT binary patch literal 30419 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

V$lXWA#{8PjXkf*otZHo~0}lMrhnF#V&g$Uc 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 literal 0 HcmV?d00001 diff --git a/input/index.html.in b/input/index.html.in index b71570b..3071106 100644 --- a/input/index.html.in +++ b/input/index.html.in @@ -96,6 +96,15 @@ body_template: config/wide-body.html

+ +
+

Advanced deployments

+

While Skupper provides many options, you may have specific requirements that fall outside the standard configurations.

+
From 9f1f2532bab3fb6350b99dbad6cdc1a84abd538f Mon Sep 17 00:00:00 2001 From: Paul Wright Date: Thu, 14 Aug 2025 17:49:09 +0100 Subject: [PATCH 3/3] update --- input/advanced-deployments/custom-certs.md | 97 ++++++++---------- .../encrypting-service-traffic.md | 54 ++++++++++ input/images/tls-traffic.png | Bin 0 -> 67217 bytes 3 files changed, 98 insertions(+), 53 deletions(-) create mode 100644 input/advanced-deployments/encrypting-service-traffic.md create mode 100644 input/images/tls-traffic.png diff --git a/input/advanced-deployments/custom-certs.md b/input/advanced-deployments/custom-certs.md index 472fab6..ce0ed93 100644 --- a/input/advanced-deployments/custom-certs.md +++ b/input/advanced-deployments/custom-certs.md @@ -10,15 +10,15 @@ The default server certificate is named `skupper-site-server` and is issued for You can replace these defaults with your own CA or server certificate. -## Mutual TLS between sites +## About mutual TLS between sites When two Skupper sites are linked, the routers use mutual TLS (mTLS) for authentication. ![Application traffic encrypted](../images/app-traffic.png) +For information on TLS within sites, see [Encrypting service traffic](./encrypting-service-traffic.html) - -The certificates and keys for this process are stored in Kubernetes Secrets: +The certificates and keys for traffic between sites are stored in Kubernetes Secrets: - **`skupper-site-server`** Contains the key, certificate, and CA certificate used by the `skupper-router` when accepting incoming links from other sites. @@ -31,7 +31,7 @@ If `skupper-site-server` or the client credential Secret are not provided, Skupp > **Note:** Skupper uses the `skupper-site-ca` Secret only if a custom `skupper-site-server` or client credential Secret is not already present. -### Use a Custom Server Certificate +## Using a custom server certificate To use your own server certificate, create a secret named `skupper-site-server` in the namespace of your Skupper site: @@ -65,61 +65,52 @@ Secret exists but is not controlled by skupper --- -### Generate a Link for Remote Sites +## Generating a Link A **Link** lets a remote Skupper site connect securely to your site (incoming link). A link requires: - A `Link` resource with your site’s connection details. - A client certificate secret (`skupper-link`) that the remote site uses for authentication. -If you provide `skupper-site-ca` to Skupper, it can create the client certificate secret for you. Example: - -```bash -kubectl create -f - <dV?2nyP({ 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�GfhZNmbv*)NMR#^<6I5hyhh-Q)8x`DIB{5alBijsp>{?;nuZaGS7wCX_l^#; z9x&ZZINI2^-Hiv|@y%?XFN0%|*v?fzm;TAORM!8yAiB_x6Wep zNr$MLEJw`PCEhSuo_{hA{qByI7R434%xLu}X6unk=fQ>$Wz#B`n3-64T2R(oLSe*i z$D3`&L-XM*7C8H?AX2EkqoY}!#k`MPlq@q~?Yh%oG4Iqh__LAKn*)XB?mg-(Z^5x% zRC|GY(0O-Gp(9zm?W^CG+xN@KlZp3q9Scx|)ziqx3O=NGrxABkOH1p`JfLKE3=G2F z2piiR?{6;r&SzO`I14U!9$|)lf{7i6Av_*0bi~ZUGV`2H3HQk`U&3?Y&i2aC)~kw; z&Q$69)lckV>`?fWr|vVYQ`PgCYAfI%(UWBI2H>pxL-nK8MJc&w2b14 z8cx{=E4eY%41@MYJ?KEogrsO73Op!be0{C|vl(G`ARO)~FWho%^Nl_?k#Pq? zRUl(u%75&F-^hOdp2YR*CTV|>W!!RMtyqny zwDg7NWOPaetDhtFDc{|U`Lr7-!TRmP-FL--2Tz

Nz`-M4PYAr}vVJo>%3dSh}zw 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 l)V=l_cKnB(gJ)!kNw^~Vn4rD+B?>