OKEクラスタへのデプロイ

このステップでは、新しいビルドジョブを作成して、セットアップしたOKEクラスタにアプリケーションをデプロイします。

以下の手順で実行します。

  1. yamlファイルの編集
  2. OKEクラスタにアプリケーションをデプロイするビルドジョブを構成する
  3. ビルドジョブを実行する
  4. デプロイしたアプリケーションを検証する

1. yamlファイルの編集

アプリケーションのデプロイを行うにあたって、Dockerイメージを作成とOCIRへの登録にて 登録したイメージをyamlに設定します。
ハンズオン共通手順で作成したコンピュートインスタンスにログインします。 oke-atp-workshopディレクトリに移動します。
直下にある"oke-atp-helidon.yaml"をviなどで開きます。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
apiVersion: v1
kind: Service
metadata:
  name: oke-atp-helidon
  namespace: default
spec:
  type: LoadBalancer
  ports:
  - port: 80
    protocol: TCP
    targetPort: 8080
  selector:
    app: oke-atp-helidon
---
kind: Deployment
apiVersion: apps/v1
metadata:
  name: oke-atp-helidon
spec:
  selector:
    matchLabels:
      app: oke-atp-helidon
  replicas: 2
  template:
    metadata:
      labels:
        app: oke-atp-helidon
        version: v1
    spec:
      # The credential files in the secret are base64 encoded twice and hence they need to be decoded for the programs to use them.
      # This decode-creds initContainer takes care of decoding the files and writing them to a shared volume from which db-app container
      # can read them and use it for connecting to ATP.
      containers:
      - name: oke-atp-helidon
        image: iad.ocir.io/orasejapan/workshop/okeatpapp:latest
        imagePullPolicy: Always
(以下略)

35行目にpullしてくるイメージのレジストリが設定されています。
この行をDockerイメージを作成とOCIRへの登録にて登録したイメージに設定します。
<リージョンコード>、<オブジェクト・ストレージ・ネームスペース>の部分をご自身の値に書き換えてください。

<リージョンコード>については、OCIRリポジトリへの接続を構成するをご確認ください。
また、イメージ名については、OCIRリポジトリへの接続を構成するにて指定したものになります。

image: <リージョンコード>.ocir.io/<オブジェクト・ストレージ・ネームスペース>/workshop/<ご自身が付与したイメージ名>:latest

次に、サンプルアプリケーションの設定ファイルに定義している接続識別子を変更します。

サンプルアプリケーションの設定ファイルを開きます。

vim src/main/resources/META-INF/microprofile-config.properties 
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#
# Copyright (c) 2018 Oracle and/or its affiliates. All rights reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#

# Application properties. This is the default greeting
app.greeting=Hello

# Microprofile server properties
server.port=8080
server.host=0.0.0.0

javax.sql.DataSource.workshopDataSource.dataSourceClassName=oracle.jdbc.pool.OracleDataSource
javax.sql.DataSource.workshopDataSource.dataSource.url=jdbc:oracle:thin:@sampledb_high?TNS_ADMIN=/db-demo/creds
javax.sql.DataSource.workshopDataSource.maximumPoolSize=5
javax.sql.DataSource.workshopDataSource.minimumIdle=2

# src/main/resources/web in your source tree
server.static.classpath.location=/web
# default is index.html
server.static.classpath.welcome=index.html
# static content path - default is "/"
# server.static.classpath.context=/static-cp

25行目の設定値"javax.sql.DataSource.workshopDataSource.dataSource.url"の値の接続識別子部分"@sampledb_high"をATPのデータベース名に合わせて修正します。
今回は、ATPデータベース名を"tfOKEATPDB"にしているため、以下のように修正します。

jdbc:oracle:thin:@tfokeatpdb_high?TNS_ADMIN=/db-demo/creds

注意事項: トライアル環境以外の環境をお使いの方へ

集合ハンズオンなど同一の環境でハンズオンを実施されている方は、前手順でデータベース名が重複しない様に語尾に任意の文字列(名前のイニシャル等)を追加しておりますので、 そちらのデータベース名に合わせて修正してください。

レポジトリのトップディレクトリに戻り、修正したmanifestをレポジトリにpushします。

cd ~/oke_atp_workshop/
git add .
git commit -m "コンテナレジストリの修正" 
git push

2. OKEクラスタにアプリケーションをデプロイするビルドジョブを構成する

Visual Builder Studioで、「ビルド」に遷移して、「+ジョブの作成」ボタンをクリックします。

下記項目を入力して、「作成」ボタンをクリックします。

  • 名前:ジョブの名前。今回は"OKEDeploy"
  • 説明:ジョブの説明。今回は"Deploy application to OKE"
  • テンプレート:OKE

「Git追加」から「Git」を選択します。

下記項目を入力します。

次のステップを追加します。

  • リポジトリ:oke_atp_workshopを選択する

「ステップ」をクリックします。

「ステップの追加」から「Docker」⇒「Dockerログイン」を選択します。

下記項目を入力します。

  • レジストリ・ホスト:入力したレジストリ名を選択する。今回は"WorkshopOCIR"

「ステップの追加」から「OCIcli」を選択します。

下記項目を入力します。

  • ユーザーOCID:ユーザーOCID
  • フィンガープリント:API Signingキーのフィンガープリント
  • テナンシ:テナントOCID
  • 秘密キー:API秘密鍵
  • リージョン:リージョン識別子。自身の環境に合わせて選択。今回は、"us-ashburn-1"

「ステップの追加」から「UNIXシェル」を選択します。

下記項目を入力します。

2行目の<OKEクラスターOCID>と<リージョン識別子>は自身の値に置き換えてください。

mkdir -p $HOME/.kube
oci ce cluster create-kubeconfig --cluster-id <OKEクラスターOCID> --file $HOME/.kube/config --region <リージョン識別子> --token-version 2.0.0
export KUBECONFIG=$HOME/.kube/config
kubectl version
kubectl config view
kubectl get nodes
kubectl apply -f oke-atp-helidon.yaml
kubectl rollout restart deployment/oke-atp-helidon
kubectl get services oke-atp-helidon
kubectl get pods
kubectl describe pods

リージョン識別子について

この手順で設定するリージョン識別子については、OKEをプロビジョニングしたリージョンのリージョン識別子を使用してください。

「保存」ボタンをクリックします。

3.ビルドパイプラインの設定

Visual Builder Studioで、「ビルド」に遷移して、「Pipelines」タブをクリックします。

「Create Pipeline」ボタンをクリックします。

以下の項目を入力し、「Create」ボタンをクリックします。

  • Name:DeployToOKE
  • Description:DeployToOKE

画面左側の「JavaDockerOCIR」と「OKEDeploy」をドラッグ&ドロップし、下記の図のように並べます。

「Start」から「JavaDockerOCIR」、「JavaDockerOCIR」から「OKEDeploy」をそれぞれドラッグし、パイプラインを作成します。
その後、「Save」ボタンをクリックします。

これで、ビルドパイプラインの作成は完了です。

4. ビルドジョブを実行する

Visual Builder Studioで、「ビルド」に遷移して、「JavaDockerOCIR」をクリックします。

「今すぐビルド」ボタンをクリックします。

成功すると、ステータスがになります。

「ビルド・ログ」をクリックします。

成功すると、"Status:DONE Result:SUCCESSFUL"が表示されます。

5. デプロイしたアプリケーションを検証する

kubectl get serviceでOKEクラスタのワーカーノードのパブリックIP(EXTERNAL-IP)を確認します。

NAME        STATUS   ROLES   AGE   VERSION   INTERNAL-IP   EXTERNAL-IP       OS-IMAGE                  KERNEL-VERSION                   CONTAINER-RUNTIME
10.0.24.2   Ready    node    1d    v1.13.5   10.0.24.2     xxx.xxx.xxx.xxx   Oracle Linux Server 7.6   4.14.35-1902.2.0.el7uek.x86_64   docker://18.9.1

Webブラウザを起動し、http://パブリックIPにアクセスしてみましょう。

Webアプリケーションが表示されたら成功です。

これで、アプリケーションをOKEへのデプロイは完了しました。

続いて アプリケーションの再デプロイ に進んでください。