寝ても覚めてもこんぴうた

プログラム書いたり、ネットワーク設計したり、サーバ構築したり、車いじったり、ゲームしたり。そんなひとにわたしはなりたい。 投げ銭は kyash_id : chidakiyo マデ

マイクロサービスの Fault Tolerant に関して説明したい時にいつも探してしまう資料

f:id:chidakiyo:20210714013841j:plain

タイトルの通り。
マイクロサービスの Fault Tolerant に関して説明する際に、
いつも探してしまうがなかなか見つからないのでメモ。

下記の スライド と 解説 を合わせて見ると良い感じです。

スライド(PDF)

https://www.jfokus.se/jfokus16/preso/Building-Fault-Tolerant-Microservices.pdf

解説.

qiita.com

小ネタ : HackGen フォントをインストールする

エンジニアならターミナルのフォントいい感じにしたいですよね。
自分は色々めんどくさくて、zshの設定も最近は何もせずにプレーンに使っていましたが、
ちょっと良さそうなフォントを見つけたので適当に入れてみました。雑メモです。

HackGen とは?

こんな感じの良い感じのフォントです。
標準フォントより少し読みやすい気がします。

f:id:chidakiyo:20210302151034p:plainf:id:chidakiyo:20210302151038p:plain

インストール方法

brew がインストールされた環境であれば以下でインストールされます。

$ brew tap homebrew/cask-fonts
$ brew install font-hackgen
$ brew install font-hackgen-nerd

公式ページでは brew cask install * になっていましたが、自分の環境では cask をつけるとインストールが失敗しました。
注意点です。

インストール後

自分の使っているターミナルソフトウェアの設定から標準のフォントを置き換えれば終わりです。
自分の場合には少しフォントサイズを大きくしました +2pt ぐらい。

enjoy!

Slackに匿名で投稿する仕組み、Workflowでやれるじゃん、と思ったので作った

f:id:chidakiyo:20210209204555j:plain

Slackに匿名で投稿できると嬉しい人もいるかな?と思ったので以前botみたいなものを使って実現している人を見かけていて、ちょっと手軽に運用するにはめんどいなーと思ったので、workflowで作れんじゃない?と思いついたので作ってみました。

Workflowはどんな感じ?

Workflowの使い方から説明するのは他の記事にまかせて、どのような構成にするかを手っ取り早く書きます。

f:id:chidakiyo:20210209204719p:plain

こんな感じ。
簡単に解説すると

最上段が、workflowを有効化するチャンネルへの設定。
2段目が workflow を実行するとフォームが開いて、テキストエリアに入力を促される。

f:id:chidakiyo:20210209204741p:plain

3段目がworkflowを実行したチャンネルに対して、設定したフォーマットで入力された値を出力しますという感じ

f:id:chidakiyo:20210209204755p:plain

実行するとどんな出力が?

workflowを実行すると以下のようなフォームが表示されます

f:id:chidakiyo:20210209204810p:plain

フォームに入力し実行すると以下のような文字がSlackのチャンネルに出力されます

f:id:chidakiyo:20210209204822p:plain

匿名にするとカオスにならない?

上の例は、利用者を信じて実行者のログなど取れませんが、
workflowで入力値とそのユーザを特定の場所に出力する、という設定も可能なので、
ログを取ろうと思えば取れます。

終わりに

workflow、コード書かなくてよいし便利だなぁ。

ではでは。

GAEのカスタムドメインのTLS1.0/1.1を無効化する

f:id:chidakiyo:20210208112941j:plain

GAEでカスタムドメインを利用しており、TLS1.0/1.1 を無効化したいという人もいるかと思います。
今回はその流れをサラッと書いていこうと思います。

なぜ TLS1.0/1.1を無効化するのか

私の説明より こちら の素晴らしい記事を読むのが良さそうです。(手抜き)

GAEで無効化する流れ

GAEのカスタムドメイン(GAEの標準のドメインも)のTLSを無効化するためにはユーザサポートに連絡する必要があります。
ユーザ側からできることはありません。

自分のサイトがTLS1.0/1.1が有効化されているかのチェック

こちら のサイトを利用するのが便利です。

ドメインを入力し、チェックにはしばらく時間が必要です。
数分待つと、チェックもとのサーバのいずれかを選択すると、詳細のページに飛べます。

Cipher Suites の一覧に TLS1.0/1.1 の項目があると有効な状態となります。

f:id:chidakiyo:20210208113058p:plain

サポートとどのようなやり取りをする必要があるか、また適用の期間

  • GAE で利用している(全サービス)のドメイン一覧(appspot.com)以外のものを全て伝える
  • 適用するcipherを選択する

cipherは以下から選択できます

1. default setting (cipher_settings is not set)
TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256
TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256
TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256
TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384
TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384
TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA
TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA
TLS_RSA_WITH_AES_128_GCM_SHA256
TLS_RSA_WITH_AES_256_GCM_SHA384
TLS_RSA_WITH_AES_128_CBC_SHA
TLS_RSA_WITH_AES_256_CBC_SHA
TLS_RSA_WITH_3DES_EDE_CBC_SHA

2. ciphers_without_3des
TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256
TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256
TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256
TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384
TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384
TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA
TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA
TLS_RSA_WITH_AES_128_GCM_SHA256
TLS_RSA_WITH_AES_256_GCM_SHA384
TLS_RSA_WITH_AES_128_CBC_SHA
TLS_RSA_WITH_AES_256_CBC_SHA

3.  ciphers_without_3des_and_rsa
TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256
TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256
TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256
TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384
TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384
TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA
TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA

4. ciphers_without_3des_and_aes128
TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256
TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256
TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384
TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384
TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA
TLS_RSA_WITH_AES_256_GCM_SHA384
TLS_RSA_WITH_AES_256_CBC_SHA

5.  ssl_good_ciphers
TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256
TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256
TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256
TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384
TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384

上記の情報をサポートにお伝えし、適用を待ちます。

具体的な適用までの期間は書きませんが、「思ったより時間がかかる」と思っていたほうが良いです。
TLS1.0/1.1の無効化を考えている方は早めに依頼することが必要です。(もし適用完了したい日程が決まっているなら)

ではでは。

参考

Terraformやコマンドで作成したCloud LoggingのLog RouterがPub/Subに送られない

f:id:chidakiyo:20210208104052j:plain

ちょっと前にTerraformでLog Routerを作成し、Pub/Subにログを送ろうとするとうまく送れず、
Web UIで作成するとうまく送れるということがありました。

雰囲気問題点がわかった気がするのでメモしておきます。(2021/02/08現在の情報です)

問題点

Web UIからLog Routerを作成した場合には、シンク作成時に割り当てられるSAに Pub/Subscribe パブリッシャーのロールが付与されるが、Terraform/gcloudコマンドで作成した場合にはその権限が付与されない。

Web UIから作成した場合にはシンク作成時にPub/Subトピックを新規作成することができ、その際に作成されたSAでPub/Subにパブリッシャーロールが付与されます。
既存のトピックを指定するとそれが付与されません。

また、 Terraform/gcloudコマンドの場合にはそもそもトピックを同時に新規作成するオプションが存在しないため、SAに権限が付与されません。

どうすれば良い?

シンク作成時に割り当てられるSAに対してPub/Subパブリッシャーのロールを付与する。

参考

https://cloud.google.com/logging/docs/export/configure_export_v2#dest-auth

GAE/go のデプロイが遅くなったと思ったときに読む記事

f:id:chidakiyo:20210208095710j:plain

タイトルの通り、GAEのデプロイにCloud Buildが裏側で利用されるようになり、
なにやらキャッシュとかうまいことやってくれようとしています。

しかし、そのキャッシュの作成なのか、展開なのか、若干その扱いが内部的にうまく行ってないようで、
デプロイを何度もし続けているとどんどん遅くなりタイムアウトすることも多くなるようです。

それを解決できそうな方法をメモしておきます

どんな状況になるか

デプロイのタイムアウト(10分)が頻発する

デプロイの途中のプロセスでしばらく固まる
(exporterのステップで非常に時間が大きくかかる)

解決できそうな方法

gcloud app deploy する際に --no-cache オプションを付与する

たったこれだけ。

これでCloud Buildのキャッシュを使わずにデプロイされるようになり、
比較的安定した速度で デプロイ出るようになりそうです。

速くなったか

しっかり計測はしていませんが、
手元のプロジェクトでも、遅めになってきたGAEのプロジェクトに関しては少し速くなっているように見えます。(データはありません)

参考