オープンフロー BYOC - カスタムイングレスの設定

このトピックでは、自身の AWS アカウント内で管理されるカスタムイングレスソリューションによるOpenflow BYOC デプロイの設定に必要な考慮事項と手順について説明します。

利点

Openflow BYOC デプロイ用のカスタムイングレスは組織に以下を提供します。

  • VPN またはプライベートネットワークのみにアクセスを制限できるネットワークレベルの制限により、セキュリティを強化します。

  • セキュリティおよびコンプライアンス要件を満たすために、Openflowへのアクセスに使用される URL および TLS 証明書を完全にコントロールします。

考慮事項

Snowflakeが管理するイングレスを使用して、Openflowは必要な DNS 記録、パブリックロードバランサーを作成し、 BYOC デプロイのOpenflowランタイム用の TLS 証明書を管理します。

カスタムイングレスを有効にすると、Openflowは外部 DNS レコードを自動的に管理しなくなり、パブリックロードバランサーを自動的に作成せず、Openflowランタイムの証明書を管理しなくなります。これらのリソースは自身の AWS アカウント内で管理する必要があります。

Openflow管理のイングレスとカスタムイングレスを比較すると、 DNS 、ロードバランサー、および証明書の追加要件が目立ちます。

Snowflake Openflowでのカスタムイングレスの構成

  1. デプロイ作成時にカスタムイングレスを有効にします。

    • デプロイメントの作成時に、 Custom ingress を有効にして、 Hostname フィールドで希望の完全修飾ドメイン名( FQDN )を指定してください。

    • この DNS 記録を管理し、この FQDN の TLS 証明書を作成できる必要があります。snowflakecomputing.com のサブドメインを使用しないでください。

    • FQDN にプロトコル https:// またはトレイリングスラッシュ / を含めないでください。

    • たとえば、 openflow01.your-domain.org を指定した場合、 https://openflow01.your-domain.org/my-runtime/nifi/ で「My Runtime」という名前のランタイムにアクセスします。

  2. CloudFormation テンプレートをダウンロードします。このファイルには、Openflowがカスタムイングレスドメインとして実行されるために必要な設定がすべて含まれています。

AWS でカスタムドメインを構成する

注釈

{deployment-key} は、特定の展開のためにOpenflowによって作成および管理されるクラウドリソースに適用されるOpenflowの一意の識別子を表します。

これは、 CloudFormation テンプレートの DataPlaneKey パラメーターにあり、Openflowではデプロイの View Details メニューオプションを通じても利用できます。

  1. Openflowデプロイのプライベートサブネットに以下のタグを追加します。

    • キー: kubernetes.io/role/internal-elb

    • 値: 1

  2. プライベートサブネットが他の EKS クラスターによって使用される場合、それらもOpenflowクラスターの名前でタグ付けする必要があります。これにより、Openflowは他のロードバランサーと一緒にロードバランサーを作成できます。

    • キー: kubernetes.io/cluster/{deployment-key}

    • 値: 1

  3. CloudFormation テンプレートをアップロードします。Openflowが内部ネットワークロードバランサーを作成するまで約30分待ちます。

    • 内部ネットワークロードバランサーは AWS コンソールの下にある EC2`|ra|:extui:`Load Balancers で確認できます。

    • ロードバランサーの名前は runtime-ingress-{deployment-key} になります。

  4. Openflow管理の AWS 内部ネットワークロードバランサーの内部 IP アドレスを取得します。

    • EC2 » Load Balancers の下の詳細ページに移動し、ロードバランサーの DNS name をコピーします。

    • エージェント EC2 インスタンス( openflow-agent-{deployment-key} として識別される)にログインし、コマンド nslookup {openflow-load-balancer-dns-name} を実行します。

    • Openflow管理の AWS 内部ネットワークロードバランサーの IP アドレスをコピーします。これらは、次のステップで作成するロードバランサーのターゲットグループの宛先です。

  5. TLS のプロビジョニング証明書。

    • Openflowランタイム UIs へのトラフィックを処理するロードバランサーの TLS 証明書を取得します。AWS 認証マネージャー(ACM)を使用して証明書を生成するか、既存の証明書をインポートします。

  6. Openflow管理の AWS 内部ネットワークロードバランサーにトラフィックをルーティングするネットワークロードバランサーを作成します。

    1. AWS アカウントで、次の構成でネットワークロードバランサーを作成します。

      • 名前:命名規則 custom-ingress-external-{deployment-key} をお勧めします。この場合、 {deployment-key} はOpenflowデプロイのキーです。

      • 型: Network Load Balancer

      • スキーム: 要件に応じて Internal または Internet-facing

      • VPC: 展開先の VPC を選択します

      • 可用性ゾーン:Openflowデプロイを実行する両方の可用性ゾーンを選択します。

      • サブネット:Internal ロードバランサーの場合は VPC のプライベートサブネットを、 Internet-facing ロードバランサーの場合は VPC のパブリックサブネットを選択します。

      • セキュリティグループ:ポート 443 でのトラフィックを許可するセキュリティグループを選択または作成します

      • デフォルト SSL/TLS サーバー証明書:SSL/TLS 証明書をインポートします

      • ターゲットグループ:次の設定で新しいターゲットグループを作成します:

        • ターゲット型: IP addresses

        • プロトコル: TLS

        • ポート:443

        • VPC:VPC が展開に一致することを確認します

        • ターゲットとして、Openflowが作成した内部ネットワークロードバランサー(前のステップで取得)の IP アドレスを入力し、 Include as pending below を選択します。

    2. ロードバランサーが作成されたら、次のステップで使用する DNS ロードバランサーの名前をコピーします。

    3. ネットワークロードバランサーの作成方法の詳細については、 Network Load Balancer を作成する をご参照ください。

  7. カスタムイングレス FQDN を AWS ロードバランサーの DNS 名前にマップする DNS CNAME 記録を作成します。

検証

  1. Openflowデプロイでは、 Deployments ページに Active のステータスが表示されます。

  2. Openflowのデプロイでランタイムを作成します。

  3. ランタイムが Active になったら、ランタイム名をクリックするか、 View canvas メニューを使用してランタイムの UI にアクセスします。

  4. Openflowはデプロイメントの作成時に指定されたホスト名を持つランタイムにリダイレクトします。例: https://openflow01.your-domain.org/my-runtime/nifi/

トラブルシューティング

以下のセクションでは、カスタムイングレスの一般的な問題に対するトラブルシューティング手順を説明します。これらのチェックを実行した後も問題が発生した場合は、`Snowflakeサポート`_ケースをご提出ください。

ロードバランサーのターゲットヘルスチェック

ネットワークロードバランサーのターゲットグループには、Openflowが管理する内部ネットワークロードバランサーのIPアドレスがターゲットとしてリストされている必要があります。これらのターゲットはすべて:extui:`Healthy`として表示される必要があります。ターゲットが:extui:`Unhealthy`である場合は、次のチェックを使用して、トラフィックが失敗している場所を絞り込みます。

  1. AWSコンソールで、EC2 » :extui:`Load Balancers`を開きます。

  2. Kubernetesクラスターへのイングレスを管理するOpenflowが管理するロードバランサーを見つけます。このロードバランサーの名前は:code:`runtime-ingress-{deployment-key}`です。

  3. :extui:`Resource map`タブでそのロードバランサーのターゲットの健全性を確認します。

  4. Openflowが管理するロードバランサーがアクティブでない場合、または:extui:`Unhealthy`であるターゲットが存在する場合:

    • Openflowが管理するロードバランサーとBYOCクラスター間でトラフィックがブロックされる、またはクラスター内のサービスの準備ができていない可能性があります。

    • openflow-agent-{deployment-key} EC2インスタンスから:code:`./diagnostics.sh`を実行して診断バンドルを生成し、`Snowflakeサポート`_ケースに添付します。

  5. Openflowが管理するロードバランサーがアクティブであり、健全なターゲットが存在する場合は、ロードバランサーのターゲットの健全性を確認します。

  6. ロードバランサーのターゲットが:extui:`Unhealthy`である場合は、ロードバランサーからOpenflowが管理するロードバランサーへのパスが最も可能性の高い問題です。

    • ターゲットグループ内の不正確、または古いIPアドレス。 Openflowが管理するロードバランサーは時間の経過とともに変更される可能性のある複数のIPアドレスを公開します。最新の値を取得するには、Openflowが管理するロードバランサーの:extui:`DNS name`を指定して:code:`nslookup`を実行します。必要に応じてロードバランサーのターゲットを更新します。

    • セキュリティグループのルール。 Openflowが管理するロードバランサーのセキュリティグループのインバウンドルールが、ロードバランサーからのTCP :code:`443`を許可していることを確認します。ロードバランサーがポート:code:`443`でOpenflowロードバランサーに到達できない場合は、トラフィックが失敗する可能性があります。

ブラウザーのセキュリティブロック

カスタムイングレスに関するいくつかの問題は、カスタムホスト名へのトラフィックをブロックまたは検査する、企業のブラウザーセキュリティ、ファイアウォール、またはウェブプロキシが原因となって発生します。これらのポリシーはAWSロードバランサーの構成とは別のものです。AWSロードバランサーが健全なターゲットをレポートしている場合でも、ユーザーがOpenflow UIを開くことができないことが判明する場合があります。

ロードバランサーを介したOpenflowサービスへの接続を確認するには:

  1. AWSコンソールで、EC2 » :extui:`Load Balancers`を開いて、トラフィックを配信するロードバランサーのDNS名とカスタムイングレスドメイン名のTLS証明書を取得します。

    • これは:extui:`runtime-ingress-{deployment-key}`ロードバランサー**ではありません**。

  2. openflow-agent-{deployment-key} EC2インスタンスから、ロードバランサーを介したOpenflowデプロイへの接続を確認します。コマンドを実行します。

    curl -kv https://{your-load-balancer-dns-name}
    
    • コマンドが想定される証明書情報と404ステータスコードの正常な応答を出力した場合は、Openflowデプロイへの接続の確認に成功しました。

    • コマンドがタイムアウトするかエラーを返した場合は、Snowflakeサポート`_ケースを作成し、Openflow Agentインスタンスから:code:./diagnostics.sh`を実行して生成された診断バンドルを添付してください。

  3. Openflow Agentインスタンスから、カスタムイングレスFQDNのDNS CNAME記録も確認できます。コマンドを実行します。

    source ~/.env && nslookup $DOMAIN
    
    • コマンドが、カスタムイングレスドメイン名のTLS終了を実行しているロードバランサーのIPアドレスを返す場合は、DNS CNAME記録を正常に確認できました。

    • コマンドが結果を返さない場合は、DNS CNAME記録が正しく構成されていません。カスタムイングレスFQDNのDNS記録を確認して、ロードバランサーのDNS名を指していることを確認してください。

Openflow AgentがロードバランサーのDNSを介して正常に接続しており、ユーザーがDNS CNAME記録を確認した場合は、セキュリティポリシーまたはファイアウォールが、ブラウザーからOpenflow BYOCデプロイへのトラフィックをブロックしている可能性があります。セキュリティチームと連携して、カスタムイングレスFQDNを許可リストに登録してください。