Skip to Content
ガイドNanoclNanocl のガイド

Nanocl の概要

Nanocl は、ご自身のインフラストラクチャでコンテナと仮想マシンのワークロードを実行する、移植性の高いオープンソースのプラットフォームです。宣言的な Statefile で Cargo、仮想マシン、ジョブ、シークレット、コントローラーのリソースを定義すると、Nanocl デーモンがそれらのオブジェクトとローカルのランタイムを同期します。

名前は nano cloud の略です。大規模なコントロールプレーンを必要とせずに、クラウドのワークロードに役立つ基本機能を提供することを目指しています。

Nanocl が提供する機能

  • 名前付きのアプリケーションコンテナを Cargo にまとめ、レプリケーション、順序付きの初期化コンテナ、Docker 互換の設定を利用できます。
  • ヘルス状態に基づくワークロードの準備状態の確認、再起動、履歴、制御された更新。
  • HTTP API と nanocl CLI によるコンテナと仮想マシンのライフサイクル管理。
  • ncproxy と ncdns による動的な HTTP、ストリーム、DNS のルール。
  • シークレット、ジョブ、メトリクス、Statefile のテンプレート化、状態のバックアップ。

Nanocl 0.18 は主に単一ノードでの運用を想定したシステムです。自動的な複数ノードのスケジューリング、自動スケーリング、クラスター全体の高可用性、サービスメッシュは備えていません。名前付きの Docker ネットワークはノードのローカルにあり、Nanocl の名前空間が所有するものではありません。

Nanocl のアーキテクチャ

nanocl クライアントは nanocld に API リクエストを送信します。デーモンは望ましい状態と観測した状態を nstore に保存し、Docker のプロセスを管理して、プロキシと DNS のコントローラーが利用するイベントを発行します。

デフォルトのインストールには、次の要素が含まれます。

  • nanocld / ndaemon — API とワークロードのコントローラー。
  • nstore — CockroachDB を利用した、永続的なコントロールプレーンの状態。
  • nmetrics — metrsd のホストメトリクスサービス。
  • ncproxy — 同じサービスコンテナ内に Nginx のデータプレーンを組み込んだプロキシコントローラー。独立して運用する nproxy サービスはありません。
  • ncdns — 同じサービスコンテナ内に dnsmasq のデータプレーンを組み込んだ DNS コントローラー。独立して運用する ndns サービスはありません。
  • ncvpnkit — Docker Desktop 環境にのみインストールされるネットワークコントローラー。

単一ノードの簡略化した構成:

Nanocl の単一ノード構成

図では、それぞれの Cargo をプロセスのグループとして示しています。0.18 では、1 つの Cargo レプリカに複数の名前付きアプリケーションコンテナと、必要に応じて内部ネットワークサンドボックスを含められます。

基本オブジェクト

Cargo

Cargo は、1 つ以上の名前付きアプリケーションコンテナ、任意の初期化コンテナ、レプリカ数を持つ永続的なコンテナワークロードです。複数コンテナの Cargo を参照してください。

仮想マシン

仮想マシンは管理対象のランタイムコンテナ内で QEMU を実行し、ローカルのディスクイメージの絶対パスを使用します。ランタイムの起動前に、任意の初期化コンテナでイメージを準備できます。

ジョブ

Job は、有限のコンテナタスクです。Cargo のアプリケーションコンテナと異なり、処理が完了したら終了することを想定しています。

リソース

Resource はコントローラーを通じて Nanocl を拡張します。デフォルトの ncproxy と ncdns のコントローラーは、プロキシと DNS のルールリソースを利用します。

シークレット

Secret は環境変数、レジストリ、TLS のデータを保持します。Cargo レベルのシークレットはすべてのコンテナに継承され、コンテナレベルのシークレットはその名前付きコンテナにだけ適用されます。