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
を開く
GitHubを選んで、記載通りのSetupをGitHub側で実施すると、Client IDとClient Secretが得られるので、それを、RancherのGUI側で入力して保存する。
すると、良い感じに、GitHubのログイン画面とかOAuthのコンセント画面とか表示されるので認可する。
Pipelinesを作成する
Pipelinesを作成したいClusterのProjectを選ぶ。
特に自分でProjectを用意していない場合は、 Default
というのが用意されているので、それを選ぶ。
Workloads -> Pipelines
を開くと、 Configure Repositories
ってあるので、それを押下する。
GitHubのRepositoriesが表示されている。最初は、rancherのサンプルが表示されているが、自分のRepositoriesを表示したいので、 Authorize & Fetch Your Own Repositories
を押下する。
既にGitHubとの連携は済ませてあるので、 Authenticate
を押下すれば良い。
すると、自身のRepositoriesが表示されるようになる(画面リロードとかしたら)ので、Pipelinesに組み込みたいRepositoryを選んで、 Enabled
にする。
すると、Pipelinesに選んだRepositoryが表示される。
今回、選んだRepositoryは、Rancherが用意しているサンプルのRepositoryをForkしたRepositoryなので、既にPipelinesに必要なファイルが版管理されているため、そのまま Run
したら動いた。
以下のように最初は、JenkinsのDocker Imageを取得したりする。
しばらく待ってるとBuildが走りだす。
オールグリーン!!
Workloadsを確認
Workloads
を押下すると、4つPodが出来ている。
- docker-registry
- example-greenhouse
- jenkins
- minio
example-greenhouse
が実際にDeployされたアプリケーションで、ここでは、 http://localhost:313322 にアクセスすると表示される。
まとめ
今回、Pipelinesを試してみた。
- 実用的かと言われると、ハードで柔軟なPipelinesを作りたい場合は、使えなさそう
- 切り戻しとかも含めて入れるのは無理っぽい
- RepositoryにPipeline用のConfig YAMLを含める形式なので本番用のPipelinesは別で検討するのが良いのかも
- CLIやAPIで操作したいし、そのあたりも追加で調べていこうと思う
以上です。