ウェブサイト検索

Portainerを使用してKubernetesクラスターの管理を始める方法


Portainerは最も人気のあるコンテナ管理インターフェースの一つです。PortainerはDockerおよびDocker Composeに焦点を当てて始まりましたが、Docker SwarmやKubernetesを含むオーケストレーターによって管理されるクラスターとも連携して動作します。

この記事では、PortainerをKubernetesクラスターに接続する方法を学びます。Portainerを使用して、Pod、Deployment、ConfigMapなどのKubernetesオブジェクトを表示および操作できるようになります。PortainerはHelmチャートをデプロイすることができ、基本的なクラスター情報を公開することもできます。Kubernetesのシンプルな管理のための公式ダッシュボードやLensのような他のオプションに対する実行可能な代替手段です。

クラスターへのポーテイナーの展開

進む前に、機能するKubernetesクラスターへのアクセスがあることを確認してください。 [マネージドクラウドサービス]を使用してプロビジョニングするか、MicroK8sやMinikubeなどのソリューションを使ってローカルで実行することができます。また、Portainerのインストールプロセスを簡素化するためにHelmがインストールされている必要があります。

次のコマンドを使用して、PortainerリポジトリをHelmに追加してください:

helm repo add portainer https://portainer.github.io/k8s/ 

helm repo update

次に、Portainerアプリケーションをデプロイするために、次のコマンドのいずれかを実行します。

NodePortでPortainerを公開する

helm install --create-namespace -n portainer portainer portainer/portainer

これは最も簡単な方法です。Portainer Podを実行しているノードで、ポート30777を使用してHTTP経由でPortainerにアクセスできるようになります。HTTPSトラフィックは、自己署名証明書を使用してポート30779で提供されます。この方法でデプロイする際に独自のSSL証明書を提供したい場合は、Portainerのドキュメントを参照してください。

ロードバランサーでポータイナーを公開する

helm install --create-namespace -n portainer portainer portainer/portainer \

--set service.type=LoadBalancer

この方法はNodePortに似ていますが、ノードの前にロードバランサーを使用します。ロードバランサーのIPの9000番ポートにアクセスすると、HTTP経由でPortainerに到達できます。HTTPSは9443番ポートでサポートされています。

IngressルートでPortainerを公開する

helm install --create-namespace -n portainer portainer portainer/portainer \

--set service.type=ClusterIP \

--set ingress.enabled=true \

--set ingress.annotations.'kubernetes\.io/ingress\.class'=nginx \

--set ingress.annotations."nginx\.ingress\.kubernetes\.io/backend-protocol"=HTTPS \

--set ingress.hosts[0].host=portainer.example.com \

--set ingress.hosts[0].paths[0].path="/"

この方法では、Ingress ルートを使用して Portainer を公開します。クラスター内に NGINX Ingress などの Ingress コントローラーが必要です。コマンドの host と path 変数を変更して、Portainer ルートをカスタマイズしてください。この例では、適切な DNS レコードを設定した後、portainer.example.com にアクセスすることで Portainer にアクセスできるようになります。

Ingressルートを設定することは、ノード間の負荷分散をサポートし、特定のドメインを割り当てることができるため、Portainerを長期的に提供する最良の方法です。NodePortまたはLoadBalancerオプションは、Ingressコントローラーが利用できないクラスターで実験しているときのより簡単な選択肢です。

デプロイメントが完了したら、適切なイングレスホストまたはIPアドレスとポート番号にアクセスして、ブラウザでPortainerをロードします。セットアップ画面に記入してユーザーアカウントを作成してください。

ポータネイダーは、Kubernetes クラスターで使用する準備が整いました - Kubernetes に直接デプロイすることで、環境が自動的に検出されます。「始める」ボタンをクリックして、インストールを完了してください。

既存のPortainerインストールにKubernetesクラスターを追加する

既存のPortainerインストールにKubernetesクラスターを追加することができます。ホストの外部でPortainerを実行することを選択することができるので、クラスターリソースを消費しないようにできます。

まず、Portainerインスタンスにログインします。左のサイドバーの下部にある「環境」リンクをクリックします。画面の上部にある青い「環境を追加」ボタンをクリックします。

次に「Kubernetes」タイルを押し、画面の下部にある「ウィザードを開始」ボタンを押してください。

次の画面では、Portainer Kubernetes エージェントのインストール手順が表示されます。このコンポーネントはクラスター内にインストールされます。Portainer はエージェントと通信して Kubernetes 情報を取得し、要求されたアクションを適用します。

エージェントをNodePortまたはLoadBalancerのいずれかでデプロイすることを選択できます。適切なタブを選択し、表示されたコマンドをコピーしてください。これをターミナルで実行して、Portainerエージェントをクラスタに追加します。Portainerエージェントは、Portainerアプリケーションが初めて接触する際に受け取るデジタル署名を使用して保護されています。エージェントは、正しい署名を提供しないクライアントからの通信を拒否します。

次に、PortainerのウェブUIに表示される「名前」と「環境URL」フィールドを記入してください。クラスターを識別する任意の名前を選択できます。

NodePort接続を使用している場合、環境URLはノードのIPアドレスのポート30778である必要があります。LoadBalancer接続の場合は、kubectl get services -n portainerを実行してロードバランサの外部IPを取得してください。このIPのポート9001でエージェントが公開されます。

kubectl get services -n portainer

NAMESPACE NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S)

portainer portainer-agent LoadBalancer 10.245.110.27 139.59.198.245 9001:30343/TCP

「接続」ボタンをクリックして接続を完了します。環境が追加されたことを確認する緑のポップアップアラートが表示されるはずです。画面の下部にある「完了」ボタンを押して、環境の一覧に戻ります。

Kubernetesを管理するためのPortainerの使用

ポータイナーのホームスクリーンには、設定されたすべての環境が表示されます。これらはKubernetesクラスター、ローカルのDockerエンジンインストール、またはその他のサポートされているエンドポイントです。管理を開始するには、クラスターをクリックしてください。

クラスターダッシュボード画面は、クラスタ内のリソース数の概要を提供します。ポーテイナーは現在、ネームスペース、アプリケーション(ポッドやデプロイメント)、コンフィグマップ、シークレット、およびボリュームとのインタラクションに焦点を当てています。これは、いくつかのKubernetesの概念に対する抽象化レイヤーを提供します。

アプリケーションのタイルまたはサイドバーのリンクをクリックして、実行中のPodとデプロイメントを表示します。この画面には、クラスター内のすべてのアプリケーションが表示され、その使用しているイメージや、Ingressルートが設定されている場合の外部URLが含まれています。

Kubernetes マニフェストファイルをアップロードするか、「フォームでアプリケーションを追加」ボタンをクリックして Pods をインタラクティブに設定することで、新しいアプリケーションを追加できます。

Portainerは、クラスターのリソース利用状況の基本的な概要も提供しています。サイドバーの「クラスター」項目をクリックすると、クラスター内のノードとそれらのメモリおよびCPUの予約を表示できます。

最後に、Cluster > Setup に移動してアクセスされるクラスタ設定画面は、Kubernetes 環境に対して Portainer のどの機能を有効にするかを制御します。これを使用して、Portainer に対して、ユーザーが利用可能なロードバランサー、Ingress コントローラー、およびストレージクラスを指定できます。他の設定には、リソースのオーバーコミットが許可されるかどうかを変更する機能(クラスターが提供できる以上のリソースが要求される場合)や、詳細な利用状況情報にアクセスするためのメトリクス API の有効化が含まれます。これには、メトリクス API がすでにクラスターにインストールされている必要があります。

要約

Portainerは最も人気のあるコンテナ管理インターフェイスの1つです。最新のPortainerリリースにはKubernetesクラスターへの組み込みサポートがあります。Portainerをクラスター内にデプロイするか、Portainerエージェントを使用してKubernetesを既存のアプリケーションインスタンスに接続することができます。

設定が完了すると、Portainerを使用してKubernetesのPodやその他のオブジェクトを表示および操作できます。これは、ターミナルで複雑なKubectlコマンドを実行するよりも便利です。Portainerを使用すると、Kubernetesクラスターから単一ノードのDockerインストールまで、すべてのコンテナ環境を一つのプラットフォームに集約できます。

関連記事: