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

推薦する

外部リンクの削除に別れを告げ、トラブルを解消しましょう。多様なソフト記事リンクはより強力です

ウェブサイトの最適化は外部リンクの宣伝と切り離せません。SEO 最適化では、「外部リンクは王様」とい...

SEO担当者様、マーケティングサイトの構築方法!

2018年最もホットなプロジェクト:テレマーケティングロボットがあなたの参加を待っていますマーケティ...

GoogleがソーシャルネットワークOrkutを閉鎖

未読メールの中に「さようなら、Orkut」というメールがありました。内容は、Google がソーシャ...

IDCが2021年「中国AI対応産業品質検査ソリューション市場シェア」レポートを発表、テンセントクラウドがトップ3にランクイン

IDCは本日、「2021年中国AI対応工業品質検査ソリューション市場シェア」レポートを発表し、テンセ...

5 分で Docker の 2 番目の原則を理解しましょう。これは Cgroups の最も簡単な入門です。

[[379411]]この記事はWeChat公式アカウント「妹の味」から転載したもので、著者は妹が飼っ...

道教の思想を参考に

長い歴史を持つ偉大な国として、中国文化は非常に広大かつ奥深いため、毎年多くの外国人学者が中国を訪れ、...

ウェブサイトの最適化はユーザーの視点から始める必要がある

実際、リンク、ドメイン名、URL など、Web サイトの最適化に関連する要素は多数あります。成功する...

ウェブマスターネットワークからの毎日のレポート:Dangdangは変革の包囲下にあり、360ウェブサイトナビゲーションが刷新されました

1. インターネット上でわいせつな情報やポルノ情報を拡散した3件の事件が捜査され、対処された。国家ポ...

高品質な外部リンクを構築する方法: 投稿、Q&A、ソフト記事

インターネット業界で働く人なら、「コンテンツは王様、外部リンクは女王」という言葉を聞いたことがあるは...

山大文学のトップ経営陣交代の噂が現実に、CEOの侯小強が辞任

【侯小強は数ヶ月間休職している。彼は何度も「健康上の理由で辞めた」と強調し、陳天橋に不満はないと述べ...

蘇寧のRed Boy買収の経験からeコマースサイトを救う道

今日、「SuningのRedbaby買収は、中小垂直電子商取引企業の課題解決のサンプルである」という...

Baidu の親しみやすさを解読: Baidu にあなたの Web サイトを気に入ってもらうにはどうすればよいでしょうか?

前回8月30日号では、ウェブサイトの内部ページを送信できるBaiduの新しいURL送信ツールを紹介し...

かつて18ヶ月で6000万ドルを稼いだDiggは50万ドルで買収された。

ニュース共有ウェブサイト Digg 7月13日、かつて「最初のソーシャルメディアサイト」として知られ...

インターネットマーケティングプランの作成方法を学ぶための7つのヒント

あらゆるオンライン マーケティング活動は、事前に計画がなければ実行できません。優れたマーケティング ...

Struts2 の脆弱性分析: ハッカーの攻撃と防御による公式トラブル

著者:顧暁波Appleの開発者向けウェブサイトがダウンしたことで、1週間前から公開されていたApac...