Unyablog.

のにれんのブログ

2022-01-01から1年間の記事一覧

Renovate で Flux 配下の Helm Chart をアップデートする

この記事は KMC アドベントカレンダー 14 日目の記事です。 adventar.org 前回の記事は id:crashrt さんでした。自分も百舌谷さん好きです! crashrt.hatenablog.com 背景 現在、Kubernetes クラスタに入れる Manifest を Flux (Fluxcd) を使って管理してい…

dex と oauth2-proxy と ingress-nginx で OIDC ID token を取得して kubernetes-dashboad にログインする

Kubernetes では kubernetes-dashboard という各種リソースを見るためのダッシュボードが提供されている。 ブラウザ上で色々確認できるので便利なのだが、ログイン時は下のように自身の token か kubeconfig ファイルをアップロードする必要がある。 Kuberne…

Filebeat の Nginx module でアクセス先パスを正規化する

今回の ISUCON では Filebeat を使って Nginx のログを Elasticsearch に放り込み、 Kibana ダッシュボードで表示していた。 nonylene.hatenablog.jp なかなか役に立ってよかったものの、 /user/:userID/home のようなパスだと userID に様々な値が入ってし…

ISUCON12 本選に出場した (:old_noto_innocent: Team)

ISUCON 12 本選に出場した。結果は 167492 点で 7 位(結果修正後)。そこそこかな? isucon.net アプリケーション周りは utgw の記事を見ると分かりやすいです blog.utgw.net 予選の記事は↓。ブログ賞受賞とのことで、個人スポンサーグッズをもらえるらしい…

pt-query-digest の出力結果を Filebeat を使って Elasticsearch に集約し Kibana で出す

今年の ISUCON では Elastic Stack を使って MySQL のスローログを Kibana で可視化したが、いくつか課題があった。 パラメーターによってクエリが分散し、ボトルネックが分かりづらい MySQL スローログは生のクエリが記載されていて、Filebeat の MySQL モ…

ISUCON 予選突破のために Elastic Stack と GCP で分析環境を整えた (:old_noto_innocent: Team)

ISUCON 12 予選にいつもの id:utgwkk, id:wass80 と :old_noto_innocent: チームで参戦した*1。 結果は 50696 点で本選出場! ここ数回と同様、自分はインフラと分析・観測を担当していた。ただ、毎年似たようなことをやっていてあまり貢献できていないなあ…

Elasticsearch の Docker container でパスワードを指定する

環境: Docker の elasticsaerch image 8.3.2 久々に Elasticsearch を Docker で立ち上げると、初期状態でセキュリティ機能が有効になっていて、そのまま curl しても認証が通らず API が打てなかった。 $ curl -k https://localhost:9200/ {"error":{"root_…

pip install --user を config でデフォルトにする

最近(2年以上前)、pip がデフォルトで --user でインストールするようになった。 github.com ただ、この機能が有効になるにはいくつかの条件がある。 The user has not explicitly specified otherwise in the command line, environment variable, or a c…

GKE の Preemptible VM を Spot VM にした

プライベートで GKE を Preemptible VM ベースで運用していた。だいぶ昔に Preemptible VM が Spot VM に変わるよという通知が GCP から来ていて 値段変わらないし 放置していたのだが、GKE のバージョンを上げるついでに Spot VM に変更した。 cloud.google…

TypeScript 型わくわく日記

TypeScript でオブジェクトのバリデータを作っている。それぞれの値ごとのバリデータは値の特性ごとに様々な関数がある((value: string) => Error[] のような形)。 時折 Optional な値があるものの、バリデータ自体は non-null な値のバリデーションに専念…

AlertManager: Slack の Incoming webhook URL が Kubernetes の Secret で扱いやすくなっていた

Prometheus の AlertManager は Slack などに通知を送る重要なコンポーネントである。 当然 Slack の Webhook URL といった Credential を設定ファイルに書く必要があるのだけど、AlertManager は強い意志で環境変数や複数設定ファイルに対応していないので…

Git でブランチがリモートリポジトリの HEAD から派生しているかどうかを確認する

Git

Git でトピックブランチを切るときに、元ブランチで git pull し忘れて古いコミットから生やしてしまうときがある。 最新の変更を認識できなかったり、後々コンフリクトが起きたりと不便なことがままあるので、 Commit 前に HEAD がリモートリポジトリの HEA…

Python の subprocess.run は KeyboardInterrupt で強制的に kill される

Python から Terraform をインタラクティブな(stdin をそのまま渡す)形で呼ぶために、subprocess.run を使って subprocess で走らせようとしている。 ここで、 Ctrl-C (KeyboardInterrupt) のハンドリングがネックになる。 Terraform は Ctrl-C を打つと G…