12
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

セゾンテクノロジーAdvent Calendar 2024

Day 22

OpenShiftでNginx Ingress Operatorを導入してTCPをルーティングする

Last updated at Posted at 2024-12-21

この記事は セゾンテクノロジー Advent Calendar 2024の22日の記事です。

シリーズ2は HULFT10 のエンジニアによる投稿をお届けします。

はじめに

Openshift上にあるリソースに、Openshift外のネットワークからのTCP通信をルーティングしたい!
ということが最近あったのですが、ネット上に情報が少なくて困りました。。
そんなわけで続く誰かのために書きます!

概要

Nginx Ingress Operator(Nginx Ingress Controller)を使用して、OpenShift上にあるリソースにOpenShift外のネットワークからのTCP通信をルーティングしてみます!

今回は以下の構成でやってみます:

  • AWS上のOpenShiftにあるMySQLに対して、OpenShiftがあるVPCとは別のVPCのインスタンスからNginx Ingress Controller経由でログインする
    ダウンロード.png

  • 別VPCからログインしたいOpenShift上のMySQL
    スクリーンショット 2024-12-21 184056.png

必要に応じてMySQLを別のシステムに置き換えてください。

さっそく作っていきます!

Nginx Ingress Operatorを導入する

OperatorHubから「Nginx Ingress Operator」と検索してデフォルト設定でインストールします。
スクリーンショット 2024-12-21 184211.png

SecurityContextConstraints (SCC) の作成

これを作成しておかないと、後述のNginx Ingress Controllerの作成が失敗します。

以下のコマンドを実行すると必要なSCCが作成されます。

kubectl apply -f https://raw.githubusercontent.com/nginxinc/nginx-ingress-helm-operator/main/resources/scc.yaml

Nginx Ingress Controllerを作成する

Nginx Ingress Controllerは実際にTCP通信をルーティングしてくれるものです。NginxIngressの作成から進みます。
スクリーンショット 2024-12-21 184430.png

YAMLビューに切り替えてYAMLに手を加えます。
スクリーンショット 2024-12-21 184455.png

GlobalConfiguration設定

YAML内でglobalConfigurationと検索すると、GlobalConfigurationの設定箇所があるので以下のように設定してください。
スクリーンショット 2024-12-21 184527.png

これによりリスナーを作成することができます。

GlobalConfigurationの詳しい設定値は以下を参照してください。
https://docs.nginx.com/nginx-ingress-controller/configuration/global-configuration/globalconfiguration-resource/

Service CustomPort設定

YAML内でcustomPortsと検索すると、CustomPortsの設定箇所があるので以下のように設定してください。
スクリーンショット 2024-12-21 184600.png

これによりNginx Ingress ControllerにMySQL用のServiceが追加されます。

GlobalConfigurationとService CustomPortの設定をした上で作成ボタンを押すとNginx Ingress Controllerが作成されます。
スクリーンショット 2024-12-21 191709.png
metadataがデフォルト設定だとnginx-ingressというPJ上に作成されます。

TransportServerを作成する

CustomResourceDefinitionsでTransportServerと検索して進みます。
ダウンロード2.png

インスタンスからTransportServerの作成へと進みます。
YAMLを以下のように設定してください。

ダウンロード 5.png

namespaceはMySQLがあるところを指定してください。別のnamespaceを設定するとルーティングが失敗します。

これにより先ほど作成したリスナーに来た通信をMySQLにルーティングすることができます。

TransportServerの詳しい設定値は以下を参照してください。
https://docs.nginx.com/nginx-ingress-controller/configuration/transportserver-resource/

接続先Serviceの取得

以下のコマンドを実行すると、先ほど作成したNginx Ingress ControllerのExternal IPを取得できます。

oc get -n nginx-ingress svc

External IP例:aaaaaaaaaaaa000000a0a00000000aaa-00000000000.ap-northeast-1.elb.amazonaws.com

MySQLへの接続

EC2上から先のコマンドで取得したExternal IPに対してMySQLコマンドを実行します。

mysql -u root -p -h aaaaaaaaaaaa000000a0a00000000aaa-00000000000.ap-northeast-1.elb.amazonaws.com
 -P 3306

ダウンロード4.png

ログインできました!
これでOpenShift上にあるリソースに対して、OpenShift外のネットワークからのTCP通信をルーティングできたことになります。

おわりに

誰かが役立ててくれれば幸いです!

12
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
12
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?