839の日記

趣味の話を書くブログです。

じぶん ReleaseNote v1.1

2020年、2月版です。
タスク管理をJIRAに移してJIRAしか見てなかったのですが、ややGitHub issueのタスクもあったので1月版と合わせてお送りします。

action-slack

github.com

GitHub Actionsでslack通知を行うためのプラグインです。
βの頃にとりあえずで作ってみたものの、なんだかんだいってまだ自分でも利用中…。

今月に入って気になる所を一掃するためにv3リリースを計画しています*1

  • GITHUB_TOKENの指定をoptionalに変更
    • commitメッセージの取得などに利用していたのですが、要らない人もいるよなーと思ってoptionalに変更
    • GITHUB_TOKENが指定されていない場合は取得にトークンが必要なフィールドをカットしてpostします
  • (v3リリース予定) mention_only_failif_mention に変更
    • 破壊的変更その1、failしたときだけメンションする機能なのですが、やや汎用性が低かったので if_mention に変更
    • mentionしたいステータスを if_mention に記載してもらった上で mention にどのようなmentionをするか指定する方式
  • (v3リリース予定) payloadフィールドがコンフリクトしているので名前を変更
    • 破壊的変更その2、payloadがGitHub Actions自体が使っているフィールドだった…
    • ユーザが明示的に指定できるようにしていたのですが、それだと欲しい情報が欠落するケースがあったので custom_payload という名前に変更
    • payloadの情報とGITHUB_TOKENを組み合わせるとJobの実行時間が取れる*2
  • (v3リリース予定) ドキュメント関係をgatsby + netlifyで管理するように変更
    • どうしてもREADMEだと細かいこと書きにくいよなーと思っていた
    • ドキュメントの細かいissueに対してREADMEに書くのも増えてくるとなぁと思っていた
    • 初めてgatsby + netlify構成を試してみたけどpushすると自動でデプロイとかしてくれて凄い

その他Tech

  • GKEの更新(2回)
    • 1月にus-west-1bのリージョンでずっとインスタンス不足で全然更新できなかった
    • terraformのコードを書いてコミットもしたけどapplyできていなかったやつがやっとapplyできた
    • 1月のコードをapplyしてマージした後にもう一度更新してapplyしたので2回更新
  • terraform-provider-googleを3系の最新に更新
    • VPCネイティブのクラスタの設定の場合、自分でsubnetの設定とかを定義しないといけなくなった
    • あんまりインターネットに例がない割にドキュメントも微妙だったので地味にだるかった
  • sops/goの更新
    • 更新するだけだけどバージョンもgit管理なのでコミットが発生する*3
  • 外部ドメインの証明書更新
    • cert-managerで管理していない古いDNSがあり、それの証明書を更新
    • tkドメインなのだけど、やたらTXTレコードの反映が遅くてlet's encryptのDNS経由の更新が何度か失敗
    • 面倒になって今回からclouddnsで管理するように変更した(変更は早くなってない気もする...)
  • helm3移行
    • helm2系だったものを重い腰を上げて3系に移行した*4
    • 公式の移行プラグインが優秀で割とさくっと移行できた
    • timeoutのフラグ指定フォーマットが変わっていてそこだけちょっとハマった
  • helm3フォーマットのchartに変更
    • 既存chartをhelm3のフォーマットに書き直した*5
    • StatefulSetとかで一部消さないといけないフィールドが変わってたりして地味だるだった
    • 最初にどうでもいいchartから変更していて一部PVがロストしたりした*6
  • サービスの証明書が切れている報告問題の調査
  • kube-state-metrics/ingress-nginxチャートの更新
    • helm3更新前に最新にしておいた
  • cert-managerチャートの更新(v0.8->v0.13)
    • 破壊的変更があると書かれていたのでビビって放置していたが意を決して実行
    • 結局全部削除して入れ直しだったが、既存証明書は残せた
    • let's encryptに対する秘密鍵の指定に破壊的変更があり(?)、ややハマった
  • deprecatedなサービスの削除対応
    • ドメイン変更に伴うもので勧告期間は半年ぐらい設けていた
    • 古い方はTypeScriptじゃなかったのだけど、これでそのサイトのある機能がやっとTypeScript一本にできた
  • prometheusでの保存先PVの節約
    • prometheusのデータはデフォルトで一定期間ごとに削除されるのだが割り当てたdiskが余りすぎていた
    • 今までのデータ量的に半分程度で十分ということがわかったので半分にした*7
  • codeclimate-test-reporterの修正
    • 今までruby用のreporterを使っていたけどいつの間にかdeprecatedになっていたので変更

今月のGKEクラスタSLAは98%を割ってしまった。
割と色々クラスタに対する工事をしていたので主な原因はそれ。

一番パンチがあったのはpreemptive VMのterminationで何故か謎ハマりをしてkube-system系の何かのpod(忘れた)が一番重要なノードに複数個作られていて それがrequestsにしているリソース量が割と多かったせいでサービス継続に絶対必要なpodが立ち上がれていなかったのに半日ぐらい気づけなかったところ。 絶対複数個いらないはずなのになぜか複数個できていたのでGKE側のバグだと思う、手動で消しても戻ってこなかったし。

ポケモン剣盾

頑張ってるけど意外と難しい、なかなか1万位を切るところまでいかなかった。。。
10万位は切れているのでとりあえず4桁を目指したい。

f:id:husq:20200301153829j:plain

*1:現在はv2

*2:まだ未実装で取り方だけは調べたが割とややこしい

*3:CDで使っている

*4:そろそろ大丈夫かな、とも思ったし

*5:15個ぐらいchartを作っていたので割と大変だった

*6:そのおかげでユーザが居るサービスは何事もなく移行できた

*7:金額的には微々たる差だが...