Tektoncd Operator を使用した Tekton コンポーネントの管理

Tektoncd Operator を使用した Tekton コンポーネントの管理

Tektoncd Operator は、Kubernetes クラスター上で TektonCD パイプライン、ダッシュボード、トリガーなどをインストール、アップグレード、管理するために使用される Kubernetes 拡張機能です。 Tekton のさまざまなコンポーネントを直接管理するには、各コンポーネントの yaml を記述するだけで済みます。

CRDS

説明する

テクトンコンフィグ

インストールおよび管理する Tekton コンポーネントを構成します。

テクトンパイプライン

Tekton Pipeline コンポーネントを構成、インストール、管理します。

テクトントリガー

Tekton Trigger コンポーネントを構成、インストール、管理します。

テクトンダッシュボード

Tekton Dashboard コンポーネントを構成、インストール、管理します。

テクトン結果

Tekton Result コンポーネントを構成、インストール、管理します。

テクトンアドオン

管理プラグインを構成してインストールします。現在は Openshift のみがサポートされています。

インストール

Tektoncd Operator をインストールする方法は複数あります。

オペレーターハブからのインストール

Operator Hub ページ https://operatorhub.io/operator/tektoncd-operator に直接アクセスしてインストールすることができ、そのライフサイクルは Operator Lifecycle Manager (OLM) によって管理されます。

リソース マニフェスト ファイルを使用してインストールする

リソース マニフェスト ファイルは、Github リリース ページ https://github.com/tektoncd/operator/releases から直接取得できます。この方法でインストールする場合、Operator のライフサイクルを自分で管理する必要があります。

インストールするには、次のコマンドを使用するだけです。

 $ kubectl apply -f https://storage.googleapis.com/tekton-releases/operator/latest/release.yaml

公式イメージはgcrイメージなので、通常では入手できません。何らかの理由でクラスターがイメージを取得できない場合は、次のリソース リスト ファイルを使用できます。

 $ kubectl apply -f https://my-oss-testing.oss-cn-beijing.aliyuncs.com/k8s/tekton/operator/release.v0.60.0.yml

デフォルトでは、Tektoncd Operator によって作成されたオブジェクトは、Tekton Pipelines コントローラーのイメージなどの gcr イメージを使用します。環境変数 IMAGE_PIPELINES_TEKTON_PIPELINES_CONTROLLER を通じて対応するイメージを指定できます。次の環境変数は、デフォルトの gcr イメージをオーバーライドするための構成方法です。

 - 名前: IMAGE_PIPELINES_PROXY
: cnych / tekton - オペレーター- プロキシ- webhook : v0.60.0
- 名前: IMAGE_JOB_PRUNER_TKN
: cnych / tekton - オペレーター- プルーナー- tkn : v0.60.0
- 名前: IMAGE_PIPELINES_TEKTON_PIPELINES_CONTROLLER
: cnych / tekton - コントローラー: v0 .37 .2
- 名前: IMAGE_PIPELINES_WEBHOOK
: cnych / tekton - Webhook : v0 .37 .2
- 名前: IMAGE_PIPELINES_ARG__ENTRYPOINT_IMAGE
: cnych / tekton - エントリポイント: v0 .37 .2
- 名前: IMAGE_PIPELINES_ARG__GIT_IMAGE
: cnych / tekton - git - init : v0 .37 .2
- 名前: IMAGE_PIPELINES_ARG__IMAGEDIGEST_EXPORTER_IMAGE
: cnych / tekton - imagedigestexporter : v0 .37 .2
- 名前: IMAGE_PIPELINES_ARG__KUBECONFIG_WRITER_IMAGE
: cnych / tekton - kubeconfigwriter : v0.37.2
- 名前: IMAGE_PIPELINES_ARG__NOP_IMAGE
: cnych / tekton - nop : v0 .37 .2
- 名前: IMAGE_TRIGGERS_TEKTON_TRIGGERS_CONTROLLER
: cnych / tekton - トリガー- コントローラー: v0 .20 .1
- 名前: IMAGE_TRIGGERS_WEBHOOK
: cnych / tekton - トリガー- webhook : v0.20.1
- 名前: IMAGE_TRIGGERS_TEKTON_TRIGGERS_CORE_INTERCEPTORS
: cnych / tekton - トリガー- インターセプター: v0.20.1
- 名前: IMAGE_TRIGGERS_ARG__EL_IMAGE
: cnych / tekton - トリガー- イベントリスナーシンク: v0.20.1

上記の方法は、Operator と Webhook Pod を含む tekton-operator という名前空間を作成します。

 $ kubectl get pods - n tekton - 演算子
名前準備完了ステータス再起動年齢
テクトン- オペレーター- 9 d747548b - 67 t7m 2 / 2 ランニング0 9 m42s
tekton - オペレーター- webhook - 6cc769b85d - fssq9 1/1 実行中0 9 分42秒

Operator をインストールした後、Tekton Pipeline や Tekton Triggers などの必要な Tekton コンポーネントをインストールできます。

各 Tekton コンポーネントには、コンポーネントのインストールと管理に使用されるカスタム リソースがあります。

 $ kubectl でcrd を取得します| grep テクトン| grep 演算子
テクトンチェーン 演算子 テクトン 開発2022-07-25 T00 : 51 : 07Z
テクトン構成 演算子 テクトン 開発2022-07-25 T00 : 51 : 07Z
テクトンダッシュボード 演算子 テクトン 開発2022-07-25 T00 : 51 : 07Z
テクトンハブ 演算子 テクトン 開発2022-07-25 T00 : 51 : 07Z
tektonインストーラセット 演算子 テクトン 開発2022-07-25 T00 : 51 : 07Z
テクトンパイプライン 演算子 テクトン 開発2022-07-25 T00 : 51 : 07Z
テクトン結果 演算子 テクトン 開発2022-07-25 T00 : 51 : 07Z
テクトントリガー 演算子 テクトン 開発2022-07-25 T00 : 51 : 07Z

ここで、TektonConfig は他のコンポーネントを作成する最上位の CRD です。したがって、必要な構成を持つ TektonConfig オブジェクトを作成するだけで、対応する他のコンポーネントをインストールできるようになります。

TektonConfig は、渡された構成ファイルに基づいて、TektonPipeline、TektonTriggers、およびその他のコンポーネント CR オブジェクトを作成します。構成ファイルには、インストールするすべてのコンポーネントを決定するために使用できるプロファイル フィールドがあります。

Tektoncd Operator には、lite、all、basic の 3 つの組み込みプロファイルがあります。

  • all: このプロファイルはすべてのコンポーネントをインストールします。
  • basic: このプロファイルは、TektonPipeline および TektonTrigger コンポーネントのみをインストールします。
  • lite: このプロファイルは、TektonPipeline コンポーネントのみをインストールします。

たとえば、パイプライン、トリガー、ダッシュボードをインストールする場合は、次のリソース リストに示すように、 all プロファイルを使用してインストールできます。

 # tekton - オペレーター- プロファイル- all.yaml
apiVersion : 演算子テクトン開発/ v1alpha1
種類: TektonConfig
メタデータ:
名前: config
仕様:
プロフィール: すべて
targetNamespace : tekton - パイプライン
剪定ばさみ:
リソース
- パイプライン実行
-タスク実行
キープ: 100
スケジュール「0 8 * * *」

targetNamespace は、Tekton コンポーネントがインストールされている名前空間を指定するために使用されます。デフォルト名は tekton-pipelines です。プルーナー機能は、Tekton リソースの自動クリーンアップを提供します。

  • resources: 自動的にクリーンアップできるリソースを指定します。
  • keep: クリーンアップ時に保持するリソースの最大数。
  • スケジュール: リソースをクリーンアップする頻度。

上記のリソース オブジェクトをインストールするだけです。

 $ kubectl apply -f tekton -operator -profile -all .yaml 実行ます
$ kubectl でtektonconfig を取得します
名前バージョン準備完了理由
設定v0.60.0 True

上記の TektonConfig オブジェクトでは、プロファイルを all に設定し、tektonpipelines、tektontriggers、および tektondashboard コンポーネント オブジェクトが自動的に作成されます。

 $ kubectl でtektonpipelines を取得します
名前バージョン準備完了理由
パイプラインv0.37.0
$ kubectl でTekton トリガーを取得します
名前バージョン準備完了理由
トリガーv0.20.1
$ kubectl でtektondashboard を取得します
名前バージョン準備完了理由
ダッシュボードv0.27.0 True

上記の cr オブジェクトが作成されると、以下に示すように、対応するコンポーネントが自動的に作成されます。

 $ kubectl get ポッド- n tekton - パイプライン
名前準備完了ステータス再起動年齢
テクトン- ダッシュボード- 84 dc6f966b - g8flx 0 / 1 ImagePullBackOff 0 3 m48s
tekton - オペレーター- プロキシ- webhook - 7587596 c79 - ld8vm 1 / 1 実行中0 30
テクトン- パイプライン- コントローラー- 78 bc48896b - sd9fk 1 / 1 実行中0 30 m
tekton - パイプライン- webhook - 5f 48 c855b4 - js54q 1 / 1 実行中0 30 m
テクトン- トリガー- コントローラー- 668 b94cb5b - ggbk7 1 / 1 実行中0 27 m
テクトン- トリガー- コア- インターセプター- 66 b7ddd78c - pq7gb 1 / 1 実行中0 27 m
tekton - トリガー- webhook - c8fd7755d - rknch 1 / 1 実行中0 27

ダッシュボード コンポーネント イメージには対応するオーバーライド環境変数がないため、手動で変更する必要があります。

 $ kubectl editdeploy tekton - ダッシュボード- n tekton - パイプライン
......
画像: cnych / tekton - ダッシュボード: v0 .28 .0
......

ダッシュボード サービスは、デフォルトで ClusterIP 経由で公開されます。 Ingress オブジェクトを手動で作成するか、サービスを変更して NodePort 経由で公開することができます。

 $ kubectl get svc - n tekton - パイプライン
名前タイプクラスタ- IP 外部- IP ポート( S ) 年齢
tekton - ダッシュボードClusterIP 10.102 .221 .101 < なし> 9097 / TCP 28 m
tekton - オペレーター- プロキシ- webhook ClusterIP 10.96 .175 .155 < なし> 443 / TCP 33 m
tekton - パイプライン- コントローラーClusterIP 10.99 .0 .85 < なし> 9090 / TCP8008 / TCP8080 / TCP 33
tekton - パイプライン- webhook ClusterIP 10.106 .195 .14 < なし> 9090 / TCP8008 / TCP443 / TCP8080 / TCP 33
tekton - トリガー- コントローラーClusterIP 10.99 .84 .154 < なし> 9000 / TCP 30 m
tekton - トリガー- コア- インターセプターClusterIP 10.97 .83 .136 < なし> 8443 / TCP 30 m
tekton - トリガー- webhook ClusterIP 10.108 .88 .140 < なし> 443 / TCP 30

テスト

Tekon コンポーネントをインストールしたら、簡単なパイプラインを実行してみましょう。

まず、以下のようにタスクを作成します。次のタスクは、echo "Hello, world!" を実行します。 bash コンテナ内のコマンド。

 # こんにちは- task.yaml
apiバージョン: tekton.dev/v1beta1
種類: タスク
メタデータ:
名前: こんにちは
仕様:
手順:
- 名前: こんにちは
画像: bash : 最新
指示
- エコー
引数:
- "こんにちは世界!"

同じ方法で別の goodbye タスクを作成し、上記の echo コンテンツを goodbye に変更します。

次に、Pipeline パイプラインを次のように定義します。

 # こんにちは- さようなら- パイプラインヤム
apiバージョン: tekton.dev/v1beta1
種類: パイプライン
メタデータ:
名前: こんにちは- さようなら- パイプライン
仕様:
タスク:
- 名前: こんにちは
タスク参照:
名前: こんにちは
- 名前: さようなら
実行後:
-こんにちは
タスク参照:
名前: さようなら

taskRef を通じて対応する Task オブジェクトを参照します。

上記のリソース オブジェクトを作成するだけです。

 $ kubectl パイプラインを取得する
名前年齢
こんにちは- さようなら- パイプライン24
$ kubectl タスクを取得
名前年齢
さようなら101
こんにちは107s

パイプラインを実行するには、実際に実行するための PipelineRun オブジェクトも作成する必要があります。

 # こんにちは- さようなら- パイプライン- .yaml を実行
apiバージョン: tekton.dev/v1beta1
種類: PipelineRun
メタデータ:
generateName : こんにちは- さようなら- パイプライン-
仕様:
パイプライン参照:
名前: こんにちは- さようなら- パイプライン

上記のリソースを作成するだけです。ここで使用されている generateName​ 属性に注意してください。 kubectl create コマンドを使用して作成します。正常に作成すると、上記のパイプラインの説明に従って、すぐに 2 つのタスクが実行されます。

Tekton をアンインストールするには、定義された TektonConfig オブジェクトを削除するだけです。

TektonCD Operator の組み込みプロファイルを使用しない場合は、さまざまなコンポーネントの CR インスタンスを手動で構成することもできます。さらに、TektonCD Operator は現在、特に国内ユーザー向けに、多くの構成可能なメソッドを提供していません。ミラーリング問題は長年の課題です。 Operator は環境変数を通じてのみグローバルに上書きでき、一部のイメージはまったく上書きされません。中国で使用していて、gcr 画像を使用できない場合は、エクスペリエンスがそれほどスムーズではない可能性があります。

<<:  クラウド コンピューティング vs. エッジ コンピューティング: どちらが勝つでしょうか?

>>:  「アップグレード」という名のもと、クラウドネイティブデータウェアハウスAnalyticDBのコア技術についてお話ししましょう

推薦する

「アプリクレーム」がモバイルアプリの健全性に波を起こす

現在、App CenterとTencent Mobile Managerは共同で、アプリケーションの...

AWS がクラウド コンピューティングを消滅: 40 年にわたるクラウド コンピューティングの歴史が蝶の繭に変わる

クラウド コンピューティングに最も欠けているのはビジョンです。 1961 年という早い時期、ほとんど...

工業情報化省は、インターネットにおける悪質な競争を、名前を挙げずに批判した。

ビジネスデイリー(記者 魏魏)電子商取引の価格戦争や360対百度検索取引所など、業界を巡る競争が物議...

クラウドログの 5 つのベストプラクティス

企業はクラウド ロギングを使用する理由を理解する必要があります。ログは、クラウド リソースの健全性、...

データシャック - ナイフ 25 個 / メモリ 4g / ハードディスク 500g / トラフィック 10T

Datashack の月額 25 ドルの Du Fu が利用可能になりました。G マウント、Kans...

一瞬でマイクロミリオンになる? WeChatファンはゼロから始める必要がある

昨日、私はウェブマスターのウェブサイトで、WeChat に小規模店舗が加わることで業界全体に与える影...

西安テックハブが成功裏に終了し、新しいテクノロジーが産業用インターネットをどのように実現するかを示した。

[原文は51CTO.comより] 5月29日午後、「産業インターネットの技術探究と実践」をテーマにし...

Autohome が独自に運営する垂直型 Web サイトはレッド オーシャンでしょうか、それともブルー オーシャンでしょうか?

8月末、盛拓メディアは、自動車とITという2つの事業分野に応じて、ウェブサイトグループを2つの独立し...

企業がSaaSコスト見積りで犯す4つの間違い

よく言われるように、悪魔は細部に宿ります。 SaaS 実装のコストを計算するときは、次のようなよくあ...

itldcはどうですか?ブルガリアのコアデータセンターVPSの簡単なレビュー

itldc は 20 年以上運営されているブルガリアの老舗企業です。その中核データセンターはブルガリ...

Dewu クラウドネイティブコンテナテクノロジーの調査と実装

1. はじめにインターネット業界の新星として、Douyin App は急速な事業発展の中でインフラ規...

クラウドプラットフォーム・ストレージに関連するクラウドサービス(クラウドハードディスク)の使い方を一挙解説!

クラウドコンピューティング技術の段階的な成熟と急速な発展、特にデジタル変革の継続的な進歩により、企業...

Linux 仮想ネットワーク カード テクノロジー: Macvlan

1. Macvlan の紹介Macvlan が登場する前は、イーサネット カードには複数の IP ア...

2023年ファーウェイクラウドシティサミットが広州で開幕:デジタル生産性を解き放ち、高品質な産業発展を促進

現在、現代の産業システムは、デジタル経済と実体経済の深い統合の段階に入っています。産業のデジタル化の...

Kubernetes クラスタ管理者戦略: ポッドのスケジュールを理解する

このガイドでは、ポッド スケジューリングの技術を習得するために必要な知識とスキルを身に付けることがで...