Skip to content

Update vcluster airgap docs #661

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

Merged
merged 19 commits into from
May 7, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 5 additions & 3 deletions .github/styles/config/vocabularies/Loft/accept.txt
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
AKS
admin
admin
Alpine
ArgoCD
AWS
[aA]pplication
Expand All @@ -13,10 +13,11 @@ CRD
CronJob
CustomResourceDefinition
DaemonSet
[eE]mail
[dD]eployment
DevSpace
DNS
[eE]mail
FIPS
[Ee][Kk][Ss]
GitOps
GCP
Expand Down Expand Up @@ -52,3 +53,4 @@ vCluster
Velero
VolumeAttachment
YAML
yaml
15 changes: 4 additions & 11 deletions vcluster/_partials/deploy/fips-config.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -11,18 +11,11 @@ controlPlane:
coredns:
embedded: true
distro:
k8s: # FIPS support is only available for the k8s distribution
version: v1.28.14
k8s: # FIPS support is only available for the K8s distribution
enabled: true
apiServer:
image:
repository: loft-sh/kubernetes-fips
controllerManager:
image:
repository: loft-sh/kubernetes-fips
scheduler:
image:
repository: loft-sh/kubernetes-fips
image:
repository: loft-sh/kubernetes-fips
tag: v1.28.14
hostPathMapper:
enabled: true
statefulSet:
Expand Down
45 changes: 22 additions & 23 deletions vcluster/deploy/security/fips.mdx
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
---
title: FIPS 140-2 Enablement
title: FIPS 140-2 enablement
sidebar_label: FIPS 140-2
sidebar_position: 7
sidebar_class_name: pro
Expand All @@ -9,32 +9,30 @@ import ProAdmonition from '../../_partials/admonitions/pro-admonition.mdx'

<ProAdmonition />

The National Institute of Standards and Technology (NIST) develops Federal
The [National Institute of Standards and Technology (NIST)](https://www.nist.gov/federal-information-processing-standards-fips) develops Federal
Information Processing Standards (FIPS) to ensure the security and
interoperability of computer systems used by the U.S. government.

FIPS 140-2 is a U.S. Federal Government security standard used to approve
cryptographic modules. This document explains how vCluster Pro and all its components
cryptographic modules. This document explains how vCluster and all its components
are built with FIPS-validated cryptographic libraries.

## Use of FIPS compatible Go toolchain

vCluster Pro is written in [Go](https://go.dev/), and the FIPS-compliant builds
vCluster is written in [Go](https://go.dev/), and the FIPS-compliant builds
are compiled using the `GOEXPERIMENT=boringcrypto` environment variable.

This directs the Go compiler to replace the standard Go crypto libraries with the
[FIPS-validated BoringCrypto](https://csrc.nist.gov/projects/cryptographic-module-validation-program/certificate/4407)
module by Google.
See GoBoring's [readme](https://go.dev/src/crypto/internal/boring/README) for
more details.
For more details, see the GoBoring [README](https://go.dev/src/crypto/internal/boring/README).
NIST validates [Google's BoringCrypto](https://boringssl.googlesource.com/boringssl/+/master/crypto/fipsmodule/FIPS.md)
modules on a wide range of systems.

### FIPS support in vCluster components

Most of the components used in vCluster are statically compiled with the
boringcrypto Go compiler. vCluster, from a components perspective, contains
multiple sub-components it depends on.
Most components used in vCluster are statically compiled with the BoringCrypto-enabled Go compiler.
From a component perspective, vCluster includes multiple sub-components it depends on.

The list below contains components built in a FIPS-compliant manner:

Expand All @@ -47,28 +45,28 @@ The list below contains components built in a FIPS-compliant manner:
<br />

:::caution
vCluster Pro currently does not provide FIPS-compliant builds of
vCluster currently does not provide FIPS-compliant builds of
CoreDNS or Helm. One must use the integrated CoreDNS feature
of vCluster Pro.
of vCluster.
:::

### FIPS vCluster Pro Images
### FIPS vCluster Images

The vCluster Pro FIPS-compliant images can be found in our [GitHub Container Registry](https://github.com/loft-sh/vcluster-pro/pkgs/container/vcluster-pro-fips).
The vCluster FIPS-compliant images can be found in the vCluster [GitHub Container Registry](https://github.com/loft-sh/vcluster-pro/pkgs/container/vcluster-pro-fips).

## Running vCluster FIPS-compliant
## Run a FIPS-compliant vCluster

To run vCluster in a FIPS environment, one has to reconfigure the
To run vCluster in a FIPS environment, you must reconfigure the
repositories used to reference the FIPS images and enable CoreDNS.

The following is an example of a `vcluster.yaml` file that one can use to create
a FIPS-compliant vCluster Pro instance.
a FIPS-compliant vCluster instance:

```yaml
controlPlane:
advanced:
defaultImageRegistry: ghcr.io
# uncomment to use virtual scheduler within vCluster
# Uncomment to use virtual scheduler within vCluster
# virtualScheduler:
# enabled: true
statefulSet:
Expand All @@ -82,7 +80,7 @@ controlPlane:
controllerManager:
image:
repository: loft-sh/kubernetes-fips
# uncomment to use FIPS compliant virtual scheduler within vCluster
# Uncomment to use FIPS compliant virtual scheduler within vCluster
# scheduler:
# image:
# repository: loft-sh/kubernetes-fips
Expand All @@ -92,28 +90,29 @@ controlPlane:
etcd:
embedded:
enabled: true # The use of embedded etcd is recommended, yet optional
# uncomment to use virtual scheduler within vCluster
# Uncomment to use virtual scheduler within vCluster
# sync:
# fromHost:
# nodes:
# enabled: true
```

And run:
To create the FIPS-compliant vCluster instance, run:

```bash
vcluster create my-fips-vcluster -f vcluster.yaml
```

:::info
If you wish to configure a different Kubernetes version in your virtual cluster
than the current host cluster version, you can do so by setting the `controlPlane.distro.k8s.version`.

To use a different Kubernetes version in your virtual cluster than the host cluster, set the `controlPlane.distro.k8s.version` field in your configuration:

```yaml
controlPlane:
distro:
k8s:
version: v1.31.1 # or v1.28.14
image:
tag: v1.31.1 # or v1.28.14
```

:::
Loading