Unyablog.

のにれんのブログ

Docker で jq が使いたくなったら gojq の Image を使えば良さそう

タイトル通りのメモ。 jq を Docker で使いたかったけど、公式で提供されている image が明示されておらず、それっぽいものも Updated 6 years ago となっている。 github.com 野良 Image はあまり使いたくないので、どうしたものか。 gojq を使おう ここで…

GitHub Actions で Docker push をするときに、特定のブランチについて latest タグをつける

DockerHub の autobuild が無料では出来なくなったので GitHub Actions で Docker build / push を行う作業をしていた。 基本的にはスムーズに移行できたが、 latest tag を自動で生成する部分だけちょっと詰まったのでメモ。 問題 Docker Hub の autobuild …

docker-compose を Docker で動かす

docker-compose を Docker 内で実行するメモ。 背景 docker-compose は便利なツールだが、Linux サーバー上で動かすときは入れ方に悩む。 Docker engine は Docker 公式 apt リポジトリから入れることができるけど、docker-compose はレポジトリには存在しな…

replicaCount: 1 と Drain とダウンタイム

Kubernetes で Node を Drain するとき、replicaCount: 1 な ReplicaSet (Service) はある程度のダウンダイムを許容せざるを得ない。 関連 issue は以下。 github.com 問題 ReplicaSet X があり、その replicaCount は 1 にしている また、同じ Selector で …

k8s: 手元で削除したリソースをクラスタからも消したい

k8s の yaml を kustomize で管理している。ここからリソースを消しても kustomize はそれを感知しないためクラスタからは削除されない。 どうするか kpt を使う。これを見つけたのは deprecated になった inventory からリンクが貼られていたため。 kpt は…

Vertical Pod Autoscaler の limits 周りの挙動について

Kubernetes で memory の requests を管理するのに Vertical Pod Autoscaler (VPA) を使っている。 github.com VPA はリソースの使用量の実績に基づいて良い感じに limits と requests を調整してくれるものだが、 limits の設定に関してちょっと困ったので…

Kubernetes ヒヤリハット ― デフォルトに戻すときはちゃんと書く

Kubernetes で Service Account を特定のものから default に戻そうとして、Pod の Template から serviceAccountName を消して apply した。 spec: - serviceAccountName: old-service-account restartPolicy: Never containers: - ... しかし、適用しても…

SQLAlchemy で MySQL の JSON_CONTAINS をやる

SQLAlchemy で MySQL の JSON_CONTAINS をやるには func.json_contains を用いれば良いのだけど、 JSON_CONTAINS のドキュメント にあるように candidate は JSON ドキュメントである必要がある。 以下のようにすると hoge は JSON ドキュメントではないため…

ISUCON 10 本戦に出場した(16位)

チーム として ISUCON 10 本戦に参加した。 isucon.net 結果は 14206 点で 16位。くやしい! レポジトリは以下。よく分からない Author になってるコミットは大体自分によるもの。 github.com 以下はチームメイトのブログ。コードの改善などは基本的にそち…

ISUCON 10 で予選突破した(24位)

ISUCON に今年も出場して、めでたく予選突破できた。チーム名は で、チームメイトはいつもと同様 utgwkk と wass80。 isucon.net チームメイトのエントリは以下。 wass80.hateblo.jp blog.utgw.net レポジトリは以下。 github.com やったこと いつも通り自…

eBPF: bpf_skb_store_bytes の BPF_F_RECOMPUTE_CSUM は tc_cls の egress では動かなさそう

最近 bpf についてめっちゃ書いてるけど、ドキュメントが弱く検索しても情報がないからです… bpf_skb_store_bytes には BPF_F_RECOMPUTE_CSUM というフラグがあって、ドキュメントによると store 後にチェックサムを更新してくれるらしい。 しかし、これを t…

eBPF: sk_skb は parser と verdict どちらも attach する必要がある

eBPF で sk_skb (BPF_PROG_TYPE_SK_SKB) を使うとき、 parser と verdict どちらも attach する必要がある。一方だけを attach しても上手く動かない。 環境は ArchLinux で Kernel release は 5.7.10-arch1-1。 $ bpftool prog attach pinned /sys/fs/bpf/s…

eBPF: BPF_MAP_TYPE_SK_STORAGE が Invalid argument

Linux の eBPF で BPF_MAP_TYPE_SK_STORAGE を使おうとして、map を定義して bpftool で流し込んだけど Invalid argument でうまく動かなかった。調べてもヒットしなくて長時間費やしたのでメモ。 環境は ArchLinux で Kernel release は 5.7.10-arch1-1。 T…

個人で運用しているサーバーを Kubernetes に整理する

個人で運用している VPS に Kubernetes を乗せて既存のシステム(Web アプリとか Slack Bot とか Cron ジョブとか)をガッと移行した。 もともとは itamae 使って Systemd でサービス立ち上げていたのだけど、ソフトウェア依存とか権限分離とか冪等性とか面…

別のサブドメインの cookie をセットできるのか

できない。 疑問 foo.example.com で Domain=bar.example.com をセットできるのか? Domain=example.com はできる Domain=example.net はできない 答え できない。 The user agent will reject cookies unless the Domain attribute specifies a scope for t…

HTML を LDIF で書くのを HTML で書くために html2ldif を作った

という記事を書きました。まだ3時こしてないので25日です。 ku-ldif.github.io

LDIF で HTML を書くために ldap2html を作った

という記事を書きました。 ku-ldif.github.io

Poetry を使ってみた

この記事は KMC 2 Advent Calendar 2019 3日目の記事ということにしました。 Poetry Python の Dependency Manager は pipenv が有名で、自分もリリース当初から使っていた。ただ、最近はリリースが一年間されておらず、割と不安な状態*1。 最近は pipenv へ…

iTerm2 JISキーボード 文字 拡大 Karabiner-Elements

iTerm2 で文字を拡大するショートカットは ⌘ + である。 JISキーボードでは + は Shift ; を入力することになるので、⌘ + は JIS では Shift ⌘ ; が入力される。 一方 iTerm2 では、Shift ⌘ ; が Open Command History に割り当てられている。このため、JIS…

YAML から JSON に変換するツールを Nim で書き、GitHub Actions でリリースする

最近 config が YAML になっているアプリケーションが多い。ただ、自分は YAML の読み書きが苦手である。 設定を書くには機能が多すぎるのと、(config なので)ネストしやすいのにインデントが関わってくるのが苦手なのだと思う。 何度かハマった結果、これ…

NFS の負荷原因を見る方法

tcpdump でキャプチャする pcap を Wireshark で見て多く通信している先を眺める pcap を strings して中身を見る 多分これが一番早いと思います

VSCode 上で ESLint を使った TypeScript のフォーマット

https://github.com/microsoft/vscode-eslint を入れる VSCode のデフォルトフォーマッタを切る グローバルか、ワークスペース上の .vscode/settings.json などに書くと良い { "typescript.format.enable": false } TypeScript で ESLint が働くようにする "…

ISUCON9 予選に参加した(failed)

最近は O-Ku-Ri-Mo-No Sunday! にはまっている。めっちゃ良くない? ということで先日 ISUCON9 に参加した。 isucon.net チームは :innocent: で id:wass80, id:utgwkk と参加した。 全体的な話は utgwkk の記事を参照。 utgwkk.hateblo.jp 自分のやったこと…

各 OS の 802.1X 認証における RADIUS サーバーの検証方法

最近 802.1X 認証(WPA2 Enterprise)を構築していた。野良 RADIUS サーバーに Credentail を渡さないためには、サーバー証明書などで RADIUS サーバーの検証を行うことが必要である。 各 OS でどう検証できるかを調べたのでメモ。 今回はクライアントにサー…

Ansible で大量のホストに対して実行する場合のメモリ対策

Ansible で大量のホストを対象として Playbook を実行すると、大量の変数を保持する結果、メモリが足りなくなることがある。 以下はその対策。 gather_subset を用いて収集する fact を制限する Ansible は gather_facts(または setup モジュール)で大量の…

systemd 240 と Java の OOM

ArchLinux 上で Debian stretch を systemd-nspawn で立ち上げているのだが、最近 pacman -Syu したら Debian のコンテナで Java が立ち上がらなくなった。 原因 だいたいここに書いてある。 systemd 240 で RLIMIT_NOFILE が大きくなった Debian の PAM で…

レポジトリから直接ダウンロードした deb ファイルを自分で検証する

apt ではなく dpkg を直接インストールするとき、 http://security-cdn.debian.org/ 等から直接 dpkg をダウンロードする。 HTTPで取得した dpkg が改ざんされていないか気になったので自前で検証してみた。 具体的な構造は以下が詳しい。 kmuto.jp GPG Key …

mackerel-plugin-strongswan を作った

Mackerel アドベントカレンダーが空いていたので、半年ほど前に作ったプラグインの話を軽くします。22 23日目の記事です*1。 qiita.com 昨日は sfujiwara さんで、「Mackerel と連携する外形監視エージェント maprobe でマネージドサービスのメトリック収集…

脱 PuTTY をしようとした話

この記事は KMCアドベントカレンダー 11日目の記事です。 adventar.org 昨日は id:nakario_jp さんで、「KMCとボードゲーム「超人ロック」」 でした! nakario.hateblo.jp WSL で脱 PuTTY しようとして便利に暮らしているが、 Windows 側のツール群はまだ無…

tmux の if-shell は sh で実行される

tmux の if-shell ではシェルコマンドの結果に応じて実行するコマンドを変更できる。 今までここにバージョンによって設定を変化させるように書いていたが上手く動いていない時があった。 if-shell "[[ `tmux -V` =~ 2.[1-9]$ ]]" "set -g mouse on" 理由 tm…