ノート:

GitLab CI/CDからOCI Container Engine for Kubernetesにデプロイ

イントロダクション

DevOpsとクラウドネイティブ開発の急速に進化する状況では、バージョン管理システムとコンテナ・オーケストレーション・プラットフォーム間の合理化された統合の必要性が重要になる可能性があります。Oracle Cloud Infrastructure Container Engine for Kubernetes(OKE)は、コンテナ化されたアプリケーションを管理するための堅牢でスケーラブルなソリューションを提供します。ただし、一部のチームには、Oracle Cloud Infrastructure (OCI)ネイティブのDevOpsサービスの代替案を探すための特定のプリファレンスおよび要件がある場合があります。

GitLabは、汎用的で包括的なバージョン管理と継続的インテグレーションおよび継続的デリバリ/デプロイメント(CI/CD)プラットフォームであり、これらのプリファレンスを満たすだけでなく、OCI DevOpsサービスの魅力的な代替機能も提供します。このチュートリアルでは、GitLabをOracle Cloud Infrastructure Container Engine for Kubernetes (OKE)にシームレスに接続するプロセスを順を追って説明します。このチュートリアルで示す統合は、既存のGitLabソリューションを使用するように整列するだけでなく、バージョン管理、継続的インテグレーションおよびKubernetesオーケストレーションのための統合ソリューションをチームに提供します。

後続の項では、この統合を行うための2つの異なるアプローチを紹介します。

目的

前提条件

アプローチ1: 短期間で生成されたトークンを使用して、GitLab CI/CDからOKEにデプロイ

タスク1: OCIコンピュート・インスタンスの準備

仮想マシン(VM)など、GitLabランナーのOCIコンピュート・インスタンスが必要になります。

OCIコンピュート・インスタンス

  1. VMにkubectlをインストールします。詳細は、Linuxでのkubectlのインストールおよび設定を参照してください。

  2. OCI CLIをインストールし、OCIテナンシへの認証用の構成ファイルを作成します(または、クラスタ・アクセス・ステップの実行時に作成するよう求められます)。詳細は、OCI CLIのインストールおよびSDKおよびCLIの構成ファイルを参照してください。

  3. OKEクラスタへのアクセスを設定します。「クラスタへのアクセス」に移動し、OCIコンソールから「ローカル・アクセス」の手順をクリックします。

    OCI OKEアクセス・クラスタ

  4. VMにGitLabランナーをインストールします。rootユーザーで次のコマンドを実行します。

    sudo curl -L https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.rpm.sh | sudo bash
    sudo yum install -y gitlab-runner
    

    GitLab Runnerの動作を確認します。

    gitlab-runner list
    

タスク2: GitLabランナーおよびプロジェクトの構成

  1. GitLabにログインし、「プロジェクト」に移動して新しいプロジェクトを作成するか、既存のプロジェクトを使用します。

    GitLabプロジェクト

  2. ランナーを作成するか、既存のランナーを使用します。新しいランナーを作成するには、「設定」「CI/CD」「ランナー」および「展開」に移動します。「新規プロジェクト・ランナー」をクリックし、「プラットフォーム」(Linuxなど)を選択し、デプロイ・パイプラインの構成時に後で.gitlab-ci.yamlファイルで使用するタグを追加して、「ランナーの作成」をクリックします。

    GitLabランナー

  3. VMにランナーを登録します。

    ノート:後で必要な場合は、ランナー認証トークンをノートにとります。

    ランナーの登録

    • gitlab-runner registerコマンドを実行し、次の情報を入力します。

      • GitLabインスタンスURL: デフォルト値のhttps://gitlab.comを受け入れます。
      • ランナー名: config.tomlファイルでローカルに有効です。たとえば: gitlab-oke-runner
      • エグゼキュータの入力: shell。この値を使用して、kubectlおよびOCI CLIがインストールされているローカル・マシンでCI/CD命令を実行することを選択します。

      ランナーの登録

    • ランナー構成は、ファイル$HOME/.gitlab-runner/config.tomlで確認できます。

タスク3: CI/CDパイプラインの設定

  1. GitLabプロジェクトをローカル・マシンにクローニングします。

  2. ビルドおよびデプロイ手順を含む.gitlab-ci.yamlという名前のファイルをプロジェクト・ディレクトリに作成します。「デプロイ」セクションで、ランナーの作成時に設定したランナー・タグを必ず含めてください。

    $ cat ~/demo-oke/.gitlab-ci.yml
    stages:
      - build
      - deploy
    
    build_job:
      stage: build
      script:
        - echo "Building the ServiceAccount project..."
    
    deploy_job:
      stage: deploy
      script:
        - echo "Deploying an nginx pod to the OKE cluster"
        - kubectl run nginx --image=nginx
      tags:
        - shell-executor
    
  3. 変更をGitLabプロジェクトにプッシュし、「ビルド」および「ジョブ」に移動して、ビルド・パイプラインおよびデプロイ・パイプラインがトリガーされて正常に実行されていることを確認します。

    CICDパイプライン

    ジョブのデプロイ

    パイプラインは、OKEクラスタにnginxポッドをデプロイしました。

    ノート:タグとキーをノートにとります。ローカル・マシン・リソースを使用するシェル・エグゼキュータを選択します。それ以外の場合は、たとえばDockerを選択した場合は、kubectl (およびアプローチ1のOCI CLI)をコンテナにインストールするイメージを指示で指定する必要があります。

    $ kubectl get pods
    NAME    READY   STATUS    RESTARTS   AGE
    nginx   1/1     Running   0          47h
    

アプローチ2: Kubernetesサービス・アカウントを使用したGitLab CI/CDからOKEへのデプロイ

アプローチ1からタスク1、2および3を繰り返して、ローカルVMの設定(kubectl、OCI CLI、GitLab Runnerのインストール)、ランナーの登録、パイプライン・ファイル.gitlab-ci.yamlの作成を行います。

タスク1: Kubernetesサービス・アカウントの作成およびトークンの追加

Kubernetesサービス・アカウントを使用してGitLabからOKEにデプロイする場合、プロセスでは、サービス・アカウント資格証明を使用してKubernetesクラスタでGitLabを認証します。

次のステップ

これらのタスクを使用すると、GitLab CI/CDパイプラインを使用してOKEにデプロイできます。これらのタスクは、他のCI/CDツールのリファレンスとして使用できます。この統合により、継続的な統合と配信が容易になり、OKEへのアプリケーションの迅速な反復およびデプロイメントが可能になります。

このチュートリアルでは、シェル・エグゼキュータを使用して、直接シナリオをテストおよび処理します。または、Dockerエグゼキュータなど、別のエグゼキュータを選択できます。このような場合、パイプラインはローカル・マシンではなくDockerコンテナ内で実行されます。Dockerエグゼキュータで実行するには、必要なユーティリティを含むDockerイメージを指定する必要があります。そのため、特定のパイプライン要件を満たすには、kubectlやOCI CLIなどのツールを組み込むことで、カスタム・イメージの作成が不可欠になる場合があります。

承認

その他の学習リソース

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

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