バッチ処理を cron から k8s cronjob に移行する

Shamshir のスタンドアローン版を k8s(minikube) の cronjob に移植した記録です。 cron でバッチを動かす時の問題点 node, ruby, python 他インタプリンタ系の言語でプログラムを作ると nodenv + npm/yarn, rbenv + bundler, pyenv + pip などのエコシステ…

Chrome で検索対象の言語を英語のみにして検索する

設定方法 URL バーを右クリックして「検索エンジンを管理」のメニューを表示します。 メニューを以下のように修正します。検索エンジン名とキーワード(トリガーとなるキー)をお好みで指定します。 https://www.google.com/search?gl=us&hl=en&gws_rd=cr&pws=…

aws-minikube: ELB とも連携できてフットワークが軽い AWS k8s 環境

k8s 環境として minikube, eks, aws-minikube を比較してみました(k3s は未経験)。個人的には aws-minikube がコスト面/機能面でよさそうに思えたので紹介です。 aws-minikube とは? EC2 1 台で k8s 環境が整うツールです。Red Hat 社の Jakub Scholz 氏が 2…

Getting started with Amazon EKS (2) とコスト計算

前回 に引き続き、EKS でサンプルの nginx pod を外部公開するまでを実施しました。 docs.aws.amazon.com Service の外部公開 Getting Started with Amazon EKS で紹介されているデプロイだと Type:ClusterIP でクラスタ内部への公開なので、これを type: Lo…

Ansible における抽象/具体モデルと誰が/何をするの考え方

Ansible の group と host, role と task の関係が 公式ドキュメント からだと個人的にわかりにくかったのでまとめた図です。頭の中でなんとなく理解していたことを図や表に起こしてみることで理解が促進されました(公式ドキュメントにこういった説明があれ…

Node.js のテストフレームワークとデバッガ

テストフレームワーク Jest shamshir に細かなバグを見つけたので少しの間、我流のプリントデバッグをしていたのですが、継続的なメンテナンスを考えてテストフレームワークを導入することにしました。参考にしている「ハンズオン Node.js」の「8 章 ユニッ…

Getting started with Amazon EKS の地雷処理

2 年ぶりに Kubernetes を使います。以前、仕事で AWS とオンプレそれぞれにクラスタを構築して運用していたもの、構築部分は k8s プロフェッショナルなエンジニアが身近にいたせいでおんぶにだっこの状態でした。過去に Kubernetes The Hard Way を AWS で…

Shamshir を Github Marketplace にリリースしました

ShamshirLabeling という名前でリリースしています。よろしければお使いください。 github.com

Github Sponsors に登録するには

大きな流れ Introduction (5,000 characters) と Short bio (250 characters) を書く(自己紹介と略歴) Sponsor tiers や Goals を決める($1/月で 10 人が目標、スポンサーになってくれた方への特典など) Github と連携する Stripe のアカウントを作成し、銀…

Shamshir が Github Actions に対応しました

従来のスタンドアローンでの起動に加えて、Github Actions からも起動できるようになりました。よろしければお使いください。 https://github.com/kyagi/shamshir uses: kyagi/shamshir@v1 トリガーのイベントとして「PR のレビューや修正」だと数が多くて G…

Github で PR の APPROVED 数に応じてラベル(releasable) をつけたり外したりする

Dismiss stale pull request approvals when new commits are pushed Github の Pull Request のレビュー後、APPROVED の数に応じてラベルをつける運用を自動化します。APPROVED 後にコミットがあった場合、自動的に APPROVED が取り消される運用(画像) での…

Web の QMK Configurator でキーマップを作成してからローカルの QMK Firmware でビルド/書き込みを行う

Corne Cherry で自分専用のキーマップを作成してファームウェアをビルド、書き込みする手順です。ビルドガイドの補足情報としてお役に立てば幸いです。 Corne Cherry のファームウェア書き込みについて ビルドガイドにもある通り、QMK Firmware を使用してフ…

HAProxy 2.0.1 の Docker イメージは prometheus 機能がデフォルトでビルドされる

Dockerhub の haproxy:2.0.1 では prometheus へ統計情報を export する機能がデフォルトで組み込まれる HAProxy 2.0.1 の Docker イメージから拡張機能である prometheus.o がデフォルトのビルドオプションに含まれるようになった。これで前回の記事で紹介…

HAProxy 2.0 (-dev7) の prometheus サポート拡張機能を利用してマルチスレッドの統計情報を exporter なしで正しく取得する

HAProxy 1.7 から 2.0 へ移行 前回 試した通り、HAProxy 1.7 + haproxy-exporter の組み合わせではマルチプロセス時に統計情報が正しく取得できない。代替案として prometheus サポートが提供される HAProxy 2.0 (dev7) を試してみた結果、こちらでうまくい…

HAProxy 1.7 ではマルチプロセス時の統計情報が正しく取得できない

HAProxy 1.7 をマルチプロセスで動かした場合、統計情報がおかしくなる Kubernetes 上で haproxy を HTTP/HTTPS のロードバランサとして使用したところ、動作的には問題ないが prometheus/grafana で出力する統計情報(stats)が正しくないことに気がついた。…

meishi キットからはじめる自作キーボード入門

meishi キットとは 遊舎工房さんで販売している自作キーボードの入門セットです。「名刺」サイズの基盤に4つのキーを載せたミニキーボードの組み立てを通して、自作キーボードの作業の概要を把握できるようになっています。費用は meishi キット(1,000 円ほ…

Kubernetes The Hard Way を AWS で実施する

Kubernetes The Hard Way とは Kubernetes の公式ドキュメントで Setup の項目をたどると kubeadm を使う例が記載されている。いくつかの機能はまだ alpha/beta であるものの公式でも kubeadm をクラスタ構築に使う流れを後押ししたいように見える。確かに k…

世界各都市の現地時刻を表示するコマンドを作った

仕事上、東京とロサンゼルスの時間を気にする必要があるので、時差を知りたい時は環境変数 TZ にそれぞれの都市を入れて date していたのを peco を使って拡張してみた。timedatectl list-timezones で抜き出したタイムゾーンのリストを peco でフィルタして…

IntelliJ から Docker イメージの開発作業を行う

IntelliJ の Docker Integration プラグインを使う Dockerfile の修正、ビルド、イメージの動作確認を行うのに、今まではターミナルから docker build -> run -> attach をしていたけれど、全て IntelliJ のインターフェイスでサイクルを回した効率がよかっ…

mac mini 2018 向けのディスプレイケーブルとマイク

mac

年末に mac mini 2018 を購入した際に発生した問題がふたつ。 それまでのディスプレイケーブルが使えない。USB Type C to HDMI のものを書い直さないといけない。 マイクがない(マイクがないと日課のオンライン英会話が mac mini できない)。 しょうがないの…

Docker Desktop for Mac の Kubernetes 機能を使用して Mac 上に Kubernetes クラスタを構築する

Mac でお手軽 Kubernetes クラスタ構築 難しい、となかなか敷居が高くなりがちな Kubernetes だが Docker Desktop for Mac の Kubernetes 機能を利用すると、お手軽に Mac に Kubernetes クラスタを構築することができる。 Docker Desktop for Mac とは? Mac…

Go 1.11 からはじめるプロジェクトでは、パッケージマネージャは dep ではなく go mod(Go Modules) を使おう

go

go mod(Go Modules) がこれからのスタンダード Go を使いはじめるにあたってパッケージマネージャを探した時の話。ghq や glide といった過去の遺産に加えて godep, dep (ややこしい) と百花繚乱な様子が窺え、初見では、将来的に何が天下統一してくれるのか…

parallel で k8s の複数 pod にコマンドを「並列」で流して結果を保存する

k8s の複数 pod を横断してかつ「並列」でコマンドを実行する必要がある場合、どのような手段があるだろうか。例えばパフォーマンス測定のために jstat を複数 pod で実行したい場合、以下のように kubectl に pod を次々と「直列」で渡していっては、各 pod…

tail -f /dev/null で調査用コンテナを起動してそのままずっと保持しておく

Docker コンテナを ENTRYPOINT や CMD の指定なしにちょっとだけ立ち上げたいことがある。例えば Docker イメージで提供されている OS の環境で少しだけ作業をしたい場合など。そんな時は大抵 -d でバックグラウンド指定して sleep コマンドで適当に長い秒数…

fluentd プラグイン sampling-filter と numeric-monitor を組み合わせて nginx のアクセスログから標本を抽出してパフォーマンス測定を実施する

ログの一部を抽出して計算するには sampling-filter + numeric-monitor の組み合わせがぴったり! 大規模データ収集のログコレクタとして fluentd を使用している場合、全部のログの中から一部を抽出してデータ分析を行いたい場合がないだろうか。例えば、サ…

新世代 grep の使い方 ripgrep(rg) と silver-searcher(ag)

はやいは正義 ripgrep が現在進行形で大正義らしい。名前からなんとなく「闇を切り裂く grep」みたいなイメージが浮かぶ。こう、アスファルトタイヤを切り裂きながら暗闇走り抜ける素敵なサムシング、を感じる... のはおぢさんだけ、か。 github.com なぜ、r…

Docker, Kubernetes 学習とツールとコンピュータサイエンス

Docker, Kubernetes 学習の進めかた Udemy の Learning Docker and Kubernetes by Lab を完了した。実際に手を動かしながらだったので 1 週間ほどかかってしまった。内容はかなりよかった。Docker の基礎から Linux カーネルとの関連(Network Namespaces, cg…

xargs が Linux と Mac 両方できちんと動くためには -i ではなく -I オプションを使う

Linux と Mac で xargs の挙動が違うのは以前から認識していたが、詳細までは調べていなかった。今回、プライベートの git レポジトリをコミットして Mac で xargs を実行した際に illegail option -- i と怒られてしまったので、これを機会に xargs が Linu…

Docker イメージの LABEL 情報は Label-Schema が標準になる

Docker イメージのメタ情報(メンテナ、ライセンス種別、ビルド日時、Github の URL など) は LABEL に集約しようという動きが広まってきている。そのために「どういった情報を載せるべきか」という議論がコミュニティベースで展開された結果、標準として Lab…

Tectonic CoreOS を使って AWS 上に Kubernetes クラスタを構築する

CoreOS 社が提供している Kubernetes にセキュリティ、監視、マルチクラウド統合、そしてカッコイイ管理インターフェイスを備えた統合環境 Tectonic を使用してみた。 同社の推しは「Kubernetes の管理コストをさげる」「クラウドベンダーにロックインされな…