|
Tektonは、継続的インテグレーションおよび継続的デリバリー(CI/CD)システムを構築するためのKubernetesネイティブのオープンソースフレームワークです。基盤となる実装の詳細を抽象化することで、複数のクラウドプロバイダーやオンプレミスシステムにまたがるエンドツーエンド(ビルド、テスト、デプロイ)のアプリケーション開発を支援します。 テクトンの紹介当初はKnative Buildと呼ばれていたTektonは、後に独自のガバナンス組織を持つ独立したオープンソースプロジェクトに再編され、現在はLinux Foundationプロジェクトとなっています。Tektonは、クラスター全体にわたるコンテナイメージの構築とデプロイメントのワークフローを提供します。つまり、継続的インテグレーション(CI)と継続的デリバリー(CD)のサービスです。Tektonは、Tektonパイプラインと、Tekton CLI、トリガー、カタログなどのサポートコンポーネントで構成されています。 TektonはKubernetesネイティブアプリケーションです。Kubernetesクラスターの拡張機能としてインストールされ、パイプライン用に作成・再利用できる構成要素を定義するカスタマイズされたKubernetesリソースセットで構成されています。TektonはKubernetesネイティブテクノロジーであるため、非常に簡単にスケーリングできます。ワークロードを増やす必要がある場合は、クラスターにノードを追加するだけです。また、スケーラブルな設計とコミュニティ提供のコンポーネントライブラリにより、カスタマイズも容易です。 Tekton は、CI/CD システムを動作させる必要がある開発者や、組織内の開発者向けに CI/CD システムを構築するプラットフォーム エンジニアにとって理想的な選択肢です。 テクトンコンポーネントCI/CDパイプラインの構築は複雑なプロセスであるため、Tektonは各ステップに対応するツールを提供しています。Tektonが提供する主なコンポーネントは次のとおりです。 - パイプライン: CI/CD パイプラインを組み立てるために使用するビルディング ブロックとして、カスタム Kubernetes リソースのセットを定義します。
- トリガー: イベントペイロードから抽出された情報に基づいてパイプラインを作成できるKubernetesカスタムリソースの一種です。例えば、Gitリポジトリへのマージリクエストが作成されるたびに、パイプラインのインスタンス化と実行をトリガーできます。
- コマンドライン CLI:
tknと呼ばれるコマンドライン インターフェイスを提供します。これを使用して、ターミナルから Tekton と対話できます。 - ダッシュボード: パイプラインの実行情報を表示する、Tekton パイプラインの Web ベースのグラフィカル インターフェイス。
- カタログ: 独自のパイプラインで使用できる、コミュニティが提供した高品質の Tekton ビルディング ブロック (タスク、パイプラインなど) のコレクション。
- セントラル ハブ: Tekton カタログにアクセスするための Web ベースのグラフィカル インターフェイス。
- オペレーター: これは、Kubernetes クラスターで Tekton プロジェクトをインストール、更新、アップグレード、削除できる Kubernetes オペレーター モードです。
- Chains: Tekton内でサプライチェーンのセキュリティ問題を処理できるKubernetesカスタムリソース定義(CRD)コントローラー。開発中。
- 結果: ユーザーが CI/CD ワークロード履歴を論理的にグループ化し、長期的な結果のストレージをパイプライン コントローラーから分離できるように設計されています。
テクトン用語テクトン用語 - ステップは、Python ウェブアプリケーションのユニットテストの実行や Java プログラムのコンパイルなど、CI/CD ワークフローにおける最も基本的な構成要素です。Tekton はコンテナイメージを使用して各ステップを実行します。
- タスク: `:kissing:*` は、特定の順序で並べられたステップの集合です。Tekton はタスクを Kubernetes ポッドとして実行し、各ステップがポッドになります。
- パイプラインとは、特定の順序で並べられたタスクの集合です。Tektonはすべてのタスクを有向非巡回グラフ(DAG)に接続し、グラフを順番に実行します。つまり、Kubernetesコンテナポッドを作成し、各ポッドが期待どおりに正常に実行されることを保証します。
テクトンパイプライン - PipelineRun: 名前が示すように、パイプラインの特定の実行です。
- TaskRun: これはタスクの実際の実行です。パイプライン外でタスクを実行することで、タスク内の各ステップの具体的な実行内容を確認できます。
CI/CDパイプラインを作成するTektonを使い始める最も簡単な方法は、シンプルなパイプラインを自分で作成することです。Kubernetesを日常的に使用している方なら、YAMLに馴染みがあるでしょう。TektonのパイプラインはまさにYAMLで定義されます。以下は、クローンしたコードベースを使ったシンプルなパイプラインの例です。 まず、 task.yamlファイルを作成し、お好みのテキストエディタで開きます。このファイルには、実行するステップを定義します。この例ではリポジトリのクローンを作成するため、このステップの名前を「clone」としています。このファイルでは、いくつかの環境変数を設定し、簡単なシェルスクリプトを使用してクローンを実行します。 次はタスクです。ステップはタスクから呼び出される関数と考えることができ、ステップに必要なパラメータとワークスペースを設定します。 apiバージョン: tekton.dev/v1beta1 種類:タスク メタデータ 名前: git-clone 仕様: ワークスペース: -名前:出力 説明: Git リポジトリは、このワークスペースをバックアップするボリュームにクローンされます。 パラメータ: -名前: URL 説明:クローン元のリポジトリの URL。 タイプ:文字列 -名前:リビジョン 説明:チェックアウトするリビジョン。(ブランチ、タグ、sha、ref など) タイプ:文字列 デフォルト: "" 手順: -名前:クローン イメージ: "gcr.io/tekton-releases/github.com/tektoncd/pipeline/cmd/git-init:v0.21.0" 環境: -名前: PARAM_URL 値: $(params.url) -名前: PARAM_REVISION 値: $(params.revision) -名前: WORKSPACE_OUTPUT_PATH 値: $(workspaces.output.path) スクリプト: | #!/usr/bin/env sh セット -eu
CHECKOUT_DIR="${WORKSPACE_OUTPUT_PATH}"
/ko-app/git-init \ -url="${PARAM_URL}" \ -revision="${PARAM_REVISION}" \ -path="${CHECKOUT_DIR}" cd "${CHECKOUT_DIR}" EXIT_CODE="$?" [ "${EXIT_CODE}" != 0 ] の場合; 終了 "${EXIT_CODE}" フィ # Readme ファイルを読んでクローンが成功したことを確認します。 ${CHECKOUT_DIR}/README.md を cat します。 2つ目のファイルpipeline.yamlを作成し、お好みのテキストエディタで開きます。このファイルでは、タスクを実行および処理できるワークスペースなどの重要なパラメータを設定することで、パイプラインを定義します。 apiバージョン: tekton.dev/v1beta1 種類:パイプライン メタデータ 名前: cat-branch-readme 仕様: パラメータ: -名前:リポジトリURL タイプ:文字列 説明:クローン元の Git リポジトリの URL。 -名前:ブランチ名 タイプ:文字列 説明:クローンする Git ブランチ。 ワークスペース: -名前:共有データ 説明: | このワークスペースはクローンされたgitリポジトリを受け取り、渡されます リポジトリの README.md ファイルを読み込むための次のタスクに進みます。 タスク: -名前:フェッチリポジトリ タスク参照: 名前: git-clone ワークスペース: -名前:出力 ワークスペース:共有データ パラメータ: -名前: URL 値: $(params.repo-url) -名前:リビジョン 値: $(params.branch-name) 最後に、` pipelinerun.yamlファイルを作成し、お好みのテキストエディタで開きます。このファイルはパイプラインが実際に実行される場所です。パイプラインで定義されたパラメータ(そしてタスクファイルで定義されたタスク)が呼び出されます。 apiバージョン: tekton.dev/v1beta1 種類: PipelineRun メタデータ 名前: git-clone-ブランチのチェックアウト 仕様: パイプライン参照: 名前: cat-branch-readme ワークスペース: -名前:共有データ ボリュームクレームテンプレート: 仕様: アクセスモード: -一度だけ読み書き可能 リソース: リクエスト: ストレージ: 1Gi パラメータ: -名前:リポジトリURL 値: < https://github.com/tektoncd/pipeline.git > -名前:ブランチ名 値:リリースv0.12.x 異なるタスクを異なるファイルに分割する利点は、 git-cloneタスクを複数のパイプラインで再利用できることです。 例えば、パイプラインプロジェクトのエンドツーエンドテストを実行したいとします。git git-cloneタスクを使用すると、各テストが最新のコードに基づいていることを確認できます。 要約Kubernetes を使い慣れている方なら、Tekton は他のネイティブ Kubernetes アプリケーションと同じくらい簡単に使えます。パイプラインの作成と操作に役立つツールが多数用意されています。自動化に興味がある方は、ぜひ Tekton をお試しください。 |