Isolation physique SUSE® Security

Outils nécessaires

Nous devons installer trois outils pour télécharger tous les éléments pour SUSE® Security.

  • Helm - Gestionnaire de cycle de vie des applications

  • Skopeo - Outil d’image/registre

  • ZStandard - Algorithme de compression

# install helm
curl -fsSL https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 | bash

# install skopeo - rocky linux based
yum install zstd skopeo -y

Obtenir les images et le chart

Pour obtenir toutes les images, nous allons utiliser le chart lui-même. En utilisant Helm, ajoutons le dépôt et téléchargeons le chart. Nous allons également utiliser skopeo pour télécharger et téléverser.

# make a directory
mkdir -p neuvector/images

# add repo
helm repo add neuvector https://neuvector.github.io/neuvector-helm/

# update local chart
helm repo update

# pull
helm pull neuvector/core -d neuvector

Vous devriez maintenant voir un fichier comme core-2.4.0.tgz. La version peut varier, mais cela est correct. Ceci est le chart téléchargé. Maintenant, nous avons besoin des images. Heureusement, nous pouvons utiliser le chart pour résoudre cela.

# create image list
helm template neuvector/core-*.tgz | awk '$1 ~ /image:/ {print $2}' | sed -e 's/\"//g' > neuvector/images/list.txt

# get images
for i in $(cat neuvector/images/list.txt); do
  skopeo copy docker://$i docker-archive:neuvector/images/$(echo $i| awk -F/ '{print $3}'|sed 's/:/_/g').tar:$(echo $i| awk -F/ '{print $3}')
done

Fantastique, nous devrions avoir un répertoire qui ressemble à :

[root@flux ~]# ls -lR neuvector
neuvector:
total 16
-rw-r--r--. 1 root root 15892 Jan  8 14:33 core-2.4.0.tgz
drwxr-xr-x. 2 root root   153 Jan  8 14:35 images

neuvector/images:
total 953920
-rw-r--r--. 1 root root 236693504 Jan  8 14:35 controller_5.3.2.tar
-rw-r--r--. 1 root root 226704384 Jan  8 14:35 enforcer_5.3.2.tar
-rw-r--r--. 1 root root       176 Jan  8 14:34 list.txt
-rw-r--r--. 1 root root 331550208 Jan  8 14:35 manager_5.3.2.tar
-rw-r--r--. 1 root root 169589760 Jan  8 14:35 scanner_latest.tar
-rw-r--r--. 1 root root  12265472 Jan  8 14:35 updater_latest.tar

Et nous pouvons compresser et déplacer tout.

Compresser et déplacer

La compression est assez simple. Nous allons utiliser tar avec le format ZST pour une compression maximale.

# compress
tar -I zstd -vcf neuvector_airgap.zst neuvector

Il suffit maintenant de déplacer le neuvector_airgap.zst de 400 Mo vers votre réseau.

Décompresser et charger

Tout ce que nous devons faire maintenant est de décompresser avec une commande similaire. Ce qui suit sera envoyé au répertoire appelé neuvector.

tar -I zstd -vxf neuvector_airgap.zst

Charger les images dans un registre nécessitera une compréhension de votre réseau interne. Pour ce document, utilisons "registry.awesome.sauce" comme nom DNS. Charger les images est encore assez simple avec skopeo. Veuillez vous assurer qu’il est installé sur la machine interne. Vous devrez probablement vous authentifier avec skopeo login pour que cela fonctionne.

# skopeo load
export REGISTRY=registry.awesome.sauce
for file in $(ls neuvector/images | grep -v txt ); do
     skopeo copy docker-archive:neuvector/images/$file docker://$(echo $file | sed 's/.tar//g' | awk -F_ '{print "'$REGISTRY'/neuvector/"$1":"$2}')
done

Avec toutes les images chargées dans un registre, nous pouvons installer avec Helm.

Déployez avec Helm

Déployer avec Helm est assez simple. Il y a quelques valeurs nécessaires pour s’assurer que les images proviennent du registre local. Voici un bon exemple. Vous devrez peut-être ajuster quelques paramètres. Veuillez suivre les meilleures pratiques de Helm pour values.yaml. Notez le champ imagePullSecrets. C’est le secret pour que votre cluster s’authentifie auprès du registre.

# helm install example
# variables
export REGISTRY=registry.awesome.sauce  # registry URL
export NEU_URL=neuvector.awesome.sauce   # neuvector URL

# helm all the things -- read all the options being set
helm upgrade -i neuvector --namespace neuvector neuvector/core --create-namespace  --set imagePullSecrets=regsecret --set k3s.enabled=true --set k3s.runtimePath=/run/k3s/containerd/containerd.sock  --set manager.ingress.enabled=true --set controller.pvc.enabled=true --set controller.pvc.capacity=10Gi --set manager.svc.type=ClusterIP --set registry=$REGISTRY --set tag=5.3.2 --set controller.image.repository=neuvector/controller --set enforcer.image.repository=neuvector/enforcer --set manager.image.repository=neuvector/manager --set cve.updater.image.repository=neuvector/updater --set manager.ingress.host=$NEU_URL