Skip to Content

Контексты

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

Команда покажет подробности работы с контекстами.

Последнее обновление