生涯未熟

生涯未熟

プログラミングをちょこちょこと。

久々にOSSにPR投げてマージされた

とある日、会社で突然CIがぶっ壊れる事象が発生しました。
原因としてはk8sのmanifestsのチェックにkubeconformを使っているのですが、チェックするために利用されるデフォルトのschemaファイルが最近のコミットで変更が加わっていたためです。

github.com ※このissue見て気付いた

で、作者が「デフォルトで使われるschemaファイルは変更したので、k8sのバージョン指定すれば今まで通り使えるよ」という感じのことを仰られていたので、 -kubernetes-version オプションを使ったら一安心・・・
で済めば良かったのですが、会社のCIではhelmを使っている関係上、GitHub Actionsのhelm-kubeconform-actionを利用していました。
helm-kubeconform-actionで -kubernetes-version を実行するようにすればいいじゃんとなるところなんですが、actionのinputに該当する項目が無く・・・とほほ

という流れで久々にPRを投げることになりました。幸い、helm-kubeconform-actionはそこまで重いOSSではなかったので軽微修正となりましたが、久しぶりにOSS作者とやり取りして「ちゃんと作った人って生きてるんだな」と謎の再確認ができました。

github.com

また、ガッツリOSS活動やりたいな・・・

Spring v4.0.0にアップグレードしたらbundle exec rails cが死んだ話

所属チームにRenovateを導入してウキウキ気分で依存ライブラリのアップグレードをやっていたのですが、Springをシュッとv4.0.0にアップグレードしたらbundle exec rails cなどが動かなくなりました・・・

どのように動かなくなったかというと bundle config set without test をやっているのに、何故かtest groupのGemが Could not find で怒られてしまい動かないという。

原因

最初、自分の設定類がおかしいのかと色々ガチャガチャと調査をしていたのですが、そんな折にこのStack Overflowを発見。

stackoverflow.com

で、回答にあったようにv3.1.1にダウングレードしてみると確かに動く🤔

問題となっているISSUEがこちらで

github.com

v4.0.0のアップグレードで今まで Bundler.with_original_env としていたところを Bundler.with_unbundled_env に変更した結果、 BUNDLE_環境変数が削除されてしまいました。
何が問題かというと BUNDLE_APP_CONFIG も削除されてしまうので、bundle config内のwithoutが参照できずに本来省かないといけないtest groupのGemもチェックされ、エラーとなってしまった感じですね。

数時間この問題にハマったので、みなさんもお気をつけください👀(ちなみにFix版のv4.0.1はまだ未リリース・・・

Linuxで動かしながら学ぶTCP/IPネットワーク入門を読んだ

bells17さんのメモ書きを読んで、そういえば積ん読になってたな〜と思い出したので引っ張り出して読みました。 zenn.dev

結論から言うと凄い良本でした。

感想

今までこの手のネットワーク本は「ネットワークはなぜつながるのか」くらいしか読んだことがなかったのですが(こちらもネットワークの入門書としては非常に良かったです)、概念は分かったけどももうちょっと具体的なところに手が届いていない感じがありました。そこを補うような内容が本書では書かれています。

最初困ったのは手を動かすための環境作りにvirtual box + vagrantを使うように書かれていたのですが、M1 Macを使っているとvirtual boxを使うことができません。
そのため、GCEでUbuntu 20.04のインスタンスを立ち上げ対応することに。。。

個人的に4章のイーサネットのブリッジの辺りや、NATのところは知識が薄かったので非常に学びがありました。スイッチングハブとリピータハブってそういうことなんだったんだなーとか。

あとは新しい学びというか改めてというところで、DHCPの説明への運びが上手いな〜と思っていて基本的には写経を中心に進めていく本書なのですが、章を進めていくごとに写経量がかなーり増えていきます。で、同じようなコマンドをタイプしまくるのに飽きたところで「DHCPを使えば君たちが今迄タイプしてたことは必要なくなるんだ!」って持っていき方は非常にわかりみが深くなって良い体験でした。

ということで、ネットワークの入門書としてはめちゃくちゃ良本でした。個人的には「ネットワークはなぜつながるのか」で大まかなイメージを掴んでおいて、副読本として本書を併せて読むのがベストなような気がしました。

cURLでIAP越えするためのトークンを吐き出す

zenn.dev

こちらの記事みたいに gcloud auth print-identity-token で取りたかったが上手く出来なかったので上手く出来るようにやってみた。

どう失敗した?

$ gcloud auth print-identity-token foo@bar.iam.gserviceaccount.com --audiences="hoge.apps.googleusercontent.com"

ERROR: (gcloud.auth.print-identity-token) Your current active account [XXX] does not have any valid credentials
Please run:

  $ gcloud auth login

to obtain new credentials.

For service account, please activate it first:

  $ gcloud auth activate-service-account ACCOUNT

なるほど〜🤔

どう対応した?

これをやった。

$ gcloud auth print-identity-token \
--impersonate-service-account=foo@bar.iam.gserviceaccount.com \
--audiences="hoge.apps.googleusercontent.com" \
--include-email

こんな感じでSAのなりすましでTokenを吐くことが出来る。 --include-email が付いているのはIAPの検証で使われるから(無かったらemailがないぞと叱られる)。
あと、未検証だけども前準備としてなりすますSAに gcloud auth login でログイン中のユーザーの サービス アカウント トークン作成者 権限を付与する必要があるかも。