Skip to main content
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 Metal
with 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 Metal
with 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 Metal
with 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 Metal
with 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 Metal
with 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 Monitoring
Prometheusでクラスタとアプリケーションを管理
• Prometheus AlertManager
Tectonic 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 nodes
NAME STATUS ROLES AGE VERSION
node1.example.com Ready master 1d v1.7.5+coreos.1
node2.example.com Ready node 1d v1.7.5+coreos.1
node3.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 Metal
with 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 有効化
Mathcbox
v0.6+
Terraform for Bare Metal
with 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 / apply
Bare 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 / apply
Bare Metal マシン電源投入
41
Matchbox
Matchboxはベアメタル・マシンに対し、Tectonicの役割に応じたOSと初期設定(プロビジョニング)を行います。
Matchbox
Bare Metal Machine
42
Matchbox
ベアメタル・マシンはOSが入っておらず、PXE boot/iPXE/GRUB で起動後に OS 初期設定を行います。
Matchbox
Bare Metal Machine
port: 8080
HTTP Endpoint
MACアドレスに応じて
インストールする環境の
設定ファイルを送信
43
Matchbox
この MAC アドレスの情報や、Tectonic 関連の情報を管理するファイルを自動生成するのが Terraform です。
Matchbox
Terraform for Bare Metal
with Matchbox provider
Bare Metal Machine
port: 8080
HTTP Endpoint
port: 8081
gRPC API Endpoint
MACアドレスに応じて
インストールする環境の
設定ファイルを送信
44
Matchbox
ベアメタル・マシンがブートすると、 初期化プログラムIgnitionを実行(Cloud Config と同じですが、初回のみ実行)
Matchbox
Terraform for Bare Metal
with Matchbox provider
Bare Metal Machine
port: 8080
HTTP Endpoint
port: 8081
gRPC API Endpoint
MACアドレスに応じて
インストールする環境の
設定ファイルを送信
Ignition Ignition
45
Matchbox
Tectonicの役割(コントローラかワーカー)に応じて、ベアメタル・マシンに対するセットアップが自動的に行われます。
Matchbox
Terraform for Bare Metal
with Matchbox provider
Bare Metal Machine
port: 8080
HTTP Endpoint
port: 8081
gRPC API Endpoint
MACアドレスに応じて
インストールする環境の
設定ファイルを送信
Controller(s) Worker(s)
Ignition Ignition
私はみんなの
ためにWorkerに
なる!なるべーく、
諦めなーい!
これが私たちの
運命…
がんばろうね
やめろー!
Matchbox Ignition
47
Tectonic環境構築の流れ
もうすこし具体的な流れや、関連ファイルの関係性がこちらです。
Matchbox
Terraform for Bare Metal
with 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)
Ignition
Ignition
(YAML)
❹
❺役割に応じた
環境自動構築
iPXE boot
❹ terraform apply
❻ remote-exec
gRPC
API
構築の章・まとめ
•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
 Tectonic
https://coreos.com/tectonic/
 Install on bare metal with Terraform
https://coreos.com/tectonic/docs/latest/install/bare-metal/metal-terraform.html
 coreos / matchbox
https://github.com/coreos/matchbox
 Matchbox Documentation
https://coreos.com/matchbox/docs/latest/
 Ignition Documentation
https://coreos.com/ignition/docs/latest/