Slide 1

Slide 1 text

CCNR Ops 2021 – Appendix Red Hat K.K. Cloud Solution Architect 49

Slide 2

Slide 2 text

OPTIONAL SECTION MARKER OR TITLE 補⾜ ) ビルド & デプロイ 50

Slide 3

Slide 3 text

51 Build & Deploy Application Build Processは、ソースコードのビルドとベースイメージのビルドから構成される Build Image Deploy Build Apps Git Repo Application Code Dockerfile BuilderImage Archive Compile Application Image Container Registry Deploy Deploy Process Build Process アプリケーションの展開は、「Build Process」と「Deploy Process」から成り⽴つ

Slide 4

Slide 4 text

52 よくあるコンテナアプリのデプロイ DockerHub $ docker pull xxx $ docker run xxx $ git clone $ mvn test/package/deploy $ docker commit $ docker tag SCM ⾃社Registry $ kubectl apply –f deplloyment.yaml service.yaml ...

Slide 5

Slide 5 text

53 コンテナアプリケーションのデプロイ Developerカタログ, Git Repo, コンテナイメージ, Dockerfileを使⽤してデプロイ可能

Slide 6

Slide 6 text

54 Developer カタログ 例) Builder Imageとして Python を選択

Slide 7

Slide 7 text

55 例) ⾃⾝のアプリコードの 場所(リポジトリ)を指定 ソースコードのあるリポジトリ Developer カタログ

Slide 8

Slide 8 text

56 Deployment Config (≒Deployment)

Slide 9

Slide 9 text

57 アプリ動作(Pod) さきほどのPod名

Slide 10

Slide 10 text

58 ここまでの操作を整理・・・ - OpenShiftコンソール上で Python (Builder) を選択 - ソースコードリポジトリを指定

Slide 11

Slide 11 text

59 何が起こったか︖ - OpenShiftコンソール上で Python (Builder) を選択 - ソースコードリポジトリを指定 build config image stream deployment config service route を作成

Slide 12

Slide 12 text

60 何が起こったか︖ - OpenShiftコンソール上で Python (Builder) を選択 - ソースコードリポジトリを指定 - Python (Builder) と ソースコード を合体してコンテナイメージを作成 - Build Config で S2I でイメージビルドを実施 - OpenShift 上にコンテナデプロイ - Deployment Config に イメージ(+ Replicas : 1など) 指定で適⽤ build config image stream deployment config service route を作成

Slide 13

Slide 13 text

61 よく使うベースイメージ(やテンプレート)を活⽤ ソース指定のみで,ビルドやデプロイなどを⾏うリソースを⼀括作成

Slide 14

Slide 14 text

62 再掲) よくあるコンテナアプリのデプロイ DockerHub $ docker pull xxx $ docker run xxx $ git clone $ mvn test/package/deploy $ docker commit $ docker tag SCM ⾃社Registry $ kubectl apply –f deplloyment.yaml service.yaml ...

Slide 15

Slide 15 text

63 Source-to-Image (s2i) s2iはBuilderImageのラベルから、s2i Scriptの場所を読み込んで実⾏し、その結果をコンテナイメージとして出⼒するビルド⽅式です。 (*マニュアルでやると、docker runしたベースイメージで、s2iスクリプトをキックしたあとにdocker commit/tagする) s2i Script BuilderImage (Base Image) Middleware Configs Dockerfile OS Based Image Application Image Application Code Source-to-Image (s2i) 内部では、s2i Scriptに書かれた⼿順に従っ て、アプリケーションのビルドを⾏っている。

Slide 16

Slide 16 text

64 Source-to-Image (s2i) アプリケーションコードをInputにし、アプリケーションとベースイメージをビルドして、新しいDockerイメージを⽣成 oc new-app Build Config Image Stream Deployment Config Service Builder Container s2i Build Process Git Repo Application Image ImageStreamTag iptables Replication Controller Deploy Pod Container Application Code Container Registry ImageStreamTag

Slide 17

Slide 17 text

65 Application Create Objects oc new-appを⾏うことで、以下のオブジェクトが作成される Object 解説 Build Config BuildConfig は、コマンドラインで指定された各ソースリポジトリーに作成されま す。BuildConfig は使 ⽤するストラテジー、ソースのロケーション、およびビルド の出⼒ロケーションを指定します。 ImageStream BuildConfigでは、通常 2 つの ImageStream が作成されます。 1 つ⽬は、インプットイメージを表します。Source ビルドでは、これはビルダーイメージです。Docker ビルド では、これは FROM イメージです。2 つ⽬は、アウトプットイメージを表します。コンテナーイメージが new- app にインプットとして指定された場合に、このイメージに対してもイメージストリームが作成されます。 Deployment Config DeploymentConfig は、ビルドの出⼒または指定されたイメージのいずれかをデプロイするために作成さ れます。new-app コマンドは、結果として⽣成されるDeploymentConfig に含まれるコンテナーに指定 される全Docker ボリュームにemptyDir ボリューム を作成します。 Service new-app コマンドは、インプットイメージで公開ポートを検出しようと試みます。公開されたポートで数値 が最も低いものを使⽤して、そのポートを公開するサービスを⽣成します。new-app 完了後に別のポー トを公開するには、単に oc expose コマンドを使⽤し、追加のサービスを⽣成するだけです。

Slide 18

Slide 18 text

66 BuildConfig Build inputs Git: Git リポジトリからアプリケーションをビルド・デプロイする場合 Dockerfile: Dockerfile でビルドを完結させる場合 Binary: ローカルホスト上の Binary (EAR, WAR) をイメージに配置する場合 Application Code BuilderImage (Base Image) Build Strategies S2I: アプリケーションのソースコードをビルドし、コンテナイメージ内に配置 Docker: Dockerfile と docker build と同様な処理 Pipeline: Jenkins pipeline によりビルドやデプロイを制御 Custom: ビルドイメージを独⾃に作成し、ビルドプロセスをカスタマイズする s2i Build Process Application Image Build outputs ImageStreamTag: コンテナレジストリにプッシュされ、指定されたイメー ジストリームに対して、タグ付けする

Slide 19

Slide 19 text

67 ImageStream OpenShift内部で管理されるコンテナレジストリのイメージのメタデータを参照 - コンテナレジストリのタグにpushされたイメージのバージョン履歴(Stream)を保持する機能 -コンテナレジストリにpushなど、ImageStreamのタグが更新されたら自動的にアクションを起動できる ImageChange更新トリガー - OpenShift内部レジストリとの連携、イメージキャッシュ

Slide 20

Slide 20 text

OPTIONAL SECTION MARKER OR TITLE 補⾜ ) Prometheus Operator 68

Slide 21

Slide 21 text

Prometheusとは コンテナ環境に適したプル型のリソース監視ソフトウェア Prometheus Server Exporters Alert Manager Grafana Push Gateway

Slide 22

Slide 22 text

JMX Exporter JMXターゲットのmBeanを構成可能にスクレイピングして公開することができるコレクタ (javaagent) Prometheus Server 監視サーバー JMX Exporter Exporterが監視対象 のデータを取得 JVM JMX Java Application tcp-9404 tcp-8080 PREPEND_JAVA_OPTS="-javaagent:${JBOSS_HOME}/prometheus/jmx-prometheus.jar=9404:${JBOSS_HOME}/prometheus/config.yaml"

Slide 23

Slide 23 text

Prometheus Operator Prometheus 監視インスタンスを作成・設定・管理します Service Service Service Service Custom Resource Definition(CRD) Service Monitor Service Monitor Prometheus Prometheus Pod Deploy Config Management Target Monitoring Watch prometheus prometheus- config-reloader rules-configmap -reloader Operator (Controller)

Slide 24

Slide 24 text

CRD for Alerting CRD for Monitoring Custom Resource Definition Operator CRDおよびConfigMapを使⽤してサービスをカスタマイズできます Service Monitor Prometheus Prometheus Rule Alert Manager Prometheus展開を定義し ます。Operatorは常に,リ ソース定義と⼀致するデプ ロイメントが実⾏されてい ることを確認します。 Service Groupを監視する ⽅法を宣⾔的に指定します。 Operatorは,定義に基づい てPrometheusのスクレイプ 設定を⾃動的に⽣成します。 必要なPrometheusルール ファイルを定義します。こ れは,Prometheusアラート および記録ルールを含む Prometheusインスタンスに よってロードできます。 AlertManager展開を定義 します。オペレーターは常 に,リソース定義と⼀致す るデプロイメントが実⾏さ れていることを確認します。 Prometheusリソースは宣⾔的にPrometheusデプロイメントの望ましい状態を記述し,ServiceMonitorはPrometheusに よって監視されるターゲットのセットを記述します。

Slide 25

Slide 25 text

jmx Project Overview of Hands-On (Lab1-3,-4,-5) Monitoring Java Application by Prometheus Operator Service (jboss-eap-prometheus) Custom Resource Definition(CRD) Prometheus Pod Deploy Config Management Watch prometheus prometheus- config-reloader rules-configmap -reloader JMX Exporter JVM JMX Java Application tcp-9404 tcp-8080 jmx-monitor Project Router Router Service Monitor Prometheus Operator (Controller)

Slide 26

Slide 26 text

OpenShift Prometheus Operator OpenShift内部のコンポーネントにもOperatorが利⽤されている OpenShift Monitoring Operatorが Operatorを管理