Closed3

「Simplecontainer」を試す

kun432kun432

Dockerコンテナのリモートからの自動アップデートを色々調べてて見つけた。

ここで紹介されていた。

https://qdnqn.com/implement-gitops-with-docker/

GitHubレポジトリ

https://github.com/simplecontainer/smr

Simplecontainer

[!IMPORTANT]
本プロジェクトは現在アルファ段階です。商用環境での使用には注意してください。

概要

Simplecontainerは、DockerデーモンをGitOps機能付きのマネージドノードに変換するコンテナオーケストレーションプラットフォームです。オーバーレイネットワーキング、シークレット管理、マルチノードクラスタリングなどのエンタープライズ向け機能を提供しつつ、Dockerのシンプルさを維持します。

主な機能

  • GitOpsデプロイ:Gitリポジトリを単一の真実のソースとしてコンテナをデプロイ
  • オーバーレイネットワーク:WireGuard暗号化を利用したFlannelによるセキュアなコンテナ通信
  • マルチノードクラスタ:RAFTコンセンサスによる複数のDockerデーモン間でのスケール
  • 依存関係の管理:readinessプローブによる信頼性の高いコンテナ起動順序
  • シークレットと設定:組み込みのシークレットおよび設定管理
  • mTLSセキュリティ:暗号化されたコントロールプレーン通信
  • Real-time Dashboard:監視および管理用のWeb UI

アーキテクチャ

Simplecontainerは3つのデプロイモードをサポートします:

  1. Single Node:単一Dockerデーモンのスタンドアロン管理
  2. Multiple Isolated Nodes:独立したSimplecontainerインスタンス
  3. 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のみ)

リソース

ライセンス

本プロジェクトはGNU General Public License v3.0の下でライセンスされています。詳細はLICENSEファイルをご覧ください。

ちょっとK8S風味を感じる。思いの外、本格的かも。

kun432kun432

まずはシングルノードで。ProxmoxでUbuntu-24.04サーバのVMを立ち上げてそこでやってみる。

事前に必要な以下をまずインストール

  • Docker
  • WireGuard

まずDockerのインストール。Docker公式を参考に。

https://docs.docker.com/engine/install/ubuntu/

# 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のインストール

https://www.wireguard.com/install/

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

んー・・・どうもノードが起動できていないということだと思えるのだが、原因がわからないな・・・

kun432kun432

他のVMでもやってみたが同じ結果。それっぽいIssueもない、というかIssueがそんなにないので、わからん・・・これはパスかなぁ・・・

このスクラップは2ヶ月前にクローズされました