Oracle Cloud Native Ingress Controller for Kubernetesの紹介 (2023/06/01)

Oracle Cloud Native Ingress Controller for Kubernetesの紹介 (2023/06/01)

https://blogs.oracle.com/cloud-infrastructure/post/oracle-cloud-native-ingress-controller-kubernetes

投稿者: Ajay Chhabria | Principal Product Manager


Kubernetesの世界では、イングレス・コントローラは、イングレストラフィックをクラスタ内の適切なサービスにルーティングできる主要なコンポーネントです。これは、HTTPおよびHTTPsトラフィックのエントリ・ポイントとして機能し、外部へのサービスの公開を可能にします。OracleのKubernetesは、NGINX Ingress ControllerやTraefikなど、複数のイングレス・コントローラをサポートしていますが、Oracle Cloud Infrastructure(OCI)サービスとコントローラが統合されていませんでした。


Kubernetes向けの新しいOCIネイティブ・イングレス・コントローラのリリースを発表できることを嬉しく思います。新しいネイティブ・イングレス・コントローラを使用することで、外部コントローラに依存することなく、Kubernetes内で直接イングレス・リソースを簡単に効率よく管理できるようになりました。この最先端のソリューションは、開発者や企業がクラウド・ネイティブ・アプリケーションの真の力を活用できるように設計されており、OCIエコシステムを活用したシームレスな接続と高度なルーティング機能を実現します。



Oracle Cloudネイティブ・イングレス・コントローラとは何ですか。


Oracle Cloudネイティブ・イングレス・コントローラは、クラウド・ネイティブ・アプリケーションへのインバウンド・ネットワーク・トラフィックの管理を簡略化する、堅牢でスケーラブルなソリューションです。ルーティングとロード・バランシングのための一元化されたコントロール・プレーンを提供しているため、サービスの信頼性と効率性をかつてないほど簡単に提供できます。これは高度にカスタマイズ可能と設計されており、トランスポート・レイヤー・セキュリティ(TLS)ターミネーション、ポッドレディネス・ゲート、ホスト、パスベースのルーティングなど、すべての最新イングレス機能をサポートしています。また、最小限のオーバーヘッドとレイテンシで高パフォーマンスになるように構築されています。


ネイティブ・イングレス・コントローラは、ルーターとして機能するOCI Load Balancingサービスとシームレスに統合され、OCI証明書はTLS/SSL通信の確立に使用される証明書を管理します。



利点

運用を簡素化し、コストを削減


ネイティブ・イングレス・コントローラを使用すると、Kubernetesクラスタ内の複数のアプリケーションにOCI Load Balancingを共有することで、運用を簡素化し、コストを削減できます。Oracle Kubernetesクラスタ内で実行される複数のサービスに対して1つのロードバランサを保有し、パスベースのルーティングやホストベースのルーティングなど、高度なルーティング・ルールを構成し、サービスを1つのエントリ・ポイントに統合して低コストで集中管理された構成を実現できます。


OCI Load Balancingによる即時レディネス、柔軟性、高可用性


Oracle Load Balancingは、受信したトラフィックをアプリケーション・レイヤー(レイヤー7)でリージョン内の複数のバックエンド(Oracle Computeインスタンスなど)間でロード・バランシングする、一般的なOracle Serviceです。ネイティブ・イングレス・コントローラは、ルーターとして機能するロード・バランサ(Oracle Container Engine for Kubernetes (OKE)クラスタの外部にある個別のエンティティ)とシームレスに統合されます。


OCI Flexible Load Balancingにより、HTTP(s)リクエストをポッドのフリート全体に分散したり、フォルトドメイン、可用性ドメイン、またはリージョン間でトラフィックを自動的にルーティングしたりできるため、あらゆるアプリケーションまたはデータソースに高可用性とフォルトトレランスを実現できます。OCI Flexible Load Balancingでは、一般的なトラフィック・パターンのみに基づく固定帯域幅ロードバランサのシェイプまたはスケーリングに制限されなくなりました。カスタムの最小帯域幅およびオプションの最大帯域幅を選択できます。最小帯域幅は常に使用可能で、ワークロードに即時に準備できます。オプションの最大帯域幅設定は、コストを制御する必要がある場合、予期しないピーク時でも帯域幅を制限できます。イングレス・トラフィック・パターンに基づいて、トラフィックが増加するにつれて、使用可能な帯域幅が最小からスケールアップします。


自動証明書管理


ネイティブ・イングレス・コントローラもOCI証明書と統合されているため、ユーザーはロードバランサでHTTPsトラフィックを有効にするために使用するTLS証明書を作成および管理できます。作成後、ネイティブ・イングレス・コントローラはそれをロードバランサに自動的に関連付け、証明書サービスを利用して証明書を自動的にローテーションします。


管理と監視の簡素化


最適なパフォーマンスを維持し、問題を速やかに対処するには、アプリケーション導入の効率的な管理と監視が不可欠です。ネイティブ・イングレス・コントローラは、アプリケーション・トラフィック、パフォーマンス・メトリックおよびログを包括的に可視化する独自の監視およびロギング機能を持つOracle Cloud Load Balancerと統合されます。一元化されたOCI Load Balancingの監視および管理機能により、オペレータは潜在的なボトルネックや異常をすばやく特定して解決でき、スムーズで中断のないユーザー・エクスペリエンスを実現できます。


ワーカー・ノード外の専用ルーティング・リソース


オープン・ソースおよびサード・パーティのイングレス・モデルでは、ルーティング・コンポーネントはワーカー・ノード内で実行されているポッドで、アプリケーション専用のリソースの一部を消費します。たとえば、すべてのTLS/SSL接続は、Kubernetesクラスタ内で実行されているイングレス・コントローラ・ポッドで終了します。HTTPのトラフィックが多いため、トラフィックの暗号化と復号化で大量の計算が無駄になります。ネイティブ・イングレス・コントローラでは、この処理はロードバランサ・レベルで行われ、ワーカー・ノード・リソースが節約されます。


余分なホップを回避して応答を迅速化


以前は、Oracle KubernetesがOCI Load Balancingをプロビジョニングして、ワーカー・ノードをバックエンドとして保持し、最終的にはポッドにルーティングしていました。ネイティブ・イングレス・コントローラを使用すると、ポッドをOCI Load Balancingのバックエンドとして直接使用でき、内部サービスIPやkube-proxyに依存するのではなく、余分なホップを回避できます。


Oracle Cloudネイティブ・イングレス・コントローラはどのように機能しますか。


ネイティブ・イングレス・コントローラの使用を開始するには、それをKubernetesリソースとしてデプロイし、通常どおりイングレス・リソースを作成します。コントローラは、ルーティングとロード・バランシングを処理するOCI Load Balancingを自動的に作成し、トラフィックが効率的かつ安全にアプリケーションにルーティングされるようにします。


前提条件および必要なIdenitty and Access Management (IAM)ポリシーを構成します。



1. OKEクラスタを作成するか、既存のクラスタを使用してイングレス・コントローラをデプロイします。HelmおよびYAMLを使用してデプロイできます。詳細は、ドキュメントを参照してください。ネームスペースを指定する必要はありません。イングレス・コントローラ・ポッドは、明示的に指定されていない場合、ネイティブイングレス・コントローラ・システム・ネームスペースで実行されます。

$ helm install oci-native-ingress-controller helm/oci-native-ingress-controller
NAME: oci-native-ingress-controller
LAST DEPLOYED: Mon May 15 22:40:18 2023
NAMESPACE: native-ingress-controller-system
STATUS: deployed
REVISION: 1
TEST SUITE: None

$ kubectl get pods -n native-ingress-controller-system -o wide -w

NAME                                             READY   STATUS    RESTARTS   AGE   IP            NODE          NOMINATED NODE   READINESS GATES

oci-native-ingress-controller-6887f9cb9f-m5rg7   1/1     Running   0          10s   10.0.10.148   10.0.10.197   <none>           <none>


2.Kubernetes APIを介して複数のKubernetesオブジェクトを作成します。1つ目のIngressClassparametersは、compartmentId、SubnetId、LoadbalancerNameおよびLBシェイプの詳細を含むカスタム・リソースです。IngressClassparametersは、OCI Load Balancingの作成の詳細の定義に役立ちます。

apiVersion: "ingress.oraclecloud.com/v1beta1"
kind: IngressClassParameters
metadata:
     name: ingressparms-prod
     namespace: native -ingress-controller-system
spec: 
     loadBalancerName: "native-ic-lb"
     isPrivate: false
     maxBandwidthMbps: 400
     minBandwidthMbps: 100


3. イングレス・クラスを作成します。これにより、IngressClassparametersカスタム・リソースで指定されたシェイプでOCI Load Balancingも作成されます。イングレス・クラス・インスタンスは、Kubernetesクラスタ内で複数のイングレス・コントローラ実装が実行されている場合に、イングレス・リソースをコントローラにマッピングするのに役立ちます。また、イングレス・リソースにこれらの要件がある場合、様々なシェイプのロードバランサの作成にも役立ちます。

apiVersion: networking.k8s.io/v1
kind: IngressClass
metadata:
     name: default -ingress-class
     annotations:
       ingressclass.kubernetes.io/is-default -class :  "true"
spec:
    controller: oci.oraclecloud.com/native -ingress-controller
     parameters:
       scope: Namespace
       namespace: native -ingress-controller-system
       apiGroup: ingress.oraclecloud.com
       kind: ingressclassparameters
       name: ingressparms-prod


4. ルーティング・ルールを指定するイングレス・リソースを作成します。ネイティブ・イングレス・コントローラは、APIサーバーからのイングレス変更を監視します。イングレス・リソースが作成または更新されたことが検出されると、OCIリソースの作成および更新操作が開始されます。イングレスは、クラスタの外部からクラスタ内のサービスへのHTTPおよびHTTPSルートを公開します。トラフィック・ルーティングは、イングレス・リソースで定義されたルールによって制御されます。次のステップでは、ロードバランサにルートを作成し、すべてのリクエストをパス'/app1'にサービスBにリダイレクトします:

apiVersion: networking.k8s.io/v1
kind: Ingress
     metadata:
        name: ingress-tls
        annotations:
          oci-native -ingress.oraclecloud.com/protocol: HTTP   
          oci-native -ingress.oraclecloud.com/policy: "ROUND_ROBIN"
          oci-native -ingress.oraclecloud.com/healthcheck-protocol:  "HTTP"     
          oci-native -ingress.oraclecloud.com/healthcheck-port:  "9090"  
          oci-native -ingress.oraclecloud.com/healthcheck-interval-milliseconds:  "10000" 
          oci-native -ingress.oraclecloud.com/healthcheck-timeout-milliseconds:  "3000" 
          oci-native -ingress.oraclecloud.com/healthcheck-retries:  "3"
          oci-native -ingress.oraclecloud.com/healthcheck-return -code:  "200"  
          oci-native -ingress.oraclecloud.com/healthcheck-response-regex:  ""  
          oci-native -ingress.oraclecloud.com/healthcheck-path:  "/health"  
          oci-native -ingress.oraclecloud.com/healthcheck-force-plaintext:  "true" 
    spec:
        defaultBackend:
          service:
            name: default -backend
            port:
              number: 8080
        tls:
        - hosts:
            - foo.bar.com
          secretName: demo-tls-secret
        rules:
        - host:  "foo.bar.com"
          http:
            paths:
            - pathType: Prefix
              path:  "/app1"
              backend:
                service:
                  name: Service B
                  port:
                    number: 443



  1. イングレス・リソースで指定された各バックエンドのOCI Load Balancingバックエンド・セットを作成します。
  2. バックエンド・サービスとして指定されたすべてのポートのリスナーを作成します。
  3. イングレス・リソースに指定された各パスのルーティング・ルールを作成して、特定のパスへのトラフィックが作成された正しいバックエンド・セットにルーティングされるようにします。
  4. OCI証明書およびCAバンドルを作成し、リスナーおよびバックエンド・セットに関連付けます。ロード・バランサでTLSを有効にする場合は、事前にKubernetesシークレット・デモ-TLS-secretを作成します。詳細な手順については、ドキュメントを参照してください。
  5. デフォルトのバックエンド・セットを作成します。ルールに一致しないイングレス・トラフィックは、すべてのトラフィックを単一のデフォルト・バックエンドに送信します。サービスを作成し、それをデフォルト動作としてイングレスに渡します。
  6. サービス・バックエンド・セットでヘルス・チェックを構成します。



まとめ


Oracleネイティブ・イングレス・コントローラの導入は、Oracleのクラウド・ネイティブ製品の進化において重要なマイルストーンとなるものです。この強力なコントローラは、アプリケーションの導入を合理化し、スケーラビリティを向上させ、OCIサービスとシームレスに統合することで、開発者やオペレータが堅牢で高性能なアプリケーションを効率的に提供できるように支援します。Oracleのネイティブ・イングレス・コントローラは、セキュリティ、コンプライアンス、管理の簡素化に強い重点を置き、Oracleの取り組みを強化して、組織がクラウド・ネイティブ時代に成功を収めることができる包括的なソリューションを提供します。


OCIネイティブ・イングレス・コントローラは、本番対応のオープン・ソース・プロジェクトです。Oracleネイティブ・イングレス・コントローラの詳細と、それがアプリケーション・デプロイメントを変換する方法については、ドキュメンテーションを確認してください。Oracleのクラウド・ネイティブ・エコシステムの力を活用し、アプリケーションの可能性を最大限に引き出します。参加するには、次のリソースを参照してください。

コメント

このブログの人気の投稿

Oracle APEXのInteractive Gridで、Oracle Formsと比較して、重複行の検証を制御/通過させる方法 (2022/07/21)

Oracle APEX 24.1の一般提供の発表 (2024/06/17)

Oracle Cloudのデータベースをオブジェクト・ストレージにバックアップする3つの方法 (2021/12/13)