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-nanocldUne 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.ioLe 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 365Dé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.keyAppliquer 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.sockAppliquez la ProxyRule avec :
nanocl apply -s nanocld-proxy.ymlCré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.keyCré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.keyRemplacez 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.ymlPour basculer entre les contextes, utilisez :
nanocl context use my-secure-contextVous pouvez également lister les contextes existants :
nanocl context listPlus généralement, utilisez la commande suivante :
nanocl context --helppour obtenir davantage d’informations sur la commande context.