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

推薦する

Frontrangehosting 256M KVM シンプルレビュー

私は frontrangehosting から 1 か月分の KVM を 1.87 ドルで購入しまし...

コンテナを理解するには、まずその歴史から始めましょう

コンテナの歴史、開発、技術的な性質については、インターネット上にすでに多くの記事があります。ここでの...

プレスリリースはインターネットのティーザースタイルを利用したイベントマーケティングを活用し、Yuan Fangを有名にした。

マイクロブログが普及している時代では、オンラインジョークは宇宙へのロケットよりも速く広がる可能性があ...

商品の自己増殖マーケティングを設計する方法

月収10万元の起業の夢を実現するミニプログラム起業支援プラン今年、電子商取引の分野では、Pinduo...

トレンド |仮想化は負け、クラウド、SDN、SD-WAN が C の位置を獲得しました。

企業のネットワーク管理者にとって、IT の最大の焦点はクラウド コンピューティングとソフトウェア定義...

毎年恒例のクラウドコンピューティング技術イベント、テンセントテクノパーク開発者会議が北京で開催されます

12月19日から20日まで、テンセント主催の2020 Techo Park開発者会議が北京で開催され...

SKYCCコンビネーションマーケティングソフトウェアが発売され、業界で大きな注目を集める

デビューからPKまで、あらゆる動きが注目を集めている最近、複合マーケティング ソフトウェアと通常のマ...

ビットコインの父:サトシ・ナカモトとは誰ですか?

サトシ・ナカモトは暗号メーリンググループでは若手(おそらく30代前半)ですが、非常に目立つ立場にあり...

Hadoop分散クラスタを構築し、ビッグデータに取り組む方法を教えます

いよいよビッグデータで遊び始めます。以前はhaoopエコシステムについてあまり知りませんでしたが、今...

クラウド ポータビリティに関する 3 つの考慮事項: イベント駆動型アーキテクチャ (EDA) とサーバーレス コンピューティング

このシリーズの記事では、アーキテクチャや設計、クラウドのポータビリティに関して考慮すべき具体的な詳細...

明らかにした! 1兆ドル規模の市場を支える越境電子商取引コラボレーションツール

2018年11月12日の夕方、杭州市拱墅区にある知宇社のオフィスは明るく照らされていた。プロダクトデ...

検索エンジンの3つの柱がSEOの機会を生み出す

SosoとSogouが合併してから1週間が経ちました。ニュースが発表されるとすぐに、多くの友人が関連...

虎の口から餌を奪う:通信事業者が「クラウド」に取り組む道はあるか?

[[382428]]技術開発の観点から見ると、クラウドはトレンドであり、来たる5G時代に重要な役割を...

Hostshark: 月額 4.95 ドル、米国 VPS、2G メモリ/2 コア/80g NVMe/1Gbps 帯域幅 (トラフィック無制限)/Windows+Linux

Hostshark.ioは今年設立された新しい企業で、主に米国で仮想ホスティング、VPS、独立サーバ...

SEO担当者のよくある仕事上の誤解の分析

多くの場合、ウェブサイトのランキングが向上しない理由は、SEO最適化担当者自身が十分に努力していない...