ノート:

Kubernetes上のOCI DevOps CI/CDパイプラインを使用してアプリケーションをデプロイ

イントロダクション

Oracle Cloud Infrastructure (OCI) DevOpsサービスは、開発者がソフトウェア開発ライフサイクルを簡略化および自動化するための完全な継続的インテグレーション/継続的デリバリ(CI/CD)プラットフォームです。OCI DevOpsサービスを使用すると、開発者とオペレータは共同でソフトウェアを開発、構築、テストおよびデプロイできます。

目的

前提条件

タスク1: OCI DevOpsプロジェクトの設定

  1. DevOpsサービスの下の「DevOpsプロジェクトの作成」をクリックします。プロジェクト名を入力し、以前に作成したトピックを選択します。

    DevOpsプロジェクトの作成

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

    DevOpsサービス・リスト

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

    作成コード・リポジトリ

  3. 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" ]
    
    
  4. 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
    
    

    ビルド仕様

  5. ビルド・パイプラインには、デプロイ前にソフトウェア・アプリケーションを正常にコンパイル、テストおよび実行するためのビルド・プロセスを定義するステージが含まれます。「ビルド・パイプラインの作成」をクリックし、名前を入力します。

    ビルド・パイプライン

    1. 作成されたビルド・パイプラインで「ステージの追加」をクリックし、「ビルド・ステージの管理」を選択します。

    2. ステージ名を入力し、プライマリ・コード・リポジトリを追加します。

    3. OCIコード・リポジトリとして接続タイプを選択し、アプリケーション・コードが存在するコード・リポジトリを選択します。

    4. 「選択」をクリックします。

      ステージの追加

    5. 「追加」をクリックします

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

    アーティファクトの追加

  7. このステージでは、アプリケーション・イメージ・アーティファクトをコンテナ・レジストリにプッシュします。事前に作成されたビルド・パイプラインで、「アーティファクトの配信」タイプの別のステージを追加します。「アーティファクトの選択」をクリックし、作成したアーティファクトを選択します。

    1. build_spec.yamlファイルでこのアーティファクト名を指定したため、ビルド構成/結果アーティファクト名をmyapp-imageとして指定します。

    2. 「追加」をクリックします。

      アーティファクトの配信

  8. 次のように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
    
    

    マニフェスト・ファイルの作成

  9. 「環境の作成」をクリックします。名前を指定し、「環境の詳細」ページで、アプリケーションをデプロイするOKEクラスタを選択します。

    環境の作成

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

    アーティファクトへのマニフェストの追加

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

    デプロイメント・パイプラインの作成

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

    デプロイメント・パイプラインの追加

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

    ログの有効化

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

    パイプラインの開始

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

成功パイプライン

確認

その他の学習リソース

docs.oracle.com/learnで他のラボをご覧いただくか、Oracle Learning YouTubeチャネルでより無料のラーニング・コンテンツにアクセスしてください。また、education.oracle.com/learning-explorerにアクセスして、Oracle Learning Explorerになります。

製品ドキュメントについては、Oracle Help Centerを参照してください。