Edited at

Rancher2.1のPipelinesを試す

RancherにDocker for MacのKubernetesをインポートする - Qiita に引き続き、 Pipelines | Rancher Labs を見ながら試した。


仕様

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


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は外部ストレージ化する手順が このへん にあるとのこと。


トリガー


  • Manually

  • Automatically


    • GitHubやGitLabのWebhookに自動で登録されるとのこと

    • イベントとしては、push, pull request, tagが用意されている

    • 管理者権限を持っているリポジトリしか対象にできない

    • もちろん、GitHubやGitLabから見える位置に、Rancherを起動していないといけないからローカル起動は使えない




実際にやってみた

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


GitHubの認証を通す

Security -> Authentication を開く

01.png

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

02.png

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


Pipelinesを作成する

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

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

03.png

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

04.png

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

05.png

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

07.png

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

08.png

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

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

09.png

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

Rancher.png

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

Rancher.png

オールグリーン!!

Rancher.png


Workloadsを確認

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

Rancher.png


  • docker-registry

  • example-greenhouse

  • jenkins

  • minio

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


まとめ

今回、Pipelinesを試してみた。


  • 実用的かと言われると、ハードで柔軟なPipelinesを作りたい場合は、使えなさそう


    • 切り戻しとかも含めて入れるのは無理っぽい



  • RepositoryにPipeline用のConfig YAMLを含める形式なので本番用のPipelinesは別で検討するのが良いのかも

  • CLIやAPIで操作したいし、そのあたりも追加で調べていこうと思う

以上です。