tectonicはkubernetesの構築・管理基盤である -概要の章-/-構築の章-
TRANSCRIPT
Tectonic
概要編Bare Metal on
環境構築編
今日の内容
「Tectonic」とは何か?と、環境構築に必要なTerraform、Matchbox、Ignitionの関連性をご紹介します。
• 個人的な動機
• なぜ Tectonic なのか?
• Tectonic の機能と仕組み
• Tectonic インストールまでの流れ
• Terraform で環境構築
• Matchbox と Ignition
TectonicはKubernetesの構築・管理基盤である
• Q&A
資料について
資料の情報は、発表時点(2017年11月14日現在)のものです。
公開資料には、発表時と異なる表現を用いている場合があります。
想定している読者は、Kubernetes 環境構築や運用に興味のある方です。
Tectonic 概要編
6
“個人的”な動機・課題Motivation behind to try Tectonic
そもそものスタート地点は、自分のPC上で作成したアプリケーションの移動と管理。
APP
7
“個人的”な動機・課題Motivation behind to try Tectonic
アプリに手を加えず複数のサーバで動かすためには、コンテナと2つの技術要素があります。
APP APP APP APP APP APP APP APP APP APP APP
8
“個人的”な動機・課題Motivation behind to try Tectonic
1つは(クラスタ上での)ノード管理、つまりIPアドレスや正常性、リソース監視が可能なこと。
APP APP APP APP APP APP APP APP APP APP APP
ノード管理CLUSTER NODE MANAGEMNT
UP UP UP UP UP
9
“個人的”な動機・課題Motivation behind to try Tectonic
そしてもう1つがスケジューリング。どのノードで、どれだけリソースを割り当てるか自動処理。
APP APP APP APP APP APP APP APP APP APP APP
スケジューリング
ノード管理CLUSTER NODE MANAGEMNT
SCHEDULING
10
“個人的”な動機・課題Motivation behind to try Tectonic
現状、これらを動的に処理するオーケストレーション・ツールが、用途別に複数出始めています。
APP APP APP APP APP APP APP APP APP APP APP
スケジューリング
ノード管理CLUSTER NODE MANAGEMNT
SCHEDULING
11
クラスタ・ノードも良い感じに管理したい
アプリの集合体である「サービス」管理は自動化が整いつつありますが、大変なのはノード。
APP APP APP APP APP APP APP APP APP APP APP
ノード管理
スケジューリングSCHEDULING
CLUSTER NODE MANAGEMNT
UP UP UP DOWN DOWN
MAINTAIN DESIRED STATE
ところで、さくらインターネットといえば、石狩と言えば…?
ISHIKARI
HOKKAIDO
ここで突然のさくらインターネット株式会社
石狩には自社データセンタがあり、多くのサーバ群あります。これを上手く活用できないものか?
データセンタと物理サーバ群
HOKKAIDO
ISHIKARI
※専用サーバのイメージ
良い感じにコンテナを安定して動かしてスケールできませんかね?
ここで登場した選択肢が、ベアメタル(物理・専用サーバ)にも対応している Tectonic だったのです。
Supported by CoreOS
https://coreos.com/tectonic/
17
なぜ Tectonic なのか?Why I choose Tectonic
クラウド・物理環境問わず、Kubernetesクラスタ管理が可能であり、かつ運用負担が低いのが Tectonic。
• 物理サーバを良い感じに使いたい
• 簡単にkubernetesを管理したい
• kubernetesの可用性を担保したい
• サーバのセキュリティを保ちたい
• サポートが欲しい??? 「力が欲しいか・・・」
Tectonicの特長(CoreOS、曰く)
※ https://coreos.com/tectonic/
•高速、安全なデプロイKubernetes環境の正しいセットアップと維持を簡単にし、
コンテナ化アプリケーションを効率的、安全、確実に実行
•運用コストの低減Operatorにより、Kubernetesの各コンポーネントの自己保守で
手動調整を不要に
•インフラの管理を簡単にTectonic Consoleを通して複数のインフラの一括管理や操作
AWS、Azure、VMware、OpenStack , bare metalの各環境に対応
18
DockerCon EU 2017
また、containerdがKubernetesにデプロイ可能になる発表も。ようやく手元のアプリが、簡単にスケールできるはず!(期待
Docker イメージは OCI 規格に従っており、かつ、Kubernetes のプライマリ・イメージ形式です。これを業界団体 CNCF との強調の元、これまでのDocker Swarm に加え、Kubernetes 環境上へデプロイに対応する予定の発表がありました。
Enterprise-ready Kubernetes
Tectonic ships with CoreOS's signature Automated Operations, enables portability across private and public cloud providers,
and is always upstream open source.
TectonicはCoreOSの署名自動運用を提供し、プライベートとパブリック・クラウド・プロバイダを横断する移動性を可能とし、
常に上流はオープンソースです。
21Tectonicのシステム構成の全体図です。Kubernetesとホスト側の管理およびインターフェースを提供します。
APP APP APP
Provisioner
Mathbox
Controller Worker 1 Worker 2 … Worker N
GUI
gRPC
etcd
kubectl
- Service
- Deployment
APP APP APP
Pod
APP APP APP
Pod
Ingress network (by flannel)
High Availability (by operator)
Terraform for Bare Metalwith Matchbox provider
Pod
Supported by
Tectonic Console(GUI) Prometheus GUI Grafana GUI
service service
API
22Tectonicで環境構築をすると、自動的に可用性を持つKubernetesノード(Master/Slave)とクラスタを構築します。
APP APP APP
GUI
gRPC
etcd
kubectl
- Service
- Deployment
APP APP APP
Pod
APP APP APP
Pod
Ingress network (by flannel)
High Availability (by operator)
Pod
Supported by
Tectonic Console(GUI) Prometheus GUI Grafana GUI
service service
API
Mathbox
Terraform for Bare Metalwith Matchbox provider
23ノードの自動構築にはMatchboxというプロビジョニング用サーバを使い、この構成管理でTerraformを使います。
APP APP APP
Provisioner
Mathbox
Controller Worker 1 Worker 2 … Worker N
GUI
etcd
kubectl
- Service
- Deployment
APP APP APP
Pod
APP APP APP
Pod
Ingress network (by flannel)
High Availability (by operator)
Terraform for Bare Metalwith Matchbox provider
Pod
Supported by
Tectonic Console(GUI) Prometheus GUI Grafana GUI
service service
API
Provisioner
Mathbox
Controller Worker 1 Worker 2 … Worker N
Terraform for Bare Metalwith Matchbox provider
gRPC
24自動的にPrometheusの監視アラート設定、Grafanaのリソースグラフ等が設定され、kubectlでも操作できます。
APP APP APP
GUI
gRPC
etcd
APP APP APP
Pod
APP APP APP
Pod
Ingress network (by flannel)
High Availability (by operator)
Pod
Supported by
service service
API
Mathbox
Terraform for Bare Metalwith Matchbox provider
GUI
kubectl
- Service
- Deployment
Tectonic Console(GUI) Prometheus GUI Grafana GUI
Tectonicの機能
• 安全なネットワークFlannel と Calico で安全なネットワーク・ポリシーをセットアップ
• etcdのディザスタ・リカバリHA高可用性に対応した etcd のデプロイと、バックアップ・復旧機能
• 自動オペレーションCoreOSの自動オペレーションで、インフラの更新と維持を簡単に
• Container Linux Operating Systemコンテナ向けに開発された軽量 Linux ディストリビューション
• Logging & Auditing監査対象は基本的にインフラの全てであり、API経由でも追跡可能
• Kubernetesの高可用性Kubernetes環境の複数のmasterとworkerを簡単にデプロイ
• Tectonic Consoleインフラ管理を管理されたダッシュボードですべて管理
• 企業統制と管理RBACや既存のLDAP、SAMLとの統合
• Prometheus MonitoringPrometheusでクラスタとアプリケーションを管理
• Prometheus AlertManagerTectonic Consoleからインフラ全体のアラートを設定
25※ https://coreos.com/tectonic/
26
Tectonicの位置付け
このようにTectonicはKubernetesと同じ場所に位置し、Cloud Independenceとは独立性を表しています。
https://www.slideshare.net/CoreOS_Slides/tuesday-keynote/4
CoreOSのロゴを見るとこんな印象を受けます。ちなみに Tectonic とは地殻ですが、語源は「建設・構築」です。
Tectonic DEMO
$ export KUBECONFIG=~/.kube/config$ kubectl get nodesNAME STATUS ROLES AGE VERSIONnode1.example.com Ready master 1d v1.7.5+coreos.1node2.example.com Ready node 1d v1.7.5+coreos.1node3.example.com Ready node 22h v1.7.5+coreos.1
専用の管理画面もありますが、kubectl から直接の操作も可能です。
こちらは管理コンソール。ここでクラスタ上のサービスやPodほか、様々な情報を一元管理できます。
32ノード追加時にGrafanaでシステムのキャパシティを表示したところ。
33Prometheusの監視も自動的に入っており、このようにアラートのTarget設定も自動的に行われます。
34
APP APP APP
Provisioner
Mathbox
Controller Worker 1 Worker 2 … Worker N
GUI
gRPC
etcd
kubectl
- Service
- Deployment
APP APP APP
Pod
APP APP APP
Pod
Ingress network (by flannel)
High Availability (by operator)
Terraform for Bare Metalwith Matchbox provider
Pod
Supported by
Tectonic Console(GUI) Prometheus GUI Grafana GUI
service service
API
概要の章・まとめ
•TectonicはKubernetes構築・管理基盤Kubernetes のプロダクション稼働(24時間365日の運用)のための
必要な要素(可用性・監視・ノード管理・等々)がパッケージされている。
そのため、ゼロから全てを設計・構築する必要がない。
•ベアメタル環境(物理サーバ)にも対応クラウド・サービス上での Kubernetes クラスタ構築のみならず、
Tectonic 自身が物理サーバでの動作環境構築(プロビジョニング)に
公式に対応している。
Terraform Provider for Bare Metal with Matchbox
ベアメタル向け環境構築の流れ
Tectonicをセットアップすると、自動的にKubernetesも入ります。
CoreOS Tectonicアカウント作成
https://account.coreos.com/login
Tectonic installerダウンロードと展開
Matchbox 0.6+のインストールTLS証明書のセットアップ
gRPC API 有効化
Mathcboxv0.6+
Terraform for Bare Metalwith Matchbox provider
Bare Metal Machine
ネットワーク設定PXE/iPXE/GRUB
ベアメタル向け環境構築の準備
もう少し粒度を高めると、このような具体的作業が必要です。
CoreOS Tectonicアカウント作成
https://account.coreos.com/login
Tectonic installerダウンロードと展開
Matchbox 0.6+のインストールTLS証明書のセットアップ
gRPC API 有効化
PXE boot環境の構築DHCP/ TFTP / DNS
DNS設定
(kubernetes controller, Tectonic Ingress worker}
Bare metal マシン準備
MACアドレス確認PXE Boot 設定
Terraform 本体およびMatchbox プロバイダの
セットアップ
Mathbox環境変数設定SSH エージェント設定
Terraform plan / applyBare Metal マシン電源投入
ベアメタル向け環境構築の準備
その中でも特に重要なのが、Matchboxです。ベアメタル環境の初期構築のためのOSイメージと設定ファイルを配布します。
CoreOS Tectonicアカウント作成
https://account.coreos.com/login
Tectonic installerダウンロードと展開
Matchbox 0.6+のインストールTLS証明書のセットアップ
gRPC API 有効化
PXE boot環境の構築DHCP/ TFTP / DNS
DNS設定
(kubernetes controller, Tectonic Ingress worker}
Bare metal マシン準備
MACアドレス確認PXE Boot 設定
Terraform 本体およびMatchbox プロバイダの
セットアップ
Mathbox環境変数設定SSH エージェント設定
Terraform plan / applyBare Metal マシン電源投入
41
Matchbox
Matchboxはベアメタル・マシンに対し、Tectonicの役割に応じたOSと初期設定(プロビジョニング)を行います。
Matchbox
Bare Metal Machine
42
Matchbox
ベアメタル・マシンはOSが入っておらず、PXE boot/iPXE/GRUB で起動後に OS 初期設定を行います。
Matchbox
Bare Metal Machine
port: 8080HTTP Endpoint
MACアドレスに応じてインストールする環境の
設定ファイルを送信
43
Matchbox
この MAC アドレスの情報や、Tectonic 関連の情報を管理するファイルを自動生成するのが Terraform です。
Matchbox
Terraform for Bare Metalwith Matchbox provider
Bare Metal Machine
port: 8080HTTP Endpoint
port: 8081gRPC API Endpoint
MACアドレスに応じてインストールする環境の
設定ファイルを送信
44
Matchbox
ベアメタル・マシンがブートすると、初期化プログラムIgnitionを実行(Cloud Config と同じですが、初回のみ実行)
Matchbox
Terraform for Bare Metalwith Matchbox provider
Bare Metal Machine
port: 8080HTTP Endpoint
port: 8081gRPC API Endpoint
MACアドレスに応じてインストールする環境の
設定ファイルを送信
Ignition Ignition
45
Matchbox
Tectonicの役割(コントローラかワーカー)に応じて、ベアメタル・マシンに対するセットアップが自動的に行われます。
Matchbox
Terraform for Bare Metalwith Matchbox provider
Bare Metal Machine
port: 8080HTTP Endpoint
port: 8081gRPC API Endpoint
MACアドレスに応じてインストールする環境の
設定ファイルを送信
Controller(s) Worker(s)
Ignition Ignition
私はみんなのためにWorkerに
なる!なるべーく、諦めなーい!
これが私たちの運命…
がんばろうね
やめろー!
Matchbox Ignition
47
Tectonic環境構築の流れ
もうすこし具体的な流れや、関連ファイルの関係性がこちらです。
Matchbox
Terraform for Bare Metalwith Matchbox provider
Bare Metal Machine
❶ terraform plan
terraform.tfvars
• 様々なノード情報• コントローラのホスト名とMACアドレス• ワーカーのホスト名とMACアドレス• ログイン情報・パスワードのハッシュ
❷ 関連ファイル生成
/var/lib/matchbox/+ /profiles/+ /Ignition/
❸ マシン起動
PXE boot
DHCP IP &iPXE用 URL
PXE Chainloading
Profiles(JSON)
Ignition(YAML)
dnsmasq(TFTP)
IgnitionIgnition
(YAML)
❹
❺役割に応じた環境自動構築
iPXE boot
❹ terraform apply
❻ remote-exec
gRPCAPI
構築の章・まとめ
•Matchbox -> Ignition が環境構築の要物理ノードのOS初期化・環境設定を行うのは、プロビジョニング専用の
サービス Matchbox を使い、ネットワーク上で自動環境構築を行う。
そして、Ignition が Matchbox の提供する設定情報を参照し、適切な
環境構築を行えるようにする。
•Terraform が環境構築の情報を提供設定ファイル上の変数設定を参照し、 “terraform plan/apply” コマンド
で Matchbox や Ignition が参照する YAML や JSON ファイルを生成し、
各ノード起動後は、SSH ログインと(必要に応じて)追加設定を自動実行。
Tectonic 環境構築編
51
詳細な手順は、またいずれ、どこかで
振り返り
Tectonic
概要編Bare Metal on
環境構築編
今日の内容
• 個人的な動機
• なぜ Tectonic なのか?
• Tectonic の機能と仕組み
TectonicはKubernetesの構築・管理基盤である
• Tectonic インストールまでの流れ
• Terraform で環境構築
• Matchbox と Ignition
Bare Metal 環境にも対応する
Questions?
参考References
Tectonichttps://coreos.com/tectonic/
Install on bare metal with Terraformhttps://coreos.com/tectonic/docs/latest/install/bare-metal/metal-terraform.html
coreos / matchboxhttps://github.com/coreos/matchbox
Matchbox Documentationhttps://coreos.com/matchbox/docs/latest/
Ignition Documentationhttps://coreos.com/ignition/docs/latest/