1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

IBM Cloud DevOps ToolChain "Develop a Kubernetes app toolchain"をカスタマイズしてオリジナルのToolChainを作成する

Last updated at Posted at 2018-03-18

翔泳社より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

image.png

お好きな名前でrepositoryを作る

image.png

import code from another repositoryから、「Import code」をクリック

image.png

クローン元URLを入力してImport開始

今回はDevelop a Kubernetes app toolchainのレポジトリURLを入力します。
https://github.com/open-toolchain/secure-kube-toolchain」
入力後「Begin import」

image.png

あたたかいお茶を飲んでひといき。

完了すると以下のような表示になります。

image.png

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}}として参照していることから、併せて変更していきます。

toolchain.yaml
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を修正します。

README.md

[![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ソースコード ディレクトリ (例)

まとめ

  1. toolchainの処理のすべてはtoolchain.ymlに記載されている
  2. アプリケーションコード側は既存のDockerプロジェクトにkubernetes向けのyamlファイルを追加していくだけでtoolchainに乗せることができる

番外編

slackや他機能の追加方法は順次アップデートしていきます。おたのしみに!

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?