1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

はじめに

タイトルの通り、Web Applicationで502が出た話です。
実は、2度目で、1度目とは別の原因だったのでlogとして。

E2E Testsにて

サービスインに向けて、テストをしていました。
以前の記事でも書いていますが、レガシーなmonolithicなsystemをCloudにLift & Shiftしています。
一部、30sec以上経過してもResponseがないものもあります。
Excelを作成中だったり、画面からbatchを動かしていたり。
30sec経過したところで、「502 Bad Gateway」が出てしまいます、、。

調査

前回の502で、loadbalancerのerrorをロギングする設定に変更したのを思い出しました。
k8sのclusterを月に1回、delete & createしている関係で、Terraformの設定が漏れているのか?
調べてみると、前回とは違う502でした。
前回は、CloudからVPNを経由して、オンプレに繋いているところで出たもので、Cloud VPNの問題でした。これは、また別に記事を書きます。

でも、確かに、502がロギングに残っています。

loadbalancerの設定を見ていくと、バックエンドに30secという記載があります。
ですが、画面からは、変更できない、、。

ここから、半日、調べに調べると、Resourceで定義する必要があるようです。

対応策

その名もBackendConfigという、カスタム リソース定義(CRD)。
sampleはこちら。

BackendConfig
apiVersion: cloud.google.com/v1
kind: BackendConfig
metadata:
  name: my-backendconfig
spec:
  timeoutSec: 40
  connectionDraining:
    drainingTimeoutSec: 60

これを、front-endのsvcに、アノテーションとして宣言してあげる。

Service
apiVersion: v1
kind: Service
metadata:
  name: web-svc
  annotations:
    beta.cloud.google.com/backend-config: '{"ports": {"80":"my-bsc-backendconfig"}}'

これで、502は、解消しました。

まとめ

k8sについては、アンテナを張って、さまざまなPracticeを呼んでいるつもりでしたが、まだまだ、知らないことが多いことを知らされました。
以上。
皆さんの参考になれば幸いです。

1
0
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?