DevOps・CI/CD 2026年5月6日

2026 マトリクス:Mac mini M4 ランナー登録 TTL、陳腐化した ID、リーパー SLO

NodeMac チーム

フリート ID・CI

Mac mini M4スケジュール可能なビルドノード として借りるチームは、Xcode とシミュレータのプロビジョニングには成功しつつ、登録証明書が数時間前に期限切れになっているのに「オンライン」に見えるランナーによって何週間も溶かすことがよくあります。本 2026-05-06 マトリクスでは、登録 TTLLaunchAgent の ID ドリフト、自動 リーパー が Apple Silicon 上でどう絡み合い、キューを正直に保つかを説明します。意思決定表が2つ、JSON-LD と照合するロールアウト 8 ステップ、実フリートのテレメトリに根ざした FAQ を用意しました。メニューバー アイコンが緑でも再起動の迷信に頼らないための材料です。

このプレイブックは ランナー登録トークンのライフサイクル衛生ドレインとメンテナンスの引き継ぎ同時実行とディスク SLO のプール設計 と併用してください。ID 修正がキャパシティ嵐と衝突しないようにします。

運用上の含意は単純です。TTL は「秘密文字列がまだ生きているか」だけでなく、「このホストが今この組織に属すると宣言できるか」を時間で縛ります。リーパーはその宣言が嘘になった登録を後から片付ける役であり、監視は「プロセスが動いているか」ではなく「認証済み API がランナー ID を受理したか」を見ます。GitHub Actions 型のセマンティクスでも GitLab Runner でも、Mac 固有の launchd・キーチェーン・複数ユーザー環境が絡むと、クラウドだけが古いというより「ローカルの真実」と「コントロールプレーンの真実」のズレが問題になります。ここでいう HK·JP·KR·SG·US は地理的に runners を隔離するためのラベルであり、TTL を短くすればよいという話ではなく、リージョンごとに出口や DNS の失敗モードが違うため、鮮度ゲートとリーパーを地域単位でも観測してください。

なぜスケジュール可能な Mac ノードはまず ID 面で腐るのか

使い捨て Linux VM と違い、専用 Mac CI レーンには状態の接着剤が付きます。ユーザー セッション鍵、剪定を忘れた APFS スナップショット、オーケストレータが古いランナー GUID をまだ信じているあいだに静かに更新される Git credential helper です。Apple Silicon M4 ではユニファイド メモリが CPU 圧力を隠し、git のメタデータ負荷が高い操作で停滞するとき—オペレータは「ネットの一瞬の欠落」ではなく「登録の幽霊」を疑うべき瞬間です。形式ばった TTL とリーパーが、火曜のデプロイ凍結でキュー遅延が倍増した理由を財務に問われる前に、その観測ギャップを閉じます。

  • イメージ後の時計ずれ: NTP は壁時刻を直しますが、ログの LaunchAgent ラベルは古いホスト名を参照したまま残ります。
  • 手動のランナー複製: エンジニアが構成スクリプトを再実行し、断続的にポーリングに応答する複数登録を量産します。
  • 組織レベルの PAT ローテーション: 自動化トークンは更新される一方、非推奨スコープを宣伝するレガシー構成が残ります。

設計原則: 鮮度ゲートはキュー ディスパッチの横に置くべきで、月次スプレッドシートだけではありません。オーケストレータが認証済みエンドポイントへの接続を 15 分 以内に証明できないランナーは、メニューバー アイコンに異議があってもオフライン扱いにします。

マトリクス A — 登録アーティファクト対 更新頻度 対 ドリフト症状 対 既定のガードレール

アーティファクト 更新頻度 ドリフト症状 ガードレール
短命の登録 JWT 毎時の自動ハンドシェイク ジョブはデキューするが checkout で停滞 3 回連続で更新に失敗したらフェイルクローズ
マシン紐付け TLS クライアント証明書 45 日 ごとにローテーション TLS は成功するが API がランナー ID を拒否 notAfter の 14 日 前にアラート
LaunchAgent ラベル OS アップグレード時のみ 同一トークン ファイルを奪い合う重複エージェント レーンごとに単一 plist 所有者とチェックサム ゲート
リポジトリスコープの資格情報バンドル スプリントごとのローテーション 単体は緑、統合の pull が赤 コンパイル専用とデプロイ専用レーンで PAT スコープを分割

マトリクス B — オペレータの匂い 対 ブラスト半径 対 自動応答(リーパー)

匂い ブラスト半径 リーパー応答
ランナー数 > 健全なハートビート キューしたジョブが幽霊ラベルに固定 SLA ウィンドウの 2 倍 ハートビート欠落で ID を登録解除
ディスク満杯警告とポーリング ループ 部分的ログが認証失敗を隠す ワークスペースをスナップショットしてから登録バンドルを原子更新で再利用
DNS 再試行の急増 地域 egress がオーケストレータ呼び出しを誤経路 レーンを劣化とマークし、二次リージョンのノードへトラフィックを移す

Apple Silicon のノイズを潜り抜ける数値ガードレール

  1. ハートビート予算: 営業時間中、レーンごとに認証済みポーリングを少なくとも 15 分 に1回は成功させる。
  2. リーパー遅延: 陳腐メタデータ検知から手動クリックでキューが詰まらないよう、自動クリーンアップは 90 秒 以内に完了させる。
  3. ID ずれアラーム: 設定ランナーがバックエンドで見える登録を 1 つ超える状態が10連続サンプル続いたらページする。

8 つのロールアウト手順(JSON-LD と対応)

  1. トークンを棚卸し:組織、リポジトリ、短命ランナーのスコープ全体。
  2. 陳腐シグナルを定義:ping だけでなくハートビート、ポーリング遅延、証明書日付で。
  3. リーパーを自動化:どのオペレータが破壊的削除を承認したか監査ログに残す。
  4. ドレインを調整:リリース管理と共有した凍結タグで。
  5. LaunchAgent を再読み込み:クローン作業でホスト名やボリューム UUID が変わるたびに。
  6. キューを検証:ローテーション後、キャッシュ ビルド1つとコールド クローン1つをレーンごとに。
  7. ずれでアラート:望ましいラベルと実登録の差。
  8. 四半期監査:孤立行を削除し TTL 既定を締める。

FAQ

短命ランナーにもリーパーは必要か

はい。イメージ脚本がティアダウン途中で落ちると短命の約束は破れ、リーパーはまだポーリングする孤立登録への安全網です。

ランナー設定は静止時暗号化すべきか

ホストで FileVault を使い、Vault に最小権限のシークレットを置く。共有 Mac CI ベンチでは chmod だけに頼らない。

新しいオペレータはどこから始めるか

SSH ワークフローは ヘルプ を開き、ID の churn でステージング クラスタを分離するには 料金 でリージョンを拡張する。

Mac mini M4 ノードを本番級 CI キャパシティとして扱うには、シリコンの効率と人間オペの現実の両方を尊重します。Apple Silicon は単一電力枠に CPU・GPU・NPU の余裕をまとめ、ネイティブ macOS は iOS チームが期待するツールチェーン挙動を保ちます。NodeMacSSH 自動化とオプションの VNC ブレイクグラスを 香港・日本・韓国・シンガポール・米国 で提供し、ステージング ランナーを本番 ID から分離できます。ハードを買わずに 専用 Apple Silicon をレンタル すれば、アイドル購入クラスタより TCO を下げ、TTL ローテーションでレーン数を伸ばす弾力性も得られます。上記マトリクスと組み合わせれば、陳腐ランナーが健全なキャパシティのふりをしなくなります。

実務では、リーパーを入れると「ランナーが消えた」というチケットが一時的に増えます。それは設計上のトレードオフです。事前にドキュメント化された猶予時間とラベル付きロールバック手順があれば、そのノイズは事故ではなく健全な収束として読めます。逆にリーパーを入れないと、キューは緑でも認証だけが静かに死んでいくため、問題は長く見えません。経営に説明できるのは監視が赤かった時間ではなく実際にビルドが止まった時間です。TTL とリーパーは、そのギャップを縮めるための最小セットです。

Cloud Mac でランナー ID を常に新鮮に

SSH/VNC、HK·JP·KR·SG·US—ステージングの TTL 実験を本番キューから分離。

NM
NodeMac Cloud Mac
約5分でデプロイ

クラウド上の専用 Apple Silicon Mac をレンタル。SSH/VNC、HK·JP·KR·SG·US ノード。

はじめる