RedhatのOpenshift Pipeline Leranigをやってみた



Redhat Developerで提供されているOpenshiftのLearning「Getting Started with OpenShift Pipelines」を試したので、実行した結果をまとめてみます。  

https://developers.redhat.com/courses/gitops


# Learning概要

## このLearningでやること
概要をまとめるとこんな感じです

- Step1: Pipeline Operatorインストール
- Step2: プロジェクトの作成
- Step3: サンプルタスクの作成
- Step4: タスクの作成
- Step5: Pipelineの作成
- Step6: Pipeline実行
- Step7: Deployment確認

## 留意する事

- タイムアウトでセッションが切れる場合があります。セッションが切れるとやり直しです
- ターミナルのコピペはChromeの右クリックからやるとコピペできます。説明のコマンドも右クリックからペーストすると貼れます
- マニフェストを作成する際、「Visual Editor」でファイルを作成することができます。（しかも、`Ctr + V`のペーストが効きます）  
マニフェストを作成する際はこちらの方が楽かもしれないです。  
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/502127/daaa5c87-eb8b-8051-1aaa-cba8ec2c59c6.png)

    ```
    [root@crc-dzk9v-master-0 /]# cd root
    [root@crc-dzk9v-master-0 root]# ls
    subscription.yaml
    [root@crc-dzk9v-master-0 root]# cat subscription.yaml
    apiVersion: operators.coreos.com/v1alpha1
    kind: Subscription
    metadata:
      name: openshift-pipelines-operator
      namespace: openshift-operators
    spec:
      channel: stable
      name: openshift-pipelines-operator-rh
      source: redhat-operators
    ```

# 実行結果

## Step1: Pipeline Operatorインストール

1. Podの確認
    ```
    [root@crc-dzk9v-master-0 /]# oc get pods -n openshift-console | grep console
    console-7c78484b46-vmrlr     1/1     Running   0          2m6s
    ```

1. Route確認
    ```
    root@crc-dzk9v-master-0 /]# oc get routes console -n openshift-console
    NAME      HOST/PORT                                                                   PATH   SERVICES   PORT    TERMINATION          WILDCARD
    console   console-openshift-console.crc-dzk9v-master-0.crc.cwfp6z3ke4xd.instruqt.io          console    https   reencrypt/Redirect   None
    ```

1. コンソールへアクセス

    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/502127/e396f50a-5024-bda4-e196-10552f81d6a5.png)

1. [Operator]-[Operator hub]で`pipeline`を検索  
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/502127/c1be36b1-1b20-6bbc-e4a9-e573dca8d942.png)

1. [インストール]をクリックする  
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/502127/0b092bce-e919-9ed6-b16a-8b10f0fc7e7f.png)

1. 設定は変えずに[インストール]　　
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/502127/c55e0d83-f0be-b6ef-e15f-202dcfd43870.png)

## Step2: プロジェクトの作成

1. プロジェクトを作成する

    ```
    [root@crc-dzk9v-master-0 /]# oc new-project pipelines-tutorial
    Now using project "pipelines-tutorial" on server "https://api.crc.testing:6443".

    You can add applications to this project with the 'new-app' command. For example, try:

        oc new-app rails-postgresql-example

    to build a new example application in Ruby. Or use kubectl to deploy a simple Kubernetes application:

        kubectl create deployment hello-node --image=k8s.gcr.io/serve_hostname
    ```

#### 余談
`oc new-project`を実行すると、デフォルトのプロジェクトが作成したプロジェクトに切り替わります。

```
[root@crc-dzk9v-master-0 /]# oc get pod
No resources found in pipelines-tutorial namespace.
```

## Step3: サンプルタスクの作成
1. マニフェストをapplyする

    ```
    [root@crc-dzk9v-master-0 /]# oc apply -f https://raw.githubusercontent.com/openshift-labs/learn-katacoda/master/middleware/pipelines/assets/tasks/hello.yaml
    task.tekton.dev/hello created
    ```

1. タスクを実行する

    ```
    [root@crc-dzk9v-master-0 /]# tkn task list
    NAME    DESCRIPTION   AGE
    hello                 4 minutes ago
    [root@crc-dzk9v-master-0 /]# tkn task start --showlog hello
    TaskRun started: hello-run-9vpjc
    Waiting for logs to be available...
    [say-hello] Hello World
    ```

#### 余談
タスクを実行したコンテナが確認できます。  
（※2回実行したので、2個になっています）

```
[root@crc-dzk9v-master-0 /]# oc get pod
NAME                        READY   STATUS      RESTARTS   AGE
hello-run-9vpjc-pod-2shd5   0/1     Completed   0          27s
hello-run-mvdhf-pod-7zwtx   0/1     Completed   0          5m14s
```

## Step4: タスクの作成
1. タスクをapplyする
    ```
    [root@crc-dzk9v-master-0 /]# oc create -f https://raw.githubusercontent.com/openshift-labs/learn-katacoda/master/middleware/pipelines/assets/tasks/apply_manifest_task.yaml
    task.tekton.dev/apply-manifests created
    [root@crc-dzk9v-master-0 /]# oc create -f https://raw.githubusercontent.com/openshift-labs/learn-katacoda/master/middleware/pipelines/assets/tasks/update_deployment_task.yaml
    task.tekton.dev/update-deployment created
    ```

1. PVCをapplyする
    ```
    [root@crc-dzk9v-master-0 /]# oc create -f https://raw.githubusercontent.com/openshift-labs/learn-katacoda/master/middleware/pipelines/assets/resources/persistent_volume_claim.yaml
    persistentvolumeclaim/source-pvc created
    ```

1. タスクを確認する

    ```
    [root@crc-dzk9v-master-0 /]# tkn task ls
    NAME                DESCRIPTION   AGE
    apply-manifests                   46 seconds ago
    hello                             1 minute ago
    update-deployment                 37 seconds ago
    ```


# Step5: Pipelineの作成
1. Pipelineをapplyする

    ```
    [root@crc-dzk9v-master-0 /]# oc create -f https://raw.githubusercontent.com/openshift-labs/learn-katacoda/master/middleware/pipelines/assets/pipeline/pipeline.yaml
    pipeline.tekton.dev/build-and-deploy created
    ```


# Step6: Pipeline実行
1. Pipelineを実行する

    ```
    [root@crc-dzk9v-master-0 /]# tkn pipeline start build-and-deploy -w name=shared-workspace,claimName=source-pvc -p deployment-name=pipelines-vote-api -p git-url=https://github.com/openshift/pipelines-vote-api.git -p IMAGE=image-registry.openshift-image-registry.svc:5000/pipelines-tutorial/vote-api -p git-revision=master --showlog
    PipelineRun started: build-and-deploy-run-8knfk
    Waiting for logs to be available...
    [fetch-repository : clone] + '[' false = true ']'
    [fetch-repository : clone] + '[' false = true ']'
    [fetch-repository : clone] + CHECKOUT_DIR=/workspace/output/
    [fetch-repository : clone] + '[' true = true ']'
    [fetch-repository : clone] + cleandir
    [fetch-repository : clone] + '[' -d /workspace/output/ ']'
    [fetch-repository : clone] + rm -rf '/workspace/output//*'
    [fetch-repository : clone] + rm -rf '/workspace/output//.[!.]*'
    [fetch-repository : clone] + rm -rf '/workspace/output//..?*'
    [fetch-repository : clone] + test -z ''
    ~~ ommit ~~
    ```


    ```
    [root@crc-dzk9v-master-0 /]# tkn pipeline start build-and-deploy -w name=shared-workspace,claimName=source-pvc -p deployment-name=pipelines-vote-ui -p git-url=https://github.com/openshift/pipelines-vote-ui.git -p IMAGE=image-registry.openshift-image-registry.svc:5000/pipelines-tutorial/vote-ui -p git-revision=master --showlog
    PipelineRun started: build-and-deploy-run-4fnf9
    Waiting for logs to be available...
    [fetch-repository : clone] + '[' false = true ']'
    [fetch-repository : clone] + '[' false = true ']'
    [fetch-repository : clone] + CHECKOUT_DIR=/workspace/output/
    [fetch-repository : clone] + '[' true = true ']'
    [fetch-repository : clone] + cleandir
    ~~ ommit ~~
    ```

1. Pipelineを確認する

    ```
    [root@crc-dzk9v-master-0 /]# tkn pipelinerun ls
    NAME                         STARTED         DURATION    STATUS
    build-and-deploy-run-4fnf9   3 minutes ago   1 minute    Succeeded
    build-and-deploy-run-8knfk   6 minutes ago   2 minutes   Succeeded
    ```

## Step7: Deployment確認
1. コンソールを[Developer]に切り替え、[トポロジー]を選択  
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/502127/6c61acd9-e885-8568-f04a-1180edc81e21.png)

1. リンクを開くとページが表示される  
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/502127/4dfd15ba-ba82-9d0a-0ded-a6b00f5388d8.png)