2
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?

IBM CloudAdvent Calendar 2023

Day 23

【IBM Cloud】IBM Cloud Kubernetes上で継続的デリバリーのツールチェーンを構築し、Slackと連携してみた

Last updated at Posted at 2023-12-19

はじめに

今回はIBM Cloud Kubernetes Serviceのクラスター上にCICDパイプラインを構築し、Slackと連携してみたので、その流れを整理します。

作業における前提は以下のとおりです。

  • IBM Cloudのアカウント(無料利用可能)の準備
  • IBM Cloud Kubernetes Service(IKS)のクラスター作成
    • クラスター作成手順は、こちらを参照ください。
    • 今回はクラシッククラスターの最小構成で作成しております。
  • CICDに関する簡単な紹介についてはこちらを参照ください。

検証の流れ

1. サンプル・アプリケーションの作成

IBM Cloudコンソール画面から、ナビゲーションメニューDevOpsツールチェーンをクリックします。
スクリーンショット 2023-12-18 15.43.51.png
リソース・グループやロケーションを選択肢、ツールチェーンの作成をクリックします。
スクリーンショット 2023-12-18 15.44.08.png
ツールチェーンの作成画面が表示されたら、検索欄にKubernetesと検索し、Kubernetesアプリの開発(Helm)を選択します。
スクリーンショット 2023-12-18 15.44.23.png
ツールチェーンのインスタンス名やリージョン、リソースグループなどを設定し、下のツール統合カテゴリからDelivery Pipelineをクリックします。
スクリーンショット 2023-12-18 15.56.18.png
Delivery Pipelineの設定ではIBM Cloud APIキーを記入する必要がありますが、今回私は新規作成しています。もし既存のAPIキーがある場合はそれを選択し、ない場合には新規をクリックします。
また、前提条件として既に作成したKubernetesクラスターを選択し、下の作成をクリックします。
スクリーンショット 2023-12-18 15.46.03.png
パイプラインが作成されたら、早速ステージが走り始めます。しばらく経つとDeployまで成功されるかと思います。(この作業には数分程度かかります)

クラシックではなくVPCクラスターの場合、 「Check health」 ジョブは失敗しますが、無視して進めても大丈夫です。

スクリーンショット 2023-12-18 13.49.47.png
スクリーンショット 2023-12-18 13.58.41.png

パイプラインが完了されるまで多少時間がかかるため、その間に事前に作成したKubernetesクラスターに移動し、Ingressサブドメインを取得します。(新しいタブで開くことをおすすめします)
Ingressサブドメインはクラスターの概要画面で確認できますが、この後何回も使用するので別途メモしておきます。
スクリーンショット 2023-12-18 16.05.14.png
パイプラインの画面に戻り、DEPLOYの歯車ロゴをクリックし、ステージの構成をクリックします。
カテゴリーで環境プロパティーに移動し、プロパティーの追加テキスト・プロパティーをクリックします。
スクリーンショット 2023-12-18 16.11.02.png
スクリーンショット 2023-12-18 16.11.24.png
そうすると、新しいプロパティーの行が追加されるので、前のNAMEにはHELM_UPGRADE_EXTRA_ARGSを、には--set ingress.enabled=true,ingress.hosts={dev.INGRESSサブドメイン}を入力します。
設定を完了したら下の保存をクリックします。
スクリーンショット 2023-12-18 16.16.01.png

注意点

  • の最前にハイフン二つ--を必ず含めてください。
    • ハイフンは全角/半角などの区別があるため、もし失敗した場合には変更しながら何回か試してみてください。(私個人はこれでかなり詰まりました。。)
  • Ingressサブドメインの前に、必ずdev.を含めてください。
  • に情報記入する際、括弧{}まで必ず含めてください。

その後、DEPLOYの再生ロゴをクリックし、再度DEPLOYステージが成功することを確認した後、URLタブにdev.INGRESSサブドメインを入力するとWeb上に 「Welcome to IBM Cloud DevOps with Docker, Kubernetes and Helm Charts. Lets go use the Continuous Delivery Service」 とのメッセージが表示されます。
スクリーンショット 2023-12-18 17.12.09.png

2. アプリケーションの変更と更新のデプロイ

次はアプリケーションを少し修正してみたいと思います。
ツールチェーンの概要画面に戻り、リポジトリーのリンクにアクセスすると、新しいタブでリポジトリーが表示されます。
その中から最下端のutils.jsファイルをクリックします。
スクリーンショット 2023-12-18 17.14.13.png
スクリーンショット 2023-12-18 17.15.42.png

ファイルに入ると、先ほどのWebアプリケーションの内容がJavaScript形式で表示されています(赤色)。
こちらの文章を修正することができますが、EditOpen in Web IDEをクリックします。
スクリーンショット 2023-12-18 17.20.28.png

JavaScript画面が表示されたら、メッセージの部分を自由に修正します。今回私は 「こんにちは、IBM Cloudです!」 に修正しました。
修正が完了したら左下のCreate Commit...をクリックします。
スクリーンショット 2023-12-18 17.24.39.png
修正された項目を比較して表示されますが、最終確認後、再度左下のCommitをクリックします。

次の画面でCreate merge requestMergeをクリックします。
スクリーンショット 2023-12-18 17.27.01.png
スクリーンショット 2023-12-18 17.27.57.png

その後、ツールチェーン画面に戻りますと、ステージが最初から走り出していることが確認できます。DEPLOYステージまで成功することを待ちます。
スクリーンショット 2023-12-18 17.29.08.png
スクリーンショット 2023-12-18 17.36.43.png
ステージが成功すると、再度URLにdev.INGRESSサブドメインを入力すると、更新されていることが確認できます。
スクリーンショット 2023-12-18 17.38.38.png

3. 実稼働環境へのデプロイ

もし必要に応じてアプリケーションを開発環境と実稼働環境を分けてデプロイパイプラインを作成するときの流れについても簡単にご紹介します。この方法には複数の方法がありますが、今回はそれぞれ別の名前空間にデプロイする簡単な方法を試しています。

ツールチェーン画面のDEPLOYステージの歯車ロゴステージのクローンをクリックします。
スクリーンショット 2023-12-18 17.43.13.png

ステージ構成画面が表示されたら、タイトルを変更し(例:Deploy prodなど)、ステージ・トリガーをこのステージが手動で実行されたときにのみジョブを実行をクリックします。
また環境プロパティー欄をクリックし、先ほど追加したプロパティーのdevprodに変更します。(例:--set ingress.enabled=true,ingress.hosts={**prod**.INGRESSサブドメイン}
設定が完了したら最下端の保存をクリックします。
スクリーンショット 2023-12-18 17.46.11.png
スクリーンショット 2023-12-18 17.46.56.png

そして、前段階と同様、Deploy prodステージの再生ロゴをクリックし、ステージが成功になることを待ちます。
(成功写真)

再度URL欄にdev.Ingressサブドメインprod.Ingressサブドメインを入力すると、別の環境が作成できたことがわかります。
スクリーンショット 2023-12-18 15.07.47.png
スクリーンショット 2023-12-18 15.07.54.png

4. Slackとの連携

Slackと連携させるためには、ツール選択し統合させる必要があります。
ツールチェーン画面に戻り、右上の追加をクリックし、Slackをクリックします。
スクリーンショット 2023-12-18 18.00.07.png
スクリーンショット 2023-12-18 18.00.22.png

Slackとの統合のために必要な情報(Slack Webhook、Slack チャンネル、Slack チーム名)を入力する必要がありますが、各取得方法は下に記載します。
スクリーンショット 2023-12-18 18.02.18.png

1. Slack Webhook取得方法

まず、Slack Help Centerにアクセスし、着信Webhookの設定手順が記載されています。
スクリーンショット 2022-11-21 16.13.16.png

メッセージを投稿する新しいワークスペースを作成していきます。
「Create a new Slack app」をクリックすると、Slack API画面に移ります。
「Create New App」をクリックし、アプリケーション名やSlackのワークスペースを選択します。
その後、「Create App」をクリックすると作成完了です。
スクリーンショット 2022-11-21 16.16.21.png
スクリーンショット 2023-12-18 18.13.22.png

アプリケーションを作成したら、「Incoming Webhook」ボタンをクリックします。
スクリーンショット 2022-11-21 16.22.25.png
Incoming Webhooks画面で「Activate Incoming Webhooks」offからonに変えます。
すると、変更すると非表示になっていた画面が表示されるので、
下の「Add New Webhook to Work space」をクリックします。
スクリーンショット 2022-11-21 16.28.07.png
投稿先のチャンネルを選択する画面が表示されるので、プルダウンし任意のチャンネルを選択し許可をクリックします。
スクリーンショット 2023-12-18 18.15.48.png

再度Incoming画面に戻り、Webhook URLが作成されたことが確認できます。
スクリーンショット 2022-11-21 16.32.03.png

2. Slack チャンネルの取得

Slack チャンネルは上記選択したチャンネルを選択します。
スクリーンショット 2023-12-18 18.15.48.png

3. Slack チーム名の取得

Slackチーム名はSlackで確認することができます。プロフィールロゴをクリックし、@@@.slack.comのアドレスのうち、slack.com前半部分がチーム名となります。(例:moon.slack.comの場合、moonがチーム名です)
スクリーンショット 2023-12-18 18.24.10.png
スクリーンショット 2023-12-18 18.24.24.png

全ての情報が取得できたら、情報を入力し、統合の作成クリックします。
スクリーンショット 2023-12-18 18.43.14.png

すぐSlackと連携され、通知が飛んできます。一度統合すると、そのあとはツールチェーン・デリバリー・パイプラインが実行されるたびに、構成したチャネルにSlack通知が表示されます。
通知の色などはカスタマイズも可能ですので、試してみてください。
スクリーンショット 2023-12-18 18.37.18.png

2
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
2
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?