kubectl に自動で namespaceや context を付与するような wrapper を作るとする。 そんなコマンドのインターフェースとして、 $ kubewrapper [...wrapper flags] [kubectl args / flags] (例) $ kubewrapper -p staging describe pod ... とすると $ kubec…
Windows 11 からかはわからないが、WSL2 がしばらく放置していると自動でシャットダウンされるようになった。 ターミナルや VS code を全て閉じるとシャットダウンされる傾向にあるようで、例えば ssh-agent や systemd の service が動いていてもいつの間に…
git-browse-remote を長らく使っていたが、最近の Ruby では動かなくなっており、インストール後に手で該当箇所を修正してしのいでいた。 ただ、もう Ruby / Gem はこれにしか使ってなかったというのがあり、環境を新しくした機会に Python で書き直した。 g…
プライベートで Google Cloud を使っていて、今まではあまり IaC は使わずポチポチでやっていた。GKE ぐらいしかまともに使ってるリソースがなかったのでそれでよかったけど、最近 VPS をやめて各種クラウドに寄せるようにしており、クラウドのリソースが増…
かなり昔に Elasticsearch ベースの検索システム(Heineken)を作っていた。 Elasticsearch で部内 Wiki 検索高速化 - Speaker Deck 特に更新せず数年動かしていたのだけど、サーバーの置き換えに伴って Kubernetes に置きたいよねという話になり、ついでに …
去年11月、Smiling Face with Halo というチームで ISUCON 13 に参加した。チームメンバーはいつもの id:utgwkk と id:wass80 。 スコアは 0! よって最下位!! 直前には 73k くらい出てはいた。 ちょっと遅くなってしまったけど、個人的に楽しい問題だったし…
久々に helmfile sync を行った結果、PodSecurityPolicy リソースなんか知らないという理由で Upgrade に失敗した。 $ helmfile dep && helmfile sync ... Error: UPGRADE FAILED: resource mapping not found for name: "descheduler" namespace: "" from "…
curl で通信の内容を見ながら詳細なデバッグをしたいとき、 tcpdump や Wireshark でパケットキャプチャを行うのが定番だと思う。ただ、通信が多い環境だと実際にデバッグしたい通信を絞り込むのが面倒だし、TLS だと暗号化されていてさらに面倒。 curl のオ…
eBPF の tc (classifier) を使ってパケットを触ってみる話をしたので、資料を貼ります。 docs.google.com eBPF は一度慣れるとかなり便利な仕組みで、見るべき場所が分かっていればそれなりに気軽に使うことができる。ただ、ドキュメントがだいぶ整備されて…
この記事は KMC アドベントカレンダー 14 日目の記事です。 adventar.org 前回の記事は id:crashrt さんでした。自分も百舌谷さん好きです! crashrt.hatenablog.com 背景 現在、Kubernetes クラスタに入れる Manifest を Flux (Fluxcd) を使って管理してい…
Kubernetes では kubernetes-dashboard という各種リソースを見るためのダッシュボードが提供されている。 ブラウザ上で色々確認できるので便利なのだが、ログイン時は下のように自身の token か kubeconfig ファイルをアップロードする必要がある。 Kuberne…
今回の ISUCON では Filebeat を使って Nginx のログを Elasticsearch に放り込み、 Kibana ダッシュボードで表示していた。 nonylene.hatenablog.jp なかなか役に立ってよかったものの、 /user/:userID/home のようなパスだと userID に様々な値が入ってし…
ISUCON 12 本選に出場した。結果は 167492 点で 7 位(結果修正後)。そこそこかな? isucon.net アプリケーション周りは utgw の記事を見ると分かりやすいです blog.utgw.net 予選の記事は↓。ブログ賞受賞とのことで、個人スポンサーグッズをもらえるらしい…
今年の ISUCON では Elastic Stack を使って MySQL のスローログを Kibana で可視化したが、いくつか課題があった。 パラメーターによってクエリが分散し、ボトルネックが分かりづらい MySQL スローログは生のクエリが記載されていて、Filebeat の MySQL モ…
ISUCON 12 予選にいつもの id:utgwkk, id:wass80 と :old_noto_innocent: チームで参戦した*1。 結果は 50696 点で本選出場! ここ数回と同様、自分はインフラと分析・観測を担当していた。ただ、毎年似たようなことをやっていてあまり貢献できていないなあ…
環境: Docker の elasticsaerch image 8.3.2 久々に Elasticsearch を Docker で立ち上げると、初期状態でセキュリティ機能が有効になっていて、そのまま curl しても認証が通らず API が打てなかった。 $ curl -k https://localhost:9200/ {"error":{"root_…
最近(2年以上前)、pip がデフォルトで --user でインストールするようになった。 github.com ただ、この機能が有効になるにはいくつかの条件がある。 The user has not explicitly specified otherwise in the command line, environment variable, or a c…
プライベートで GKE を Preemptible VM ベースで運用していた。だいぶ昔に Preemptible VM が Spot VM に変わるよという通知が GCP から来ていて 値段変わらないし 放置していたのだが、GKE のバージョンを上げるついでに Spot VM に変更した。 cloud.google…
TypeScript でオブジェクトのバリデータを作っている。それぞれの値ごとのバリデータは値の特性ごとに様々な関数がある((value: string) => Error[] のような形)。 時折 Optional な値があるものの、バリデータ自体は non-null な値のバリデーションに専念…
Prometheus の AlertManager は Slack などに通知を送る重要なコンポーネントである。 当然 Slack の Webhook URL といった Credential を設定ファイルに書く必要があるのだけど、AlertManager は強い意志で環境変数や複数設定ファイルに対応していないので…
Git でトピックブランチを切るときに、元ブランチで git pull し忘れて古いコミットから生やしてしまうときがある。 最新の変更を認識できなかったり、後々コンフリクトが起きたりと不便なことがままあるので、 Commit 前に HEAD がリモートリポジトリの HEA…
Python から Terraform をインタラクティブな(stdin をそのまま渡す)形で呼ぶために、subprocess.run を使って subprocess で走らせようとしている。 ここで、 Ctrl-C (KeyboardInterrupt) のハンドリングがネックになる。 Terraform は Ctrl-C を打つと G…
この記事は KMC advent calendar 2021 9日目の記事です。 昨日の記事は Elasticsearch: N-gram tokenizer と N-gram token filter の挙動の違い - Unyablog. でした。今日*1も Elasticsearch の話をします。 本題 サークル内で開発しているドキュメント検索…
この記事は KMC advent calendar 8日目の記事ということにしています。 adventar.org KMC では部内ドキュメント検索システムで Elasticsearch を使用している。最近 Elasticsearch のバージョンを上げる準備をしていて、設定の見直しの中で N-gram token fil…
タイトル通りのメモ。 jq を Docker で使いたかったけど、公式で提供されている image が明示されておらず、それっぽいものも Updated 6 years ago となっている。 github.com 野良 Image はあまり使いたくないので、どうしたものか。 gojq を使おう ここで…
DockerHub の autobuild が無料では出来なくなったので GitHub Actions で Docker build / push を行う作業をしていた。 基本的にはスムーズに移行できたが、 latest tag を自動で生成する部分だけちょっと詰まったのでメモ。 問題 Docker Hub の autobuild …
docker-compose を Docker 内で実行するメモ。 背景 docker-compose は便利なツールだが、Linux サーバー上で動かすときは入れ方に悩む。 Docker engine は Docker 公式 apt リポジトリから入れることができるけど、docker-compose はレポジトリには存在しな…
Kubernetes で Node を Drain するとき、replicaCount: 1 な ReplicaSet (Service) はある程度のダウンダイムを許容せざるを得ない。 関連 issue は以下。 github.com 問題 ReplicaSet X があり、その replicaCount は 1 にしている また、同じ Selector で …
k8s の yaml を kustomize で管理している。ここからリソースを消しても kustomize はそれを感知しないためクラスタからは削除されない。 どうするか kpt を使う。これを見つけたのは deprecated になった inventory からリンクが貼られていたため。 kpt は…
Kubernetes で memory の requests を管理するのに Vertical Pod Autoscaler (VPA) を使っている。 github.com VPA はリソースの使用量の実績に基づいて良い感じに limits と requests を調整してくれるものだが、 limits の設定に関してちょっと困ったので…