kopsが利用するAMIについて調べたのでまとめておく。 kopsでサポートされているOSは https://github.com/kubernetes/kops/blob/master/docs/images.md に書かれている。デフォルトではDebianが選択される。他にCoreOS、Ubuntu、CentOS、RHELがサポートされて…
Slackが公式に公開しているJIRA連携機能を試してみました。 get.slack.help JIRA連携機能はJIRA CloudとJIRA Serverに対応しています。今回は個人で運用しているJIRA Serverを利用しました。 以下の手順でSlackとJIRAを連携できます。詳しくは公式ページを参…
開発基盤ツールをKubernetesで運用する時に使えるHelm chartsを調べたのでまとめました。開発支援ツールやDevOpsツールという言い方もあるかもしれません。 Atlassian JIRA Software オフィシャルのHelm chartやDockerイメージはありません。検索したところ…
HelmfileはKubernetesクラスタのHelm releasesを管理するツールです。 helmfile.yaml にデプロイしたいHelm chartを書いて helmfile sync を実行するだけでインストールやアップグレードを冪等にやってくれるので便利です。 例えば、Kubernetes DashboardとH…
GolangでYAMLを読み込む際、要素の型が実行時に決まる場合を考えます。例えば、以下のYAMLでは values で数値、文字列、マップの値が列挙されています。 values: - 100 - foo - key: value このようなYAMLを読み込む場合、型宣言を interface{} にすると実行…
kubectl getはデフォルトでは以下のカラムを表示するが、どのカラムを表示するかはオプションで変更できる。 % kubectl get po --all-namespaces NAMESPACE NAME READY STATUS RESTARTS AGE 特定のカラムを表示するには -o custom-columns オプションを渡せ…
個人用のKubernetesクラスタを1.9.3に更新したのでログを残します。 % kops version Version 1.9.0 kops upgrade cluster コマンドでS3の構成情報を更新します。 % kops upgrade cluster Using cluster from kubectl context: hello.k8s.local ITEM PROPERTY…
TL;DR AWS CodeBuildとJenkinsを連携させると、これまでJenkins Agentで実行していたビルド処理をAWS CodeBuildに置き換えることができます。以下のメリットがあります。 AWS CodeBuildは無限に*1スケールするので、ビルドキューの待ち行列がなくなる ビルド…
TL;DR GitBucketはGitHub API互換なので、GitHub Enterpriseとして振る舞うことができる。 AWS CodeBuildはGitHub Enterpriseに対応している。 CodeBuildからGitBucketにgit cloneしてビルドを実行できる。 今のところWebhookは使えない。 Getting Started G…
新しい技術を学ぶ時にどのようなアプローチを踏むことが多いのか書き出してみました。具体的には、新しい言語、フレームワーク、インフラ、アーキテクチャ、プロセス、考え方などを学ぶことを考えます。 名前を知る(ポータル、SNS、Podcast等) 特徴を知る…
TL;DR Gradle 4, Nexus 3を前提とする。 Gradleに標準で含まれる maven-publish プラグインを利用してNexusに成果物を公開できる。追加のプラグインは必要ない。 Gradleの repositories ブロックでNexusのリポジトリURLを指定する。成果物の公開、取得ともに…
Goで特定のURLへのアクセス(例:GET /shutdown)を受けたらHTTPサーバを停止するにはどうすればよいか考えてみました。 HTTPサーバを停止する http.Server にはGraceful Shutdownを行う Shutdown メソッドがあります。/shutdown へのリクエストを受けた契機…
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日…
TL;DR Kubernetesの認証はクライアント証明書やID/パスワードだけでなく、OpenID Connectに対応している。 RBACを設定することで、ユーザやグループによるアクセス制御ができる。 以下の設定が必要になる。 Keycloak(OpenID Connect IdP) kube-apiserver(…
TL;DR Keycloakはオープンソースの統合ID管理ツールでOpenID ConnectやSAMLに対応している。 Kubernetes DashboardはOpenID ConnectのIDトークンによる認証に対応している。 RBACを設定することで、ユーザやグループによるアクセス制御ができる。 以下の設定…
Gradle Swagger Generator Plugin 2.10.0をリリースしました。 github.com 新しいリリースではSwagger UI 3に対応しました。Swagger UI 3になってから使い勝手が大きく改善されています。 このプラグインを利用すると、下記のようなビルドスクリプトを書くだ…
KubernetesではHelmというパッケージマネージャが広く使われています。HelmではChartという単位でパッケージを管理します。有名なソフトウェアであればOfficial Chartsが公開されていますが、場合によっては自分で書いたChartを公開したいこともあるでしょう…
JIRAの更新をSlackやMattermostに通知するBOTを作りました。 このBOTは実際にお仕事で使っていて、いい感じの粒度で通知されるように改善を重ねています。 Dockerで簡単に実行できます。 docker run --rm -p 3000:3000 \ -e SLACK_WEBHOOK=https://hooks.sla…
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…
TL;DR KubernetesのPersistent Volumesの容量をPrometheusで取得するには以下のMetricsを使用する。 kubelet_volume_stats_available_bytes (使用可能バイト数) kubelet_volume_stats_used_bytes (使用済みバイト数) kubelet_volume_stats_capacity_byte…
Keycloakにユーザを一括追加するツール Keycloak Bulk を作りました。 Keycloakで多数のユーザを追加したい場合、一人ずつ手作業で登録する必要があります。JSONでユーザリストを書けばインポートできるようですが、やや複雑な作業が必要になります。使いや…
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ではEC2のルートボリュームに割り当てるボリュームタイプに gp2 か io1 しか指定できない問題がありました。検証用途では standard で十分なので、standard も指定できるように入力値チェックを修正するPRを送りました。 github.com 以下のようにインス…
Spring Bootで --spring.config.location に複数のプロパティファイル(またはYAMLファイル)を指定した場合の優先順位を調べてみました。 TL;DR --spring.config.location にはカンマ区切りで複数のプロパティファイルを指定できる。 後に指定したプロパテ…
会社ではWindowsを使う必要があるのですが、まともな開発環境を整備するためにいろいろと苦労したので知見をまとめておきます。 前提: Windows 10 プロキシなし 希望: zshを使いたい プライベートで使っているmacOSのdotfilesをそのまま使いたい gitコマン…
TL;DR nextcloudはオープンソースのファイルストレージサービスです。SAML SSOに対応しています。 Keycloakはオープンソースの統合ID管理ツールです。OpenID ConnectやSAMLによる認証を提供しています。 以下の環境で確認しています。 nextcloud 12.0 Keyclo…
滅多に変更しない静的ページを配置したい時に便利です。 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: - …
TL;DR Kubernetesの認証はクライアント証明書やID/パスワードだけでなく、OpenID Connectに対応している。 RBACを設定することで、ユーザやグループによるアクセス制御ができる。 以下の設定が必要になる。 Keycloak(OpenID Connect IdP) kube-apiserver(…
KeycloakとJIRAやConfluenceでSAML SSOを設定する方法を説明します。KeycloakでID管理を行いながら、JIRAやConfluenceにSSOできるので便利です。 TL;DR Keycloakはオープンソースの統合ID管理ツールです。OpenID ConnectやSAMLによる認証を提供しています。…
kubectl にはシェルの補完機能が用意されています。 .zshrc で補完機能を有効化するとzshの起動に時間がかかるため、補完機能の有効化を遅延実行するようにしてみました。 具体的には、 kubectl コマンドの初回実行時のみ source <(kubectl completion zsh) …