Skip to Content

Contextes

Les contextes permettent de communiquer avec différents démons Nanocl.

Vous pouvez, par exemple, avoir un démon Nanocl local et un autre sur un serveur distant. Les contextes permettent de passer de l’un à l’autre.

Nous devons rendre le démon accessible depuis Internet. Plusieurs méthodes existent ; la plus simple utilise une ProxyRule.

Générez d’abord votre propre certificat SSL/TLS.
Ce certificat garantit que seuls les clients disposant d’un certificat issu de l’autorité correspondante peuvent accéder au démon.
Cela répond à une nécessité évidente de sécurité.

Pour vous simplifier la tâche, nous avons créé un Statefile qui génère les certificats nécessaires et configure la ProxyRule.

Configuration automatique

Appliquez le Statefile suivant pour générer les certificats et appliquer la ProxyRule :

nanocl state apply -fs nr.next-hat.com/v0.18/remote-nanocld

Une fois le Statefile appliqué, créez le contexte permettant de basculer entre les démons. Récupérez d’abord le certificat client généré par le Statefile.

Pour cela, exécutez :

nanocl secret inspect cert.client.nanocl.io

Le certificat client et sa clé seront affichés.

Configuration manuelle

Générer les certificats

Utilisez les commandes suivantes pour générer les certificats :

openssl req -x509 -newkey rsa:4096 -keyout ca.key -out ca.crt -days 365 -nodes -subj "/CN=NanoclCA" openssl req -newkey rsa:4096 -keyout server.key -out server.csr -nodes -subj "/CN=*" openssl x509 -req -in server.csr -out server.crt -CA ca.crt -CAkey ca.key -CAcreateserial -days 365 openssl req -newkey rsa:4096 -keyout client.key -out client.csr -nodes -subj "/CN=NanoclClient" openssl x509 -req -in client.csr -out client.crt -CA ca.crt -CAkey ca.key -CAcreateserial -days 365

Déplacez-les ensuite à l’emplacement approprié sur le serveur distant exécutant Nanocl :

sudo mkdir -p /var/lib/nanocl/proxy/certs sudo mv ca.crt /var/lib/nanocl/proxy/certs/nanocl_ca.crt sudo mv server.crt /var/lib/nanocl/proxy/certs/nanocl_server.crt sudo mv server.key /var/lib/nanocl/proxy/certs/nanocl_server.key

Appliquer la ProxyRule

Appliquez ensuite une ProxyRule pour exposer le démon sur Internet.

Créez un fichier nanocld-proxy.yml :

ApiVersion: v0.18 # See all options: # https://docs.next-hat.com/references/nanocl/objects/resource Resources: - Name: tcp-9943.daemon.nanocl.io Kind: ncproxy.io/rule Data: Rules: - Protocol: Tcp Port: 9943 Network: All Ssl: Certificate: /var/lib/nanocl/proxy/certs/nanocl_server.crt CertificateKey: /var/lib/nanocl/proxy/certs/nanocl_server.key CertificateClient: /var/lib/nanocl/proxy/certs/nanocl_ca.crt VerifyClient: true Target: UnixPath: /run/nanocl/nanocl.sock

Appliquez la ProxyRule avec :

nanocl apply -s nanocld-proxy.yml

Créer le contexte

Déplacez votre certificat client à l’emplacement approprié sur votre machine :

mkdir -p ~/.nanocl/certs mv client.crt ~/.nanocl/certs/nanocl_client.crt mv client.key ~/.nanocl/certs/nanocl_client.key

Créez enfin le contexte pour basculer entre les différents démons.

Créons un fichier my-secure-context.yml :

Name: my-secure-context MetaData: Description: Secure connection to my remote server Endpoints: Nanocl: Host: https://my-remote-server:9943 Ssl: Cert: /home/my-user/.nanocl/certs/nanocl_client.crt CertKey: /home/my-user/.nanocl/certs/nanocl_client.key
📝

Remplacez my-remote-server par l’adresse IP ou le domaine réel du serveur distant.
Remplacez aussi my-user par votre nom d’utilisateur.

Importez le contexte avec :

nanocl context from my-secure-context.yml

Pour basculer entre les contextes, utilisez :

nanocl context use my-secure-context

Vous pouvez également lister les contextes existants :

nanocl context list

Plus généralement, utilisez la commande suivante :

nanocl context --help

pour obtenir davantage d’informations sur la commande context.

Dernière mise à jour le