LoginSignup
4
1

More than 1 year has passed since last update.

OCI DevOps で Oracle Functions の CI/CD - 事前準備編

Last updated at Posted at 2021-12-04

はじめに

こちらの記事は、Oracle Cloud Infrastructure Advent Calendar 2021 Day 5 の記事として書かれています。カレンダー 2 の 3 日目に OracleCloudでJenkinsCI/CDデプロイ環境作成という記事がありましたが、私の方では OCI Native な CI/CD サービスについて書きたいと思います。
OKE の方はきっと誰かが書いてくれることを信じて私の方では Oracle Functions に特化した内容で書きます。内容が結構ボリューミーになりそうなので全 2 回に分けて書こうと思います。

2022/01/19 追記: Oracle Cloud Infrastructure(OCI) DevOpsことはじめ
OCI Tutorials に DevOps & OKE のハンズオンが追加されたので、OKE で同様の事を実施したい場合はこちらをご参照ください。

  1. 事前準備編 ← 本記事はこれ
  2. ビルド、デプロイメント・パイプライン作成編

本記事は、事前準備編です。

今回作る環境

全 2 回を通してこのような環境を作ってみます。

image01.png

ソースコード本体は、コミュニケーション機能(Issue, Wiki, etc.)が充実している GitHub, GitLab で管理し、バックアップを取るためにソースコードを Code Repository へミラーリングする実際の開発現場でよく取られそうな構成です。

実際に作ってみる

前提

以下の前提で書いていきたいと思います。

  • DevOps サービスを使用する前提条件を満たしていること
    • テナンシへのアクセス権を有していること、ポリシー関連の設定が完了していること
  • GitHub/GitLab のアカウントを有していること
    • 本記事では、GitHub 前提で書きますが GitLab でも読み替えれば同じように実施可能です
  • Fn CLI, Oracle Functions のセットアップが済んでいること

GitHub 側の設定

Personal Access Token(PAT)を発行する

OCI DevOps から作成した外部リポジトリ(GitHub)へアクセスするために Personal Access Token(以下、PAT)を発行します。GitHub で、Settings > Developer settings > Personal Access Token とアクセスし、Generate new token をクリックします。

image02.png

以下のように設定し、PAT を発行します。

  • Note: OCI DevOps
  • Expiration: No expiration
    • 簡易的に無期限に設定していますが、気になる方は適当な期限に設定すると良いでしょう
  • Select scopes: repo にチェック

image03.png

発行されると、トークンの文字列が表示されるのでメモ帳などに控えておきます。(再度表示されないので、コピーし忘れた方は再発行してください)

image04.png

これで、GitHub 側の設定は完了です!

OCI 側の設定

OCI Vault に PAT と認証トークンを格納する

事前の手順までに生成した PAT を OCI Vault のシークレットに格納します。OCI コンソール左上のハンバーガーメニューからアイデンティティとセキュリティ > ボールトと選択します。

image07.png

ボールトの作成をクリックし、以下のように入力して、Vault を新規に作成します。

  • 名前: devops-vault
    • 便宜上名前を定めているだけなので、自由に命名してください

image08.png

作成が完了したら、ボールトの詳細画面からマスター暗号キーを作成します。リソースからマスター暗号化キーを選択し、キーの作成をクリックします。

image09.png

以下のように入力し、マスター暗号化キーを作成します。

  • 保護モード: HSM
  • 名前: devops-master-key
  • キーのシェイプ - アルゴリズム: AES
  • キーのシェイプ - 長さ: 256 ビット

次に、ボールトの詳細画面からシークレットを作成します。リソースからシークレットを選択し、シークレットの作成をクリックします。

image10.png

以下のように入力し、シークレット(github_pat)を作成します。

github_pat:

  • コンパートメント: 任意のコンパートメント(OCI DevOps や Oracle Functions のリソースが含まれているコンパートメント)
  • 名前: github_pat
  • 暗号化キー: 前述の手順で作成したマスター暗号化キー(devops-master-key)を選択する
  • シークレット・タイプのテンプレート: プレーン・テキスト
  • シークレット・コンテンツ: 発行済みの PAT(Personal Access Token)を入力する

image12.png

これで、今回使用する Vault の設定は完了です。

OCIR にリポジトリを作成する

ビルドした関数コードの Docker Image が格納されるリポジトリを OCIR に作成します。OCI コンソール左上のハンバーガーメニューから開発者サービス > コンテナ・レジストリと選択します。

image13.png

リポジトリの作成をクリックし、以下のように入力し新規にリポジトリを作成します。

  • コンパートメント: 任意のコンパートメント(OCI DevOps や Oracle Functions のリソースが含まれているコンパートメント)
  • リポジトリ名: devops/fn-hello
  • アクセス: プライベート

image14.png

これで、OCIR の設定は完了です。

Oracle Functions のアプリケーションを作成する

関数コードの管理単位であるアプリケーションを作成します。OCI コンソール左上のハンバーガーメニューから開発者サービス > アプリケーションと選択します。

image15.png

以下のように入力し、新規にアプリケーションを作成します。

  • 名前: devops-app
  • VCN: 作成済みの VCN
  • サブネット: 作成済みのサブネット

image16.png

これでアプリケーションの作成は完了です。

Notifications の設定をする

OCI DevOps では、プロジェクト作成時に通知を行う、行わないに関わらず Notifications の Topic を設定する必要があります。作成方法は、OCI Tutorials - モニタリング機能で OCI リソースを監視するに詳しく書いてあるので、そちらをご参照下さい。

デプロイする関数コード

デプロイする関数コードを作成します。ここでは、単純に "Hello world!" の文字列を返す関数コードとします。

fn init --runtime java11 fn-hello

デプロイする。

fn deploy --app devops-app

実行する。

fn invoke devops-app fn-hello

"Hello, world!" という文字列が返ってくれば完了です。

リポジトリを作成する

Oracle Functions にデプロイする関数コードを管理するリポジトリを GitHub に作成します。名前は何でも良いですが、本記事では、便宜上fn-examplesという名前で進めていきます。ここに先ほど作成した関数コードを含めてください。手順は省略しますが、こんなイメージです。

./fn-examples
└── fn-hello
    ├── build_spec.yaml // OCI DevOpsの設定ファイル(後述の手順で作成)
    ├── func.yaml // Oracle Functions(Fn Project)の設定ファイル
    ├── pom.xml
    └── src

終わりに

これで OCI DevOps を使用するための環境が整ったので、別エントリにてビルド、デプロイメントパイプラインを作成していきます。

参考

4
1
4

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
4
1