上下文
上下文用于与不同的 Nanocl 守护进程通信。
例如,本地计算机和远程服务器各有一个 Nanocl 守护进程,你可以通过上下文在它们之间切换。
需要让守护进程能够从互联网访问。方法有多种,最简单的是使用 ProxyRule。
首先生成自己的 SSL/TLS 证书。
证书确保只有持有由 CA 签发的特定证书的客户端才能访问守护进程。
这是必要的安全措施。
我们提供了一个 Statefile,自动生成所需证书并配置 ProxyRule。
自动配置
应用以下 Statefile,生成证书并应用 ProxyRule:
nanocl state apply -fs nr.next-hat.com/v0.18/remote-nanocld应用 Statefile 后,可以创建上下文,在不同守护进程之间切换。先获取 Statefile 生成的客户端证书。
运行以下命令获取客户端证书:
nanocl secret inspect cert.client.nanocl.io命令会输出客户端证书和密钥。
手动配置
生成证书
使用以下命令生成证书:
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将证书移到运行 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应用 ProxyRule
接着应用 ProxyRule,将守护进程开放到互联网。
创建 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执行以下命令应用 ProxyRule:
nanocl apply -s nanocld-proxy.yml创建上下文
将客户端证书移到本地计算机的正确位置:
mkdir -p ~/.nanocl/certs
mv client.crt ~/.nanocl/certs/nanocl_client.crt
mv client.key ~/.nanocl/certs/nanocl_client.key最后,创建上下文以切换不同守护进程。
创建 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📝
将 my-remote-server 替换为远程服务器真实的 IP 地址或域名。
将 my-user 替换为实际用户名。
通过以下命令导入上下文:
nanocl context from my-secure-context.yml使用以下命令切换上下文:
nanocl context use my-secure-context也可以列出现有上下文:
nanocl context list更通用的操作命令是:
nanocl context --help查看上下文命令的更多信息。
最后更新于