61
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

昔触った「Tekton」を思い出しながら、初心者向けに CI/CD の基本概念を整理してみる

Posted at

1. はじめに

数年前に、Kubernetes 環境で CI/CD パイプラインを作るために Tekton というツールを触った経験があります。
当時の細かい設定やコードはほとんど覚えていませんが、今回はその経験や学びを整理して、初心者でも雰囲気がつかめる内容としてまとめてみます。

2. 当時の状況

当時はすでに Kubernetes が動いている環境があり、私は Tekton を使って CI/CD の一部パイプラインを作る担当でした。
公式ページ(英語)や書籍を参考にしつつ、上司や先輩の助言を受けながら少しずつ作業を進めていました。
しかし、当時は Tekton の参考リソースが少なく、仕組みの理解に苦労しました。
そもそも Docker や Kubernetes などコンテナの仕組みもよく知らなかったため、同時に調べながら理解を進める必要がありました。
さらに、既存の現場システムは規模が大きく複雑だったため、どのように導入すればよいかイメージが湧かず、頭を抱えた記憶があります。

3. Tekton の基本概念

Tekton は、Kubernetes 上で動作する CI/CD ツールです。
簡単に言うと、開発作業の自動化を助けるツールです。
例えば、ソースコードのビルドやテスト、デプロイなど、手作業で行っていた作業を自動で順番に実行できます。

3-1. Tekton と Kubernetes の関係

  • Kubernetes がコンテナを管理するプラットフォームであるのに対して
  • Tekton は Kubernetes 上で CI/CD パイプラインを自動で実行するためのツールです
  • Tekton を使うことで、開発フローの自動化が容易になります

3-2. Tekton でできること(イメージ例)

  • ソースコードを自動でビルドする
  • ビルド結果をテストする
  • 問題なければステージング環境や本番環境に自動デプロイする
  • 複数の作業(Task)を順番に組み合わせて Pipeline を作り、自動で流す

ポイント:Tekton を使うと「人が順番に手作業でやる作業」を、自動で決まった順序で実行できるようになります。

3-3. Tekton の主要な構成要素

  • Task:1つの処理単位(例:コードのビルド、テスト、デプロイなど)
  • Pipeline:Task を順番に並べた流れ(例:ビルド→テスト→デプロイ)
  • PipelineRun:Pipeline を実際に実行する操作

concept-tasks-pipelines.png
図1: Tekton の概念モデル(出典: Tekton公式サイト

3-4. Tekton の使い方

Tekton では、Task や Pipeline を YAML という設定ファイルに書き、Kubernetes に登録し、PipelineRun を作成することで定義した手順を順番に実行できる、という流れになります。

3-4-1. Task を作る

  • 「何をやるか」を YAML ファイルに書く
  • 例:ビルド Task → ソースコードを取得してビルドする

ファイル名例: hello-build-task.yaml

apiVersion: tekton.dev/v1
kind: Task
metadata:
  name: hello-build-task
spec:
  steps:
    - name: say-hello
      image: ubuntu
      script: |
        echo "Hello Tekton!"

上記 YAML を登録すると Task が Kubernetes 上に作成されます。
Task 自体は登録されるだけで、まだ実行はされません。

3-4-2. Pipeline を作る

  • 複数の Task を順番に並べる YAML ファイル
    例:ビルド Task → テスト Task → デプロイ Task
    ファイル名例: hello-pipeline.yaml
apiVersion: tekton.dev/v1
kind: Pipeline
metadata:
  name: hello-pipeline
spec:
  tasks:
    - name: build
      taskRef:
        name: hello-build-task

複数 Task を定義する場合は、tasks に追記します。
この YAML を登録すると Pipeline が作成され、Task を順番に実行できるようになります。

3-4-3. PipelineRun で実行

  • Pipeline を実際に実行する YAML ファイル

ファイル名例: hello-pipeline-run.yaml

apiVersion: tekton.dev/v1
kind: PipelineRun
metadata:
  name: hello-pipeline-run
spec:
  pipelineRef:
    name: hello-pipeline

この YAML を登録すると、Pipeline が順番通りに Task を実行します。

4. 当時の学び・気づき

Tekton の Pipeline を初めて作るとき、Task と Pipeline の関係がまだ頭に入っておらず、全体像をつかむのに苦労しました。
公式ドキュメントや書籍に載っているコード例(テンプレート)をそのまま現場システムに適用する方法がわからず、どう進めればいいか戸惑った記憶があります。

特に難しかったのは権限周りの扱いで、作業はほとんどがトライアンドエラーの連続でした。
一日中エラーとにらめっこしながら、少しずつ YAML の記述を変えて試す、という作業を繰り返していました。

また、Docker や Kubernetes の基本も同時に学ぶ必要があり、一度に覚えることが多くて大変でした。

その中で意識していたことは次のようなことです:

  • 概念を整理して理解することが重要
  • 少しずつ手を動かして確認しながら進めることが理解の近道

こうすることで、少し時間はかかりますが理解でき、自分の中に落とし込んで進めていけました。

5. まとめ

今回の記事では、昔触った Tekton の経験を振り返りながら、自分なりに概念を整理してみました。
久しぶりに手を動かしながら学びを文章化することで、自分自身の理解も深まりました。
アドベントカレンダー向けの記事として投稿することで、経験を整理して共有する良い機会になりました。
ちなみに今回が私にとって Qiita 初投稿です。

61
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
61
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?