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

ccnr-ops-2021-1st-appendix

capsmalt
March 26, 2021

 ccnr-ops-2021-1st-appendix

CCNR Ops 2021 前半部分の補足

capsmalt

March 26, 2021
Tweet

More Decks by capsmalt

Other Decks in Technology

Transcript

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

    View Slide

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

    View Slide

  3. 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」から成り⽴つ

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  8. 56
    Deployment Config (≒Deployment)

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  14. 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
    ...

    View Slide

  15. 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に書かれた⼿順に従っ
    て、アプリケーションのビルドを⾏っている。

    View Slide

  16. 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

    View Slide

  17. 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 コマンドを使⽤し、追加のサービスを⽣成するだけです。

    View Slide

  18. 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: コンテナレジストリにプッシュされ、指定されたイメー
    ジストリームに対して、タグ付けする

    View Slide

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

    View Slide

  20. OPTIONAL SECTION MARKER OR TITLE
    補⾜
    )
    Prometheus Operator
    68

    View Slide

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

    View Slide

  22. 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"

    View Slide

  23. 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)

    View Slide

  24. 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に
    よって監視されるターゲットのセットを記述します。

    View Slide

  25. 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)

    View Slide

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

    View Slide