GeekFactory

int128.hatenablog.com

2020-01-01から1年間の記事一覧

Envoy OAuth2 Filterを試す(未完)

EnvoyのOAuth2 Filterを試してみました。残念ながら期待通りに動きませんでした。メモだけ残しておきます。 www.envoyproxy.io 構成 EKS 1.18 Envoy 1.17.0-dev-483dd3 以下のトラフィックパスを構築します。 Browser ↓ Internet-facing ALB ↓ Service/NodeP…

EKS Managed Node GroupでSpot Instancesを使う

Amazon EKSのManaged Node Groupsがスポットインスタンスに対応しました。 aws.amazon.com これまでManaged Node Groupsではオンデマンドしか利用できず、スポットを利用するには自分でAuto Scaling Groups(mixed instance types)を管理する必要がありまし…

AWS SSOでサードパーティツールを実行する

AWS SSOを利用すると、IAM Access KeyやIAM Secret Access Keyの代わりにブラウザベースの認証を利用してAWS APIにアクセスできます。一方で、AWS SSOに対応しているものはAWS CLI v2ぐらいしかなく、Terraformなどのサードパーティツールはそのままでは使え…

CircleCIのmacOSビルドをOSSで利用する

kubelogin というKubernetes向けのツールをOSSで開発しているのですが、Goのビルド条件によって動作が異なる問題 *1 が出てきて、macOSでビルドを実行する必要が出てきました。ちょうど下記の記事でCircleCIがOSS向けにmacOSをサポートしていることを知りま…

Certified Kubernetes Administratorを取得した

Certified Kubernetes Administrator(CKA)を取得しました。すでに多くの受験記があるので、他の人が書いていないことをまとめてみます。 きっかけ いろんな言い訳でCKAの申し込みを先延ばしにしてきたのですが、以下の条件が揃ったので受験するに至りまし…

Terraformでcloud-configを記述する

AWSのEC2インスタンスでは、User Dataにシェルスクリプトを渡すことで起動時にスクリプトを実行できます。ファイルを配置したり、パッケージをインストールしたり、といった複雑なことがやりたい場合はcloud-initが便利です。詳しくは公式ドキュメントの例を…

Homebrew FormulaをCircleCIでテストする

Homebrew Formulaは一度書くと変更する機会があまりないですが、外部からPRを受け付ける場合はCIでテストしておくと便利です。linuxbrew/linuxbrew イメージを利用すると、LinuxのCI runnerでもbrewコマンドを利用できます。 CircleCIの場合は下記の設定でFo…

IAM Roles for Service Accountsに必要なリソースを作成するTerraformモジュールを書いた

kopsなどで自前構築しているKubernetesクラスタでIAM Roles for Service Accounts(IRSA)を利用する時に必要なAWSリソースを作成するTerraformモジュールを書きました。 github.com kopsとTerraformの組み合わせでIRSAを利用する方法は下記の記事を参考にさ…

Prometheus Alertmanagerの通知テンプレートを改善する

AlertmanagerのSlack通知テンプレートで四苦八苦したのでメモを残します。 Prometheus OperatorのHelm chartには便利なデフォルトルールが組み込まれています。例えば、Podが頻繁に再起動している場合に通知するルール(KubePodCrashLooping)が組み込まれて…

Fluxによるアプリケーションの継続的デプロイ

FluxのAutomated deployment of new container imagesを利用して、Kubernetes上でアプリケーションの継続的デプロイを構成する機会があったのでまとめます。 GitOpsの基本形 GitOpsを採用する場合は下図のデプロイフローが基本形になります。 具体的には以下…

本物のクラスタを利用してkubectl pluginをテストする

kubectlのプラグインを開発していると、ユニットテストだけでなく、本物のKubernetesクラスタを利用したテストが欲しくなります。プラグインの振る舞いが複雑な場合は自動テストがあると安心してリリースできます。 本稿では、本物のKubernetesクラスタを利…

決済手段を選択するビジネスルールを考える

お店やネットで買い物する時のビジネスルールが複雑になってきたので書き出してみました。 以下の順に評価して条件を満たす決済手段で支払います。 USD/EUR建ての場合:Sony Bank WALLET ANA FESTAの場合:ソラチカカードVisa(5%割引) ビックカメラの場合…

kindでクラスタが起動しない原因を調べる

kind create cluster コマンドでKubernetesクラスタが起動しない場合、以下のようなメッセージが表示されます。 ✗ Starting control-plane ️ ERROR: failed to create cluster: failed to init node with kubeadm: command "docker exec --privileged kind-c…

GitHub GraphQLで新しいPull Requestを作成する

GitHub GraphQLで新しいPull Requestを作成するにはcreatePullRequest mutationを利用します。RESTの場合と同様に、以下のようにheadとbaseを指定します。 head ref: 適用したい変更が含まれるブランチ。cross repositoryの場合はforkされたリポジトリ。 bas…

アプリケーションの開発フローとGitOps

アプリケーションの開発フローとKubernetesへのデプロイを考えた軌跡を残します。特に結論はないです。 前提 以下を前提とする。 Kubernetesにアプリケーションをデプロイする場合を考える。 すべての変更はPull Requestを通して適用する。 アプリケーション…

GitHub GraphQL APIで新しいブランチを作成する

GitHub GraphQL APIで新しいブランチを作成できるようになっていたので試してみました。本記事の内容はGraphQL API Explorerで実行できます。 リポジトリに新しいブランチやタグを作成するにはcreateRef mutationを利用します。createRefを実行するには以下…