Slide 1

Slide 1 text

CCNR Ops 2021 – 前半 Red Hat K.K. Cloud Solution Architect 1

Slide 2

Slide 2 text

CCNR Ops ハンズオン - 前半 - OpenShift Basic ・Console, CLI(oc) ・Project(Namespace), K8s Resources ・Build and Deploy - Operator Basic (Prometheus) ・Deploy Java apps ・Deploy own Prometheus Operator ・Get Metrics using JMX Exporter 後ほどハンズオン概要を紹介します

Slide 3

Slide 3 text

OpenShift 101 Red Hat K.K. Cloud Solution Architect 3

Slide 4

Slide 4 text

サマリー︓ OpenShift とは︖ OpenShift 4

Slide 5

Slide 5 text

OperatorでK8s⾃体,K8s周辺をフルカバー 運⽤プロセスを含めたポータビリティの実現。コンテナ/Kubernetesシステムを,K8sの技術を活⽤した付加価値機能によって⾃律運⽤を⽀援。 AUTOMATED OPERATIONS CLUSTER SERVICES APPLICATION SERVICES DEVELOPER SERVICES Middleware, Service Mesh Functions, ISV Monitoring, Chargeback Registry, Logging Automated Builds, CI/CD, IDE Any Infrastructure どの環境でも,迅速か つ信頼性の⾼いOS どの環境でも,同様の ⼿順でアプリケーショ ンを稼働 どの環境でも,⾃動化 された運⽤プロセスを 実現 Virtual Private cloud Bare metal Public cloud Edge OpenShiftは,Kubernetesを使いこなせるように 5

Slide 6

Slide 6 text

Kubernetesの Value Declarative Configuration Self-Healing Auto Scaling リソースの抽象化 ⾃⼰回復性 ⾃動スケーリング クラウドプロバイダごとに 異なる実装やサービスの詳細 を知る必要がなく, Kubernetesは開発者を特定の インフラ依存から開放します。 クラウド上で⾼度なポータ ビリティを担保できます。 Kubernetesは,現在のシス テム状態が望ましい状態に⼀ 致するように動作します。 はじめにシステムを初期化 するだけでなく,その後も継 続的にシステムが不安定に なった場合や,信頼性に影響 を及ぼす障害時に,もとの状 態に動的に戻します。 迅速で簡単なロールバック で,信頼性の⾼い頻繁なコン テナイメージのビルドとデプ ロイを提供します。 Web ベースのサービスは数 時間ごとに機能改善されるこ とが珍しくなく,新しいコン ポーネントや機能を開発しデ プロイできます。 6

Slide 7

Slide 7 text

Node Node Node Node リソースの抽象化 Declarative Configuration apiVersion: apps/v1 kind: Deployment metadata: name: test-nginx #コンテナの名前 spec: selector: matchLabels: app: nginx #テンプレートを指定 replicas: 3 #レプリカ数(Podの数) template: #作成されるPodのテンプレート metadata: labels: app: nginx spec: containers: - name: nginx image: nginx:latest ports: - containerPort: 80 #ポート番号 クラウドプロバイダごとに異なる実装やサービスの詳細を知る必要がなく, 宣⾔的にインフラリソースを管理できます。 Deploy Infra Resources Declarative Configuration 7

Slide 8

Slide 8 text

Node Node Node Node ⾃⼰回復性 Self-H ealing Kubernetesは,現在のシステム状態が望ましい状態に⼀致するように動作します。 Replicas = 3 Replicas = 4 Auto-Healing Node Error 望ましい状態(設定した値) 起動状態(稼働している値) Self-Healing 8

Slide 9

Slide 9 text

⾃動スケーリング Auto Scaling Node Node Node Auto Scale Load Balancer 動的に負荷状況に応じたスケールアウトや,不要なリソースを縮退します。 Auto Scaling 9

Slide 10

Slide 10 text

CONTAINER 10 まずはコンテナ

Slide 11

Slide 11 text

BINARY RUNTIME CONTAINER IMAGE 11

Slide 12

Slide 12 text

IMAGE REGISTRY CONTAINER IMAGE IMAGE IMAGE IMAGE IMAGE IMAGE 12

Slide 13

Slide 13 text

IMAGE REGISTRY frontend:latest frontend:2.0 frontend:1.1 frontend:1.0 mongo:latest mongo:3.7 mongo:3.6 mongo:3.4 myregistry/frontend myregistry/mongo IMAGE IMAGE IMAGE IMAGE IMAGE IMAGE IMAGE IMAGE 13

Slide 14

Slide 14 text

POD CONTAINER 10.140.4.44 POD CONTAINER 10.15.6.55 CONTAINER 14 ここからKubernetes

Slide 15

Slide 15 text

image name replicas labels cpu memory storage ReplicaSet ReplicationController POD CONTAINER POD CONTAINER ... POD CONTAINER 1 2 N 15

Slide 16

Slide 16 text

image name replicas labels version strategy Deployment DeploymentConfig POD CONTAINER POD CONTAINER v1 v2 16

Slide 17

Slide 17 text

foo = bar Node image name replicas labels cpu memory storage DaemonSet foo = bar Node foo = baz Node POD CONTAINER POD CONTAINER ✓ ✓ 17

Slide 18

Slide 18 text

Dev appconfig.conf MYCONFIG=true ConfigMap POD CONTAINER Prod appconfig.conf MYCONFIG=false ConfigMap POD CONTAINER 18

Slide 19

Slide 19 text

Dev hash.pw ZGV2Cg== ConfigMap POD CONTAINER Prod hash.pw cHJvZAo= ConfigMap POD CONTAINER 19

Slide 20

Slide 20 text

POD SERVICE “backend” CONTAINER 10.110.1.11 role: backend POD CONTAINER 10.120.2.22 role: backend POD CONTAINER 10.130.3.33 role: backend POD CONTAINER 10.140.4.44 role: frontend role: backend 20

Slide 21

Slide 21 text

POD SERVICE “backend” CONTAINER 10.110.1.11 role: backend POD CONTAINER 10.120.2.22 role: backend POD CONTAINER 10.130.3.33 role: backend POD CONTAINER 10.140.4.44 role: frontend role: backend 21

Slide 22

Slide 22 text

PAYMENT DEV PAYMENT PROD CATALOG INVENTORY ❌ ❌ ❌ POD C POD C POD C POD C POD C POD C POD C POD C POD C POD C POD C POD C 22

Slide 23

Slide 23 text

EXISTING AUTOMATION TOOLSETS SCM (GIT) CI/CD WORKER MASTER Red Hat® OpenShift® services STORAGE Kubernetes services Monitoring | Logging | Tuned SDN | DNS | Kubelet Infrastructure services etcd NETWORK COMPUTE Registry Prometheus | Grafana Alertmanager Kibana | Elasticsearch Router Developers Admins WORKER Monitoring | Logging | Tuned SDN | DNS | Kubelet Registry Prometheus | Grafana Alertmanager Kibana | Elasticsearch Router 23 OpenShift アーキテクチャ概要

Slide 24

Slide 24 text

24 STORAGE NETWORK COMPUTE

Slide 25

Slide 25 text

25 Worker Node (ワークロード) WORKER STORAGE NETWORK COMPUTE WORKER

Slide 26

Slide 26 text

26 Master Node (コントロールプレーン) MASTER STORAGE NETWORK COMPUTE

Slide 27

Slide 27 text

27 etcd (全ステートの維持・管理) MASTER STORAGE etcd NETWORK COMPUTE

Slide 28

Slide 28 text

28 Kubernetes Core コンポーネント MASTER STORAGE Kubernetes services etcd NETWORK COMPUTE Kubernetes API server Scheduler Cluster Management

Slide 29

Slide 29 text

29 OpenShift Core コンポーネント MASTER OpenShift services STORAGE Kubernetes services etcd NETWORK COMPUTE OpenShift API server Operator Lifecycle Management Web Console

Slide 30

Slide 30 text

30 インフラサービス MASTER OpenShift Services STORAGE Kubernetes services Infrastructure services etcd NETWORK COMPUTE Monitoring | Logging | Tuned | SDN | DNS | Kubelet

Slide 31

Slide 31 text

31 WORKER MASTER OpenShift Services STORAGE Kubernetes services Monitoring | Logging | Tuned SDN | DNS | Kubelet Infrastructure services etcd NETWORK COMPUTE WORKER Monitoring | Logging | Tuned SDN | DNS | Kubelet インフラサービス

Slide 32

Slide 32 text

32 統合イメージレジストリ WORKER MASTER OpenShift Services STORAGE Kubernetes services Monitoring | Logging | Tuned SDN | DNS | Kubelet Infrastructure services etcd NETWORK COMPUTE Registry WORKER Monitoring | Logging | Tuned SDN | DNS | Kubelet Registry

Slide 33

Slide 33 text

33 クラスターモニタリング WORKER MASTER OpenShift Services STORAGE Kubernetes services Monitoring | Logging | Tuned SDN | DNS | Kubelet Infrastructure services etcd NETWORK COMPUTE Registry Prometheus | Grafana Alertmanager WORKER Monitoring | Logging | Tuned SDN | DNS | Kubelet Registry Prometheus | Grafana Alertmanager

Slide 34

Slide 34 text

34 ロギング WORKER MASTER OpenShift Services STORAGE Kubernetes services Monitoring | Logging | Tuned SDN | DNS | Kubelet Infrastructure services etcd NETWORK COMPUTE Registry Prometheus | Grafana Alertmanager Kibana | Elasticsearch WORKER Monitoring | Logging | Tuned SDN | DNS | Kubelet Registry Prometheus | Grafana Alertmanager Kibana | Elasticsearch

Slide 35

Slide 35 text

35 ルーティング WORKER MASTER OpenShift Services STORAGE Kubernetes services Monitoring | Logging | Tuned SDN | DNS | Kubelet Infrastructure services etcd NETWORK COMPUTE Registry Prometheus | Grafana Alertmanager Kibana | Elasticsearch Router WORKER Monitoring | Logging | Tuned SDN | DNS | Kubelet Registry Prometheus | Grafana Alertmanager Kibana | Elasticsearch Router

Slide 36

Slide 36 text

36 コンソール,CLI,IDE EXISTING AUTOMATION TOOLSETS SCM (GIT) CI/CD WORKER MASTER OpenShift Services STORAGE Kubernetes services Monitoring | Logging | Tuned SDN | DNS | Kubelet Infrastructure services etcd NETWORK COMPUTE Registry Prometheus | Grafana Alertmanager Kibana | Elasticsearch Router Developers Admins WORKER Monitoring | Logging | Tuned SDN | DNS | Kubelet Registry Prometheus | Grafana Alertmanager Kibana | Elasticsearch Router

Slide 37

Slide 37 text

Kubernetes が提供する機能 Kubernetes is Container Orchestration Cluster services monitoring, showback, registry, logging Application services middleware, functions, ISV Service mesh Developer services dev tools, automated builds, CI/CD, IDE Automated operations Linux OS Physical Virtual Private Public Any infrastructure certified コンテナオーケストレーション クラスタ上でコンテナをスケジューリングして実⾏するための プラットフォーム - 複数のホストにわたるコンテナのオーケストレーション - 適切なインフラリソースを効率よく配置 - アプリケーションのデプロイとアップデートを⾃動化 - ステートフルなアプリケーションのためのストレージの管理 - コンテナ化されたアプリケーションとそのリソースの迅速な スケーリング - サービスを宣⾔的に管理 - ⾃動再起動,⾃動スケーリングにより,アプリケーションの ヘルスチェックと⾃⼰修復を⾏う Declarative Configuration Auto Scaling Self-Healing https://www.redhat.com/ja/topics/containers/what-is-kubernetes 参考) 37

Slide 38

Slide 38 text

OpenShift が提供する機能 OpenShift accelerates Enterprise Kubernetes Cluster services monitoring, showback, registry, logging Application services middleware, functions, ISV Service mesh Developer services dev tools, automated builds, CI/CD, IDE Automated operations Enterprise Linux CoreOS Physical Virtual Private Public Any infrastructure certified Enterprise Kubernetes コンテナアプリの本番適用 CNCFに⽀援されるコミュニティプロジェクトや,パートナーのより広範な エコシステムと連携し,どのクラウド上でも同じ運⽤⽅法で,コンテナアプ リケーションを⾃由に管理できる。 信頼されたKubernetes管理 CoreOS社との統合により,CoreOSやRHEL8をコアとした信頼できる 基盤を利⽤し,ハイブリッドクラウド全体のライフサイクル管理を提供。⾼ 度なセキュリティと監査,可能性,管理のしやすさなどのユーザー体験を 可能にする。 38

Slide 39

Slide 39 text

Automated operations Enterprise Linux CoreOS コンテナアプリの本番適⽤ Cluster Services クラスタ管理を容易にし,運⽤業務を⾃動化するサービス Physical Virtual Private Public Any infrastructure Developer Services 開発者がコンテナアプリケーション開発に集中できる環境を整え るサービス Cluster services monitoring, showback, registry, logging Application services middleware, functions, ISV Service mesh Developer services dev tools, automated builds, CI/CD, IDE certified Application Services マイクロサービス間の連携やファンクションサービスを実現を⽀援 するサービス Logging Registry Monitoring ISV Middleware Function Service ServiceMesh IDE CI/CD Developer Tools チームがスピード,アジリティに⾃信を持って ビルドできる環境を提供。クラウドネイティブ な開発を本番へのコード作成を⽀援。 Build fast. Ship first. 39

Slide 40

Slide 40 text

Automated operations 堅牢化されたコンテナ実⾏環境 Kubernetes デファクトスタンダードなコンテナオーケストレーション Installation Configuration Cluster Scalability Cluster Upgrade Security GUI Network Enterprise Linux CoreOS Physical Virtual Private Public Any infrastructure certified Cluster Management ⾼度なセキュリティと監査,可⽤性,管理の容易性 Cluster services monitoring, showback, registry, logging Application services middleware, functions, ISV Service mesh Developer services dev tools, automated builds, CI/CD, IDE Declarative Configuration Self-Healing Auto Scaling コンテナスタックのあらゆるレベルとアプリ ケーションライフサイクル全体のセキュリティ に重点を置いている。 Trust with Red Hat. 40

Slide 41

Slide 41 text

⾃律化するシステム運⽤ Operatorによる運⽤の⾃律化 Full-Lifecycle Deep Insights Auto Pilot いままで⼈が対応してきた障害対応を⾃律的に回復する Manage with simplicity. App lifecycle Storage lifecycle - Backup - Failure Recovery Processing and workload analysis - Metrics - Alerts - Logging Horizontal/Vertical Scaling - Auto config - Auto tuning - Abnormal detection - scheduling tuning 41

Slide 42

Slide 42 text

What’s Operator An Operator is a method of packaging, deploying and managing a Kubernetes application Kubernetes Applications 運⽤の知⾒をコード化し,アプリやK8sクラスターの運⽤を⾃動化する アプリ運⽤における運⽤の知⾒をコード化し, パッケージ化したもの。 アプリケーション運⽤に必要な以下のような 作業を⾃動的に⾏う。 ・インストール ・リソーススケーリング ・バックアップ ・アップデート 運⽤の知⾒をコード化 Operator - Installation - Backup - Monitoring 42

Slide 43

Slide 43 text

Kubernetes ⾃体ではできない運⽤︓ ⾊々なソフトウェアスタックの運⽤ 43

Slide 44

Slide 44 text

Kubernetes ⾃体ではできない運⽤︓ Kubernetes クラスターの維持管理 o クラスター作成,削除,変更 o バージョンアップ o ノードの拡張・縮退 o ホストOSアップデート o 証明書管理 o 認証認可ユーザー管理 o 障害時のノード復旧 o … o … o etc. 1.16 1.17 1.18 44

Slide 45

Slide 45 text

Reconciliation Loop Custom Resource Definition & Custom Controller Custom Controller Custom Resource Definition Deploy CRD Watch StatefulSet ConfigMap Pod Pod Service Actions (Operational Knowledge) Custom Controller Custom Resource Definition Operator = + (Resources) Kubernetes Operator 45

Slide 46

Slide 46 text

Postgres Operator (Crunchy Data) 出典: Crunchy Data Solutions, Inc. https://www.crunchydata.com/. ※商標はCrunchy Data Solutions, Incに基づきます。 postgres-operator ・レプリケーションクラスタのPostgreSQLコンテナの配備 ・レプリカ設定のPostgreSQLクラスタをスケールアップ ・pgpoolとmetricsサイドカーをPostgreSQLクラスタに追加 ・PostgreSQLクラスタにSQLポリシーを適⽤ ・PostgreSQLクラスタにメタデータタグの割り当て ・PostgreSQLのユーザとパスワードを維持 ・PostgreSQLクラスタの マイナー/メジャーアップグレードの実施 ・CSVやJSONファイルをPostgreSQLにロード ・データベースのバックアップの実⾏ Manual Operation(pgo) Auto Operation 必須コンポーネント Operatorが状態に応じて 展開するコンポーネント Crunchy Data is the Trusted Open Source Enterprise PostgreSQL 46

Slide 47

Slide 47 text

創る 活⽤する or Kubernetes Platform 動向を知った上で, リーズナブルな選択を。 47

Slide 48

Slide 48 text

Happy Kubernetes Life ^ Please Follow me :) 48 @capsmalt