レビュー

DockerコンテナやKubernetesクラスタをGUIで管理できる「Portainer」レビュー


Dockerコンテナの起動やイメージ管理、KubernetesクラスタへのアプリケーションのデプロイなどをGUIで行えるソフトウェアが「Portainer」です。DockerやKubernetesの管理を簡単に行えそうだったので、無料のコミュニティ版を使ってみました。

Portainer | Open Source Container Management GUI for Kubernetes, Docker, Swarm
https://www.portainer.io/

Documentation
https://documentation.portainer.io/

◆Docker編
まずはDockerを利用できる環境で、以下のコマンドを実行しPortainerコンテナを起動します。今回はDocker DesktopをバックエンドとするWSL環境を利用しました。

$ docker volume create portainer_data

$ docker run -d -p 8000:8000 -p 9000:9000 --name=portainer --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer-ce


ブラウザで「http://(Portainerを起動したホストのIPアドレス):9000」にアクセスすると、アカウント設定画面が表示されます。ユーザー名とパスワードを入力して「Create user」をクリック。


続いて管理するプラットフォームを選択。今回は「Docker」を選択して「Connect」をクリックします。


ダッシュボードが現れ、コンテナやイメージの情報が表示されました。PortainerはDocker Engine APIを使ってDockerデーモンの操作やステータス取得を行っています。


「App Templates」では、利用したいサービス一覧から簡単にコンテナを起動することが可能。今回はNGINXコンテナを起動してみます。


コンテナ名と接続するネットワークを選択して「Deploy the container」をクリック。


コンテナが起動しました。


「Quick actions」の各ボタンから、コンテナの操作やステータスの取得を行えます。


一番左側のログボタンをクリックすると、コンテナのログを確認することが可能。


「i」マークのボタンでは、コンテナの詳細な情報を確認することができます。


グラフのボタンをクリックすると、コンテナのメモリやCPU使用率といったステータスがグラフで表示されます。また、この画面でコンテナ内のプロセスを確認することもできます。


一番右側のボタンでは、コンテナのターミナルに接続してコマンド操作を行うことができます。


「Images」タブからは、コンテナレジストリからコンテナイメージを取得したり、ホストに取得済みのイメージを確認したりすることが可能。


「Networks」タブでコンテナネットワークを確認したり……


「Volumes」タブでコンテナのボリュームを確認したりすることもできます。


Portainerのユーザーを追加するには、「Users」タブでユーザー名とパスワードを入力し「Create user」をクリックすればOK。


「Teams」タブからはチームを作成することができますが、ユーザーやチームごとに許可する操作や閲覧可能な情報を制限できる「Roles」機能が有料なので、無料でPortainerを利用する場合は作成する意味がないかもしれません。


Portainerで管理するDockerホストを追加するには、「Endpoints」タブへ移動し「Add endpoint」をクリック。


事前にホスト側でTCP経由でのDocker Engine APIを有効にしておき、エンドポイントの名称とホストのIPアドレス、ポートを入力して「Add endpoint」をクリック。


こんな感じで、管理対象のホストを追加することができました。


ダッシュボードでもホストが追加されていることを確認できます。


なお、TCP経由でDocker Engine APIを利用可能にするには、ホストの「/etc/default/docker」に以下の記述を追加します。Docker Engine APIはDockerデーモンを遠隔で操作可能とするAPIなので、利用にはTLSとの併用が推奨されています。

DOCKER_OPTS="-H tcp://0.0.0.0:2375"


◆Kubernetes編
PortainerはKubernetesのクラスタを管理することも可能。今回はGoogle Kubernetes Engineにクラスタを構築し、Portainerをデプロイしてみます。


gcloudで外部からkubectlによるクラスタ管理ができる状態にして、以下のコマンドを実行。構成ファイルをもとにPortainerをクラスタにデプロイします。

$ kubectl create namespace portainer
$ kubectl apply -n portainer -f https://raw.githubusercontent.com/portainer/k8s/master/deploy/manifests/portainer/portainer.yaml


Portainerに外部からアクセスできるように、Ingressを作成。


今回はテストなので、とりあえずすべてのアクセスをPortainerへ送るように設定しました。


IngressのフロントエンドとなるIPアドレスにアクセスすれば、Portainerの画面が表示されます。


Docker編と同じようにアカウントを作成したら、プラットフォームに「Kubernetes」を選択して「Connect」をクリックします。


こんな感じで、エンドポイントにローカルのKubernetesクラスタが表示されるので、クリックします。


ダッシュボードが表示されました。「Resource pools」や「Applications」といった、Dockerを管理する場合とは異なる項目が用意されています。


「Resource pools」はひとつのKubernetesクラスタを複数のチームで共有する場合などに利用します。新しいリソースプールを作成するには、「Resource pools」タブから「Add resource pools」をクリック。


リソースプールの名前を入力し、「Resource limits」でリソースプールが利用できるクラスタのリソース上限を設定。「Create resource pool」をクリックすれば、リソースプールを作成できます。


クラスタにアプリケーションをデプロイするには「Applications」タブから「Add applications」をクリックします。


アプリケーションの名称やコンテナイメージ、デプロイするリソースプールを指定。必要であれば環境変数や設定などを指定することもできます。


「Resource reservations」で、アプリケーションが利用できるリソースの上限を指定。


設定が完了したら「Deploy application」をクリック。これだけでアプリケーションのデプロイは完了です。


画像のように、シングルノードでNGINXコンテナが起動していることがわかります。アプリケーション名をクリックすると……


アプリケーションの詳細を確認することが可能。


下部の「Actions」ボタンでは、Docker編と同じようにログを確認したり、ターミナルに接続したりすることができます。


また、アプリケーション一覧画面の「Tables settings」で「Show system resources」にチェックを入れると、Portainerでデプロイしたアプリケーション以外のアプリケーションを確認することもできます。


構成設定を確認するには「Configurations」タブ


「Volumes」タブでクラスタのボリュームを確認したり……


「Cluster」タブでクラスタのステータスやワーカーノードの一覧を確認したりすることもできます。


なお、追加機能やサポートが利用できる有料版の「Portainer Bussiness」は、ノード数とサポート品質によって価格が変動するサブスクリプション制で、以下のページで料金を試算することができます。

Simple node-based pricing | Portainer Business
https://www.portainer.io/products/portainer-business-pricing

この記事のタイトルとURLをコピーする

・関連記事
AWSやKubernetesなどのインフラ管理をまとめて行える「Clutch」をLyftがオープンソースで無料公開 - GIGAZINE

Pythonでコードを書いてAWSやKubernetesのシステム構成図を出力できる「Diagrams」 - GIGAZINE

GitHubっぽくデータベースのバージョン管理やホスティングができる「DoltHub」 - GIGAZINE

NGINXがKubernetes向けサービスメッシュ「NGINX Service Mesh」を発表 - GIGAZINE

DOOMで敵を倒してKubernetesのPodを強制終了させまくれる「Kube DOOM」レビュー - GIGAZINE

in レビュー,   ソフトウェア,   ネットサービス, Posted by darkhorse_log

You can read the machine translated English article here.