「Simplecontainer」を試す
Dockerコンテナのリモートからの自動アップデートを色々調べてて見つけた。
ここで紹介されていた。
GitHubレポジトリ
Simplecontainer
[!IMPORTANT]
本プロジェクトは現在アルファ段階です。商用環境での使用には注意してください。
概要
Simplecontainerは、DockerデーモンをGitOps機能付きのマネージドノードに変換するコンテナオーケストレーションプラットフォームです。オーバーレイネットワーキング、シークレット管理、マルチノードクラスタリングなどのエンタープライズ向け機能を提供しつつ、Dockerのシンプルさを維持します。
主な機能
- GitOpsデプロイ:Gitリポジトリを単一の真実のソースとしてコンテナをデプロイ
- オーバーレイネットワーク:WireGuard暗号化を利用したFlannelによるセキュアなコンテナ通信
- マルチノードクラスタ:RAFTコンセンサスによる複数のDockerデーモン間でのスケール
- 依存関係の管理:readinessプローブによる信頼性の高いコンテナ起動順序
- シークレットと設定:組み込みのシークレットおよび設定管理
- mTLSセキュリティ:暗号化されたコントロールプレーン通信
- Real-time Dashboard:監視および管理用のWeb UI
アーキテクチャ
Simplecontainerは3つのデプロイモードをサポートします:
- Single Node:単一Dockerデーモンのスタンドアロン管理
- Multiple Isolated Nodes:独立したSimplecontainerインスタンス
- Clustered Nodes:分散コンテナオーケストレーション
コアコンポーネント
- Control Plane:コンテナ管理のためのREST API(ポート1443)
- RAFT Consensus:分散状態管理(ポート9212)
- Embedded etcd:ローカルキー・バリュー・ストア(ポート2379、localhostのみ)
- Flannel Networking:WireGuard暗号化付きオーバーレイネットワーク
- DNS Server:コンテナ向けの独立DNS解決
コンテナ管理
SimplecontainerはYAML定義を使用してコンテナおよび関連リソースを管理します:
コアオブジェクト
- Containers:コンテナ仕様の定義
- Configuration:アプリ設定管理
- Secrets:機密資格情報の安全な保管
- Resources:コンテナ間で共有されるリソース
- GitOps:Gitベースのデプロイ自動化
- CertKey:TLS証明書管理
- HttpAuth:HTTP認証設定
ネットワークポート
- 1443:コントロールプレーンAPI (TCP)
- 9212:RAFTプロトコル通信 (TCP)
- 2379:Embedded etcd (localhostのみ)
リソース
- ダッシュボード: app.simplecontainer.io
- ドキュメント: docs.simplecontainer.io
- ブログ: blog.simplecontainer.io
- コンテナレジストリ: quay.io/repository/simplecontainer/smr
- ソースコード: github.com/simplecontainer/smr
- サンプル: github.com/simplecontainer/examples
ライセンス
本プロジェクトはGNU General Public License v3.0の下でライセンスされています。詳細はLICENSEファイルをご覧ください。
ちょっとK8S風味を感じる。思いの外、本格的かも。
まずはシングルノードで。ProxmoxでUbuntu-24.04サーバのVMを立ち上げてそこでやってみる。
事前に必要な以下をまずインストール
- Docker
- WireGuard
まずDockerのインストール。Docker公式を参考に。
# OS側で事前インストールされたものがあれば削除
for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do sudo apt-get remove $pkg; done
# Docker公式のGPG鍵を追加
sudo apt-get update
sudo apt-get install -y ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc
# APTレポジトリを追加
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
$(. /etc/os-release && echo "${UBUNTU_CODENAME:-$VERSION_CODENAME}") stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
# インストール
sudo apt-get install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
# ユーザからのdockerコマンドのアクセスを許可(ログインし直しが必要)
sudo usermod -aG docker $USER
WireGuardのインストール
sudo apt install -y wireguard
Simplecontainerをインストール
curl -sL https://raw.githubusercontent.com/simplecontainer/smr/refs/heads/main/scripts/production/smrmgr.sh -o smrmgr
chmod +x smrmgr
sudo mv smrmgr /usr/local/bin
sudo smrmgr install
デフォルト設定でシングルノードを起動する。READMEではsudoがついているけど、自分の場合は一般ユーザでもDockerへのアクセスが可能にしてあるので、その場合は不要だと思う。
smrmgr start
エラー・・・
All arguments:
..Node info.....................................................................................................
....Agent name: simplecontainer-node-1
....Node: localhost
....Image: quay.io/simplecontainer/smr
....Tag: v0.1.84
....Domain: localhost
....IP:
....Node args: --image quay.io/simplecontainer/smr --tag v0.1.84 --node simplecontainer-node-1 --listen 0.0.0.0:1443 --domain localhost
....Client args: --port.control 0.0.0.0:1443 --port.overlay 0.0.0.0:9212
....Service install: false
....Join: false
....smr version: v0.1.84
....ctl version: v0.0.117
................................................................................................................
starting node with the user: 0:0
node started
connection failed after retries: Get "https://localhost:1443/connect": dial tcp 127.0.0.1:1443: connect: connection refused
んー・・・どうもノードが起動できていないということだと思えるのだが、原因がわからないな・・・
他のVMでもやってみたが同じ結果。それっぽいIssueもない、というかIssueがそんなにないので、わからん・・・これはパスかなぁ・・・