@int128

int128.hatenablog.com

AWS CodeBuildとJenkinsの連携

TL;DR AWS CodeBuildとJenkinsを連携させると、これまでJenkins Agentで実行していたビルド処理をAWS CodeBuildに置き換えることができます。以下のメリットがあります。 AWS CodeBuildは無限に*1スケールするので、ビルドキューの待ち行列がなくなる ビルド…

AWS CodeBuildとGitBucketの連携

TL;DR GitBucketはGitHub API互換なので、GitHub Enterpriseとして振る舞うことができる。 AWS CodeBuildはGitHub Enterpriseに対応している。 CodeBuildからGitBucketにgit cloneしてビルドを実行できる。 今のところWebhookは使えない。 Getting Started G…

新しい技術を学ぶ時のアプローチ

新しい技術を学ぶ時にどのようなアプローチを踏むことが多いのか書き出してみました。具体的には、新しい言語、フレームワーク、インフラ、アーキテクチャ、プロセス、考え方などを学ぶことを考えます。 名前を知る(ポータル、SNS、Podcast等) 特徴を知る…

GradleからNexusに成果物を公開する

TL;DR Gradle 4, Nexus 3を前提とする。 Gradleに標準で含まれる maven-publish プラグインを利用してNexusに成果物を公開できる。追加のプラグインは必要ない。 Gradleの repositories ブロックでNexusのリポジトリURLを指定する。成果物の公開、取得ともに…

特定URLへのアクセスを契機としたHTTPサーバのGraceful Shutdown

Goで特定のURLへのアクセス(例:GET /shutdown)を受けたらHTTPサーバを停止するにはどうすればよいか考えてみました。 HTTPサーバを停止する http.Server にはGraceful Shutdownを行う Shutdown メソッドがあります。/shutdown へのリクエストを受けた契機…

Visual Studio Code on Windows Subsystem for Linux

wsl

TL;DR Windows 10 build 17120から、Visual Studio Code for Linux(vscode)がWindows Subsystem for Linux(WSL)で動くようになります。 Windows 10 Build 17120のWSL (Debian)でVisual Studio Codeが動いた!うれしい!— int128 (@int128) 2018年3月20日…

kubeloginコマンドを利用してOpenID ConnectでKubernetesにアクセスする

TL;DR Kubernetesの認証はクライアント証明書やID/パスワードだけでなく、OpenID Connectに対応している。 RBACを設定することで、ユーザやグループによるアクセス制御ができる。 以下の設定が必要になる。 Keycloak(OpenID Connect IdP) kube-apiserver(…

KeycloakのOpenID ConnectでKubernetes Dashboardにアクセスする

TL;DR Keycloakはオープンソースの統合ID管理ツールでOpenID ConnectやSAMLに対応している。 Kubernetes DashboardはOpenID ConnectのIDトークンによる認証に対応している。 RBACを設定することで、ユーザやグループによるアクセス制御ができる。 以下の設定…

Gradle Swagger Generator PluginがSwagger UI 3に対応

Gradle Swagger Generator Plugin 2.10.0をリリースしました。 github.com 新しいリリースではSwagger UI 3に対応しました。Swagger UI 3になってから使い勝手が大きく改善されています。 このプラグインを利用すると、下記のようなビルドスクリプトを書くだ…

Helm ChartsをGitHub Pagesで公開する

KubernetesではHelmというパッケージマネージャが広く使われています。HelmではChartという単位でパッケージを管理します。有名なソフトウェアであればOfficial Chartsが公開されていますが、場合によっては自分で書いたChartを公開したいこともあるでしょう…

JIRAの更新をSlackやMattermostに通知する

JIRAの更新をSlackやMattermostに通知するBOTを作りました。 このBOTは実際にお仕事で使っていて、いい感じの粒度で通知されるように改善を重ねています。 Dockerで簡単に実行できます。 docker run --rm -p 3000:3000 \ -e SLACK_WEBHOOK=https://hooks.sla…

EBS volume type standard not working on Kubernetes

The EBS volume type standard seems not working as a storage class on Kubernetes. Reproduce the issue Adding the following storage class: kind: StorageClass apiVersion: storage.k8s.io/v1 metadata: name: standard labels: k8s-addon: storage-a…

Prometheus/GrafanaでPersistent Volumesの空き容量を取得する

TL;DR KubernetesのPersistent Volumesの容量をPrometheusで取得するには以下のMetricsを使用する。 kubelet_volume_stats_available_bytes (使用可能バイト数) kubelet_volume_stats_used_bytes (使用済みバイト数) kubelet_volume_stats_capacity_byte…

Keycloakでユーザを一括追加するツールを作った

Keycloakにユーザを一括追加するツール Keycloak Bulk を作りました。 Keycloakで多数のユーザを追加したい場合、一人ずつ手作業で登録する必要があります。JSONでユーザリストを書けばインポートできるようですが、やや複雑な作業が必要になります。使いや…

vscodeでWSLのnode.jsをデバッグ実行する

Visual Studio Code(vscode)はnode.jsのデバッグに対応していますが、Windows Subsystem for Linux(WSL)のnode.jsも利用できるようです。 debugging Node.js in the Linux subsystem on Windows: If you want to run Node.js in the Linux subsystem on …

kopsでルートボリュームタイプにstandardを指定できるようになった

kopsではEC2のルートボリュームに割り当てるボリュームタイプに gp2 か io1 しか指定できない問題がありました。検証用途では standard で十分なので、standard も指定できるように入力値チェックを修正するPRを送りました。 github.com 以下のようにインス…

spring.config.locationを複数指定した場合の優先順位

Spring Bootで --spring.config.location に複数のプロパティファイル(またはYAMLファイル)を指定した場合の優先順位を調べてみました。 TL;DR --spring.config.location にはカンマ区切りで複数のプロパティファイルを指定できる。 後に指定したプロパテ…

Windows Subsystem for Linuxで開発環境を作る

wsl

会社ではWindowsを使う必要があるのですが、まともな開発環境を整備するためにいろいろと苦労したので知見をまとめておきます。 前提: Windows 10 プロキシなし 希望: zshを使いたい プライベートで使っているmacOSのdotfilesをそのまま使いたい gitコマン…

nextcloudとKeycloakのSAML SSO

TL;DR nextcloudはオープンソースのファイルストレージサービスです。SAML SSOに対応しています。 Keycloakはオープンソースの統合ID管理ツールです。OpenID ConnectやSAMLによる認証を提供しています。 以下の環境で確認しています。 nextcloud 12.0 Keyclo…

Deploy static site on nginx pod

滅多に変更しない静的ページを配置したい時に便利です。 apiVersion: v1 kind: ConfigMap metadata: name: landing-page data: index.html: | <html> <body> <h2>Welcome</h2> </body> </html> --- apiVersion: extensions/v1beta1 kind: Ingress metadata: name: landing-page spec: rules: - …

KeycloakのOpenID ConnectでKubernetesにアクセスする

TL;DR Kubernetesの認証はクライアント証明書やID/パスワードだけでなく、OpenID Connectに対応している。 RBACを設定することで、ユーザやグループによるアクセス制御ができる。 以下の設定が必要になる。 Keycloak(OpenID Connect IdP) kube-apiserver(…

KeycloakのSAML SSOでJIRAやConfluenceにログインする

KeycloakとJIRAやConfluenceでSAML SSOを設定する方法を説明します。KeycloakでID管理を行いながら、JIRAやConfluenceにSSOできるので便利です。 TL;DR Keycloakはオープンソースの統合ID管理ツールです。OpenID ConnectやSAMLによる認証を提供しています。…

kubectl completionの遅延実行によるzshの起動時間短縮

kubectl にはシェルの補完機能が用意されています。 .zshrc で補完機能を有効化するとzshの起動に時間がかかるため、補完機能の有効化を遅延実行するようにしてみました。 具体的には、 kubectl コマンドの初回実行時のみ source <(kubectl completion zsh) …

2017年の振り返り

2017年のアウトプットを振り返り。 ブクマとスターを合わせて多い順から。 2018年もよろしくお願いします。

Kubernetes nodesをMulti-AZからSingle-AZに移行した

kopsで運用しているKubernetes nodesをMulti-AZからSingle-AZに移行したので作業メモを残しておきます。 us-west-2b や us-west-2c にあるNodesとPersistent Volumesを us-west-2a に移行します。Masterは us-west-2a のままにします。 kops 1.8.0, Kubernet…

VPC内部からALBにアクセスする場合の設計

aws

AWSでALBを使う場合に、インターネット側のIPアドレスを制限しながら、VPC内部から同じFQDNでサービスにアクセスできるようにしたい。 TL;DR Requirement: インターネットから https://api.example.com でサービスにアクセスできること EC2から https://api.…

KeycloakのSAML SSOでGitLabやMattermostにログインする

KeycloakとGitLabでSAML SSOを設定する方法を説明します。ユーザ管理をKeycloakで行いながら、GitLabやMattermostにSSOできるのでとても便利です。 TL;DR Keycloakはオープンソースの統合ID管理ツールです。OpenID ConnectやSAMLによる認証を提供しています…

GitLabでRDS for PostgreSQLを使う

GitLabでRDS for PostgreSQLを使う場合にハマったのでメモです。 TL;DR GitLabを起動した際のマイグレーションスクリプトで CREATE EXTENSION pg_trgm; が実行されるが、一般ユーザは CREATE EXTENSION の権限を持っていないのでエラーが発生します。 あらか…

GKE with HTTPS by kube-lego

GKEでHTTPSを使う場合のメモです。 kube-legoのサンプルに書いてある通りですが、一部注意が必要です。 github.com まず、kube-legoをデプロイします。 cd lego vim configmap.yaml #...snip data: # modify this to specify your address lego.email: "int1…

AWSでメールを受信してLambdaで処理する

AWSでメールを受信してLambdaで処理するには以下の方法があります。 SES→S3, SES→Lambda SES→SNS→Lambda 大きなメールを受信したい場合は1を選びます。1はS3にメールを格納してから読みに行くため、サイズの大きなメールも受信できます。2では160kB以下のメ…