egressトラフィックとは何か? 送信のネットワークフロー
egressトラフィックとは、runnerがパッケージをダウンロードしたりサードパーティのAPIを呼び出したりするように、ネットワークから外部のデスティネーションへ向かって流れ出るデータです。
ネットワークの境界から見て、出ていくトラフィックがegressで、入ってくるトラフィックがingressです。CIはegressが多い作業です。すべての依存関係のダウンロード、registryのpull、送信APIの呼び出しがネットワークを離れます。egressはファイアウォールとproxyのポリシーによって管理され、クラウドではしばしばギガバイトあたりのコストがかかります。
定義上の送信
egressとは、ネットワークの内部から外部のデスティネーションへ開始された任意のコネクションです。重要なのは方向であり、自分の側がクライアントかサーバーかではありません。
CIが生成するegress
- パッケージと依存関係のダウンロード。
- registryからのcontainerイメージのpull。
- デプロイAPIとサードパーティAPIの呼び出し。
- artifactとlogのアップロード。
egressの制御
セキュリティチームは、しばしばファイアウォールやforward proxyを介して、承認されたホストのallowlistへegressを制限します。これはexfiltrationのリスクを抑えますが、追加されるまで正当な新しい依存関係のホストをブロックすることがあります。
egressのコスト
クラウドはしばしば、そのネットワークを離れるデータに課金します。大きなイメージをpullしたり、大きなartifactをリージョンをまたいでアップロードしたりするpipelineは、驚くようなegressの請求を積み上げることがあります。
デプロイにおけるegress
artifactを外部ストアへpushしたり外部APIを呼び出したりするデプロイは、egressが許可されていることに依存します。ブロックされたegressホストは、そのステップを決定論的に失敗させます。
一時的なegressの失敗
ポリシーのブロックではなく瞬間的なネットワークの瞬断のために失敗するegressリクエストは、通常retry可能です。Latchkeyのrunnerは一般的なエンドポイントへの一時的なegressの失敗を自動でretryするため、短い送信のしゃっくりがjobを失敗させることはありません。
重要なポイント
- egressはネットワークを離れる送信トラフィックであり、CIはそれを大量に生成します。
- egressはallowlistによって形作られ、しばしばギガバイトあたりのコストで課金されます。
- ブロックされたegressホストは決定論的で、瞬間的な瞬断はretry可能です。