生涯未熟

生涯未熟

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

SRE Magazineは一周年を迎えました🎉

SRE Magazineを開始してとっくの昔に一周年を迎えておりました!イェイ✌

始まりはこの投稿でした。

幸いにも様々な方に興味を持っていただき、始めることができました。ページ自体はHugoを使って一週間くらいでピャッと作り、Cloudflare Pagesで公開する準備をしました。Cloudflareは偉大。

で、できたのがこちら。

sre-magazine.net

最初の記事の発刊は2024/04/01でした!エイプリルフール!

ここからちまちまと続けていきまして、第8号まで発刊することができました。
正直、寄稿者が集まらなかったら一人でSRE Weeklyで気になった記事を毎週紹介するサイトにでも方針転換しようかな?と思っていたので、こうして皆様の力で発刊し続けれているのは本当にありがたいことです🙏

また、活動を続けていく中で光栄なことに「SREをはじめよう」の付録ページにSRE Magazineを紹介していただきました。本当に嬉しかったです🙌

今後、どうなっていくかはわかりませんが寄稿いただける方や読んでいたける方がいらっしゃる限りは続けていきたいなと思います。
全然軽い内容でも、会社の紹介を絡めても大丈夫ですので寄稿に興味ある方はぜひ寄稿フォームからお問い合わせください!🙇‍♂️

forms.gle

Cloud Runを使っている方はCloud SQL for MySQLをv8.4にするのは待った方がいいかも

という記事になります。

仕事で新PJをやるならMySQL v8.4にしよう!ということでv8.4にして、Cloud Runから繋げた開発環境を作成していたのですが、本日「全くCloud SQLへ疎通できなくなる」という現象にぶち当たりました。

何をしたのか?

きっかけはCloud SQLインスタンスに対してダウンタイムの発生する更新処理を行いました。特に問題の起こるような処理ではなかったので、再起動を待っていたのですが起動後に全くどのCloud Run, Cloud Run Jobsからも繋がらなくなりました。なぜ・・・

調査

先程の更新処理に関連してネットワーク周りをいじっていたもので、それをリバートしたり試行錯誤したのですが全く直らず。本番環境と違って急を要するものでもないので、じっくりと原因を探っていたのですが、その時Google Cloudフォーラムの一つの記事を発見しました。

www.googlecloudcommunity.com

こ、これだ〜〜〜!!!
この方は、メンテナンス後に動かなくなったとあるのですが、状況的には全く同じでした。

で、この記事内に「This is the really weird part(非常に奇妙なのはこの部分です)」とあるのですが、それが「Cloud SQL Studioからログインすると直るよ」と書いてありました。

またまたまた〜〜〜〜〜そんなんで直ったら世話ないよ・・・



直りました!



なんでやねんということで、こちら今年4末に立てられたトピックですが未だにGoogleからの回答は無い模様です。幸いにもv8.4のみで発生しているようなので、特別なこだわりが無い限りは、Cloud Run使ってる方はv8.0に下げておいた方が良さそう、という注意喚起の記事でした。

[追記]

@methane さんにめちゃくちゃ詳しく調査いただきました🙇‍♂️

流れ気になる方は、こちらからリプライのツリーを参照ください。

技術書典に初めて参加しました! #技術書典

技術書典 18に初めて参加させていただきました!✌

techbookfest.org

技術書典とワタシ

今回初めて技術書典に参加しましたが、実はずっと前に関わることがありました。それが6年前の技術書典6の際に、golang.tokyoさんで発刊された文Goに寄稿したことが最初の関わりです。

techbookfest.org

今から見ると、錚々たる著者陣の末席に加えていただき、改めてうれしい👏

そんなわけで、"書いた人"側では体験したのですが純粋に参加者としては今回が初めてで、前日はドキドキしてました。

前準備

参加するにあたって、技術書典さんで用意されているアプリをインストールして、入場券を購入して、あと払い購入の準備して・・・などなど。
このあたり、ちゃんと公式がアナウンス出されていたので、全然困ることなく準備できました!あと払い購入も、テストで購入できるように準備がしてあって初めてやる身からすると「ありがてぇ・・・あったけぇ・・・」と思わざるを得ないホスピタリティでした。

あったけぇ・・・

あとは、オンラインで出展される本の一覧が見れたりしましたが、オフラインを十二分に楽しむためにあえて何も見ずに参戦しました。

当日

数年ぶりの池袋!懐かしい!と思いながら、サンシャインシティへ。

会場着いて最初に思ったのが「広!!!!!!」ですね。正直、こんなに広いと思いませんでした・・・しゅごい。
ここに技術書がぎっしり詰まってるのかとワクワクしました。

ワクワク

で、ブースの端から端までズズイっと訪ねさせていただきまして、いっぱい本買わせていただきました!締めて1万円!

最後に買った本を一覧で紹介します📖

そもそも、こういった本の販売イベントに参加すること自体が初めてだったのですが、本当にブースによって特色が凄いあるな〜と。既刊・新刊の陳列を凝っていたり、コピ本をサッと置いてあるシンプルスタイルから、基盤を並べていたりデモを展開していたり・・・

一参加者からすると、やっぱりブースから「見本見ていってください〜!」と声かけてもらえると手を伸ばしやすいですね👀
それで、「わ!こんな内容なのか!」と食指が動いて何冊か買うきっかけになりました。

また、買うかどうかウーンと悩んでいると「こちらの本はこれこれこういう方にはオススメで・・・」と色々と今の自分の状況に合うかどうかブースの方と話しながら本を選ぶこともあり、これはもうオフラインでしか味わえない妙味だなと。やっぱり改めて会話は大事で、どういった気持ちで本を書かれたのか?を聞くと、本に対する興味度合いが全然変わります。

あとは、当日のハイライトとしては、大仏Face Tシャツを着ていったのですが「Tシャツのインパクトやばいですね!」と声かけていただいたり、私のやっているSRE Kaigiを知ってくださっている方がいたり、本当に嬉しい限りでした。認知されるとウレシイ・・・ウレシイ・・・

本当に文句無しで楽しめて最高でした!あとから「あー!ここの本買えばよかった!」というのがポツポツあったので、今度参戦する際には事前に売り出される本をチェックしておきます!
運営されている方々、本当にありがとうございました!🙏

買った本

techbookfest.org

techbookfest.org

techbookfest.org

techbookfest.org

techbookfest.org

techbookfest.org

techbookfest.org

techbookfest.org

techbookfest.org

techbookfest.org

techbookfest.org

GitHub Copilot coding agent触ってみたよ

www.publickey1.jp

来ましたね!早速触ってみて、発見したことをチラと書きます。

Rulesetsには気を付けてね

ウッキウキで触ってみましたが、いきなり最初からズッコケました。

なんでぇ〜〜〜ってなりましたが、調べてみるとRulesetsでbranchをprotectしてたせいでした。
Bypassしたらいけるのか?とかはまだ調べてないですが、とりあえずこの辺りは引っ掛かりポイントかも。 → [追記] Target branchesのExclude by patternsに copilot/**/* を追加したらいけました!

推論の経過がちょっとわかりにくい

Devinとかだと「こう考えたよ!」って思考の経過を書いてくれますが、Coding AgentだとPR概要にチェック項目を列挙してタスクの経過とともにチェックが入っていく感じですね。ちょっとどう考えてやってるのかがわかりにくい感🤔

質問もできるよ!

single commentをしたらちゃんと答えてくれるのか試しましたが答えてくれました!ちゃんと「このコミットで〇〇という理由でやったよ!」ってな感じで答えてくれます🙏

Coding Agentの開発環境カスタマイズもできるよ!

docs.github.com

Coding Agentが動く開発環境のカスタマイズも可能となっており、GitHub Actionsのワークフローと同じ構文で設定することができます。

Copilot can discover and install these dependencies itself via a process of trial and error, but this can be slow and unreliable

とあるように、なるたけ設定はしておいた方が良さそうですね👀

おわり

とりあえず触ってみて感じたことを書き上げてみました。優先度低で溜まっちゃってる簡単なタスクをサッとやってもらうにはいいかもですね!使い倒そう💪

ArgoCD NotificationsのTriggerにおける"when"のハマりどころ

最近、ArgoCD NotificationsにおけるTriggersを触っていた時にwhenの扱いで非常にハマったので、今後やらかさないために書き残しておく。

前置き

ArgoCD NotificationsのTriggersとは、こちらのドキュメントを見ていただければ分かる通り、通知の送信条件ですね。

argo-cd.readthedocs.io

で、このTriggersには when で通知する条件を記述するのですが、これにハマったお話というわけです。

language-definition.mdにあるcontainsやstartsWithは使えない

これ一番最初にずっぽりハマったんですが、条件式のシンタックスはこちら!って書いてあって、language-definition.mdを見に行くと containsstartsWith などが書いてあって「条件式に使えるんや!」と思ったら大間違いです。使えません。

主に使えるものは以下のFunctionsに記載してあるものだけです。楽はできないので苦労しましょう。
+ とか、そういうのは使えるのでご安心を。

シングルクォーテーションを使え!

で、そんなFunctionsなのですが、例えばrepo.GetAppDetailsで取得したHelmのparamにアクセスしようとすると、以下のような記述になります。

repo.GetAppDetails().Helm.GetParameterValueByName('hoge')

これのどこにハマるねん?という話なんですが、このシングルクォーテーションの部分を ダブルクオーテーション にしてみると全く動かなくなります。なんでやねん!
なんでそんなハマり方をしたのかというとGitHub Copilotくんがダブルクォーテーションで補完してきたので、すっかりそれを信じてしまったわけですね、はい。

というわけで、引数指定する際にはシングルクォーテーション使いましょう。

おわり

もうね、このあたりのwhenの情報が日本語・英語ともに全く無い!とある事情によりちょっと複雑なことしようと思ったら、めちゃくちゃ変にハマる経験をしてしまっった。
少なくとも日本国内でこんな変なハマり方をする人を撲滅するために書きました。滅!!