プロジェクト概要と使用言語
container-web-tty は、ブラウザ経由でコンテナインスタンスに接続し、シェルコマンドを実行できるオープンソースツールです。元となる yudai/gotty を拡張しており、DockerやKubernetesクラスタへの接続をサポートしています。実装言語にはGoが採用されており、高並列処理と軽量なランタイムにより、リアルタイムなターミナル通信を効率よく実現しています。
初回導入時に発生する主な課題と対応方法
課題1:サービスの起動と基本設定
現象: 初めて利用するユーザーは、正しくサービスを立ち上げる手順や設定方法が不明確であることが多いです。
対応手順:
- Dockerエンジンがホストにインストールされていることを確認します。
- 以下のコマンドでコンテナをバックグラウンド起動します。ローカルのDockerデーモンへアクセスするためにソケットファイルをマウントします。
docker run -d --restart unless-stopped \
--name web-tty \
-p 8080:8080 \
-v /var/run/docker.sock:/var/run/docker.sock \
wrfly/container-web-tty
Kubernetes環境を利用する場合は、kubeconfigファイルをボリュームマウントし、バックエンドモードを切り替えます。
docker run -d --restart unless-stopped \
--name web-tty \
-p 8080:8080 \
-e WEB_TTY_BACKEND=kube \
-e WEB_TTY_KUBE_CONFIG=/etc/kube/config \
-v $HOME/.kube/config:/etc/kube/config \
wrfly/container-web-tty
課題2:gRPCを用いた分散環境での接続
現象: リモートサーバ上のコンテナを集中管理したいが、ネットワーク構成が複雑で接続が確立できない。
対応手順:
- 遠隔地のサーバでgRPCサーバー機能を有効化します。ポート8090を公開し、認証用のシークレットキーを設定します。
docker run -d --restart unless-stopped \
--name web-tty \
-p 8080:8080 \
-p 8090:8090 \
-e WEB_TTY_GRPC_PORT=8090 \
-e WEB_TTY_GRPC_AUTH=tokensecret123 \
-v /var/run/docker.sock:/var/run/docker.sock \
wrfly/container-web-tty
- ローカルまたは別のノードで、上記のgRPCエンドポイントを指すように設定します。
docker run -d --restart unless-stopped \
--name web-tty \
-p 8080:8080 \
-e WEB_TTY_BACKEND=grpc \
-e WEB_TTY_GRPC_AUTH=tokensecret123 \
-e WEB_TTY_GRPC_SERVERS=192.168.1.100:8090 \
wrfly/container-web-tty
これにより、中央ノードから複数のエッジサーバ上のコンテナを統合的に操作できます。
課題3:HTTPインターフェースの無効化
現象: セキュリティポリシーまたはリソース最適化の観点から、Webサーバー機能を停止したいケースがあります。
対応手順:
- HTTPリスナーを無効にするには、ポート番号に
-1を指定します。
docker run -d --restart unless-stopped \
--name web-tty \
-e WEB_TTY_PORT=-1 \
-v /var/run/docker.sock:/var/run/docker.sock \
wrfly/container-web-tty
- ログ出力でHTTPサーバーの起動抑制を確認します。
docker logs web-tty
出力に「HTTP server disabled on port -1」といったメッセージがあれば、正常に無効化されています。