Slide 1

Slide 1 text

Rancherコンテナ管理プラットフォーム

Slide 2

Slide 2 text

About me Jianqiang Cheng(ちん) Field Engineer at Rancher Labs. Slack:slack.rancher.jp Email:[email protected] ■Favorite technologies: Rancher, Kubernetes, Docker, AWS, Jenkins. ■Certifications: AWS Certified Solutions Architect – Professional Certified Kubernetes Administrator Certified Kubernetes Application Developer

Slide 3

Slide 3 text

RancherLabs製品 軽量コンテナOS 分散ブロックストレージ クラスタ間通信 コンテナ管理プラットフォーム 軽量Kubernetes ディストリビューション Cloud Nativeコンテナ ディス トリビューション 本日のスコープ

Slide 4

Slide 4 text

Agenda • RancherのOverview • Rancherのインストール • Kubernetesクラスター構築と管理 (Hands-Onあり) • ユーザー認証(Hands-Onあり) • ワークロードのデプロイと管理(Hands-Onあり) • カタログ機能(Hands-Onあり) • 永続化ストレージの使用(Hands-Onあり) • 運用監視機能(Hands-Onあり) • CICD • Multi-cluster apps And Global DNS

Slide 5

Slide 5 text

5 RancherのOverview

Slide 6

Slide 6 text

プラットフォームの構成概要図

Slide 7

Slide 7 text

プラットフォームのアーキテクチャ

Slide 8

Slide 8 text

8 Rancherのインストール

Slide 9

Slide 9 text

Single Node構成 開発やテスト環境の場合、1台のサーバーで、 docker runで、 Rancher serverをインストールする方法を推奨 SSL証明書オプション:デフォルトは自己署名証明書(Rancher自動生成) その他のSSL証明書オプション:↓ https://rancher.com/docs/rancher/v2.x/en/installation/single-node/#2-choose-an-ssl-option-and-install- rancher

Slide 10

Slide 10 text

プロダクション環境の場合、HA構成のインストール方法を推奨 • Rancher Kubernetes Engine(RKE)でRancher用のK8Sクラスターを構築 • HelmでRancher Serverをクラスタへデプロイ • L4のロードバランサ(Nginx,AWS-NLBなど)をクラスターの入り口として設定 HA(High Availability)構成

Slide 11

Slide 11 text

11 Kubernetesクラスター構築と管理

Slide 12

Slide 12 text

Kubernetesクラスタ構築 Rancherは、オンプレミスやあらゆるクラウドサービ ス上にKubernetesクラスタの構築及び管理ができ るプラットフォーム: • Rancher Kubernetes Engine(RKE)経由で、あら ゆるインフラ環境上にKubernetesクラスタを構 築と管理 • 各PublicクラウドのAPI経由で,クラウドの Kubernetesマネジメントのクラスタを構築と管理 (Amazon EKS、Azure AKS、Google GCEなど) • 既存のKubernetesクラスタをインポートして Rancherで管理

Slide 13

Slide 13 text

Kubernetesクラスタ管理 RancherのUI画面から、下記のクラスタ管理機能をサ ポートしています。 • クラスター証明書期限切れ前の更新 • クラスターのバックアップとリストア • ブラザーUI画面からのkubectlコマンドの実行 • クラスターのバージョンアップ • クラスターのノードのスケールアウトとスケールイン • クラスターの管理者や利用者のユーザー管理 • クラスターのプライベートなDockerレジストリ追加

Slide 14

Slide 14 text

Kubernetes のクラスタとNamespaceの間にプ ロジェクトという層が入り、複数の Namespaceを束ねて権限管理を行います。 プロジェクト = Namespaceのグループ • プロジェクトレベルのロール権限をユー ザーに付与できます。 • プロジェクト/namespaceレベルで、各リ ソースQuotas(CPU、メモリなど)の設 定が可能です。 • プロジェクトレベルで、ポッドセキュリ ティポリシーの設定が可能です。 クラスタ配下のプロジェクト管理

Slide 15

Slide 15 text

15 ユーザー認証

Slide 16

Slide 16 text

ユーザー認証方式 Rancherは、ローカル認証以外に も、マイクロソフトのAD認証、 Github認証などの複数の認証プロバ イダをサポートをしています。

Slide 17

Slide 17 text

マルチクラスターで統一した認証・認可 Rancherは複数の階層で、管理対象を隔離しています。 ・クラスタレベル:異なるユーザーはクラスタレベルで隔離でき、それぞれ独立したCPU、メモリ、スト レージ、ネットワークリソースを使用することができます。ユーザは、権限を持つクラスタのみを参照編集す ることができます。 ・プロジェクトレベル:同じクラスタ内部で、プロジェクトレベルで隔離するが可能です。ユーザは、権限 を持つプロジェクトの中のnamespaceやアプリのみを参照編集することができます。

Slide 18

Slide 18 text

マルチクラスターで統一した認証・認可 ユーザー毎に、Rancherが事前に用意して あるロール(クラスタレベルとプロジェクト レベル)を割当することができますが、用途 に応じてRancher管理者がカスタマイズで作 成したロールを割当することもできます。

Slide 19

Slide 19 text

19 ワークロードのデプロイと管理

Slide 20

Slide 20 text

ワークロードのデプロイ Rancherには、下記の種類のワークロードをデ プロイできます。 ・Deployment - ローリングアップデートなどの デプロイ ・ Deamonset -ノード毎のデーモンのデプロイ ・ Statefulset -ステートフルアプリケーション ・ Job -ジョブ・バッチ処理 ・ Cronjob -スケジュールジョブ

Slide 21

Slide 21 text

ワークロードのデプロイ ー サービスディスカバリ デプロイしたコンテナにアクセスできるよ うに下記のアクセス方式が設定できます。 ・ノードポート(全てのノード) ・ホストポート(Podがあるノードのみ) ・クラスターIP(クラスター内部閉じる通 信) ・L4ロードバランサー(AWS、GCPなどのクラ ウドプラットフォームに依存)

Slide 22

Slide 22 text

• コンテナー単位にリソースの制限を設けること が可能です。 • CPUとメモリに対して、割当てられる下限値と上 限値が設定できます。 • CPU:1000 millicores = 1 vCPU(コア) • MEMORY:1M=1000*1000 1Mi=1024*1024 ワークロードのデプロイ ー リソース制限

Slide 23

Slide 23 text

スケジューリングは、新規に Pod が作成されたと きに最適なノードを選択して割り当てることです。 Rancherは、複数のスケジューリング方式をサポー トしています。 • 指定したノードへスケジューリング • ラベルがマッチしたノードへスケジューリング • NodeAffinity/PodAffinityでスケジューリング ワークロードのデプロイ ー スケジューリング

Slide 24

Slide 24 text

LivenessProbeとReadinessProbeという2種類のヘルスチェック機構をサポートしています。 LivenessProbeもReadinessProbeも役割が異なるだけで、設定可能な内容は全く同じです。 ワークロードのデプロイ ー ヘルスチェック Probeの種類 役割 失敗時の挙動 LivenessProbe Podが正常に動作しているかの確認 Podを再起動する ReadinessProbe Podがサービスインする準備ができているかの 確認 トラフィックを流さない(Podを再起動しな い)

Slide 25

Slide 25 text

RollingUpdateとRecreateなどのアップデート戦略をサポートしています。 ※ワークロード種類によって、アップデート戦略の選択肢が異なります。 画面UIから、アップデート戦略の設定ができます。 ワークロードのデプロイ ー アップデート戦略

Slide 26

Slide 26 text

デプロイしたアプリに対して、UI画面から下記のラ イフサイクル管理や各種変更処理を行うことができ ます。 • 変更/削除 • クローン • SideCar追加 • バージョンロールバック • 各種デバッグ機能(コンテナー接続など) • 一時停止/再開(変更適用待ち機能) ワークロード管理 ー ライフサイクル管理

Slide 27

Slide 27 text

UI画面から、直接にPODのコンテナーに接続して、シェルを実行できます。 障害調査や検証の際に、便利にコンテナーの中身確認ができる機能です。 ワークロード管理 ー コンテナー接続

Slide 28

Slide 28 text

UI画面から、直接に対象のPODのコンテナーのログ情報を確認できます。 障害調査や検証の際に、便利に利用できる機能です。 ワークロード管理 ー コンテナーログ参照

Slide 29

Slide 29 text

アプリのレプリカの数をアプリ起動時に設定できます。 起動後も、レプリカの変更や監視がUIから行うことができます。 ワークロード管理 ー 高可用性について

Slide 30

Slide 30 text

UI画面からのロールバック機能をサポートしています。 過去のバージョンに簡単にロールバックできます。 ワークロード管理 ー ロールバック

Slide 31

Slide 31 text

下記の種類のサービス作成をサポートしています。 • ClusterIP(クラスタ内部PODへロードバランサ) • NodePort(クラスタ外部からアクセス) • LoadBalancer(クラスタ外部からアクセス) • Headless(statefulアプリ対応) ワークロード管理 ー サービスディスカバリ ClusterIPNodePortLoadBalancerHeadless

Slide 32

Slide 32 text

Rancherには、Ingress(Nginx Ingress)機能がデフォルトに搭載しています 。 ワークロード管理 ー Ingress ClusterIPNodePortLoadBalancerHeadless

Slide 33

Slide 33 text

33 カタログ機能

Slide 34

Slide 34 text

カタログ機能 - 概要 Rancherのカタログ機能は、アプリケーションをカタログ化することによって、 何度でも簡単にアプリケーションデプロイを実現しています。 カタログ画面に、対象のアプリを選択し、画面から必要なパラメーターを入力 し、直ちに指定したところにデプロイできます。 ※ カタログ機能のベースとなっているHelmについて概 要を説明します。 Helmは、Chartというマニフェストをテンプレート化し たパッケージを管理するKubernetesのパッケージマ ネージャーです。 Helmによる操作および管理は、基本的にHelm Clientの HelmコマンドによるCLI操作となりますが、カタログ機 能ではHelmの操作が全てGUI上に行います。

Slide 35

Slide 35 text

カタログ機能 - Helm Chartリポジトリの種類 カタログ機能は下記のリポジトリの種類をサポートしています。 ・Rancher社のLibraryリポジトリ ・Helm公式のHelm Stableリポジトリ ・Helm公式のHelm Incubatorリポジトリ ・カスタムカタログ:ユーザが作成したChartリポジトリ(自社のアプリなど)

Slide 36

Slide 36 text

UI画面から、アプリのバージョン、デプ ロイ先や、パラメータの設定を指定して、 デプロイできます。 ※カタログ機能を使用することで、 Chartのパラメータ(values.yaml)を画 面UIからも簡単に上書きできます。 カタログ機能 –アプリに必要な情報をUIから指定

Slide 37

Slide 37 text

アプリのバージョンアップ、ロールバックも、GUIから簡単に行えます。 カタログ機能 - アプリのバージョンアップとロールバック

Slide 38

Slide 38 text

38 永続化ストレージの使用

Slide 39

Slide 39 text

・Persistent Volume PV(Persistent Volume)は、永続化領域として確保されるVolumeです。リソースとして個別に作成 してから、 PVC(Persistent Volume Claim)経由で利用する形になります。 永続化ストレージの概要 – Persistent Volume

Slide 40

Slide 40 text

・Storage Class Storage ClassにProvisionerを設定することによって、Dynamic Provisioningができるようになります。 PVC(Persistent Volume Claim)が発行されたタイミングで、 Storage Classに指定しているProvisioner で、動的にPV(Persistent Volume)を作成して、割り当てます。 永続化ストレージの概要 – Storage Class

Slide 41

Slide 41 text

Rancherには、前述の2つの方法で、永続化 ストレージをサポートしています。 ・Persistent Volume 複数のボリュームのプラグイン (AmazonEBS、Ceph、NFSなど)サポーターし ています。 ・Storage Class 複数のプロビジョナー (AmazonEBS、 Ceph、Glusterなど)サポーターしています。 Rancher上に永続化ストレージを使用

Slide 42

Slide 42 text

42 運用監視機能

Slide 43

Slide 43 text

• Rancherには、モニタリング機能がデフォルトで搭載されています。 運用監視機能 - アーキテクチャ

Slide 44

Slide 44 text

• クラスター全体のサマリー情報は、ダッシュボードから確認できます。 • 詳細情報は、Grafana画面からメトリック毎に確認できます。 運用監視機能 - モニタリング

Slide 45

Slide 45 text

• デフォルトで、Etcd、Kube-ComponetnsとNodeなどの基本のアラートルールが設定されています。 • 要件に合わせて、既存ルールのカスタマイズと新規ルールの追加もできます。 運用監視機能 -アラート

Slide 46

Slide 46 text

• 前述のアラートの連携・通知先として、Slack、Email、PegarDuty、Webhookなどが設定できます。 運用監視機能 - 通知

Slide 47

Slide 47 text

Rancherは、クラスタレベル/プロジェクトレベルのログ収集転送をサポートしています。 UI画面から、転送先のエンドポイント設定だけで、多様なサービス(ElasticSearch、Spluck、Kafkaなど) との連携が可能です。 運用監視機能 - Logging

Slide 48

Slide 48 text

デフォルトで提供しているもの以外に、カタログ機能画面にも多様なツール(Datadog、ElasticSearch、Kibana、 Fluentdなど)が用意されています為、要件に合わせて、任意のカタログのアプリのデプロイができます。 運用監視機能 - その他

Slide 49

Slide 49 text

49 GUI以外のユーザーインタフェース

Slide 50

Slide 50 text

GUI以外に、Rancherは、APIとCLIも提供しています。 Rancher APIとCLI

Slide 51

Slide 51 text

51 CICD

Slide 52

Slide 52 text

Rancher Pipelinesは、Rancherに統合されたCI機能です。 パイプラインの実行にJenkinsを、各種アーティファクトの保管にMinioを、そしてコンテナイメージ の保管にDockerレジストリ(デフォルトの場合)を利用しています。 Rancher Pipelinesについて ■Rancher Pipelineのアーキテクチャ

Slide 53

Slide 53 text

Rancher Pipelinesの使用例 ・ Rancher Pipeline機能:CI/CDのPipeline編集管理 ・ Rancherカタログ機能: CI/CDツールのインストール(Sonarqube、Nexusなど) Rancher Pipelinesについて

Slide 54

Slide 54 text

GitHub、GitLabまたはBitbucketのリポジトリと連携することで、コードのプッシュやプルリクエス トの作成、特定コミットへのタグ打ちなどが行われたタイミングで、パイプラインの実行をトリガー することができます。 外部ソースリポジトリとの連携 ■参考: Rancher PipelineとGitLabとの連携設定の例

Slide 55

Slide 55 text

CI/CDのPipelineの各ステップの定義は、画面からも変更できます。 Rancher Pipelinesの定義と変更 ■参考:Nexus、Sonarqubeと連携するビルドのステップの設定例

Slide 56

Slide 56 text

CI/CDのPipelineの実行結果は、画面から確認できます。 Rancher Pipelinesの結果確認 ■参考: Pipelineの各ステッジの実行結果 ■参考: Slack上にPipelineの実行結果の確認

Slide 57

Slide 57 text

57 Multi-cluster apps And Global DNS

Slide 58

Slide 58 text

概要 負荷分散、高可用のため、同じのアプリを異なるクラスタ上に稼働させます。

Slide 59

Slide 59 text

Multi-cluster apps機能 - 概要 Rancherのカタログ機能の拡張です。 カタログ機能: Rancher管理下にある1つのクラスタにアプリをデプロイすることができます。 Multi-cluster apps機能:Rancher管理下にある複数のクラスタに対し、同時にアプリをデプロイすることができます。 デプロイ先のクラスタ指定など一部の項目が異なる以外に、基本の操作は、カタログ機能と同じです。

Slide 60

Slide 60 text

Global DNS機能 - 概要 下記のDNSプロバイダをサポートしています。 • AWS Route53 • AliCloud AliDns • CloudFlare

Slide 61

Slide 61 text

Thanks