Skip to Content

コンテキスト

コンテキストは、複数の Nanocl デーモンと通信するための仕組みです。

たとえば、ローカルのマシンとリモートサーバーのそれぞれで Nanocl デーモンを実行している場合、コンテキストを使って切り替えられます。

デーモンをインターネットから利用できるようにする必要があります。 方法はいくつかありますが、ProxyRule を使うのが最も簡単です。

まず、独自の SSL/TLS 証明書を生成する必要があります。
セキュリティーを確保するため、この認証局から生成した特定の証明書を持つクライアントだけがデーモンにアクセスできるようにします。

必要な証明書の生成と ProxyRule の設定を行う、便利な Statefile を用意しました。

自動設定

次の 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

コンテキストに関する詳しい情報が表示されます。

最終更新日