|
This is unreleased documentation for Admission Controller 1.30-next. |
Air gap installation
This guide shows you how to install SUSE Security Admission Controller in air-gapped environments. For an air-gapped installation of Admission Controller, you need a private Open Container Initiative (OCI) registry accessible by your Kubernetes cluster. Admission Controller Policies are WebAssembly modules, therefore you can store them in an OCI-compliant registry as OCI artifacts. You need to add Admission Controller’s images and policies to this OCI registry. You can refer to a list of Admission Controller artifacts in the Artifacts reference page. The following sections describe the process.
Save container images in your workstation
-
Download
kubewarden-images.txtfrom the Admission Controller release page. Alternatively, you can use theimagelist.txtandpolicylist.txtshipped inside the helm charts containing the used container images and policy Wasm modules, respectively.Optionally, you can verify the signatures of the helm charts and container images
-
Download
kubewarden-save-images.shandkubewarden-load-images.shfrom the utilities repository. -
Save Admission Controller container images into a
.tar.gzfile:./kubewarden-save-images.sh \ --image-list ./kubewarden-images.txt \ --images kubewarden-images.tar.gzDocker begins pulling the images used for an air gap install. Be patient. This process takes a few minutes. When complete, your current directory, where you ran the command, has a tarball,
kubewarden-images.tar.gz.
Save policies in your workstation
-
Add all the policies you want to use to a
policies.txtfile. A file with a list of default policies is in the Admission Controller defaults release page. -
Download
kubewarden-save-policies.shandkubewarden-load-policies.shfrom thekwctlrepository -
Save policies into a
.tar.gzfile:./kubewarden-save-policies.sh --policies-list policies.txtYou use
kwctlto download the policies. Thekubewarden-policies.tar.gzarchive contains the policies.
Helm charts
You need to download the following helm charts to your workstation:
helm pull kubewarden/kubewarden-crds
helm pull kubewarden/kubewarden-controller
helm pull kubewarden/kubewarden-defaults
Populate private registry
Move these files to the air gap environment:
-
kubewarden-policies.tar.gz, -
kubewarden-images.tar.gz, -
kubewarden-load-images.sh, -
kubewarden-load-policies.shand -
policies.txt-
Load Admission Controller images into the private registry. You need to authenticate the Docker client against the local registry .
./kubewarden-load-images.sh \ --image-list ./kubewarden-images.txt \ --images kubewarden-images.tar.gz \ --registry <REGISTRY.YOURDOMAIN.COM:PORT> -
Load Admission Controller policies into the private registry. You should authenticate
kwctlthe local registry (kwctluses the same mechanism to authenticate asdocker, a~/.docker/config.jsonfile)./kubewarden-load-policies.sh \ --policies-list policies.txt \ --policies kubewarden-policies.tar.gz \ --registry <REGISTRY.YOURDOMAIN.COM:PORT> \ --sources-path sources.yml
-
|
The
Please refer to the section on
custom certificate authorities in the documentation to learn about configuring
the |
Install Admission Controller
Now that your private registry has everything required you can install Admission Controller. The only difference to a standard Admission Controller installation is that you need to change the registry in the container images and policies to be the private registry.
Install the Admission Controller stack:
helm install --wait -n kubewarden \
kubewarden-crds kubewarden-crds.tgz
helm install --wait -n kubewarden \
kubewarden-controller kubewarden-controller.tgz \
--set global.cattle.systemDefaultRegistry=<REGISTRY.YOURDOMAIN.COM:PORT>
|
To use the Policy Reported subchart available in the
It’s necessary to define |
helm install --wait -n kubewarden \
kubewarden-defaults kubewarden-defaults.tgz \
--set global.cattle.systemDefaultRegistry=<REGISTRY.YOURDOMAIN.COM:PORT>
|
To download the recommended policies installed by the To install, and wait for the installation to complete, use the following command:
If the |
Finally, you need to configure Policy Server to fetch policies from your private registry. Refer to the using private registry section of the documentation.
Now you can create Admission Controller policies in your cluster. Policies must be available in your private registry.
kubectl apply -f - <<EOF
apiVersion: policies.kubewarden.io/v1
kind: ClusterAdmissionPolicy
metadata:
name: privileged-pods
spec:
module: registry://<REGISTRY.YOURDOMAIN.COM:PORT>/kubewarden/policies/pod-privileged:v0.2.2
rules:
- apiGroups: [""]
apiVersions: [“v1”]
resources: [“pods”]
operations:
- CREATE
mutating: false
EOF
|
|