Upgrade to Pro — share decks privately, control downloads, hide ads and more …

OCIコンテナサービス関連の技術詳細 /oke-ocir-details

OCIコンテナサービス関連の技術詳細 /oke-ocir-details

Oracle Infrastructure(OCI)のサービスの技術資料です。

oracle4engineer

January 23, 2023
Tweet

More Decks by oracle4engineer

Other Decks in Technology

Transcript

  1. この資料でお話すること Oracle Container Engine for Kubernetes(OKE) • クラスタの構築⽅法 • OKEのネットワーク関連(アプリケーションの公開、

    CNI) • OKEの永続化(ファイルストレージ、ブロックボリューム) • OKEでの他サービス管理(Service Operator) • OKEのスケーリング(HPA/VPA/Cluster Autoscaling) • OKE(API Server)へのアクセス制御 Oracle Cloud Infrastructure Registry(OCIR) • OCIRの操作⽅法 • OCIRにおけるイメージ保持ポリシー • Oracle Cloud Infrastructure Registry(OCIR)の署 名/検証/脆弱性スキャン 4 Copyright © 2023, Oracle and/or its affiliates |
  2. Oracle Container Engine for Kubernetes (OKE) ▪ ユースケース 迅速なコンテナプリケーションのデプロイと可⽤性の⾼い Kubernetesプラットフォームの実現、コンテナアプリケーション運⽤

    管理の省⼒化 ▪ 特徴 • Oracle Databaseなど他のOCI周辺サービスとの親和性による 効率的なコンテナアプリケーション環境構築の実現 • OCI Service Operator for Kubernetesを利⽤した周辺 サービスの効率的な運⽤管理 • 仮想サーバ(VM)だけではなく、ベアメタルサーバ、GPUや HPCなどを利⽤し、多彩なワークロードを実現 ▪ 価格 無料 (※Compute/Block Volume/Network/Load Balancerなど のIaaSサービス)利⽤分のみ課⾦) 5 Copyright © 2023, Oracle and/or its affiliates | ⾼可⽤性と開発⽣産性を両⽴するKubernetesプラットフォーム Service Operator Autonomous Database Object Storage Container Engine For Kubernetes Container Engine For Kubernetes Virtual Machine Container Registry Functions MySQL Database Service OCI-DevOps Streaming Load Balancer ワークロード 運⽤監視 Logging Monitoring Application Performance Monitoring Notifications OCI Service Mesh
  3. Oracle Container Engine for Kubernetes(OKE)の構築 – クイック作成 – クイック作成 •

    必須の⼊⼒項⽬はたったの5つ︕︕ • クラスタ名 • Kubernetesバージョン • v1.25.4/v1.24.1/v1.23.4から選択(2023/1現在) • Worker Nodeの可視性/Kubernetes APIエンドポイントの 可視性 • プライベート: Private Subnet上に構築 • パブリック: Public Subnetに構築 • シェイプ • VM/BM/GPU/HPCから選択可(CPU数とメモリ量をカ スタマイズ可能なflexible shapeもサポート) • ノード数(デフォルト:3ノード) • (option)ボリュームサイズ • デフォルト:50GB(最⼤32TBまで) • SSH公開キー(Worker NodeにSSHログイン可能) 6 Copyright © 2023, Oracle and/or its affiliates | 関連リソース(ネットワーク等)は⾃動⽣成!!
  4. Oracle Container Engine for Kubernetes(OKE)の構築 – カスタム作成 – カスタム作成 •

    クイック作成に加えて、さらに詳細な項⽬を設定可能(⼀部 抜粋) • ネットワーク・タイプ(いずれかを選択) • Native Pod Networking(OCI CNI) • Flannel • etcdの暗号化 • OCI Vault Keyから暗号化キーを選択 • コンテナイメージの検証有無 • VCN(仮想ネットワーク)の設定(PodやServiceのCIDR 含) • OSイメージの選択 • 可⽤性ドメイン/障害ドメインの配置設定 • Node削除時のcordon/drain設定 • cloud-initスクリプト • Capacity Reservation利⽤有無 7 Copyright © 2023, Oracle and/or its affiliates |
  5. Oracle Container Engine for Kubernetes(OKE)におけるネットワーク関連 OKEでのアプリケーションの外部公開 • Serviceリソースのtype: Load BalancerとしてOCI

    Load Balancer(Network Load Balancer含)を利 ⽤可能(TCP/HTTP) • 指定可能なオプションは以下。(⼀部を抜粋) • HTTPSリスナーの利⽤ • Load Balancerの帯域幅の選択 (10Mbps/100Mbps/400Mbps/8000Mbps) • LBの種類(LB/NLB)やプロトコル(HTTP/TCP)… • Ingress ControllerとしてNGINX Ingress Controller for Kubernetesを利⽤することも可能 OKEでのCNI(Container Network Interface) • CNIプラグインとしてはNative Pod Networking(OCI CNI)かFlannelを選択 • Network Policyを利⽤する場合はCalicoを利⽤ 8 Copyright © 2023, Oracle and/or its affiliates | 利⽤可能なオプションは 「metadata.annotation」 配下に指定
  6. Oracle Container Engine for Kubernetes(OKE)における永続化 Block VolumeをPersistent Volumeとして利⽤ • OKEにbuild-inされているCSI(Container

    Storage Interface)である”oci-bv”を利⽤してプロビジョニング 可能 • プロビジョニングはPersistent Volume Claim(PVC)を 作成するだけ • 50GBからプロビジョニング可能 FSSをPersistent Volumeとして利⽤ • OKEにbuild-inされているCSI(Container Storage Interface)である”oci-bv”を利⽤してプロビジョニング可能 • 予めStorageClassを作成しておく • 利⽤時はPersistent Volume Claim(PVC)を作成 9 Copyright © 2023, Oracle and/or its affiliates |
  7. Oracle Container Engine for Kubernetes(OKE)での他サービス管理 Service Operatorによるサービスカタログ管理 • https://github.com/oracle/oci-service- operator

    • 以下のOCIサービスを管理可能 • Autonomous Database(ATP/ADW) • Streaming • MySQL Database Service(MDS) • OCI Service Mesh • OLM(Operator Lifecycle Manager)でインス トール • 各サービスのライフサイクルもサポート • Ex) Autonomous Database • プロビジョニング • 既存Autonomous Databaseへのバインド • アップデート 10 Copyright © 2023, Oracle and/or its affiliates | ATPプロビジョニング時のパラメータ(⼀部)
  8. Oracle Container Engine for Kubernetes(OKE)でのスケーリング HPA(Horizontal Pod Autoscaling) • HPAを有効にするためにはメトリクスサーバのインストー

    ルが必要 HorizontalPodAutoscalerリソースの作成 • 基本的に以下の項⽬を設定 • targetAverageUtilization(ターゲットになる CPU/メモリ使⽤率) • minReplicas(スケール時のPodの最⼩数) • maxReplicas(スケール時のPodの最⼤数) VPA(Vertical Pod Autoscaling) • VPAを有効にするためにはメトリクスサーバのインストー ルが必要 • 必要なコンポーネントのインストール • https://github.com/kubernetes/autoscaler /tree/master/vertical-pod-autoscaler • 基本的にはResource Request を実績値から判断し、 ⾃動で調整する仕組み Cluster Autoscaling(CA) • OKEのプロビジョニング後に⼿動でCluster Autoscaling⽤のPodをデプロイ • ノードプール毎にスケールルールを設定することで 利⽤可能 11 Copyright © 2023, Oracle and/or its affiliates | [opc@oke-client ~]$ kubectl apply -f https://github.com/kubernetes-sigs/metrics- server/releases/download/vx.x.x/components.yaml
  9. Oracle Container Engine for Kubernetes(OKE)へのアクセス OCI IAMを利⽤したアクセス制御 • KubernetesのRBAC Authorizer機能とOCI

    IAMを 連携させることでOCIユーザおよびグループを利⽤して OKEへのアクセス制御を実施可能 • manifestおよびkubectlコマンド上でユーザOCID またはグループOCIDで指定 • Ex)新しいユーザ/グループにPodの読み取り権限 を追加する場合 • ユーザの作成 • グループへユーザを追加 • OKEクラスタ⾃体の操作権限を付与(ポリシー) • Roleの作成 • RoleBindingの作成 • OCI Auditを利⽤したAPI Serverに対するログ監査や トラブルシューティング 12 Copyright © 2023, Oracle and/or its affiliates | 対象を⼀意に識別するID (ユーザOCID/グループOCID) この例ではユーザOCIDを指定
  10. Oracle Cloud Infrastructure Registry (OCIR) ▪ ユースケース DockerやKubernetesで使⽤するコンテナ・イメージをセキュアに 保管、安全性/信頼性の⾼いコンテナイメージの配信 ▪

    特徴 • 単⼀のコンテナイメージ(タグ)でOSやCPUアーキテクチャに 依存しない保管を実現(マルチアーキテクチャ対応) • 保管しているコンテナイメージの定期的な脆弱性スキャンや 署名/検証によるセキュアなイメージの維持を実現 • イメージ保持ポリシーの適⽤による意図しないレジストリサイ ズの増⼤防⽌や最新のコンテナイメージの維持を実現 ▪ 価格 無料 (※Object Storage/Network利⽤分のみ課⾦) 13 Copyright © 2023, Oracle and/or its affiliates | コンテナ・イメージを管理するプライベート・レジストリ Virtual Machine Container Engine For Kubernetes Container Registry Container Registry 古いイメージの削除 脆弱性スキャン イメージ署名/検証
  11. Oracle Cloud Infrastructure Registry(OCIR)の操作⽅法 Oracle Cloud Infrastructure Registry(OCIR)の 操作 •

    Docker Registry HTTP API v2準拠 • 通常のdockerコマンドで操作可能 • docker login • docker pull • docker push • マルチアーキテクチャイメージをサポート • 単⼀のコンテナイメージで複数のOS/CPUアーキ テクチャに対応可能 • 認証はAPIトークンベース • docker login時は各リージョンコードを指定 • Ex) 東京リージョンの場合 • docker login nrt.ocir.io • コンパートメントによるアクセス制御が可能 14 Copyright © 2023, Oracle and/or its affiliates |
  12. Oracle Cloud Infrastructure Registry(OCIR)のイメージ保持ポリシー OCIRのイメージ保持ポリシー • グローバルのポリシーとそれを上書きするオーバライドポ リシーの2種類 • グローバルポリシー

    • レジストリに存在する全イメージに適⽤ • 指定した⽇数の間にpullされなかったイメージの削 除 • 指定した⽇数の間にタグ付けされなかったイメージの 削除 • 除外タグにより例外設定も可能 • オーバライドポリシー • グルーバルポリシーに対して優先実⾏ • ルール設定はグローバルポリシーと同様 • 1時間毎にポリシーに沿ってレジストリにチェックが実施 され、イメージを保持 15 Copyright © 2023, Oracle and/or its affiliates | 上書き
  13. Oracle Cloud Infrastructure Registry(OCIR)の署名/検証/脆弱性スキャン OCIRイメージ署名/検証 • OCI Vault機能を利⽤して、OCIRにプッシュしたイメー ジに対する署名と検証が可能 •

    第三者による意図しないイメージの変更を防⽌ (悪意を持ったイメージ変更も含む) • OKE側では、イメージの検証を⾏い、検証が成功した イメージのみを利⽤することを強制することが可能 OCIRの脆弱性スキャン • Common Vulnerabilities and Exposures(CVE) データベースで公開されているセキュリティの脆弱性に 基づいて、イメージをスキャン • リスクレベルとその詳細を表⽰ • CVEデータベースへのリンクも確認可能 16 Copyright © 2023, Oracle and/or its affiliates |
  14. OCIコンテナ関連サービスのまとめ Oracle Container Engine for Kubernetes(OKE) • クイック作成とカスタム作成の2種類の作成⽅法 • クイック作成は少しのパラメータを⼊⼒するだけで、関連

    リソースを⾃動⽣成 • カスタム作成は、cloud-initスクリプトやNodeの配置先 ドメイン設定など、より細やかな設定が可能 • OCI LBとNative Pod Networking/flannelを利⽤したネッ トワーク管理 • Serviceを利⽤したOCI Load Balancerのプロビジョニング(オ プションも豊富) • Ingress Controllerによるより⾼度な管理 • OCI FSSとBlock VolumeをPV(永続化領域)として利⽤ • OCI IAMによるアクセス制御とOCI Auditでのログ監査 • OCI Service Operatorによるサービス管理 • HPA/VPA/Cluster Autoscalingを利⽤した柔軟なオート スケール実装 Oracle Cloud Infrastructure Registry(OCIR) • Docker Registry HTTP API v2準拠、マルチアーキ テクチャイメージに対応したプライベート・コンテナレジス トリ • イメージ保持ポリシーを利⽤した柔軟なコンテナイメー ジの管理 • コンテナイメージの署名/検証や脆弱性スキャンを利 ⽤したセキュアなイメージの維持 17 Copyright © 2023, Oracle and/or its affiliates |
  15. Copyright © 2023, Oracle and/or its affiliates | 19 本番環境

    Frontend App1 Backend App1(API) Backend App1 (Data Source) Management System Autonomous Database Database System Streaming Object Storage File Storage API GW Functions ユーザ ユーザ Load Balancer Fast Connect お客様 環境 凡例 パブリック通信(REST/HTTP(S)など) プライベート通信(Service GW/ Fast Connectなど) ステージング環境 開発環境 Private Node Pool Private Node Pool NamespaceA NamespaceC Load Balancer NamespaceB ingress-nginx nginx- ingress- controller Load Balancer Load Balancer Frontend App2 Backend App2(API) Backend App2 (Data Source) Frontend App3 Backend App3(API) Backend App3 (Data Source) Frontend App4 Backend App4(API) Backend App4 (Data Source) frontend- ingress-B backend- ingress-A backend- ingress-B frontend- ingress-A /frontendapp1 /frontendapp2 /frontendapp3 /frontendapp4 /backendapp1 /backendapp2 /backendapp3 /backendapp4 /okefss1 /okefss2 /okefss3 /okefss4
  16. Copyright © 2023, Oracle and/or its affiliates | 20 2つのノードプールから構成

    • ⼀つは顧客向けシステム、もう⼀つは管理システム • 今回は顧客向けシステムにフォーカス 顧客向けシステム2つのコンポーネントから成る • 全コンポーネントの共通条件 • OCIRのクレデンシャルはSecretとしてOKEで管理 • 各Namespace毎にユーザの操作スコープを制限 • フロントエンドアプリ • フロントエンドアプリはLoad Balancer経由で外部からGUIアクセス可能 • Load Balancerは1つをプロビジョニングし、Ingress経由で各フロントエンドにルーティング • バックエンドAPI • フロントエンドもしくはAPI Gateway経由でAPIアクセス可能 • API Gateway=>Private Load Balancer=>APIの流れ • Load Balancerは1つをプロビジョニングし、Ingress経由で各バックエンドAPIにルーティング • バックエンドAPIは、それぞれファイルストレージを共有ストレージとして利⽤ • ログファイルやWebコンテンツを配置 • 各Podから読み書き可能 • 必要に応じてObject Storage(Service GW経由)やOracle Functionsを利⽤ • データ管理アプリ • バックエンドAPIからアクセス可能 • ADB/DBCS/Streamingに対してデータの登録や取得を実施 • ADBはWallet(接続情報)、認証情報(ユーザ名、パスワード)をSecretとしてOKEで管理 • StreamingはAPI tokenをSecretとしてOKEで管理 想定ユースケース(全体像)
  17. Copyright © 2023, Oracle and/or its affiliates | 21 運⽤要件

    • ストレージはPV(SC)をストレージ管理者が管理し、PVCをアプリケーション開発者が管理。 • Roleはシステム管理者、ストレージ管理者、アプリケーション開発者(顧客システム(システムA))、アプリケーション開発者(顧客システム(シス テムB))、アプリケーション開発者(管理システム)を想定。それぞれの権限は以下とする • システム管理者 • 顧客システム、管理システムともに全てのリソースを管理できる権限を付与 • ストレージ管理者 • 顧客システム、管理システムで利⽤するストレージについて、SCとPVを管理する権限を付与 • アプリケーション開発者が無闇にストレージを作成したり、不適切なストレージにアクセスすることを防ぐ • アプリケーション開発者(顧客システム(システムA)) • 該当するNamespaceにおいて、OKE(Kubernetes)における各リソースを操作できる権限を付与。具体的に以下のリソースを想定。 • Pod/ReplicaSet/Deployment/Service/Ingress/PVC/ConfigMap/Secret • アプリケーション開発者(顧客システム(システムB)) • 該当するNamespaceにおいて、OKE(Kubernetes)における各リソースを操作できる権限を付与。具体的に以下のリソースは想定。 • Pod/ReplicaSet/Deployment/Service/Ingress/PVC/ConfigMap/Secret • アプリケーション開発者(管理システム) • 該当するNamespaceにおいて、OKE(Kubernetes)における各リソースを操作できる権限を付与。今回は対象外。 想定ユースケース(概要)
  18. コンテナアプリケーション以外のリソースのManifest記載例 ここから記載する対象のリソース/Manifest • Namespace • Role • RoleBinding • Secret

    • Configmap • Storage(StorageClass/PersistentVolumeClaim) • Ingress 22 Copyright © 2023, Oracle and/or its affiliates | 永続化領域の設定 L7ロードバランサー/パスルーティング ユーザのアクセス制御 データソースのクレデンシャルや設定値 論理的なリソース区画
  19. Role(ユーザごとにアクセス/操作可能なリソースを制御) 24 Copyright © 2023, Oracle and/or its affiliates |

    対象のリソース名 対象リソースに対して実⾏可能な操作 ストレージ管理者の場合
  20. RoleBinding(ユーザごとにアクセス/操作可能なリソースを制御) 25 Copyright © 2023, Oracle and/or its affiliates |

    ストレージ管理者の場合 OCI IAMのユーザOCID/グループOCID この例ではユーザOCIDを指定 紐付け対象とするRole
  21. Secret(アプリケーション等が利⽤する機密情報リソース) 26 Copyright © 2023, Oracle and/or its affiliates |

    Autonomous Databaseのユーザ名/パスワード OCI Streamingのtoken OCIRのユーザ名とパスワード data配下はbase64エンコード済みの 値を指定
  22. Secret (Autonomous DatabaseのWallet) • OCI CLIでのWallet取得(OCIコンソールからのダウンロードでも可) • 取得したWallet(zipファイル)を解凍し、kubectlでSecret(adb-wallet)の作成 27 Copyright

    © 2023, Oracle and/or its affiliates | [opc@oke-client ~]$ oci db autonomous-database generate-wallet --autonomous-database-id [ATPの OCID] --password [Walletのパスワード] --file [Walletファイル名] [opc@oke-client ~]$ unzip Wallet_tfOKEATPDB.zip -d Wallet_tfOKEATPDB [opc@oke-client ~]$ kubectl create secret generic adb-wallet --from-file=Wallet_tfOKEATPDB
  23. Storage (アプリケーション等が利⽤する永続化領域) – File Storage – 29 Copyright © 2023,

    Oracle and/or its affiliates | StorageClassとPersistentVolumeClaimの作成 PersistentVolumeは⾃動⽣成
  24. Ingress(L7 Load Balancer) • Ingress Controllerのインストールが必要 30 Copyright © 2023,

    Oracle and/or its affiliates | Ingressの作成 [opc@oke-client ~]$ kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress- nginx/controller-v0.44.0/deploy/static/provider/cloud/deploy.yaml バックエンドのpathと紐づくServiceリソース 名、ポート番号を指定 ※backendについては、バーチャルホストで も指定可能
  25. コンテナアプリケーションのリソース ここから記載する対象のリソース/Manifest • Deployment • Service 31 Copyright © 2023,

    Oracle and/or its affiliates | アプリケーションの実体とその設定 アプリケーションへのEndpointやルーティング設定
  26. バックエンドアプリケーション(データソースAPI)のDeployment 32 Copyright © 2023, Oracle and/or its affiliates |

    Secretリソースから Autonomous Databaseのユーザ名と パスワード、OCI Streamingのトークンを 変数として取得 Autonomous DatabaseのWalletファイ ルをマウント(参照先は Secret) OCIRのクレデンシャル をSecretとして指定 データソースAPI(namespaceA)の場合
  27. バックエンドアプリケーション(データソースAPI)のService 33 Copyright © 2023, Oracle and/or its affiliates |

    Deploymentで設定したcontainerPortを targetPortに設定 Deploymentで設定したラベルをselectorとして設定 データソースAPI(namespaceA)の場合
  28. バックエンドアプリケーション(バックエンドAPI)のDeployment 34 Copyright © 2023, Oracle and/or its affiliates |

    バックエンドAPI(namespaceA)の場合 volumesにFSSに紐づけたPVCを設定し、 コンテナ上でFSSのマウントを設定
  29. フロントエンドアプリケーション 35 Copyright © 2023, Oracle and/or its affiliates |

    Ingressで設定するポート番号を定義 フロントエンド(namespaceA)の場合
  30. Monitoring (モニタリング) ▪ ユースケース OCI上のサービスやリソースの状態監視、アプリケーション の性能監視、リアルタイムでの異常検出 ▪ 特徴 • OCI上の各サービスやリソースのメトリックを⾃動的に取

    得 • 事前定義済のビジュアライゼーション・ダッシュボードの 提供 • あらかじめ指定した条件にメトリックが合致した場合に アラームを発⽕することも可能(カスタム・メトリックの定 義も可能) 37 Copyright © 2023, Oracle and/or its affiliates | OCI上の様々なリソースのメトリックを監視、ダッシュボードで閲覧、および通知 Oracle Cloud Infrastructure METRICS ALARMS Notifications CPU: 80 CPU: 90 CPU: 40 CPU: 50 Customer Applications, Services, Resources Oracle Cloud Infrastructure Console Customer Monitoring Tool Monitoring
  31. Master Nodeのメトリクス監視(OCI Console/OCI Monitoring)(1) 利⽤可能なメトリクス(Master Nodeのステータス) • API Serverに対するリクエスト回数 •

    原則としてユーザが操作をしていなくても⼀定回数のカウントはある • API Serverのレスポンス • 2XX/4XX/5XX • スケジュールできないPod数 38 Copyright © 2023, Oracle and/or its affiliates |
  32. Master Nodeのメトリクス監視(OCI Console/OCI Monitoring)(2) 利⽤可能なメトリクス(Worker Nodeのステータス) • Nodeのステータス • 1:Active

    • 0:Non-Avtive • Node条件(“kubectl get nodes”の結果) • 1:Ready • 0:Not Ready 39 Copyright © 2023, Oracle and/or its affiliates |
  33. Worker Nodeのメトリクス監視(OCI Console/OCI Monitoring)(3) 利⽤可能なメトリクス(Computeのステータス) • CPU使⽤率 • メモリ使⽤率 •

    ディスクI/O(Read) • ディスクI/O(Write) • ディスクスループット(Read) • ディスクスループット(Write) • ネットワークスループット(receive) • ネットワークスループット(send) • ロードアベレージ • メモリのストール回数 40 Copyright © 2023, Oracle and/or its affiliates |
  34. OCI Logginig ログの種類 • 監査ログ • Oracle Cloud Infrastructureの監査ログがデフォルトで収集 •

    サービス・ログ • Oracle Cloud Infrastructureのネイティブなサービスから⽣成 されるログ • API Gateway、イベント、ファンクション、ロードバランサー、オブジェクト・ ストレージ、VCN Flow Logsなど • 各リソースに対して有効化、無効化を設定 • カスタム・ログ • カスタムのアプリケーションや他のクラウド、オンプレミス環境などか ら⽣成されるログ • APIを通じて発⾏、または、監視エージェントを構成することでロ グを収集 41 Copyright © 2023, Oracle and/or its affiliates | ログを⼀元的に収集するスケーラブルで完全マネージド型なロギング・サービス ロギング 監査 VCN Flow Logs アプリケーション ロード バランサー Object Storage OCIネイティブサービス
  35. Master Node API ServerのAudit Log 42 Copyright © 2023, Oracle

    and/or its affiliates | クラスタが実⾏した操作 API Serverが実⾏した操作
  36. Service Connector Hub(サービス・コネクタ・ハブ) OCI Logging(※1)からOCIの各サービス(※2)へ連携するためのハブ • ログをOCI Logging Analyticsに転送し、⾼機能の分析GUIを使⽤することが可能 43

    Copyright © 2023, Oracle and/or its affiliates | Service Connector Hub OCI Logging Object Storage 収集 連携 監査ログ サービスログ カスタムログ OCI Logging Analytics (※1)︓2021/4現在、Service Connector Hubのソースとなるサービス。今後他サービスも追加予定。 (※2)︓2021/4現在、Service Connector Hubのターゲットとなるサービスは以下。今後も追加予定。 Object Storage/OCI Streaming/Oracle Functions/OCI Monitoring/ OCI Logging Analytics/Notification Service Connector Hub
  37. OKEでOCI Loggingを利⽤する場合 ロギング • 現時点ではWorker Node(ホストOS)の”/var/log/containers”配下に出⼒されるコンテナのログを収集し、OCI Loggingでログ検索 • https://docs.oracle.com/ja- jp/iaas/Content/ContEng/Tasks/contengviewingworkernodelogs.htm

    • Service Connector Hub(サービス・コネクタ・ハブ)による各サービスへの連携も可能 ロギングの可視化 • Logging Analyticsによる可視化 • 円グラフ/縦棒グラフ/横棒グラフ/線グラフ/ワードクラウド….. • ダッシュボードの作成も可能 • https://docs.oracle.com/ja-jp/iaas/logging-analytics/index.html 44 Copyright © 2023, Oracle and/or its affiliates |
  38. • アプリケーションのパフォーマンスを可視化し、問題の根本的原因を サーバーおよびユーザー・サイドから分析し解決をサポート • トレースデータに基づいてアプリケーションのどの箇所が、または、 サービス間連携でどのサービスがボトルネックなのかを可視化 • OpenTracing, OpenTelemetry互換 •

    Javaアプリケーション実⾏環境の監視 • Weblogic, Helidon, Tomcat, TomEE, Springboot • ブラウザ・エージェントにより、実際のユーザーのブラウザ操作を記録し ページ・ロードやパフォーマンスを監視 • アプリケーションやAPIのエンドポイントに対して定常的にリクエストを 実⾏し、死活監視及びパフォーマンス監視を実⾏ • 定義済みダッシュボードよる効率的なモニタリング Application Performance Monitoring Copyright © 2023, Oracle and/or its affiliates | 45 Application Performance Monitoring エンドユーザー 性能監視 アプリケーション 監視
  39. 分散システムでリクエストの軌跡をEnd to Endで可視化 • 全てのトランザクション(トレース)の全ての処理(スパン) を確認することが可能 • 低速のトランザクション • エラーのあるトランザクション

    • サーバー・データセンター・バージョンなどの特定のリソース を使⽤するトランザクション • スパンに関する以下の情報を参照することが可能 • ページの読み込み • Ajax呼出し • サービスリクエスト • JDBC • HTTPアウトバウンド呼出し • 応答時間 etc Application Performance Monitoringによる分散トレーシング Copyright © 2023, Oracle and/or its affiliates | 46 ※スパン︓ひとつのサービス内の処理 ※トレース︓リクエストの開始から終了までの全てのスパン
  40. Copyright © 2023, Oracle and/or its affiliates | 47 アプリケーション・サーバーのヒープおよびCPUメトリックに

    関する情報を収集 • メトリックはAPMダッシュボードおよびMonitoringサービ スから表⽰することが可能 • リクエストサービス毎にグループ化された平均レスポン ス時間 • ロケーションごとのページグループ単位のリクエスト レート etc… • 以下のアプリケーション・サーバーをサポート • WebLogic 10.3.6, 12.x, 14.x • Tomcat 6,7,8,9 • TomEE 1.7,7,8 • Springboot 1.x, 2.x • Helidon 2.x Application Performance Monitoringによるサーバ監視
  41. OCI/3rd Partyを利⽤したコンテナアプリケーションの監視まとめ 48 Copyright © 2023, Oracle and/or its affiliates

    | 死活監視 リソース監視 (CPU/メモリ) ロギング パフォーマンス モニタリング Worker Node (Compute) OCI Monitoring OCI Monitoring - (原則として不要) - Pod Prometheus + Grafana(※1)(※2) Prometheus + Grafana(※1)(※2) OCI Logging + OCI Logging Analytics(※3) OCI APM (※1)︓今後OCI MonitoringにてPodレベルの死活/リソース監視が実施可能になる予定。 (※3)︓今後、OCI LoggingでPodレベルのロギングが利⽤可能になる予定。 (※2)︓⼀部のアプリケーション・サーバは、APM AgentによりAPMでサーバ監視が可能
  42. OKE/OCIR/その他OCI周辺サービスを利⽤したハンズオン • OKE初期構築 • https://oracle-japan.github.io/ocitutorials/cloud-native/oke-for-commons/ • OKEでKubernetesを動かしてみよう(サンプルアプリを使ったKubernetesそのもののチュートリアル) • https://oracle-japan.github.io/ocitutorials/cloud-native/oke-for-beginners/ •

    OKEでサンプルアプリケーションのデプロイとCI/CDを体験してみよう • https://oracle-japan.github.io/ocitutorials/cloud-native/oke-for-intermediates/ • OKEでサンプルマイクロサービスアプリケーションをデプロイしてOCIのオブザーバビリティサービスを利⽤してみよう • https://oracle-japan.github.io/ocitutorials/cloud-native/oke-observability-for-advances/ 49 Copyright © 2023, Oracle and/or its affiliates |