問題タブ [google-cloud-run]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
google-kubernetes-engine - GKE 上の Google Cloud Run クラスタからのアウトバウンド リクエストを許可する方法
Cloud Run 対応クラスタは、デフォルトでポッドからのアウトバウンド ネットワーク トラフィックを無効にします
ドキュメントに従って Cloud Run を使用してクラスターを作成した後、クラスター内のポッド内からのすべてのリクエスト (Knative サービス ポッドからだけでなく、実際には任意のポッドからのリクエスト) が 404 を返すことを確認できます。どの構成がこれを設定するかは明確ではありません。ですが、Cloud Run を有効にしてクラスタを作成することで発生することは明らかです。
その結果、たとえば、このクラスターに helm をインストールすることはできません。実際、ポッドからの外部リクエストを必要とするものをインストールすることはできません。
再現する手順:
1 - Cloud Run セットアップの公式ドキュメントに従う
2 - クラスターで単純なアルパイン ポッドを開始します。
kubectl run -it --rm --restart=Never alpine --image=alpine sh
3 - 次のような外部リクエストを実行します。wget www.google.com
Cloud Run もこの動作を文書化し、送信トラフィックを有効にする方法を説明します
ただし、この手順に従ってもトラフィックを有効にできませんでした。おそらく、私は何か間違ったことをしているのかもしれませんし、実際にはうまく機能していません。
アップデート
https://stackoverflow.com/a/55861559/3165889に記載されているように、これは Cloud Run が使用する現在の Istio バージョンで発生しますが、1.1 リリースでは変更する必要があります。この場合、デフォルトですべてのアウトバウンド リクエストに対してエグレスが有効になります。
ajax - 認証が必要なクラウド実行サービスへの Ajax リクエスト
認証が必要なサービスで Google クラウドを実行すると、CORS 関連の問題が発生します。
CLI を介してベアラー トークンを使用して curl コマンドを実行しようとすると、
すべて正常に動作します。残念ながら、JavaScript で ajax を介して同じ呼び出しを実行しようとすると
、403 が返されます。
クラウド実行ログのエラーは次のとおりです。
コンテナがヒットすることはありません。
私が見ている問題は、Web
ブラウザーで ajax を使用して呼び出しを行っていることです。Web ブラウザーは
、Authorization ヘッダーを送信せずにプリフライト要求 (URL の OPTIONS) を行っています (これは予期される
動作です) 。
問題は、クラウドの実行が OPTIONS リクエストを認証しようと
し、コンテナーに到達しないことです。これは、私が理解している限り、
行うべきではありません。(
https://www.w3.org/TR/cors/#cross-origin-request-with-preflight-0 )
これは cloud run の既知の問題ですか?
認証済みのクラウド実行サービスに ajax リクエストを送信するにはどうすればよいですか?