OpenShift - Tekton
このページの元の著者は Haroun
tektonとは
ドキュメントによると:Tektonは、開発者がクラウドプロバイダーやオンプレミスシステム全体でビルド、テスト、デプロイを行うことを可能にする、強力で柔軟なオープンソースフレームワークです。 JenkinsとTektonの両方を使用してアプリケーションをテスト、ビルド、デプロイできますが、TektonはCloud Nativeです。
Tektonでは、すべてがYAMLファイルで表現されます。開発者はPipelines
タイプのカスタムリソース(CR)を作成し、実行したい複数のTasks
を指定できます。Pipelineを実行するには、PipelineRun
タイプのリソースを作成する必要があります。
tektonがインストールされると、各ネームスペースにpipelineというサービスアカウント(sa)が作成されます。Pipelineが実行されると、YAMLファイルで定義されたタスクを実行するために、このsaを使用してpipeline
と呼ばれるポッドが生成されます。
Pipelineサービスアカウントの機能
デフォルトでは、pipelineサービスアカウントはpipelines-scc
機能を使用できます。これは、tektonのグローバルデフォルト設定によるものです。実際、tektonのグローバル設定も、クラスター内でいくつかのリーダーロールを持っている場合に見ることができるTektonConfig
というオープンシフトオブジェクトのYAMLです。
どの名前空間でも、パイプラインサービスアカウントトークンを取得できれば、pipelines-scc
を使用できるようになります。
誤設定
問題は、パイプラインSAが使用できるデフォルトのSCCがユーザーによって制御可能であることです。これは、名前空間定義のラベルを使用して行うことができます。たとえば、次のyaml定義を使用して名前空間を作成できる場合:
テクトンオペレーターは、test-namespace
のパイプラインサービスアカウントにscc privilegedを使用する権限を与えます。これにより、ノードのマウントが可能になります。
修正
sccのオーバーライドを制限する方法については、TektonConfig
オブジェクトにラベルを追加することが記載されています。
このラベルはmax-allowed
と呼ばれます。
Last updated