ノート:
- このチュートリアルではOracle Cloudへのアクセスが必要です。無料アカウントにサインアップするには、Oracle Cloud Infrastructure Free Tierの開始を参照してください。
- Oracle Cloud Infrastructure資格証明、テナンシおよびコンパートメントの値の例を使用します。演習を完了する場合は、これらの値をクラウド環境に固有の値に置き換えてください。
Kubernetes上のOCI DevOps CI/CDパイプラインを使用してアプリケーションをデプロイ
イントロダクション
Oracle Cloud Infrastructure (OCI) DevOpsサービスは、開発者がソフトウェア開発ライフサイクルを簡略化および自動化するための完全な継続的インテグレーション/継続的デリバリ(CI/CD)プラットフォームです。OCI DevOpsサービスを使用すると、開発者とオペレータは共同でソフトウェアを開発、構築、テストおよびデプロイできます。
目的
- OCI DevOpsビルド・パイプラインの使用方法について学習します。
- KubernetesにCI/CDパイプラインを使用して、シンプルなNodeJsアプリケーションをデプロイします。
前提条件
- パイプライン実行からの重要なイベントのメッセージをDevOpsサービスからこの通知トピックに送信できるように、トピックを作成します。
- アプリケーションをデプロイするContainer Engine for Kubernetesを作成および設定します。
- アプリケーション・イメージをプッシュするためのOCIコンテナ・レジストリを作成します。
- アーティファクトを格納するためのアーティファクト・レジストリを作成します。
- ビルド・パイプラインのロギングを有効にするログ・グループを作成します。
タスク1: OCI DevOpsプロジェクトの設定
-
DevOpsサービスの下の「DevOpsプロジェクトの作成」をクリックします。プロジェクト名を入力し、以前に作成したトピックを選択します。

プロジェクトの作成後、OCI DevOpsサービスで使用可能なオプションのリストが表示されます。

-
「コード・リポジトリ」をクリックし、リポジトリ名を入力します。コード・リポジトリを設定し、リポジトリにアプリケーション・ファイルをアップロードします。

-
NodeJSアプリケーションのDockerイメージを作成し、コード・リポジトリにプッシュするためのDockerfileを作成します。
FROM node:16 # Create app directory WORKDIR /usr/src/app # Install app dependencies COPY package*.json ./ RUN npm install # Bundle app source COPY . . EXPOSE 3000 CMD [ "node", "index.js" ] -
build_spec.yamlという名前のビルド仕様ファイルを作成します。このファイルをリポジトリのルート・ディレクトリにプッシュします。version: 0.1 component: build timeoutInSeconds: 6000 runAs: root shell: bash steps: - type: Command timeoutInSeconds: 1200 name: "Build container image" command: | d ${OCI_WORKSPACE_DIR}/node_app docker build -t myapp:v1.0 . outputArtifacts: - name: myapp-image type: DOCKER_IMAGE location: myapp:v1.0
-
ビルド・パイプラインには、デプロイ前にソフトウェア・アプリケーションを正常にコンパイル、テストおよび実行するためのビルド・プロセスを定義するステージが含まれます。「ビルド・パイプラインの作成」をクリックし、名前を入力します。

-
作成されたビルド・パイプラインで「ステージの追加」をクリックし、「ビルド・ステージの管理」を選択します。
-
ステージ名を入力し、プライマリ・コード・リポジトリを追加します。
-
OCIコード・リポジトリとして接続タイプを選択し、アプリケーション・コードが存在するコード・リポジトリを選択します。
-
「選択」をクリックします。

-
「追加」をクリックします
-
-
「アーティファクトの追加」をクリックします。タイプをコンテナ・イメージ・リポジトリとして指定し、以前に作成されたレジストリの完全修飾パスを指定します。

-
このステージでは、アプリケーション・イメージ・アーティファクトをコンテナ・レジストリにプッシュします。事前に作成されたビルド・パイプラインで、「アーティファクトの配信」タイプの別のステージを追加します。「アーティファクトの選択」をクリックし、作成したアーティファクトを選択します。
-
build_spec.yamlファイルでこのアーティファクト名を指定したため、ビルド構成/結果アーティファクト名をmyapp-imageとして指定します。 -
「追加」をクリックします。

-
-
次のように
manifest.yamlファイルを作成して、アプリケーション・コンテナをKubernetesにデプロイします。このマニフェスト・ファイルを、作成したアーティファクト・レジストリにアップロードします。kind: Namespace apiVersion: v1 metadata: name: default apiVersion: apps/v1 kind: Deployment metadata: name: myapp-deployment namespace: default spec: selector: matchLabels: app: node-app replicas: 2 template: metadata: labels: app: node-app spec: containers: - name: node-app image: iad.ocir.io/orasenatdpltintegration03/demo-registry:latest imagePullPolicy: Always ports: - name: containerport containerPort: 8080 protocol: TCP --- apiVersion: v1 kind: Service metadata: name: myapp-service namespace: default annotations: oci.oraclecloud.com/load-balancer-type: "lb" spec: type: LoadBalancer ports: - name: nodejs-port port: 80 targetPort: 3000 protocol: TCP selector: app: node-app
-
「環境の作成」をクリックします。名前を指定し、「環境の詳細」ページで、アプリケーションをデプロイするOKEクラスタを選択します。

-
このマニフェストをアーティファクトに追加します。「アーティファクトの追加」をクリックし、タイプをKubernetesマニフェストとして選択します。以前に作成されたアーティファクト・レジストリ・リポジトリを選択します。マニフェスト・ファイルをアーティファクトとして選択します。次の図に示すように、フォームに入力します。

-
「デプロイメント・パイプラインの作成」をクリックし、名前を指定します。ステージ・タイプ「Kubernetesクラスタにマニフェストを適用」を追加します。前のステップで作成した環境およびアーティファクトを選択します。

-
作成したビルド・パイプラインに3番目のステージを追加します。ステージ・タイプを「デプロイメントのトリガー」として選択します。ステージ名を指定し、作成されたデプロイメント・パイプラインを選択します。

-
ビルド・パイプラインを開始するには、「ログ」をクリックします。ログが格納されるログ・グループを指定し、「ログの有効化」をクリックします。

-
ビルド・パイプラインを次のイメージに示します。「手動実行の開始」をクリックしてパイプラインを実行します。

パイプラインは正常に実行されました。アプリケーションへのアクセスにLoad Balancerタイプのサービスを使用したため、ロード・バランサが作成されます。アプリケーションにアクセスするには、作成したLoad BalancerのパブリックIPアドレスにアクセスできます。

関連リンク
- DevOpsサービス
- DevOpsサービス・ドキュメント
- Container Engine for Kubernetesの概要
- コンテナ・レジストリの概要
- アーティファクト・レジストリの概要
- ロギングの概要
- トピックおよびサブスクリプションの管理
確認
- 作成者: Nikhil Khandelwal(エンタープライズ・クラウド・アーキテクト)
その他の学習リソース
docs.oracle.com/learnで他のラボをご覧いただくか、Oracle Learning YouTubeチャネルでより無料のラーニング・コンテンツにアクセスしてください。また、education.oracle.com/learning-explorerにアクセスして、Oracle Learning Explorerになります。
製品ドキュメントについては、Oracle Help Centerを参照してください。
Deploy your application using OCI DevOps CI/CD pipeline on Kubernetes
F77637-01
February 2023
Copyright © 2023, Oracle and/or its affiliates.