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のコア技術についてお話ししましょう

推薦する

機電ホームが1000万ドルを投じて尚国インターネットB2B業界ポータルサイトを買収、合併と買収の波を引き起こす?

A5ウェブマスターネットワーク(admin5.com)は3月20日に報道しました:最近、国内の有名な...

もう一つのテイクアウト注文プラットフォーム「フェイファン」は、商店に最高のサービスを提供することで「カーブで追い越す」ことを試みている。

「飛帆」は、キャンパスを中心としたフードデリバリー取引プラットフォームを主に運営する西安の新興企業で...

Docker コンテナと仮想マシンの違いは何ですか?

Dockerが解決する主な問題バックエンド開発の経験がある学生は、次のような問題に遭遇したことがある...

テンセントクラウド:150元/3年 - 2Gメモリ/1コア/50g SSD/5M帯域幅、222元/3年 - 4Gメモリ/2コア/80g SSD/8M帯域幅

テンセントクラウドのダブル12イベントは12月31日まで開催され、期間中は毎日3回のフラッシュセール...

locvps: 韓国の VPS、cn2+bgp ネットワーク、52 元/4G メモリ/2 コア/40gSSD/1T トラフィック/20M 帯域幅、Windows をサポート

locvps は今月、韓国のデータセンターを追加しました。韓国の VPS はアジア太平洋地域の BG...

アリババが知識蒸留法を革新、その論文がトップカンファレンスCVPR 2022の口頭発表に選出

6月23日、アリババDAMOアカデミーの自動運転実験室は知識蒸留法を革新し、複数のコンピュータービジ...

福建省のウェブマスターの皆様、申請のための特別措置が再び実施されることにご注意ください。

福建省通信局は最近、省全体のウェブサイト申請業務を強化・改善するための特別キャンペーンを開始すること...

11月22日に外部リンクツールのアップグレード版の内部テストを開始するお知らせ

ウェブマスターの皆様へみなさん、こんにちは。より正確なアップグレード版の外部リンクツールを皆様にご利...

ユー・ミンホン:検索マーケティングは現在最高のマーケティング手法です

最近、第4回「起業家サロン」が北京新雲南皇冠酒店で開催された。新東方教育科技集団の創設者である于敏宏...

#黒5# greengeeks: cpanel パネルホスト、25% オフプロモーション、オプションのコンピュータールーム 4 つ

11月27日から11月30日まで、カナダの老舗ホスティングブランドであるgreengeeksが、仮想...

Linode 無料 $20、日本国内 2 データセンター / シンガポールを含む 9 つのオプション データセンター

Linode、この素晴らしい海外の VPS 業者は、長い間 Linode 割引コードを持っていません...

IaaS = クラウドコンピューティングを有効活用する?いいえ! Xinzhi Cloud クラウドコンピューティング Care+ はあなたを空へ飛ばすお手伝いをします

垂直型ソーシャルアプリが中秋節の期間中にイベントを企画しました。話題は斬新、プレゼントも豊富、インタ...