Red Hat OpenShiftでNGINX Ingress Operatorを使い始める

NGINX | 2020年4月30日

In our Red Hatとのパートナーシップを通じて、OpenShiftでDevOpsに対応したサービスデリバリーを実現する、高性能でスケーラブルな長期利用向けソリューションを必要とする企業ユーザーの支援に、引き続き注力しています。OpenShift向けNGINX Ingress Operatorは、OpenShift環境でデフォルトルーターと併用してKubernetes向けNGINX Plus Ingress Controllerをデプロイするための、サポートおよび認定済みの仕組みです。ポイント&クリックでインストールでき、自動アップグレードにも対応しています。Operator Lifecycle Manager(OLM)を活用して、NGINX Ingress Operatorのインストール、アップグレード、設定を行えます。

デフォルトルーターに加えてNGINX Plus Ingress Controllerを使用するメリットについては、ブログ「The Value of Red Hat + NGINX」で、F5とRed Hatのパートナーシップが、安全で拡張性に優れ、サポートが提供されるアプリケーションデリバリーをどのように実現するかをご覧ください。

このステップバイステップガイドでは、NGINX Ingress Operatorの利用を開始するために必要な情報をすべて説明します。開始する前に、OpenShift 4.3以降を実行しているOpenShiftクラスター環境への管理者アクセス権があることを確認してください。

Operatorのインストール

NGINX Ingress Operatorのインストール方法を動画でご紹介します。続いて、スクリーンショット付きの概要を掲載します。

OpenShiftコンソールからNGINX Ingress Operatorをインストールします。

  1. 管理者としてOpenShiftコンソールにログインします。
  2. 左側のナビゲーション列で[Operators]、続いて[OperatorHub]をクリックします。検索ボックスに「nginx」と入力し、表示された[Nginx Ingress Operator]ボックスをクリックします。
  3. 製品情報を確認したら、[Install]ボタンをクリックします。
  4. 表示された[Create Operator Subscription]ページで、Operatorをインストールするクラスターの名前空間を指定します(この例ではnginx-ingress)。また、実行中のOperatorインスタンスを管理者が手動で承認しなくても自動的に更新できるように、[Automatic]のラジオボタンを[Approval Strategy]で選択します。[Subscribe]ボタンをクリックします。
  5. インストールが完了したら、ターミナルで次のコマンドを実行し、Operatorが稼働していることを確認します。
# oc get pods –n nginx-ingressNAME                                     READY   STATUS    RESTARTS   AGE
nginx-ingress-operator-dd546d869-xxxxx   1/1     Running   0          7m29s
  1. 左側のナビゲーション列で[Installed Operators]をクリックします。開いたページの[Provided APIs]列で、NginxIngressControllerリンクをクリックします。NginxIngressControllerは、OperatorがOpenShiftクラスターにNGINX Plus Ingress Controllerをデプロイするために使用するカスタムリソースです。
  2. 表示されたページで、次の例のようなマニフェストをテキストフィールドに貼り付け、[Create]ボタンをクリックしてNGINX Plus Ingress Controller for Kubernetesをデプロイします。TLS証明書とキーを含むSecretをdefaultSecretフィールドとwildcardTLSフィールドに埋め込んでいる点に注意してください。これにより、IngressポリシーにSecretを含めることなく、TLS終端とパススルーが可能になります。NGINX Plus Ingress Controller for Kubernetesの設定時に指定できる多数のオプションについては、GitHubリポジトリをご覧ください。
apiVersion: k8s.nginx.org/v1alpha1kind: NginxIngressController
metadata:
  name: my-nginx-ingress-controller
  namespace: nginx-ingress
spec:
  enableCRDs: true
  image:
    pullPolicy: Always
    repository: registry.hub.docker.com/nginx/nginx-ingress
    tag: edge
  nginxPlus: false
  serviceType: LoadBalancer
  type: deployment
  replicas: 2
  defaultSecret: nginx-ingress/default-server-secret
  wildcardTLS: default/app-secret
  configMapData:
    error-log-level: debug
  enableTLSPassthrough: true
  globalConfiguration: nginx-ingress/nginx-configuration
  1. デプロイを確認するには、ターミナルで次のコマンドを実行します。出力に示されているように、前の手順で使用したマニフェストにより、NGINX Plus Ingress Controllerのレプリカが2つデプロイされ、LoadBalancerサービスを介して公開されています。(読みやすくするため、getコマンドの出力は複数行に分けて表示しています。)
# oc get pods -n nginx-ingressNAME                                          READY  STATUS   RESTARTS  AGE
my-nginx-ingress-controller-579f455d7d-xxxxx  1/1    Running  0         5m53s
my-nginx-ingress-controller-579f455d7d-xxxxx  1/1    Running  0         5m53s
nginx-ingress-operator-dd546d869-xxxxx        1/1    Running  0         56m

# oc get svc –n nginx-ingress
my-nginx-ingress-controller      LoadBalancer   172.xx.48.254    <pending>  ...   
nginx-ingress-operator-metrics   ClusterIP      172.xx.209.190   <none>     ...   

    ... 80:32028/TCP,443:31973/TCP   10m
    ... 80:32028/TCP,443:31973/TCP   10m
  1. 次のコマンドを実行し、NGINX Plus Ingress Controllerがリクエストに応答することを確認します。public_IP_addressには、NGINX Plus Ingress Controllerを公開するLoadBalancerサービスの外部IPアドレスを指定します。この時点では、コマンドから404 Not Foundが返されます。これは、バックエンドPodにトラフィックをルーティングするIngressリソースをまだ構成およびデプロイしていないためです。詳細については、ドキュメントを参照してください。
# curl public_IP_address <html> 
<head><title>404 Not Found</title></head> 
<body bgcolor="white"> 
<center><h1>404 Not Found</h1></center> 
<hr><center>nginx/1.13.4</center> 
</body> 
</html>
  1. エンドユーザーはNginxIngressControllerリソースのマニフェストを複数送信でき、マニフェストごとに個別のデプロイメントが作成されることに注意してください。Operatorは、異なる名前空間へのデプロイメントにも対応しています。名前空間は、マニフェストのmetadataセクションで指定できます。

次のステップ

NGINX Ingress Operatorは、特に以下の点でNGINX Plus Ingress Controllerのデプロイ管理を支援します。

  • 構成 – わずかな入力パラメーターと1つのマニフェストだけで基本的なデプロイを開始
  • スケーリング – レプリカをシームレスに追加・削除
  • アップグレード – ダウンタイムなしのローリングアップデートを活用
  • アンインストール – OperatorおよびKubernetes Ingress Controllerのすべてのオブジェクトが適切かつ安全に削除されるようにします

NGINX Plus Ingress Controllerの準備とデプロイが完了したら、OpenShiftでNGINX Plusの高度な機能を使用するために、ドキュメントおよびGitHubリポジトリをご覧ください。

まだお客さまでない場合は、NGINX PlusとIngress Controllerをお試しいただける30日間の無料トライアルを今すぐ開始するか、ユースケースについてご相談ください。

Red Hat + NGINXがもたらす価値

Red HatとNGINXのソリューションを組み合わせて導入する3つのメリット(アプリケーションの保護、ビジネスの拡大、ビジョンの実現支援)を示す図


共有
タグ: F5 NGINX, 2020, Tech

著者について

Amir Rawdat
Amir Rawdatソリューションエンジニア

Amir Rawdatのその他のブログ記事

関連するブログ記事

チュートリアル:NGINXを使用してアプリケーション向けにOpenTelemetryを構成する
NGINX | 2024/01/18

チュートリアル:NGINXを使用してアプリケーション向けにOpenTelemetryを構成する

OpenTelemetryを使用してNGINXサーバーの状態と健全性をより明確に把握することで、問題のトラブルシューティングを行い、Webアプリケーションのパフォーマンスを向上できます。

AkitaのNGINX Plus認定モジュールでAPIエンドポイントの問題を特定・修正
NGINX | 2023/05/31

AkitaのNGINX Plus認定モジュールでAPIエンドポイントの問題を特定・修正

Akita SoftwareのAPIオブザーバビリティ向け新しいNGINX Plus Certified Moduleを活用して、APIエンドポイントの問題をより迅速に特定し、修正できます。

JavaプロジェクトをスキャフォールディングしてKubernetesネイティブアプリを構築する方法
NGINX | 2023/02/09

JavaプロジェクトをスキャフォールディングしてKubernetesネイティブアプリを構築する方法

Red HatのシニアプリンシパルデベロッパーアドボケイトであるDaniel Oh氏が、Javaプロジェクトをゼロから構築するためのひな形を作成し、Kubernetesネイティブアプリケーションとしてビルドする方法を解説します。

F5 NGINXaaS for Azureのご紹介:Microsoft Azureでネイティブに利用できるSaaS型ロードバランシング
NGINX | 2022/05/24

F5 NGINXaaS for Azureのご紹介:Microsoft Azureでネイティブに利用できるSaaS型ロードバランシング

NGINXaaS for Azureは、NGINX PlusをAzureネイティブのSaaSとして利用できるサービスです。NGINXの設定を容易にリフト&シフトできるため、クラウド導入とモダンアプリの展開を加速できます。

SELinuxでNGINXおよびNGINX Plusを使用する
NGINX | 2018/08/17

SELinuxでNGINXおよびNGINX Plusを使用する

Red Hat Enterprise Linux(RHEL)および関連ディストリビューションでSecurity-Enhanced Linux(SELinux)を有効にすると、デフォルト設定によりNGINXとNGINX Plusの一部の操作が制限されます。この記事では、すべての機能を利用できるようにSELinuxの設定を変更する方法について説明します。

NGINX PlusによるAWS Auto Scalingグループの負荷分散
NGINX | 2017/03/06

NGINX PlusによるAWS Auto Scalingグループの負荷分散

新しいnginx-asg-sync統合ソフトウェアにより、NGINX PlusはAWS Auto Scalingグループの負荷を直接分散できるため、クラウドでの負荷分散がさらに柔軟になります