Контексты
Контексты позволяют взаимодействовать с разными демонами 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Команда покажет подробности работы с контекстами.