今まで、GitHub のアクセストークン認証による CodeBuild の構築は terraform でできなかったのですが、
Watch していた Issueがいつの間にかクローズされていたので試してみました。

aws_codebuild_source_credential というリソースを利用します。
(ドキュメント)

といっても単純で

resource "aws_codebuild_source_credential" "example" {
  auth_type = "PERSONAL_ACCESS_TOKEN"
  server_type = "GITHUB"
  token = "example"
}

こんなのを aws_codebuild_project のリソースと一緒に書いてあげると、トークンで認証できます。 今まで awscodebuildproject に書いていた auth のセクションは消しても大丈夫です。

と、簡単ですが以上!
機能はリリースされていたけどどこにも利用例がなかったので書いてみました。

追記 (8/29)

これで Project 作ると GitHub の WebHook 作成はできませんでした。 (:sob:)
一回 AWS コンソールを開いて OAuth を通してあげる作業が必要です。
ので、もうしばらくは素直に OAuth で書いた方が良いかもです


GiHub が PullPanda を買収したので無料で利用できるようになりました。
GitHub リポジトリと連携させることで以下のような機能を利用できます。

  • PR の分析
  • PR のリマインド機能(Slack 連携)
  • PR の自動アサイン(チーム内ロードバランスしてくれる)

特に3点目はほんとに良さそうな機能だったのでほんとに使いたかったですが、 1 Organization に対して 1 Slack Workspace の仕様で、既に Organization 内で使ってる人がいて使えませんでした。

終わり


これだけじゃあれなのでメモ

  • PullPanda で一度登録した Slack Workspace を切り替えたいときは、Slack の管理画面側で PullPanda をアンインストールするとできます。

引っ越しの繋ぎにモバイル Wifi を使ってるので速度制限を気にしないといけない世知辛い状況

GCE + docker-compose で動かしてた Discord bot を GKE(無料)に載せ替えたので忘れないうちにメモ。(GCE は us リージョンの低スペックインスタンスだと一生無料なのでそれを利用します)

基本的にこちらの記事を参考に進めただけです。

無料の GKE Cluster 作成方法

1.サービスを最低限にした Cluster を作成

まずは cluster を作成。 f1-micro インスタンスだとスペックが足りないのでデフォルトのサービスを停止しています。(—no-enable のあたり)

gcloud container clusters create my-cluster-name \
  --zone us-west1-b \
  --disk-size 10 \
  --machine-type f1-micro \
  --num-nodes 3 \
  --no-enable-cloud-monitoring \
  --no-enable-cloud-logging

続けてさらにサービスを無効化していきます。

gcloud container clusters update my-cluster-name --zone us-west1-b \
  --update-addons=HttpLoadBalancing=DISABLED \
  --update-addons=HorizontalPodAutoscaling=DISABLED

2. インスタンス数を1個まで減らす

無料にするためにインスタンス数を1つにします。普通にやると最低3つのインスタンスが必要なのでノードプールを一回削除して作り直す裏技を使います。

gcloud container node-pools delete default-pool --zone=us-west1-b --cluster=my-cluster-name
gcloud container node-pools create default-pool --cluster=my-cluster-name \
  --disk-size=15 --machine-type=f1-micro --num-nodes=1 --zone=us-west1-b \
  --scopes=gke-default,datastore,compute-rw

—disk-size と—scopes は自分に必要なものを設定して OK です。

あとは、get-credential すれば kubectl コマンドを使えるようになります。

gcloud container clusters get-credentials my-cluster-name --zone us-west1-b

感想

よかったこと

  • 定期実行に k8s の cronjob を使えるようになって嬉しい
  • インスタンスやコンテナの死活が Console 上で見えるようになって嬉しい

悪かったこと

  • 無理やり動かすために色々デフォルトサービスを切ってるので悲しい(特に logging や monitoring は欲しかった)
  • そもそもインスタンス数1個で k8s 動かしてもあまり意味はないかもしれない
  • 多分 k8s の使い方を忘れたら運用できなくなる

終わりに

今回 k8s に対応したコードはこれ

https://github.com/suzukenz/discord-gce-manager

料金もちゃんとストレージ以外かかってません

料金