コンテキスト
コンテキストは、複数の Nanocl デーモンと通信するための仕組みです。
たとえば、ローカルのマシンとリモートサーバーのそれぞれで Nanocl デーモンを実行している場合、コンテキストを使って切り替えられます。
デーモンをインターネットから利用できるようにする必要があります。 方法はいくつかありますが、ProxyRule を使うのが最も簡単です。
まず、独自の SSL/TLS 証明書を生成する必要があります。
セキュリティーを確保するため、この認証局から生成した特定の証明書を持つクライアントだけがデーモンにアクセスできるようにします。
必要な証明書の生成と ProxyRule の設定を行う、便利な Statefile を用意しました。
自動設定
次の Statefile を適用すると、証明書の生成と ProxyRule の適用ができます。
nanocl state apply -fs nr.next-hat.com/v0.18/remote-nanocldStatefile を適用したら、デーモンを切り替えるためのコンテキストを作成できます。
まず、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.keyProxyRule を適用する
次に 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.keymy-remote-server は、リモートサーバーの実際の IP アドレスまたはドメイン名に置き換えてください。
my-user も実際のユーザー名に置き換えてください。
次のコマンドでコンテキストをインポートできます。
nanocl context from my-secure-context.ymlコンテキストの切り替えには、次のコマンドを使います。
nanocl context use my-secure-context既存のコンテキストの一覧も表示できます。
nanocl context listコンテキストコマンドの詳細は、次のコマンドで確認できます。
nanocl context --helpコンテキストに関する詳しい情報が表示されます。