Tekton Pipelinesは、Kuernetes上で実行するCI/CD形式のパイプラインツールです。Kubernetes Nativeなオープンソースとして開発されています。 TektonはThe Continuous Delivery Foundation(CDF)のプロジェクトとして採用されています。
本記事ではTekton PipelinesのWebベースのUIであるTekton Dashboardのインストール方法と概要を紹介します。
対象読者
- Kubernetes-nativeなCI/CDツールを探している人
- Cloud Delivery Foundation(CDF)に興味がある人
- Cloud Nativeの思想に興味がある人
関連記事
- [Tekton Pipelines] Kubernetes-nativeなCI/CDツールのインストールとタスクの実行例を紹介します!
- [Tekton Pipelines] Tekton Pipelineのパイプライン機能を使ってみよう
もくじ
- はじめに
- 検証環境の紹介
- Dashboardをインストールする
- Dashboardへのアクセス方法
- Tektonリソースをインポートする
- Docker Hub認証情報の作成
- Pipelineを実行する
- おわりに
はじめに
Tekton DashboaedはTekton PipelinesのWebベースのUIです。Tekton Pipelinesのタスクの管理や参照、実行などを行うことができます。Tekton Dashboardの実行には、Tekton Pipelines v0.5以上のインストールが必要です。Tekton Pipelinesのインストール方法は、前回の記事を参照してください。
検証環境の紹介
GKE環境で検証を行いました。検証に利用したKubernetesのクライアントおよびサーバのバージョンは以下の通りです。
$ kubectl version --short
Client Version: v1.14.1
Server Version: v1.12.8-gke.10
Dashboardをインストールする
はじめにTekton DashboardのソースをGit Hubからクローンします。
$ git clone https://github.com/tektoncd/dashboard.git
kubectl apply
コマンドでTekton Dashboardのマニフェストファイルを指定します。
$ kubectl apply -f dashboard/config/release/gcr-tekton-dashboard.yaml
Tekton Dashboardは、Tekton Pipelinesと同じtekton-pipelines
というネームスペースにインストールされます。ネームスペースを指定してPodの起動を確認してみます。
$ kubectl get pods --namespace tekton-pipelines
NAME READY STATUS RESTARTS AGE
tekton-dashboard-fb5d8df96-s6xpd 1/1 Running 0 117s
tekton-pipelines-controller-756bc5764-lz9bf 1/1 Running 0 2m22s
tekton-pipelines-webhook-747c74f59f-n4g2v 1/1 Running 0 2m19s
Dashboardがインストールされ、実行状態となっています。
Dashboardへのアクセス方法
Tekton Dashboardは、ClusterIPを経由してアクセスすることができます。ClusterIPのポート場号は9097
です。
$ kubectl get services -n tekton-pipelines
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
tekton-dashboard ClusterIP 10.0.3.151 <none> 9097/TCP 5m28s
tekton-pipelines-controller ClusterIP 10.0.13.160 <none> 9090/TCP 6m10s
tekton-pipelines-webhook ClusterIP 10.0.4.144 <none> 443/TCP 6m7s
kubectl proxyを利用したアクセス
ClusterIP経由でアクセスするために、kubectl proxy
コマンドを利用します。
$ kubectl proxy
Starting to serve on 127.0.0.1:8001
ブラウザでhttp://localhost:8001/api/v1/namespaces/tekton-pipelines/services/tekton-dashboard:http/proxy/
にアクセスしてみます。
port-forwardを利用したアクセス
kubectl port-forward
を利用したアクセス方法です。
$ kubectl --namespace tekton-pipelines port-forward svc/tekton-dashboard 9097:9097
Forwarding from 127.0.0.1:9097 -> 9097
Forwarding from [::1]:9097 -> 9097
ブラウザでhttp://localhost:9097
にアクセスします。kubectl proxy
とURLの指定が異なるので注意してください。
どちらの方法でもDashboardへのアクセスを終了する場合は、
Ctrl + c
でプロキシもしくはポートフォワードの実行を停止してください。
Tektonリソースをインポートする
Tekton DashboardからTektonのリソースをインポートして、パイプラインの設定を行ってみます。Tektonリソース(yamlファイル)のGitリポジトリを指定してインポートを行うことができます。はじめにDashboardの左側のメニューからImport Tekton resources
を選択します。
項目 | 入力内容 |
---|---|
Repository URL | Tektonリポジトリを格納したGitリポジトリのURL |
Namespace | Tektonリソースを実行するネームスペース |
Repository directory (optional) | インポートするリポジトリのディレクトリ。指定しない場合場トップディレクトリが対象。 |
Service Account(optional) | Tektonリソースを実行するサービスアカウント。デフォルトはtekton-dashboard |
Import and Apply
ボタンを押すと、Tektonリソースのインポートと適用が実行されます。 ダッシュボードはデフォルトの設定で、サービスアカウントtekton-dashboard
、ネームスペースtekton-pipelines
として実行されています。 ネームスペースtekton-pipelines
のサービスアカウントtekton-dashboard
には最低限の権限のみ付与されているため、作成したマニフェストファイルが権限不足で実行できない場合があります。
記事の執筆時点ではServiceAccountの新規作成などが、ダッシュボードのインポートからは行えません。一般的には、クラスタ管理者がServiceAccountの作成を行いますので、ダッシュボードの一般利用の権限としては正しいものと思われます。
今回の実行例では、cluster-admin
の権限を付与したサービスアカウントを作成して、そのサービスアカウントを利用します。
ダッシュボードからインポートを行う前に、サービスアカウントと権限付与を行うマニフェストファイルを作成しておきます。
# dashboardAccount.yaml
apiVersion: v1
kind: ServiceAccount
metadata:
labels:
app: tekton-dashboard
name: tekton-dashboard
namespace: default
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: dashboard-cluster-admin
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: cluster-admin
subjects:
- kind: ServiceAccount
name: tekton-dashboard
namespace: default
作成したマニフェストファイルをKubernetes上に適用しておきます。
$ kubectl apply -f dashboardAccount.yaml
serviceaccount/tekton-dashboard created
今回は前回の記事で作成したパイプラインの実行例で利用したTektonリソースをインポートしてみます。Repository URL
、Namespace
に以下の値を指定しました。
項目 | 入力内容 |
---|---|
Repository URL | https://github.com/sumomo-99/TektonSample.git |
Namespace | default |
Repository directory (optional) | tekton |
Service Account(optional) | tekton-dashboard |
Import and Apply
ボタンを押すと、ボタンの下にリンクが表示されます。
リンクをクリックすることで、インポート(apply)の状態を確認することができます。
Docker Hub認証情報の作成
Docker Hubへイメージをプッシュするために、Docker Hubの認証情報をKubernetesのSecretに定義します。
# secret.yaml
apiVersion: v1
kind: Secret
metadata:
name: basic-user-pass
annotations:
tekton.dev/docker-0: https://index.docker.io/v1/
type: kubernetes.io/basic-auth
stringData:
username: <username>
password: <password>
作成したSecretをKubernetesに適用します。
$ kubectl apply -f secret.yaml secret/basic-user-pass created
Pipelineを実行する
Tektonリソースのインポートが完了したので、Pipelineを実行してみます。
Import Tekton resources
でPipelineRunをインポートして実行します。
項目 | 入力内容 |
---|---|
Repository URL | https://github.com/sumomo-99/TektonSample.git |
Namespace | default |
Repository directory (optional) | tekton_run |
Service Account(optional) | tekton-dashboard |
Import and Apply
ボタンを押して、PipelineRunを実行してみましょう。しばらく待つと、ダッシュボード上のパイプラインのステータスが以下のように変化していきます。
すべてのタスクが緑色で表示されれば、パイプラインの実行は成功です。実行に失敗したタスクは赤字で表示されます。
さいごにkubectl
コマンドでもPodが起動したのか確認をしておきましょう。
$ kubectl get pods
NAME READY STATUS RESTARTS AGE
test-pipelinerun-build-image-q7mzd-pod-d4d77f 0/3 Completed 0 6m7s
test-pipelinerun-deploy-kubernetes-5p96g-pod-477bc3 0/3 Completed 0 5m27s
testapp-deployment-cdcf6bdb8-wxpxv 1/1 Running 0 5m11s
正常にPod(testapp-deployment-cdcf6bdb8-wxpxv)が起動しているようです。
おわりに
本記事ではTekton PipelinesのWebベースのUIであるTekton Dashboardのインストール方法と概要を紹介しました。kubectl
のコマンドラインベースでは、タスクやパイプラインの実行ログやステータスの確認に非常に手間がかかります。Tekton DashboardはGUIベースで簡単に実行ログやステータスを確認することでできます。便利なツールは積極的に利用してみて、便利さをどんどん周りに伝えていきましょう。

投稿者プロフィール
最新の投稿
AWS2021.12.02AWS Graviton3 プロセッサを搭載した EC2 C7g インスタンスが発表されました。
セキュリティ2021.07.14ゼロデイ攻撃とは
セキュリティ2021.07.14マルウェアとは
WAF2021.07.13クロスサイトスクリプティングとは?