翔泳社より2018年3月15日に「コンテナ・ベース・オーケストレーション Docker/Kubernetesで作るクラウド時代のシステム基盤」が発売されました。
本記事はこの中のKubernetes on IBM Cloud Container Service章で取り上げた
IBM Cloud DevOps ToolChainを試してみる。の番外編です。
本記事ではDevOps ToolChainをカスタマイズして独自のコンテナアプリケーションプロジェクトをIBM Cloud Container Serviceへデプロイします。
なぜ番外編?
IBM Cloud Container ServiceをIBM Cloud DevOps ToolChainを利用してアプリケーションのコンテナをビルド・デプロイする部分を書籍では紹介しました。
書籍では、Develop a Kubernetes app toolchainを書籍で紹介するアプリケーションのソースコードが入ったプロジェクトを標準でビルドするようにToolChainや、DeliveryPipelineをカスタマイズしていました。
ToolChainやDeliveryPipelineの部分は書面においては、Kubernetesから大きく外れるため、番外編としてQiitaでの記事掲載としました。
IBM DevOps ToolChain
OpenToolChainというプロジェクトをご存知ですか?
IBM Cloudで利用できるDevOpsサービスは、DevOps toolchainsとして、幾つものToolChainパターンのサンプルが公開されています。
IBM Cloud Container Serviceを利用したDevelop a Kubernetes app toolchainや、IBM Cloud Container Service + Kubernetes Helmを利用したDevelop a Kubernetes app with Helm toolchainをはじめ、CloudFoundryや、Jenkinsを組み合わせたToolChainのサンプルが公開されています。
このQiita記事では書籍で使用したToolChainレポジトリを作成する手順とSlackを利用した通知部分までを紹介したいと思います。
ToolChainをカスタマイズしてみる
ToolChainのインポート
DevOps toolchainsのページ上にCreate the Toolchain
と描かれたアイコンがありますが、このリンクはIBM Cloud側にGitレポジトリをURLとして提供し、そのGitレポジトリからToolChainの設定ファイルを読み込むという仕組みとなっているようです。
GitHubには、OpenToolChainのプロジェクトが存在し、Develop a Kubernetes app toolchainも、secure-kube-toolchainという名称でレポジトリが公開されています。(※現在のDevelop a Kubernetes app toolchainとなる前は、Secure Kubernetes toolchain
という名称で公開されていました。)
今回はGitHubの機能を利用してプロジェクト作成時のImportして改良してみましょう。
まずはNew repository
お好きな名前でrepositoryを作る
import code from another repositoryから、「Import code」をクリック
クローン元URLを入力してImport開始
今回はDevelop a Kubernetes app toolchainのレポジトリURLを入力します。
「https://github.com/open-toolchain/secure-kube-toolchain」
入力後「Begin import」
あたたかいお茶を飲んでひといき。
完了すると以下のような表示になります。
Toolchainの中身
toolchainのフォルダ構造の中身を表にまとめました。
主に今回修正するファイルメインで記載しているので、随時判明次第ほかファイルについては説明書きを追記します。
ファイル名 | 説明 | ファイル形式 | 備考 |
---|---|---|---|
README.md | gitページに説明や「Create toolchain」ボタンを配置 | markdown | |
.cfignore | cf push時に除外するファイル/フォルダ一覧 | dot-ignore | 未使用 |
.gitignore | git push時に除外するファイル/フォルダ一覧 | dot-ignore | |
.bluemix/pipeline.yml | DevOps Delivery Pipelineの挙動をyaml記述しているもの | yaml | 編集 |
.bluemix/toolchain.yml | toolchainの挙動をyaml記述しているもの | yaml | 編集 |
主に変更するポイント
repo_urlとその紐づくrepo_nameを置き換えます。
repo_nameやhello-world-repoの要素名はは{{repo_name}}や{{hello-world-repo}}として参照していることから、併せて変更していきます。
services:
hello-world-repo:
service_id: hostedgit
parameters:
repo_name: 'hello-containers-{{timestamp}}'
repo_url: 'https://github.com/open-toolchain/hello-containers'
type: clone
has_issues: true
enable_traceability: true
他、pipeline.ymlはデプロイ時のsvc、app名の修正を行うことで完全にオリジナルのプロジェクトが作成出来ます。
Create toolchainボタンで読み込みするGETパラメータ、repository=のurlを修正します。
[![Deploy To Bluemix](https://console.bluemix.net/devops/graphics/create_toolchain_button.png)](https://console.bluemix.net/devops/setup/deploy/?repository=https%3A//github.com/open-toolchain/secure-kube-toolchain)
Application Projectの中身
アプリケーションソースコードを配置するプロジェクトは以下ファイルが存在することで動作が行われます。
ご自身の好きなプロジェクトに併せて配置してみてください。
ch07-appを例にファイル一覧と説明をまとめます。
ファイル名 | 説明 | ファイル形式 | 備考 |
---|---|---|---|
README.md | アプリケーション ソースコードを配置するプロジェクト側の説明ファイル | markdown | |
Dockerfile | Dockerコンテナのイメージをビルドするファイル | Dockerfile | |
deployment.yml | KubernetesのDeploy/Serviceなどをまとめたyamlファイル。toolchainのdeploymentステージで実行される | yaml | |
app/ | Dockerファイル上でコピーするappソースコード | ディレクトリ | (例) |
まとめ
- toolchainの処理のすべてはtoolchain.ymlに記載されている
- アプリケーションコード側は既存のDockerプロジェクトにkubernetes向けのyamlファイルを追加していくだけでtoolchainに乗せることができる
番外編
slackや他機能の追加方法は順次アップデートしていきます。おたのしみに!