Rancher2.1のPipelinesを試す

[RancherにDocker for MacのKubernetesをインポートする \- Qiita](https://qiita.com/yoshiyoshifujii/items/54761cdfc9cb2b14b9b8) に引き続き、 [Pipelines \| Rancher Labs](https://rancher.com/docs/rancher/v2.x/en/tools/pipelines/) を見ながら試した。

# 仕様

基本的にドキュメントに記載通りだが、簡単にピックアップしておく。

## Pipelineのステージ

以下の3ステージが用意されている。

- Build
- Publish
- Deploy

シンプル。

## 実用に耐えるのか

シンプルなPipelineなので、柔軟かつパワフルなエンタープライズやチーム用途には向かない的なことが書いてある。

## サポートしているバージョン管理システム

- GitHub
- GitLab

の2つとのこと。

## Pipelinesの動き

- Jenkins
    - 内部でJenkinsを立ててRancherが良い感じにつかってくれるらしい
    - RancherのPipelinesが良い感じにJenkinsを使ってくれるのでロックされててアクセスできない
    - Jenkinsはステートレスに動作するので永続性とかは心配無用とのこと
- Docker Registry
    - Defaultで、Docker Registryを立てて、そこにPublishしてくれる
    - オプションで外部のDocker RegistryにPublishするように設定することもできる
- Minio
    - MinioというStorageにPipelinesの実行ログを吐き出してくれる

Docker Registryは外部を指定すれば永続性とかは大丈夫。Minioは外部ストレージ化する手順が [このへん](https://rancher.com/docs/rancher/v2.x/en/tools/pipelines/configurations/#data-persistency-for-pipeline-components) にあるとのこと。

## トリガー

- Manually
- Automatically
    - GitHubやGitLabのWebhookに自動で登録されるとのこと
    - イベントとしては、push, pull request, tagが用意されている
    - 管理者権限を持っているリポジトリしか対象にできない
    - もちろん、GitHubやGitLabから見える位置に、Rancherを起動していないといけないからローカル起動は使えない

# 実際にやってみた

以下、実際にやってみたあたりの手順を書く。

## GitHubの認証を通す

`Security -> Authentication` を開く

![01.png](https://qiita-image-store.s3.amazonaws.com/0/24050/866b6050-19c2-a08e-8675-e4346864d147.png)

GitHubを選んで、記載通りのSetupをGitHub側で実施すると、Client IDとClient Secretが得られるので、それを、RancherのGUI側で入力して保存する。

![02.png](https://qiita-image-store.s3.amazonaws.com/0/24050/470a0c37-c370-aba1-19cb-dd29306f2c53.png)

すると、良い感じに、GitHubのログイン画面とかOAuthのコンセント画面とか表示されるので認可する。

## Pipelinesを作成する

Pipelinesを作成したいClusterのProjectを選ぶ。

特に自分でProjectを用意していない場合は、 `Default` というのが用意されているので、それを選ぶ。

![03.png](https://qiita-image-store.s3.amazonaws.com/0/24050/3b14df88-1f8d-7242-843d-373f097a98ac.png)

`Workloads -> Pipelines` を開くと、 `Configure Repositories` ってあるので、それを押下する。

![04.png](https://qiita-image-store.s3.amazonaws.com/0/24050/8a98501b-a057-a52e-7261-93be6992cf0e.png)

GitHubのRepositoriesが表示されている。最初は、rancherのサンプルが表示されているが、自分のRepositoriesを表示したいので、 `Authorize & Fetch Your Own Repositories` を押下する。

![05.png](https://qiita-image-store.s3.amazonaws.com/0/24050/4dffaa09-a130-78de-c379-150ab28518c4.png)

既にGitHubとの連携は済ませてあるので、 `Authenticate` を押下すれば良い。

![07.png](https://qiita-image-store.s3.amazonaws.com/0/24050/5dcd2915-7b5b-4677-3020-8d4e14f6dd40.png)

すると、自身のRepositoriesが表示されるようになる(画面リロードとかしたら)ので、Pipelinesに組み込みたいRepositoryを選んで、 `Enabled` にする。

![08.png](https://qiita-image-store.s3.amazonaws.com/0/24050/c2b4e96e-82a1-e6dc-42ed-161592794a51.png)

すると、Pipelinesに選んだRepositoryが表示される。

今回、選んだRepositoryは、Rancherが用意しているサンプルのRepositoryをForkしたRepositoryなので、既にPipelinesに必要なファイルが版管理されているため、そのまま `Run` したら動いた。

![09.png](https://qiita-image-store.s3.amazonaws.com/0/24050/d62c7e37-8df5-8b0c-c32c-d36af7e057bd.png)

以下のように最初は、JenkinsのDocker Imageを取得したりする。

![Rancher.png](https://qiita-image-store.s3.amazonaws.com/0/24050/1664b508-7ff8-35ca-a6b9-6a40151fbe0b.png)

しばらく待ってるとBuildが走りだす。

![Rancher.png](https://qiita-image-store.s3.amazonaws.com/0/24050/056c8692-41bd-150b-bcd0-d455ec24ae78.png)

オールグリーン!!

![Rancher.png](https://qiita-image-store.s3.amazonaws.com/0/24050/fb14915a-c581-efbd-de10-6635aa7e8dae.png)

## Workloadsを確認

`Workloads` を押下すると、4つPodが出来ている。

![Rancher.png](https://qiita-image-store.s3.amazonaws.com/0/24050/1a2cf556-c954-dc97-def3-cecca4167488.png)

- docker-registry
- example-greenhouse
- jenkins
- minio

`example-greenhouse` が実際にDeployされたアプリケーションで、ここでは、 http://localhost:313322 にアクセスすると表示される。

# まとめ

今回、Pipelinesを試してみた。

- 実用的かと言われると、ハードで柔軟なPipelinesを作りたい場合は、使えなさそう
    - 切り戻しとかも含めて入れるのは無理っぽい
- RepositoryにPipeline用のConfig YAMLを含める形式なので本番用のPipelinesは別で検討するのが良いのかも
- CLIやAPIで操作したいし、そのあたりも追加で調べていこうと思う

以上です。