インストールおよび設定
OpenShift パイプラインのインストールと設定
概要
第1章 OpenShift Pipelines のインストール リンクのコピーリンクがクリップボードにコピーされました!
以下では、クラスター管理者を対象に、Red Hat OpenShift Pipelines Operator の OpenShift Container Platform クラスターへのインストールプロセスについて説明します。
前提条件
-
cluster-adminパーミッションを持つアカウントを使用して OpenShift Container Platform クラスターにアクセスできる。 -
ocCLI がインストールされている。 -
OpenShift Pipelines (
tkn) CLI がローカルシステムにインストールされている。 - クラスターで Marketplace 機能 が有効になっているか、Red Hat Operator カタログソースが手動で設定されている。
1.1. Web コンソールでの Red Hat OpenShift Pipelines Operator のインストール リンクのコピーリンクがクリップボードにコピーされました!
OpenShift Container Platform OperatorHub にリスト表示されている Operator を使用して Red Hat OpenShift Pipelines をインストールできます。Red Hat OpenShift Pipelines Operator をインストールする際に、パイプラインの設定に必要なカスタムリソース (CR) が Operator と共に自動的にインストールされます。
デフォルトの Operator カスタムリソース定義 (CRD) の config.operator.tekton.dev が tektonconfigs.operator.tekton.dev に置き換えられました。さらに Operator は、個別に管理される OpenShift Pipelines コンポーネントに追加の CRD (tektonpipelines.operator.tekton.dev、tektontriggers.operator.tekton.dev および tektonaddons.operator.tekton.dev) を提供します。
OpenShift Pipelines がクラスターにすでにインストールされている場合、既存のインストールはシームレスにアップグレードされます。Operator は必要に応じて、クラスターの config.operator.tekton.dev のインスタンスを tektonconfigs.operator.tekton.dev のインスタンスと、その他の CRD の追加オブジェクトに置き換えます。
既存のインストールを手動で変更した場合 (resource name - cluster フィールドに変更を加えて config.operator.tekton.dev CRD インスタンスのターゲット namespace を変更する場合など)、アップグレードパスはスムーズではありません。このような場合は、インストールをアンインストールして Red Hat OpenShift Pipelines Operator を再インストールするワークフローが推奨されます。
Red Hat OpenShift Pipelines Operator では、TektonConfig カスタムリソース (CR) の一部としてプロファイルを指定することで、インストールするコンポーネントを選択するオプションが提供されるようになりました。TektonConfig CR は Operator のインストール時に自動的にインストールされます。サポートされるプロファイルは以下のとおりです。
- Lite: これは Tekton パイプラインのみをインストールします。
- Basic: これは Tekton パイプラインと Tekton トリガーをインストールします。
-
All: これは
TektonConfigCR のインストール時に使用されるデフォルトプロファイルです。このプロファイルは、Tekton Pipelines、Tekton Triggers、Tekton Addons (ClusterTasks、ClusterTriggerBindings、ConsoleCLIDownload、ConsoleQuickStartおよびConsoleYAMLSampleリソースを含む) のすべてをインストールします。
手順
- Web コンソールの Administrator パースペクティブで、Operators → OperatorHub に移動します。
-
Filter by keyword ボックスを使用して、カタログで
Red Hat OpenShift PipelinesOperator を検索します。Red Hat OpenShift Pipelines Operator タイルをクリックします。 - Red Hat OpenShift Pipelines Operator ページで Operator についての簡単な説明を参照してください。Install をクリックします。
Install Operator ページで以下を行います。
-
Installation Mode で All namespaces on the cluster (default) を選択します。このモードは、デフォルトの
openshift-operatorsnamespace に Operator をインストールします。これにより、Operator はクラスター内のすべての namespace を監視し、これらの namespace に対して利用可能になります。 - Approval Strategy で Automatic を選択します。これにより、Operator への今後のアップグレードは Operator Lifecycle Manager (OLM) によって自動的に処理されます。Manual 承認ストラテジーを選択すると、OLM は更新要求を作成します。クラスター管理者は、Operator を新規バージョンに更新できるように OLM 更新要求を手動で承認する必要があります。
Update Channel を選択します。
-
pipelines-<version>チャネルは、Red Hat OpenShift Pipelines Operator をインストールするためのデフォルトのチャネルです。たとえば、Red Hat OpenShift Pipelines Operator バージョン1.7をインストールするためのデフォルトのチャネルはpipelines-1.7です。 latestチャネルにより、Red Hat OpenShift Pipelines Operator の最新の stable バージョンがインストール可能になります。注記OpenShift Container Platform 4.11 以降、Red Hat OpenShift Pipelines Operator をインストールおよびアップグレードするための
previewおよびstableチャネルは利用できません。ただし、OpenShift Container Platform 4.10 以前のバージョンでは、previewおよびstableチャンネルを使用して Operator をインストールおよびアップグレードできます。
-
-
Installation Mode で All namespaces on the cluster (default) を選択します。このモードは、デフォルトの
Install をクリックします。Operator が Installed Operators ページにリスト表示されます。
注記Operator は
openshift-operatorsnamespace に自動的にインストールされます。Status が Succeeded Up to date に設定され、Red Hat OpenShift Pipelines Operator のインストールが正常に行われたことを確認します。
警告他のコンポーネントのインストールが進行中の場合でも、成功ステータスが Succeeded Up to date として表示される場合があります。したがって、ターミナルで手動でインストールを確認することが重要です。
Red Hat OpenShift Pipelines Operator のすべてのコンポーネントが正常にインストールされたことを確認します。ターミナルでクラスターにログインし、次のコマンドを実行します。
oc get tektonconfig config
$ oc get tektonconfig configCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
NAME VERSION READY REASON config 1.9.2 True
NAME VERSION READY REASON config 1.9.2 TrueCopy to Clipboard Copied! Toggle word wrap Toggle overflow READY 条件が True の場合、Operator とそのコンポーネントは正常にインストールされています。
さらに、次のコマンドを実行して、コンポーネントのバージョンを確認します。
oc get tektonpipeline,tektontrigger,tektonaddon,pac
$ oc get tektonpipeline,tektontrigger,tektonaddon,pacCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
1.2. CLI を使用した OpenShift Pipelines Operator のインストール リンクのコピーリンクがクリップボードにコピーされました!
CLI を使用して OperatorHub から Red Hat OpenShift Pipelines Operator をインストールできます。
手順
Subscription オブジェクトの YAML ファイルを作成し、namespace を Red Hat OpenShift Pipelines Operator にサブスクライブします (例:
sub.yaml)。Subscription の例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- Operator のチャネル名。デフォルトチャネルは
pipelines-<version>です。たとえば、Red Hat OpenShift Pipelines Operator バージョン1.7のデフォルトチャネルはpipelines-1.7です。latestチャネルにより、Red Hat OpenShift Pipelines Operator の最新の stable バージョンがインストール可能になります。 - 2
- サブスクライブする Operator の名前。
- 3
- Operator を提供する CatalogSource の名前。
- 4
- CatalogSource の namespace。デフォルトの OperatorHub CatalogSource には
openshift-marketplaceを使用します。
Subscription オブジェクトを作成します。
oc apply -f sub.yaml
$ oc apply -f sub.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow サブスクリプションは、Red Hat OpenShift Pipelines Operator を
openshift-operatorsnamespace にインストールします。Operator は OpenShift Pipelines をデフォルトのopenshift-pipelinesターゲット namespace に自動的にインストールします。
1.3. 制限された環境での Red Hat OpenShift Pipelines Operator リンクのコピーリンクがクリップボードにコピーされました!
Red Hat OpenShift Pipelines Operator は、ネットワークが制限された環境でのパイプラインのインストールに対するサポートを有効にします。
Operator は、cluster プロキシーオブジェクトに基づいて tekton-controllers によって作成される Pod のコンテナーにプロキシー環境変数を設定するプロキシー Webhook をインストールします。また、プロキシー環境変数を TektonPipelines、TektonTriggers、Controllers、Webhooks、および Operator Proxy Webhook リソースに設定します。
デフォルトで、プロキシー Webhook は openshift-pipelines namespace に対して無効にされます。他の namespace に対してこれを無効にするには、operator.tekton.dev/disable-proxy: true ラベルを namespace オブジェクトに追加します。
第2章 OpenShift Pipelines のアンインストール リンクのコピーリンクがクリップボードにコピーされました!
クラスター管理者は、以下のステップを実行することにより、Red Hat OpenShift Pipelines Operator をアンインストールできます。
- Red Hat OpenShift Pipelines Operator のインストール時にデフォルトで追加されたカスタムリソース (CR) を削除します。
Operator に依存する Tekton Hub などのオプションコンポーネントの CR を削除します。
Importantオプションコンポーネントの CR を削除せずに Operator をアンインストールした場合、後で削除できません。
- Red Hat OpenShift Pipelines Operator をアンインストールします。
Operator のみをアンインストールしても、Operator のインストール時にデフォルトで作成される Red Hat OpenShift Pipelines コンポーネントは削除されません。
2.1. Red Hat OpenShift Pipelines コンポーネントおよびカスタムリソースの削除 リンクのコピーリンクがクリップボードにコピーされました!
Red Hat OpenShift Pipelines Operator のインストール時にデフォルトで作成されるカスタムリソース (CR) を削除します。
手順
- Web コンソールの Administrator パースペクティブで、Administration → Custom Resource Definition に移動します。
-
Filter by name ボックスに
config.operator.tekton.devを入力し、 Red Hat OpenShift Pipelines Operator CR を検索します。 - CRD Config をクリックし、Custom Resource Definition Details ページを表示します。
Actions ドロップダウンメニューをクリックし、Delete Custom Resource Definition を選択します。
注記CR を削除すると、Red Hat OpenShift Pipelines コンポーネントが削除され、クラスター上のすべてのタスクとパイプラインが失われます。
- Delete をクリックし、CR の削除を確認します。
Operator をアンインストールする前に、この手順を繰り返して Tekton Hub などのオプションコンポーネントの CR を見つけ、削除します。オプションコンポーネントの CR を削除せずに Operator をアンインストールした場合、後で削除できません。
2.2. Red Hat OpenShift Pipelines Operator のアンインストール リンクのコピーリンクがクリップボードにコピーされました!
Web コンソールの Administrator パースペクティブを使用して、Red Hat OpenShift Pipelines Operator をアンインストールできます。
手順
- Operators → OperatorHub ページから、Filter by keyword ボックスを使用して Red Hat OpenShift Pipelines Operator を検索します。
- Red Hat OpenShift Pipelines Operator タイルをクリックします。Operator タイルは、Operator がインストールされていることを示します。
- Red Hat OpenShift Pipelines Operator の説明ページで、Uninstall をクリックします。
{pipeline-shortname} Operator をアンインストールすると、Operator がインストールされているターゲット namespace 内のすべてのリソースが、それで設定したシークレットを含む openshift-pipelines namespace が失われます。
第3章 TektonConfig カスタムリソース設定のカスタマイズ リンクのコピーリンクがクリップボードにコピーされました!
Red Hat OpenShift Pipelines では、TektonConfig カスタムリソース (CR) を使用して以下の設定をカスタマイズできます。
- Red Hat OpenShift Pipelines コントロールプレーンの設定
- デフォルトサービスアカウントの変更
- サービスモニターの無効化
- クラスタータスクとパイプラインテンプレートの無効化
- Tekton Hub 統合の無効化
- RBAC リソースの自動作成の無効化
- タスク実行とパイプライン実行のプルーニング
3.1. 前提条件 リンクのコピーリンクがクリップボードにコピーされました!
- Red Hat OpenShift Pipelines Operator がインストールされている。
3.2. Red Hat OpenShift Pipelines コントロールプレーンの設定 リンクのコピーリンクがクリップボードにコピーされました!
TektonConfig カスタムリソース (CR) の設定フィールドを編集して、OpenShift Pipelines コントロールプレーンをカスタマイズできます。Red Hat OpenShift Pipelines Operator は設定フィールドにデフォルト値を自動的に追加し、OpenShift Pipelines コントロールプレーンを使用可能な状態にします。
手順
- Web コンソールの Administrator パースペクティブで、Administration → CustomResourceDefinitions に移動します。
-
Search by name ボックスを使用して、
tektonconfigs.operator.tekton.devカスタムリソース定義 (CRD) を検索します。TektonConfig をクリックし、CRD の詳細ページを表示します。 - Instances タブをクリックします。
-
config インスタンスをクリックして、
TektonConfigCR の詳細を表示します。 - YAML タブをクリックします。
要件に応じて
TektonConfigYAML ファイルを編集します。デフォルト値が適用された
TektonConfigCR の例Copy to Clipboard Copied! Toggle word wrap Toggle overflow
3.2.1. デフォルト値が適用された変更可能フィールド リンクのコピーリンクがクリップボードにコピーされました!
次のリストには、デフォルト値が適用された TektonConfig CR の変更可能フィールドがすべて含まれています。
running-in-environment-with-injected-sidecars(デフォルト:true): Istio などの注入済みサイドカーを使用しないクラスターでパイプラインを実行する場合は、このフィールドをfalseに設定します。falseに設定すると、パイプラインがタスク実行を開始するまでにかかる時間が短縮されます。注記注入されたサイドカーを使用するクラスターの場合、このフィールドを
falseに設定すると、予期しない動作が発生する可能性があります。-
await-sidecar-readiness(デフォルト:true):TaskRunサイドカーコンテナーの実行を待たずに OpenShift が動作を開始するようにするには、このフィールドをfalseに設定します。これにより、downwardAPIボリュームタイプをサポートしない環境でのタスク実行が可能になります。 -
default-service-account(デフォルト:Pipeline): 特に指定されていない場合、このフィールドにはTaskRunおよびPipelineRunリソースに使用するデフォルトのサービスアカウント名が設定されます。 require-git-ssh-secret-known-hosts(デフォルト:false): このフィールドをtrueに設定するには、Git SSH シークレットにknown_hostsフィールドが含まれている必要があります。- Git SSH シークレットの設定について、詳しくは 関連情報 セクションの Git の SSH 認証の設定 を参照してください。
-
Enable-tekton-oci-bundles(デフォルト:false): このフィールドをtrueに設定すると、Tekton OCI バンドルという名前の実験的アルファ機能の使用が可能になります。 embedded-status(デフォルト:Both): このフィールドには、次の 3 つの値を使用できます。-
full:PipelineRunステータスにRunステータスとTaskRunステータスを完全に埋め込めます。 -
minimal:ChildReferencesフィールドに、ステータスが PipelineRun` の実行とタスク実行の情報 (名前、種類、API バージョンなど) を追加します。 both:fullとminimalの両方の値が適用されます。注記embedded-statusフィールドは非推奨となり、将来のリリースで削除される予定です。さらに、パイプラインにデフォルトで埋め込まれるステータスは、minimalに変更されます。
-
Enable-api-fields(デフォルト:stable): このフィールドを設定すると、どの機能が有効になるかが決まります。使用できる値ははstable、beta、またはalphaです。注記Red Hat OpenShift Pipelines で
alpha値はサポートされていません。-
Enable-provenance-in-status(デフォルト:false): このフィールドをtrueに設定すると、TaskRunステータスおよびPipelineRunステータスのprovenanceフィールドへの入力が可能になります。provenanceフィールドには、リモートタスクまたはパイプライン定義の取得元などの、タスク実行およびパイプライン実行で使用されるリソースのメタデータが含まれます。 -
Enable-custom-tasks(デフォルト:true): このフィールドをfalseに設定すると、パイプラインでのカスタムタスクの使用が無効になります。 -
disable-creds-init(デフォルト:false): OpenShift Pipelines が接続されたサービスアカウントをスキャンしてステップに認証情報を挿入しないようにするには、このフィールドをtrueに設定します。 -
disable-affinity-assistant(デフォルト:true): 永続ボリューム要求ワークスペースを共有する各TaskRunリソースに対してアフィニティーアシスタントを有効にするには、このフィールドをfalseに設定します。
メトリクスオプション
TektonConfig CR の次のメトリクスフィールドのデフォルト値を変更できます。
-
metrics.taskrun.duration-typeとmetrics.pipelinerun.duration-type(デフォルト:histogram): これらのフィールドを設定すると、タスクまたはパイプライン実行の期間のタイプが決まります。使用できる値は、gaugeまたはhistogramです。 -
metrics.taskrun.level(デフォルト:task): このフィールドにより、タスク実行メトリクスのレベルが決まります。使用できる値は、taskrun、task、またはnamespaceです。 -
metrics.pipelinerun.level(デフォルト:Pipeline): このフィールドにより、パイプライン実行メトリクスのレベルが決まります。使用できる値は、pipelinerun、pipeline、またはnamespaceです。
3.2.2. 任意の設定フィールド リンクのコピーリンクがクリップボードにコピーされました!
次のフィールドにはデフォルト値がなく、設定した場合にのみ考慮されます。デフォルトでは、Operator はこれらのフィールドを TektonConfig カスタムリソース (CR) に追加も設定もしません。
-
default-timeout-minutes:TaskRunおよびPipelineRunリソースの作成時に指定していない場合、このフィールドがデフォルトのタイムアウトを設定します。タスク実行またはパイプライン実行にかかる時間が設定された分数より長いと、タスク実行またはパイプライン実行はタイムアウトになり、キャンセルされます。たとえば、default-timeout-minutes: 60はデフォルトを 60 分に設定します。 -
default-managed-by-label-value: このフィールドには、app.kubernetes.io/managed-byラベルに指定されたデフォルト値が含まれます。このデフォルト値は、何も指定されていない場合にすべてのTaskRunPod に適用されます。たとえば、default-managed-by-label-value: tekton-pipelinesです。 -
default-pod-template: このフィールドは、指定されていない場合にデフォルトのTaskRunおよびPipelineRunPod テンプレートを設定します。 -
default-cloud-events-sink: このフィールドは、何も指定されていない場合に、TaskRunおよびPipelineRunリソースに使用されるデフォルトのCloudEventsシンクを設定します。 -
default-task-run-workspace-binding: このフィールドには、Taskリソースが宣言するワークスペースのデフォルトワークスペース設定が含まれますが、TaskRunリソースは明示的に宣言されません。 -
default-affinity-assistant-pod-template: このフィールドは、何も指定されていない場合にアフィニティーアシスタント Pod が使用するデフォルトのPipelineRunPod テンプレートを設定します。 -
default-max-matrix-combinations-count: このフィールドには、何も指定されていない場合の、マトリクスから生成される組み合わせの最大数のデフォルト値が含まれます。
3.3. OpenShift Pipelines のデフォルトサービスアカウントの変更 リンクのコピーリンクがクリップボードにコピーされました!
OpenShift Pipeline のデフォルトサービスアカウントは、.spec.pipeline および .spec.trigger 仕様の default-service-account フィールドを編集して変更できます。デフォルトのサービスアカウントの名前は pipeline です。
例
3.4. サービスモニターの無効化 リンクのコピーリンクがクリップボードにコピーされました!
OpenShift Pipeline の一部であるサービスモニターを無効にして、Telemetry データを公開できます。サービスモニターを無効にするには、TektonConfig カスタムリソース (CR) の .spec.pipeline 仕様で enableMetrics パラメーターを false に設定します。
例
3.5. クラスタータスクとパイプラインテンプレートの無効化 リンクのコピーリンクがクリップボードにコピーされました!
デフォルトでは、TektonAddon カスタムリソース (CR) は、クラスター上の OpenShift Pipeline と併せて clusterTasks および pipelineTemplates リソースをインストールします。
clusterTasks および pipelineTemplates リソースのインストールを無効にするには、.spec.addon 仕様でパラメーターの値を false に設定します。さらに、communityClusterTasks パラメーターも無効にできます。
例
3.6. Tekton Hub 統合の無効化 リンクのコピーリンクがクリップボードにコピーされました!
Web コンソールの Developer パースペクティブで Tekton Hub の統合を無効にするには、TektonConfig カスタムリソース (CR) の enable-devconsole-integration パラメーターを false に設定します。
Tekton Hub 無効化の例
3.7. RBAC リソースの自動作成の無効化 リンクのコピーリンクがクリップボードにコピーされました!
Red Hat OpenShift Pipelines Operator のデフォルトインストールは、^(openshift|kube)-* 正規表現パターンに一致する namespace を除き、クラスター内のすべての namespace について複数のロールベースアクセス制御 (RBAC) リソースを作成します。これらの RBAC リソースの中で、pipelines-scc-rolebinding SCC (security context constraint) のロールバインディングリソースは、関連する pipelines-scc SCC に RunAsAny 権限があるため、セキュリティー上の問題となる可能性があります。
Red Hat OpenShift Pipelines Operator のインストール後にクラスター全体の RBAC リソースの自動作成を無効にするには、クラスター管理者は、クラスターレベルの TektonConfig カスタムリソース (CR) で createRbacResource パラメーターを false に設定します。
TektonConfig CR の例
クラスター管理者または適切な権限を持つユーザーとして、すべての namespace の RBAC リソースの自動作成を無効にすると、デフォルトの ClusterTask リソースは機能しません。ClusterTask リソースを機能させるには、それぞれの意図された namespace について RBAC リソースを手動で作成する必要があります。
3.8. タスク実行とパイプライン実行の自動プルーニング リンクのコピーリンクがクリップボードにコピーされました!
古い TaskRun オブジェクトと PipelineRun オブジェクト、およびそれらの実行されたインスタンスは、アクティブな実行に使用できる物理リソースを占有します。リソースの使用を最適化するために、Red Hat OpenShift Pipelines は、クラスター管理者がさまざまな namespace で未使用のオブジェクトとそのインスタンスを自動的にプルーニングするために使用できるアノテーションを提供します。
アノテーションを指定して自動プルーニングを設定すると、namespace 全体に影響します。namespace で個々のタスク実行とパイプライン実行を選択的に自動プルーニングすることはできません。
3.8.1. タスク実行とパイプライン実行を自動的にプルーニングするためのアノテーション リンクのコピーリンクがクリップボードにコピーされました!
namespace でタスク実行とパイプライン実行を自動的にプルーニングするには、namespace で以下のアノテーションを設定できます。
-
operator.tekton.dev/prune.schedule: このアノテーションの値がTektonConfigカスタムリソース定義で指定された値と異なる場合には、その namespace に新規の cron ジョブが作成されます。 -
operator.tekton.dev/prune.skip:trueに設定されている場合、それが設定されている namespace はプルーニングされません。 -
operator.tekton.dev/prune.resources: このアノテーションではリソースのコンマ区切りの一覧を使用できます。パイプライン実行などの単一リソースをプルーニングするには、このアノテーションをpipelinerunに設定します。task run や pipeline run などの複数のリソースをプルーニングするには、このアノテーションを"taskrun, pipelinerun"に設定します。 -
operator.tekton.dev/prune.keep: このアノテーションを使用して、プルーニングなしでリソースを保持します。 operator.tekton.dev/prune.keep-since: このアノテーションを使用して、経過時間をもとにリソースを保持します。このアノテーションの値は、リソースの経過時間 (分単位) と等しくなければなりません。たとえば、6 日以上前に作成されたリソースを保持するには、keep-sinceを7200に設定します。注記keepおよびkeep-sinceアノテーションは同時に使用できません。リソースには、どちらか 1 つだけを使用する必要があります。-
operator.tekton.dev/prune.strategy: このアノテーションの値をkeepまたはkeep-sinceのいずれかに設定します。
たとえば、過去 5 日間に作成されたすべてのタスク実行とパイプライン実行を保持し、古いリソースを削除する次のアノテーションについて考えてみます。
自動プルーニングアノテーションの例
...
annotations:
operator.tekton.dev/prune.resources: "taskrun, pipelinerun"
operator.tekton.dev/prune.keep-since: 7200
...
...
annotations:
operator.tekton.dev/prune.resources: "taskrun, pipelinerun"
operator.tekton.dev/prune.keep-since: 7200
...