2026 年の第 1 四半期に、CNCF プラットフォーム エンジニアリング テクノロジー コミュニティ グループ (TCG) は 2 つの基本文書の更新を開始しました。製品としてのプラットフォームに関するホワイトペーパーそしてプラットフォームエンジニアリング成熟度モデル。コミュニティの目標は、KubeCon EU 2026 までにドラフトをリリースし、AI ツールのセキュリティをプラットフォーム ガバナンスに組み込むことです。同時に、2026 年 5 月 29 日に CNCF によって公開された実践記事は非常に単純です。最新の配信は、アプリケーション コードによって制限されなくなり、それをホストするプラットフォームによって制限されます。 Wishes Niu Technology のようなエンタープライズ カスタム開発を行うチームにとって、この文は「さらに 2 つのバックエンドを募集する」というよりも、環境のドリフト、パイプラインに書き込まれるキー、口頭での合意に依存したロールバック、何か問題が発生するまで待つという観察など、本当の問題点に近いものです。
1. まず3つのレイヤーを解体してから、「K8sを使用するかどうか」について話し合います。
上記の CNCF プラクティスでは、プラットフォームを次のように分割します。インフラストラクチャ層、プラットフォーム層、アプリケーション層、そして明確な警告: 3 つのレイヤーを同じ倉庫に入れるのが早すぎると、後のメンテナンスコストが急激に増加します。インフラストラクチャ層は、ネットワーク、クラスター、ミラーウェアハウス、および主要なベースを担当します。プラットフォーム層は、GitOps コントローラー、ポリシー、サービス グリッド、および監視可能なコンポーネントを提供します。アプリケーション層は顧客のビジネス マイクロサービスです。カスタマイズ プロジェクトで最もよくある誤操作は、顧客のビジネス コード、Jenkins スクリプト、およびクラスター パラメーターを同じドキュメントに記述することです。そのため、環境が変わると倉庫全体を変更する必要があります。
1.1 中小規模のチームは大手メーカーのツールリストをコピーすべきではありません
同じ記事では、重複するツールの時期尚早なスタッキングが CNCF エコシステムの典型的な落とし穴であることも認めています。 Istio、OpenTelemetry、およびマルチクラスター ApplicationSet はすべてポストインストールできます。半年の配信サイクルを持つカスタム プロジェクトの場合、より実用的な最小セットは、再現可能な環境定義、スキャンと署名を備えたビルド パイプライン、Git を唯一の真実として扱うリリース方法です。これら 3 つの要素がなければ、いわゆる「マイクロサービス変換」は、モノリスを相互の構成をコピーする多数のプロセスに分割するだけです。
2. プラットフォームを運用および保守スクリプトの集合ではなく製品として扱う
CNCFでは、プラットフォームエンジニアリングを「製品としてのプラットフォーム」と表記しています。重要なのは、別のポータル セットを購入することではなく、顧客としての社内開発者。ホワイトペーパーと成熟度モデルの 2026 年改訂版の重要なポイントの 1 つは、組織がどのレベルにあるかを評価し、次のステップで 1 つのことだけを変更できるように、実際のシナリオを追加することです。カスタム ソフトウェア会社が Jenkins を最初から構築し、Dockerfile を最初から作成し、プロジェクトごとにテスト ライブラリを最初から申請すると、納品サイクルは「重複労働税」によって食いつぶされてしまいます。内部開発プラットフォーム (IDP) の最初の目標は、同様のプロジェクトにゴールデン パス (ウェアハウスの作成、環境の申請、テストの実行、プレビュー、公開) を提供することです。開発者はビジネス上の差異を埋めるだけです。
- 宣言型インフラストラクチャ:「ラオ・ワンのみがこの機体に搭乗できる」ではなく、環境を再構築することができます。
- GitOps の継続的調整: クラスターのステータスは Git の影響を受けるため、本番環境への手動の kubectl 変更はプルバックできる必要があります。
-
サプライチェーンはデフォルトでオンになっています: 依存関係スキャン、イメージ署名、禁止
latestタグ。クラスターに入る前にインターセプトされます。 - 可観測性はプラットフォームの機能です: インジケーター、ログ、アラームは、オンラインになった後にセットを追加するのではなく、ゴールデン パスで提供されます。
3. サプライチェーンのセキュリティは「導入前」に移行する必要がある
CNCF の IDP プラクティスでは、構築、セキュリティ検証、インフラストラクチャの変更が独立したパイプラインに分離されます。アプリケーション パイプラインは、コンパイル、単体テスト、SAST、依存関係の Trivy スキャン、ウェアハウスに入る前の署名を担当します。セキュリティ パイプラインは署名を再検証し、イメージをスキャンし、KubeSec を使用してマニフェストを表示します。コードを渡した後にのみ、GitOps コントローラーの同期が許可されます。社内の実験環境での観察結果は、導入の成功率が手動プロセスの約 70% から約 95% に増加し、インフラストラクチャの準備が数時間から 15 分未満に短縮され、脆弱性の発見の約 80% が運用前に防止できることです。これらの数値は実験室とリリース前から得られたものであり、顧客との約束に直接書き込むことはできませんが、方向性は明らかです—検証権を「画面を見つめる人々」から「組立ラインの拒否」に変える。
| レベル | 平台能力 | カスタマイズされたプロジェクトには何が相当しますか? | すぐにやらないでください |
|---|---|---|---|
| インフラストラクチャー | ネットワーク、クラスター、ウェアハウス、キー | 顧客テスト/プレリリース/実稼働用の 3 つのベース セット | コードを書き戻さずにセキュリティ グループを手動で変更する |
| プラットフォーム | GitOps、戦略、観察 | 統合リリース、統合ロールバック、統合アラーム | 各プロジェクトは独自の Jenkins 哲学を構築します |
| 応用 | 独立して公開可能なビジネス サービス | 注文、在庫、承認、その他の顧客モジュール | キーとビジネスコードを同じ画像に配置します |
| ガバナンス | 署名、アドミッションポリシー、監査 | 契約書の安全条項と受諾条項は機械でチェック可能 | 「オンラインにする前にもう一度スキャンする」という口頭での合意をする |
4. カスタマイズ チームの着陸シーケンス
成熟度モデルでは、ポータルを一度に購入するのではなく、実行可能な次のステップを重視します。 Wishing Niu Technology は、プロジェクトの種類に応じて最も狭いゴールデン パスをカットすることを推奨しています。たとえば、「Java サービス + MySQL + オブジェクト ストレージ」を最初に実行し、次にフロントエンドとメッセージ キューに拡張する必要があります。 Kyverno などのアクセス戦略は傍受のみを優先しますlatestdocument.getElementById('af-error-page').style.display = 'none';Error 500 (サーバーエラー)!!1*{margin:0;padding:0}html,code{font:15px/22px arial,sans-serif}html{background:#fff;color:#222;padding:15px}body{color:#222;text-align:unset;margin:7% auto 0;max-width:390px;min-height:180px;padding:30px 0 15px;}* > body{background:url("//www.google.com/images/errors/robot.png") 100% 5px no-repeat;padding-right:205px}p{margin:11px 0 22px;overflow:hidden}pre{white-space:pre-wrap;}ins{color:#777;text-decoration:none}a img{border:0}@media screen and (max-width:772px){body{background:none;margin-top:0;max-width:none;padding-right:0}}#logo{background:url("//www.google.com/images/branding/googlelogo/1x/googlelogo_color_150x54dp.png") no-repeat;margin-left:-5px}@media only screen and (min-resolution:192dpi){#logo{background:url("//www.google.com/images/branding/googlelogo/2x/googlelogo_color_150x54dp.png") no-repeat 0% 0%/100% 100%;-moz-border-image:url("//www.google.com/images/branding/googlelogo/2x/googlelogo_color_150x54dp.png") 0}}@media only screen and (-webkit-min-device-pixel-ratio:2){#logo{background:url("//www.google.com/images/branding/googlelogo/2x/googlelogo_color_150x54dp.png") no-repeat;-webkit-background-size:100% 100%}}#logo{display:inline-block;height:54px;width:150px}500. エラーが発生しました。エラーが発生しました。しばらくしてからもう一度お試しください。 その他の詳細は不明です。(function() {window.ERROR_PAGE = false; function replaceCurrentPageWithErrorPage() {if (!window.ERROR_PAGE) {var errorPage = document.getElementById('af-error-page2'); document.open('text/html'); document.close(); document.documentElement.setAttribute('lang', 'ja'); document.documentElement.setAttribute('dir', 'ltr'); document.body.appendChild(errorPage); window.ERROR_PAGE = true;}}if (document.addEventListener) {document.addEventListener('DOMContentLoaded', replaceCurrentPageWithErrorPage, false); window.addEventListener('load', replaceCurrentPageWithErrorPage, false);} else {document.attachEvent('onreadystatechange', function() {if (document.readyState === 'complete') {replaceCurrentPageWithErrorPage();}}); window.attachEvent('onload', replaceCurrentPageWithErrorPage);}}());
- まず、一連の環境モジュール (ネットワーク、コンピューティング、キー) をフリーズし、変数ファイルを使用して開発/プレリリース/実稼働を区別します。
- document.getElementById('af-error-page').style.display = 'none';Error 500 (サーバーエラー)!!1*{margin:0;padding:0}html,code{font:15px/22px arial,sans-serif}html{background:#fff;color:#222;padding:15px}body{color:#222;text-align:unset;margin:7% auto 0;max-width:390px;min-height:180px;padding:30px 0 15px;}* > body{background:url("//www.google.com/images/errors/robot.png") 100% 5px no-repeat;padding-right:205px}p{margin:11px 0 22px;overflow:hidden}pre{white-space:pre-wrap;}ins{color:#777;text-decoration:none}a img{border:0}@media screen and (max-width:772px){body{background:none;margin-top:0;max-width:none;padding-right:0}}#logo{background:url("//www.google.com/images/branding/googlelogo/1x/googlelogo_color_150x54dp.png") no-repeat;margin-left:-5px}@media only screen and (min-resolution:192dpi){#logo{background:url("//www.google.com/images/branding/googlelogo/2x/googlelogo_color_150x54dp.png") no-repeat 0% 0%/100% 100%;-moz-border-image:url("//www.google.com/images/branding/googlelogo/2x/googlelogo_color_150x54dp.png") 0}}@media only screen and (-webkit-min-device-pixel-ratio:2){#logo{background:url("//www.google.com/images/branding/googlelogo/2x/googlelogo_color_150x54dp.png") no-repeat;-webkit-background-size:100% 100%}}#logo{display:inline-block;height:54px;width:150px}500. エラーが発生しました。エラーが発生しました。しばらくしてからもう一度お試しください。 その他の詳細は不明です。(function() {window.ERROR_PAGE = false; function replaceCurrentPageWithErrorPage() {if (!window.ERROR_PAGE) {var errorPage = document.getElementById('af-error-page2'); document.open('text/html'); document.close(); document.documentElement.setAttribute('lang', 'ja'); document.documentElement.setAttribute('dir', 'ltr'); document.body.appendChild(errorPage); window.ERROR_PAGE = true;}}if (document.addEventListener) {document.addEventListener('DOMContentLoaded', replaceCurrentPageWithErrorPage, false); window.addEventListener('load', replaceCurrentPageWithErrorPage, false);} else {document.attachEvent('onreadystatechange', function() {if (document.readyState === 'complete') {replaceCurrentPageWithErrorPage();}}); window.attachEvent('onload', replaceCurrentPageWithErrorPage);}}());
- 次に、Git をリリース ポータルにし、マシンにログインしてファイルを上書きするのではなく、ロールバックをコミットのロールバックと同等にします。
- 最後のステップは、セルフサービス ポータルを構築することです。最初の 3 つのステップがなければ、ポータルはボタンに包まれた単なるカオスになってしまいます。
プラットフォーム エンジニアリングは、カスタム プロジェクトを「クラウド ネイティブに見せる」ことではありません。解決したいのは、同じタイプのシステムの 2 回目の配信が最初の配信よりも遅くなってはいけないということです。並列エンタープライズ システムのバッチを評価している場合は、まずチームが毎週「環境を待ち、構成を修正し、誰が変更したかを推測する」ことに何時間を費やしているかを数えてから、どのビジネス ラインからゴールデン パスを切り離すべきかを決定します。これは、最初に壮大な中間段階の青写真を描くよりも、次のマイルストーンで受け入れられやすいです。