[Tekton Pipelines] Tekton Pipelines cliを使ってみよう

Tekton Pipelinesは、Kuernetes上で実行するCI/CD形式のパイプラインツールです。Kubernetes Nativeなオープンソースとして開発されています。 TektonはThe Continuous Delivery Foundation(CDF)のプロジェクトとして採用されています。

本記事ではTekton PipelinesのCLIツールであるTekton Pipelines cliのインストールと概要を紹介します。

対象読者

  • Kubernetes-nativeなCI/CDツールを探している人
  • Cloud Delivery Foundation(CDF)に興味がある人
  • Cloud Nativeの思想に興味がある人

関連記事

もくじ

  1. はじめに
  2. 検証環境の紹介
  3. Tekton Pipelines cliをインストールする
  4. Tekton Pipelines cliをkubectlのプラグインとして登録する
  5. Tekton Pipelines cliのコマンド
  6. さいごに

はじめに

Tekton Pipelines cliはTekton PipelinesのCLIツールです。Tekton Pipelinesのタスクの管理や参照、実行などを行うことができます。Tekton Pipelines cliの実行には、Tekton Pipelines のインストールが必要です。Tekton Pipelinesのインストール方法は、前回の記事を参照してください。

検証環境の紹介

Tekton Pipelines cliの実行環境として、Windows10のWSL Ubuntu 18.04の環境を利用しました。

$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 18.04.2 LTS
Release:        18.04
Codename:       bionic

KubernetesはGKEを利用しました。検証に利用したKubernetesのクライアントおよびサーバのバージョンは以下の通りです。

$ kubectl version --short
Client Version: v1.15.1
Server Version: v1.12.8-gke.10

Tekton Pipelines cliをインストールする

Tekton Pipelines cliをWindows10のWSL Ubuntu 18.04にインストールします。

  1. Git HubからTekton Pipelines cliのバイナリをダウンロードする。
  2. ダウンロードしたバイナリファイルを解凍し、実行パスを通す。
$ curl -LO https://github.com/tektoncd/cli/releases/download/v0.1.2/tkn_0.1.2_Linux_x86_64.tar.gz
$ sudo tar xvzf tkn_0.1.2_Linux_x86_64.tar.gz -C /usr/local/bin/ tkn

Tekton Pipelines cliをkubectlのプラグインとして登録する

Tekton Pipelines cliをkubectlのプラグインとして登録します。kubectlコマンドはPATHの通ったディレクトリにあるkubectl-の名前がプレフィックスとして付いた実行ファイルを、コマンドとして呼び出すことができます。
先ほどインストールしたtknファイル(Tekton Pipelines cli)にkubectl-tknの別名をつけてプラグインとして呼び出せるようにします。

$ sudo ln -s /usr/local/bin/tkn /usr/local/bin/kubectl-tkn

kubectlのプラグインとして実行してみます。

$ kubectl tkn version
Client version: 0.1.2

Windows 10 Version 1803を利用している場合
Windows 10 Version 1803でkubectlプラグインを実行すると、cannot allocate memoryエラーが発生して実行できませんでした。

$ kubectl tkn version
cannot allocate memory

Windows 10 Version 1803を利用している方は、kuectlプラグインではなく直接tknコマンドを実行してください。

$ tkn version
Client version: 0.1.2

※以降の実行例ではWindows 10 Version 1903のWSL Ubuntu 18.04を使用しています。

Tekton Pipelines cliのコマンド

Tekton Pipelines cliのコマンドと実行例を紹介します。

tkn help

Tekton Pipelines cliのヘルプ画面を表示します。

$ kubectl tkn help
CLI for tekton pipelines

Usage:
  tkn [flags]
  tkn [command]

Available Commands:
  completion  Prints shell completion scripts
  help        Help about any command
  pipeline    Manage pipelines
  pipelinerun Manage pipelineruns
  task        Manage tasks
  taskrun     Manage taskruns
  version     Prints version information

Flags:
      --azure-container-registry-config string   Path to the file containing Azure container registry configuration information.
  -h, --help                                     help for tkn

Use "tkn [command] --help" for more information about a command.

tkn version

Tekton Pipelines cliのバージョンを表示します。

$ kubectl tkn version
Client version: 0.1.2

tkn task list

Tekton PipelinesのTask一覧を表示します。

$ kubectl tkn task list
NAME               AGE
test-deploy        4 minutes ago
test-doker-image   4 minutes ago

-nフラグでネームスペースを指定することができます。

$ kubectl tkn task list -n tekton-pipelines
NAME             AGE
pipeline0-task   6 minutes ago

tkn taskrun list

TaskRunの一覧を表示します。STATUSでTaskの実行状態を確認することができます。

$ kubectl tkn taskrun list
NAME                                       STARTED          DURATION     STATUS 
test-pipelinerun-build-image-rcr4q         27 minutes ago   36 seconds   Succeeded
test-pipelinerun-deploy-kubernetes-lqnm7   27 minutes ago   19 seconds   Succeeded

tkn taskrun logs <taskrun_name>

TaskRunの実行ログを表示します。引数としてTaskRun名が必要になります。

$ kubectl tkn taskrun logs test-pipelinerun-build-image-rcr4q
...
[step-image-digest-exporter-build-and-push-v2qjm] 2019/07/25 07:01:58 ImageResource easydoggie-test-image doesn't have an index.json file: stat /builder/home/image-outputs/builtImage/index.json: no such file or directory
[step-image-digest-exporter-build-and-push-v2qjm] 2019/07/25 07:01:58 Image digest exporter output: []

tkn pipeline list

Tekton PilelinesのPipeline一覧を表示します。STATUSでPipelineの実行状態を確認することができます。

$ kubectl tkn pipeline list
NAME            AGE             LAST RUN           STARTED         DURATION     STATUS
test-pipeline   8 minutes ago   test-pipelinerun   7 minutes ago   56 seconds   Succeeded

tkn pipeline describe <pipeline_name>

Pipelineの詳細を表示します。引数として表示するPipeline名が必要です。

$ kubectl tkn pipeline describe test-pipeline
Name: test-pipeline

Resources
NAME          TYPE
gitSource     git
dockerImage   image

Tasks
NAME                TASKREF            RUNAFTER
build-image         test-doker-image   []
deploy-kubernetes   test-deploy        []

Runs
NAME               STARTED         DURATION     STATUS
test-pipelinerun   9 minutes ago   56 seconds   Succeeded

tkn pipelinerun list

PipelineRunの一覧を表示します。STATUSでPipelineRunの実行状態を確認することができます。

$ kubectl tkn pipelinerun list
NAME               STARTED          DURATION     STATUS
test-pipelinerun   12 minutes ago   56 seconds   Succeeded

tkn pipeliberun describe <pipelinerun_name>

PipelineRunの詳細を表示します。引数としてPipelineRun名が必要になります。

$ kubectl tkn pipelinerun describe test-pipelinerun
Name:              test-pipelinerun
Namespace:         default
Pipeline Ref:      test-pipeline
Service Account:   build-bot

Status
STARTED          DURATION     STATUS
22 minutes ago   56 seconds   Succeeded

Resources
NAME          RESOURCE REF
gitSource     easydoggie-git
dockerImage   easydoggie-test-image

Params
No params

Taskruns
NAME                                       TASK NAME           STARTED          DURATION     STATUS
test-pipelinerun-build-image-rcr4q         build-image         22 minutes ago   36 seconds   Succeeded
test-pipelinerun-deploy-kubernetes-lqnm7   deploy-kubernetes   21 minutes ago   19 seconds   Succeeded

tkn pipelinerun log <pipelinerun_name>

PipelineRunの実行ログを表示します。引数としてPipelineRun名が必要になります。

$ kubectl tkn pipelinerun logs test-pipelinerun
...
[deploy-kubernetes : step-git-source-easydoggie-git-n2l7w] {"level":"warn","ts":1564038136.7062855,"logger":"fallback-logger","caller":"logging/config.go:69","msg":"Fetch GitHub commit ID from kodata failed: \"ref: refs/heads/master\" is not a valid GitHub commit ID"}
[deploy-kubernetes : step-git-source-easydoggie-git-n2l7w] {"level":"info","ts":1564038136.9866529,"logger":"fallback-logger","caller":"git/git.go:102","msg":"Successfully cloned https://github.com/sumomo-99/TektonSample.git @ master in path /workspace/source"}


[deploy-kubernetes : step-run-kubectl] deployment.apps/testapp-deployment created

さいごに

本記事ではTekton PipelinesのCLIツールであるTekton Pipelines cliのインストールと概要を紹介しました。

kubectlコマンドだけだと、リソース名の取得や出力された情報の把握に手間がかかります。Tekton Pipelines cliを利用することでリソースの一覧、実行ログの確認、実行状態の把握などが、簡単にできるようになります。

前回紹介したダッシュボードでもcliと同様の情報を取得することはできます。しかしcliはコマンドさえ把握していれば情報取得は迅速にできますし、他のツールとの連携やアウトプットの加工が簡単にできます。ダッシュボードとcliではそれぞれの利点や不得意なところがありますので、状況や利用目的、利用者にあったツールを選択していきましょう。

スカイアーチ ファンタジー研究室

スカイアーチ ファンタジー研究室

EasyDoggie