Kubernetes 環境で HAProxy を Ingress コントローラーとして使用する方法

Kubernetes Huan Jingde Haproxy Wo Ingress Kontororatoshite Shi Yongsuru Fang Fa



Kubernetes は、コンテナ化されたアプリケーションのデプロイ、スケーリング、管理を自動化したいと考えている人にとって理想的なオプションです。 Kubernetes 環境では、Kubernetes クラスター サービスへの外部アクセスを管理するためにイングレス コントローラーが不可欠です。イングレス コントローラーは、ルーティングとサービスへのトラフィックの制御方法を定義できる外部トラフィックのエントリ スペースとして機能します。さまざまなイングレス制御を使用できますが、このケースでは HAProxy に焦点を当て、それを使用してイングレス リソースで定義するルールを実装します。

Ingress コントローラーとは何ですか?

イングレス コントローラーは、ユーザーが Kubernetes クラスター内のサービスへのアクセスを管理および制御できるようにするコンポーネントです。イングレス コントローラーには 2 つの重要な要素があります。

  1. イングレスリソース – これは、指定されたホスト名とパスに基づいてクラスター内のサービスのトラフィックをルーティングするためのルールを定義する Kubernetes API オブジェクトです。
  2. イングレスコントローラー – 入力リソースで指定されたルールを実装するのは、HAProxy、Traefik、NGINX などのソフトウェア コンポーネントです。これは、イングレス オブジェクトに加えられた変更に基づいてトラフィックを処理するようにロード バランサーを構成します。

Kubernetes 環境で HAProxy を Ingress コントローラーとして使用する方法

Ingress コントローラーとは何か、そしてなぜそれが必要なのかを理解したら、次のタスクはそれを使用する手順を説明することです。この例では、指定された手順に従って、HAProxy をイングレス コントローラーとして設定します。







注意: Kubernetes クラスターが稼働していることを確認してください。その後、次のように進めます。



ステップ 1: Kubernetes クラスターを開始する
Kubernetes クラスターをセットアップして開始するには、さまざまな方法があります。このガイドでは Minikube を使用します。これは、特にマシン上にローカルに Kubernetes がある場合に、仮想マシンまたは Docker 内に Kubernetes をデプロイする簡単な方法を提供するツールです。



を参照してください。 Minikube ドキュメント プラットフォームで使用するインストール コマンドについて説明します。このケースでは、安定した「x64」Linux アーキテクチャを実行し、次のコマンドを実行します。





$カール -それ https: // storage.googleapis.com / minikube / リリース / 最新 / minikube-linux-amd64
$ 須藤 インストール minikube-linux-amd64 / ユーザー / 地元 / 置き場 / minikube

最初のコマンドは最新の安定した Minikube バイナリを取得し、2 番目のコマンドはバイナリをインストールして指定されたパスに移動します。

Minikube をインストールしたら、それを起動してクラスターを起動します。



$ ミニキューブスタート

クラスターにアクセスするには、kubectl をインストールする必要があります。ただし、Minikube で利用可能な kubectl バージョンを使用できます。たとえば、実行中のポッドの詳細を確認するには、次のように「kubectl」コマンドを実行します。

$ minikube kubectl -- ポッドを入手する -A

そうすれば、kubectl をインストールする必要がなくなります。 (-) は、コマンドが Minikube ではなく kubectl 用であることを示します。

ステップ 2: ネームスペースを作成する
2 番目のステップでは、イングレス コントローラー専用の名前空間を作成します。名前空間には「haproxy-controller」という名前を付けました。

$ minikube kubectl 名前空間の作成 haproxy-controller

ステップ 3: HAProxy Ingress コントローラーを作成してデプロイする
Ingress コントローラーの作成方法は、何を達成したいかによって異なります。たとえば、HAProxy イングレス コントローラーを作成して、要求されたホスト名に応じて HTTP トラフィックをルーティングできます。このような場合は、まず DNS サーバーにアクセスし、ターゲットのホスト名をクラスターにマッピングするための「A」レコードを作成します。

正しい「A」レコードを取得したら、次の図に示すようにイングレス コントローラーの YAML ファイルを作成します。最初のセクションでは、例として「jmalloc/echo-server」Docker コンテナー イメージを使用するデプロイメント リソースを作成しました。

YAML ファイルの 2 番目のセクションでは、手順 4 で作成したイングレス コントローラーで要求されたホスト名に基づいてマップされるサービス リソースを作成しました。

ファイルを保存し、kubectl を使用してクラスターにデプロイします。この例では、次のコマンドを実行して Minikube kubectl を参照します。 HAProxy Ingress コントローラーは「linuxhint-jmaildeployment.yaml」です。

$ minikube kubectl -- 適用する -f < ファイル名 >

サービスが作成されたことを示す出力を取得したら、次のコマンドを使用してサービスがデプロイされたことをさらに確認できます。

$ minikube kubectl -- ポッドを入手する --名前空間 ハプロキシコントローラー

ステップ 1 で作成した正しい名前空間を使用していることを確認してください。サービスが利用可能であることを確認する出力が表示されます。これは、デプロイメントが成功したことを意味します。

ステップ 4: Ingress リソースを作成してデプロイする
HAProxy がトラフィックをルーティングする方法に関するルールを含むイングレス リソースとして機能する別の YAML ファイルを作成します。対象とする正しいドメイン名 (ホスト) を使用していることを確認し、着信トラフィックを受け入れるために名前と目的のポートを調整してください。

HAProxy Ingress リソース ファイルを保存し、コントローラーの場合と同様にデプロイします。

$ minikube kubectl -- 適用する -f < ファイル名 >

Ingress リソースに「linuxhint-ingresscontroller.yaml」という名前を付けます。

それでおしまい!次のコマンドを使用すると、NodePort に割り当てられているポートをチェックすることで、HAProxy Ingress コントローラーが動作していることを確認できます。

$ minikube kubectl -- サービス haproxy-kubernetes-ingress を取得する --名前空間 ハプロキシコントローラー

この場合、ポート 32448 が割り当てられています。ポートを使用して作成したサービスにアクセスし、そのステータスを確認できます。

これで、HAProxy を Kubernetes 環境のイングレス コントローラーとして使用できるようになりました。

結論

Ingress コントローラーを使用すると、Ingress リソース ファイルで定義されているルールに基づいてクラスターへのトラフィックを処理する方法を定義できます。 HAProxy は、Kubernetes クラスター内で使用できる信頼性の高い Ingress コントローラーであり、この投稿では、HAProxy を使用するために従うべき手順について説明しました。試してみて、HAProxy を Ingress コントローラーとして使用して楽しんでください。