マルチクラウド時代の最強コンビ RancherによるKubernetes活用ガイド 第5回

GitLabを用いた継続的インテグレーション

連載5回目となる今回は、GitLab CIを用いた継続的インテグレーション(CI)について解説します。

藤原 涼馬

2019年4月25日 10:48

RancherによるKubernetes活用完全ガイド

市川 豊、藤原 涼馬、西脇 雄基 著
価格:4,600円+税
発売日:2019年7月23日発売
ISBN:978-4-295-00725-8
発行:インプレス

RancherによるKubernetes活用完全ガイド

この連載が書籍になりました!

本書は、インプレスの“オープンソース技術の実践活用メディア”Think ITの連載記事『 マルチクラウド時代の最強コンビ RancherによるKubernetes活用ガイド』の内容を元に、未公開原稿を大幅加筆して書籍化したものです。Kubernetesクラスタを管理するプラットフォームRancherを用いて、Kubernetesを活用する方法を紹介します。

Amazon詳細ページへImpress詳細ページへ

GitLabを用いた継続的インテグレーション

前回(RancherとCI/CD)は、 そもそも継続的インテグレーション(CI)、継続的デプロイ・デリバリ(CD)とは何なのかという説明と、CI/CDを実現するためのツールとしてRancher PipelineとGitLab CI/CDを紹介しました。今回は一旦Rancherから離れ、GitLab CIを用いた継続的インテグレーションの実現方法について解説します。

最初にサンプルサプリケーションの構成について解説した後、今回利用するGitLab.comのアカウントおよび、プロジェクトの作成について説明します。その上でサンプルアプリケーションの実装とテストを解説した後、Dockerイメージの自動ビルドと自動テストをGitLabを活用して実現する方法を説明します。

サンプルアプリケーションの構成解説

まずサンプルとなるアプリケーションですが、ここではアプリケーションの実装とテスト、CIパイプラインの実装をお見せするのが主眼なので、おしゃれなUIを備えたWebアプリケーションや、高機能なCLIアプリケーションではなく、ごくシンプルなアプリケーションの作成にとどめたいと思います。

ここで、題材とするアプリケーションはREST APIで動作するシンプルなサーバサイドアプリケーションです(最終的にはマルチユーザ対応のToDo管理アプリケーションのクライアント・サーバサイド実装とする予定です)。構成イメージは図1に示す形になります。

図1:アプリケーションの構成イメージ

図1:アプリケーションの構成イメージ

もう少し具体的に理解してもらう目的で、今回作成するアプリケーションのソフトウェア構成を表1に示します。

表1:アプリケーションの構成

コンポーネント構成補足
WebサーバNginx実体はNGINX Ingress Controller
サーバアプリケーションPython 3.6.6
Django 2.1.5
Django REST framework 3.9.1
pyenv、venvを利用
クライアントアプリケーションGo 1.11.5goenvおよびGOPATHの切り替えにdirenvを利用。今回は出番なし
データベースMySQL 5.7今回は出番なし

サーバアプリケーションは少ない手数でRESTアプリケーションを書くという意図のもと、PythonとDjango REST Frameworkを利用します。今回、データベースの出番はありませんがMySQLを選択しました。

今回は作成の対象外ですが、クライアントサイドのアプリケーションはCLIアプリケーションを想定しています。どんな言語でもCLIアプリケーションの作成自体は可能ですが、配布および導入の容易化という観点からGo言語を採用します。

GitLab.comの準備

では、アプリケーションの構成について解説したので早速実装を始めたいところですが、ソースコードのリポジトリを準備しなければいけません。今回はGitLabのSaaS版であるGitLab.comを利用します。

アカウントの作成とログイン

GitLab.comのサインイン画面にアクセスし、画面の指示に従ってアカウントを作成してログイン、またはソーシャルアカウント(Google、Twitter)や、他のリポジトリサービスのアカウント(GitHub、Bitbucket)を使ってログインしてください(図2)。

ただし、ソーシャルログインを利用した場合、そのままではプライベートリポジトリからのコードのクローンやプッシュができないので、別途ログイン後にパスワードの設定が必要です(今回の本題からは外れるため、手順の解説は省略します)。

図2:GitLab.comのサインイン画面(https://gitlab.com/users/sign_in)

図2:GitLab.comのサインイン画面(https://gitlab.com/users/sign_in)

プロジェクトの作成

GitLabにログイン後、画面左上のドロップダウンメニュー(図3(1))を開き、New projectを選択(図3(2))します。

図3:ドロップダウンメニューのリポジトリ作成ボタン

図3:ドロップダウンメニューのリポジトリ作成ボタン

プロジェクトの作成画面が表示されたら、Blank projectを選択(図4(1))し、プロジェクトの名前を指定します(図4(2))。次に、リポジトリの可視性について設定します。今回は実際の業務におけるサービス開発に近い形を想定しているので、プライベートリポジトリを利用するためにPrivateを指定します(図4(3))。ここまで設定が完了したら、Create projectボタンをクリックします(図4(4))。

図4:リポジトリの作成画面

図4:リポジトリの作成画面

作成されたプロジェクトのページ(図5)に遷移します。

図5:作成されたプロジェクト

図5:作成されたプロジェクト

プロジェクトが作成されるとともに、gitを用いたコードリポジトリも作成されています。画面右側のドロップダウンメニュー(図6(1))を選択し、Clone with HTTPSからURLをコピーします(図6(2))。

図6:プロジェクトに含まれるgitリポジトリのURL取得

図6:プロジェクトに含まれるgitリポジトリのURL取得

ここで取得したURLを使ってgit cloneでリポジトリをローカルディスクにクローンします(リスト1)。

リスト1:リスト1:GitLabのプロジェクトに含まれるコードリポジトリのクローニング

$ git clone https://gitlab.com/fufuhu/ti_rancher_k8s_sampleapp.git

今後、解説を進める際のファイルパスは、ローカルにクローンしたリポジトリのルートディレクトリからの相対パスとします。ここから先は、サーバサイドアプリケーションの実装とテストを進めていきましょう。

この連載が書籍になりました!『RancherによるKubernetes活用完全ガイド』
この記事のキーワード :

人気記事トップ10

人気記事ランキングをもっと見る

企画広告も役立つ情報バッチリ! Sponsored