SlideShare ist ein Scribd-Unternehmen logo
1 von 30
Downloaden Sie, um offline zu lesen
Cloud Native Meetup Tokyo #1
with NATS with Kubernetes
の世界へ
Who?
Hayahito
Kawamitsu 某通信会社、
クラウド上での
コンテナサービス
(Rancher)
開発・運用
最近の社外活動
IoT
×
ヘルスケア
システム実装
on
GCP
Agenda
3
2
1 About NATS
NATS, NATS Streaming, Deploy, Monitoring, Logging, Benchmark
NATS with Kubernetes
Cluster, Deploy (NATS Operator)
OpenFaas with NATS with Kubernetes
Architecture, Deploy
(少々脱線)
メッセージングシステムの
市場ニーズ調査
GCP Sample Solutions(全56種)を元に、
プロダクト(全70種以上)の市場ニーズを調査。
以下は、IoTソリューション例。
順位 プロダクト名 登場回数
1 Cloud Storage 30
2 Compute Engine 24
3 BigQuery 23
4 App Engine 21
5 Cloud Dataflow 18
6 Cloud Load Balancing 15
7 Kubernetes Engine 13
7 Cloud PubSub 13
9 Cloud Bigtable 12
9 Cloud SQL 12
GCPサンプルソリューション登場プロダクト Top 10
メッセージングシステムを
必要とするソリューションは
多い!!
いま、ふたたびのNATSへ
Availability
Cluster
Security
TLS / User-Token
based Authentication
/ Authorization
Go言語で実装されたオープンソースのメッセージングシステム
(ソフトウェア / ハードウェアを問わず、分散したシステム間のメッセージのやり取り(送受信)をサポート)
NATS
Neural Autonomic Transport System
1 Performance and
Scalability
1,800万メッセージ/秒
2
Simplicity
Single binary / Text-based
protocol / No external
dependencies
3
4
DNA
メッセージングモデル
Publish/Subscribe Request/Reply Queueing
(Load balanced
queue subscriber)
NATS Streaming
データストリーミングシステム powerd by NATS
> Delivery: At-least-once
クライアントが接続した際に、過去のメッセージも受信
可能。
> Storage: Memory, File or Database
ストレージ上にメッセージを保存することで実装。
> Store Limits設定可能
Subject毎にメッセージの保存期間を設定可能。
Monitoring
Endpoint for metrics nats-top Prometheus
Grafana
NATS
Server
NATS
Server
Prometheus
NATS
Prometheus
Exporter
NATS
Prometheus
Exporter
nats-top is a top like tool
for monitoring NATS
servers.
http://localhost:8222/vars
http://localhost:8222/connz
http://localhost:8222/subsz
http://localhost:8222/routez
Logging
<実行コマンド>
$ gnatsd -s udp://localhost:514
<実行コマンド>
$ gnatsd -l nats.log
ログファイル出力 Syslog
<その他オプション>
-l, --log FILE File to redirect log output.
-T, --logtime Timestamp log entries (default is true).
-s, --syslog Enable syslog as log method.
-r, --remote_syslog Syslog server address.
-D, --debug Enable debugging output.
-V, --trace Trace the raw protocol.
-DV Debug and Trace.
<実行環境>
CPU: Intel Xeon CPU E5-2643 3.30GHz
Memory: 32GB
<ベンチマークツール(nats-bench)インストール>
$ go get github.com/nats-io/go-nats
$ go install $GOPATH/src/github.com/nats-io/go-nats/examples/nats-bench.go
<NATS実行>
$ gnatsd
<実行コマンド: オプション確認>
$ nats-bench -h
-np NUM_PUBLISHERS
-ns NUM_SUBSCRIBERS
-n NUM_MSGS
-ms MESSAGE_SIZE <subject>
ベンチマークとチューニング
<実行コマンド N:Mスループットテスト>
$ nats-bench -np 5 -ns 5 -n 10000000 -ms 16 foo
...省略...
NATS Pub/Sub stats: 6,666,260 msgs/sec 101.72 MB/sec
...省略...
チューニングのナレッジをお
持ちの方いらっしゃいます
か?
Benchmark
Let’s Deploy!
<前提条件>
・Go 1.5+ and set $GOPATH
<実行コマンド>
$ go get github.com/nats-io/gnatsd
$ gnatsd
<前提条件>
・Dockerインストール
<実行コマンド>
$ docker run -p 4222:4222 nats
ソースインストール & 実行 Dockerコンテナ実行
Client
NATS
NATS NATS
4222
Management
HTTP/
HTTPS
8222
route:
6222
$ telnet localhost 4222
Trying ::1...
Connected to localhost.
Escape character is '^]'.
INFO
{"server_id":"34wyPXXqogfLVYw2fMvMpc","vers
ion":"1.1.1","git_commit":"","go":"go1.10.2","host":"
0.0.0.0","port":4222,"auth_required":false,"tls_re
quired":false,"tls_verify":false,"max_payload":104
8576}
pub foo.bar 5
hello
+OK
Let’s Pub/Sub!
(Human NATS Client: Telnet)
Subscriber実行 Publisher実行
$ telnet localhost 4222
Trying ::1...
Connected to localhost.
Escape character is '^]'.
INFO
{"server_id":"34wyPXXqogfLVYw2fMvMpc","vers
ion":"1.1.1","git_commit":"","go":"go1.10.2","host":"
0.0.0.0","port":4222,"auth_required":false,"tls_re
quired":false,"tls_verify":false,"max_payload":104
8576}
sub foo.* 90
+OK
MSG foo.bar 90 5
hello
1
2
3
4
5
NATS with Kubernetes
NATS Cluster
Cluster
Publisher
Publisher
Sbuscriber
Subscriber
Subscriber
NATS
NATS NATS
クラスタ内のLeader決めなどは、Raft
Consensus Algorithmに基づいて実施。
etcdでも同アルゴリズムが採用されているが、
詳細は別資料参照。
$ echo '
apiVersion: "nats.io/v1alpha2"
kind: "NatsCluster"
metadata:
name: "example-nats-cluster"
spec:
size: 3
version: "1.1.0"
' | kubectl -n nats-io apply -f -
Let’s Deploy (NATS Operator)!
<手順>
$ kubectl apply -f
https://raw.githubusercontent.com/nats-io/nats
-operator/master/example/deployment.yaml
$ kubectl get pod -n nats-io -o wide
$ kubectl get service -n nats-io
$ kubectl get crd -n nats-io
NAME AGE
natsclusters.nats.io 1h
1
3
2
OpenFaas with NATS Streaming
with Kubernetes
Namespace: openfaas
faas-netes
Client Gateway faas-netes
Prometheus
nats-streaming queue-worker
FUNCTION
FUNCTION
...
faas-netes: Kubernetes上にて、OpenFaaSが動作するのをサポート。
いくつかのデプロイツールが含まれる。
Alertmanager
Namespace: openfaas-fn
<前提条件>
・Kubernetes 1.8 or 1.9 cluster running on Linux hosts.
・Install Helm.
<実行コマンド>
$ git clone https://github.com/openfaas/faas-netes.git
$ cd faas-netes/chart
$ kubectl create ns openfaas
$ kubectl create ns openfaas-fn
$ helm upgrade --install openfaas openfaas/ 
--namespace openfaas --set functionNamespace=openfaas-fn
Let’s Deploy OpenFaaS!
<実行コマンド>
$ curl -sL https://cli.openfaas.com
$ git clone https://github.com/openfaas/faas-cli
$ cd faas-cli
$ faas-cli deploy -f stack.yml --gateway http://127.0.0.1:31112
$ faas-cli list --gateway http://127.0.0.1:31112
Function Invocations Replicas
nodejs-echo 0 1
<同期実行コマンド>
$ curl http://127.0.0.1:31112/function/nodejs-echo -d “hello”
{"nodeVersion":"v8.9.1","input":"“hello”"}
<非同期実行コマンド>
$ curl http://127.0.0.1:31112/async-function/nodejs-echo -d “hello”
Let’s Deploy Samples!
Enjoy with NATS
with Kubernetes!!
1. Youtube - NATS Intro
https://www.youtube.com/watch?v=Y9bDY_oE80w
2. Youtube - NATS Deep Dive
https://www.youtube.com/watch?v=MAKYz8oPRyw
3. THE LINUX FOUNDATION - CNCFがNATSをホストへ
https://www.linuxfoundation.jp/blog/cncf-to-host-nats/
4. cloud.google.com - GCP Offical Icons and Sample Solutions
https://docs.google.com/presentation/d/1vjm5YdmOH5LrubFhHf1vlqW2O9Z2UqdWA8biN3e8K5U/edit?hl=ja#slide=id.g1a
96c6729e_19_0
5. GitHub - Cloud Native Landscape and Trail map
https://github.com/cncf/landscape
6. NATS Cloud - Introducing NATS Cloud
https://www.nats.cloud/
7. GitHub - NATS - The Cloud Native Messaging System
https://github.com/nats-io
8. Docker Hub - NATS
https://hub.docker.com/_/nats/
9. OpenFaaS - Deployment guide for Kubernetes
https://docs.openfaas.com/deployment/kubernetes/
10. GitHub - The Raft Consensus Algorithm
https://raft.github.io/
参考サイト

Weitere ähnliche Inhalte

Was ist angesagt?

第4回Linux-HA勉強会資料 Pacemakerの紹介
第4回Linux-HA勉強会資料 Pacemakerの紹介第4回Linux-HA勉強会資料 Pacemakerの紹介
第4回Linux-HA勉強会資料 Pacemakerの紹介
ksk_ha
 
Apache Arrow - データ処理ツールの次世代プラットフォーム
Apache Arrow - データ処理ツールの次世代プラットフォームApache Arrow - データ処理ツールの次世代プラットフォーム
Apache Arrow - データ処理ツールの次世代プラットフォーム
Kouhei Sutou
 
Mongo dbを知ろう
Mongo dbを知ろうMongo dbを知ろう
Mongo dbを知ろう
CROOZ, inc.
 

Was ist angesagt? (20)

twMVC#44 讓我們用 k6 來進行壓測吧
twMVC#44 讓我們用 k6 來進行壓測吧twMVC#44 讓我們用 k6 來進行壓測吧
twMVC#44 讓我們用 k6 來進行壓測吧
 
第4回Linux-HA勉強会資料 Pacemakerの紹介
第4回Linux-HA勉強会資料 Pacemakerの紹介第4回Linux-HA勉強会資料 Pacemakerの紹介
第4回Linux-HA勉強会資料 Pacemakerの紹介
 
MongoDB〜その性質と利用場面〜
MongoDB〜その性質と利用場面〜MongoDB〜その性質と利用場面〜
MongoDB〜その性質と利用場面〜
 
Apache kafka performance(latency)_benchmark_v0.3
Apache kafka performance(latency)_benchmark_v0.3Apache kafka performance(latency)_benchmark_v0.3
Apache kafka performance(latency)_benchmark_v0.3
 
From cache to in-memory data grid. Introduction to Hazelcast.
From cache to in-memory data grid. Introduction to Hazelcast.From cache to in-memory data grid. Introduction to Hazelcast.
From cache to in-memory data grid. Introduction to Hazelcast.
 
Apache Arrow - データ処理ツールの次世代プラットフォーム
Apache Arrow - データ処理ツールの次世代プラットフォームApache Arrow - データ処理ツールの次世代プラットフォーム
Apache Arrow - データ処理ツールの次世代プラットフォーム
 
MongoDB Configパラメータ解説
MongoDB Configパラメータ解説MongoDB Configパラメータ解説
MongoDB Configパラメータ解説
 
Java Clientで入門する Apache Kafka #jjug_ccc #ccc_e2
Java Clientで入門する Apache Kafka #jjug_ccc #ccc_e2Java Clientで入門する Apache Kafka #jjug_ccc #ccc_e2
Java Clientで入門する Apache Kafka #jjug_ccc #ccc_e2
 
ELK ではじめる自宅ネットワーク監視
ELK ではじめる自宅ネットワーク監視ELK ではじめる自宅ネットワーク監視
ELK ではじめる自宅ネットワーク監視
 
インターネットの仕組み enPiT資料
インターネットの仕組み enPiT資料インターネットの仕組み enPiT資料
インターネットの仕組み enPiT資料
 
Mongo dbを知ろう
Mongo dbを知ろうMongo dbを知ろう
Mongo dbを知ろう
 
PostgreSQLの関数属性を知ろう
PostgreSQLの関数属性を知ろうPostgreSQLの関数属性を知ろう
PostgreSQLの関数属性を知ろう
 
Apache Sparkにおけるメモリ - アプリケーションを落とさないメモリ設計手法 -
Apache Sparkにおけるメモリ - アプリケーションを落とさないメモリ設計手法 -Apache Sparkにおけるメモリ - アプリケーションを落とさないメモリ設計手法 -
Apache Sparkにおけるメモリ - アプリケーションを落とさないメモリ設計手法 -
 
クラウド環境下におけるAPIリトライ設計
クラウド環境下におけるAPIリトライ設計クラウド環境下におけるAPIリトライ設計
クラウド環境下におけるAPIリトライ設計
 
From Message to Cluster: A Realworld Introduction to Kafka Capacity Planning
From Message to Cluster: A Realworld Introduction to Kafka Capacity PlanningFrom Message to Cluster: A Realworld Introduction to Kafka Capacity Planning
From Message to Cluster: A Realworld Introduction to Kafka Capacity Planning
 
Kolla talk at OpenStack Summit 2017 in Sydney
Kolla talk at OpenStack Summit 2017 in SydneyKolla talk at OpenStack Summit 2017 in Sydney
Kolla talk at OpenStack Summit 2017 in Sydney
 
ORC improvement in Apache Spark 2.3
ORC improvement in Apache Spark 2.3ORC improvement in Apache Spark 2.3
ORC improvement in Apache Spark 2.3
 
10分でわかるOpenAPI V3
10分でわかるOpenAPI V310分でわかるOpenAPI V3
10分でわかるOpenAPI V3
 
最近のストリーム処理事情振り返り
最近のストリーム処理事情振り返り最近のストリーム処理事情振り返り
最近のストリーム処理事情振り返り
 
ストリーム処理を支えるキューイングシステムの選び方
ストリーム処理を支えるキューイングシステムの選び方ストリーム処理を支えるキューイングシステムの選び方
ストリーム処理を支えるキューイングシステムの選び方
 

Ähnlich wie with NATS with Kubernetesの世界へ

OpenStack + Common Lisp
OpenStack + Common LispOpenStack + Common Lisp
OpenStack + Common Lisp
irix_jp
 
【17-E-2】Ruby PaaS「MOGOK」 ~ ソフトウェアエンジニアのためのクラウドサービス ~ 藤原秀一氏
【17-E-2】Ruby PaaS「MOGOK」 ~ ソフトウェアエンジニアのためのクラウドサービス ~ 藤原秀一氏【17-E-2】Ruby PaaS「MOGOK」 ~ ソフトウェアエンジニアのためのクラウドサービス ~ 藤原秀一氏
【17-E-2】Ruby PaaS「MOGOK」 ~ ソフトウェアエンジニアのためのクラウドサービス ~ 藤原秀一氏
Developers Summit
 
WebDB Forum 2012 基調講演資料
WebDB Forum 2012 基調講演資料WebDB Forum 2012 基調講演資料
WebDB Forum 2012 基調講演資料
Recruit Technologies
 
Cloudstack user group meeting in osaka
Cloudstack user group meeting in osakaCloudstack user group meeting in osaka
Cloudstack user group meeting in osaka
Naotaka Jay HOTTA
 

Ähnlich wie with NATS with Kubernetesの世界へ (20)

P2Pって何?
P2Pって何?P2Pって何?
P2Pって何?
 
Node.jsでブラウザメッセンジャー
Node.jsでブラウザメッセンジャーNode.jsでブラウザメッセンジャー
Node.jsでブラウザメッセンジャー
 
20170329 container technight-第一回勉強会
20170329 container technight-第一回勉強会20170329 container technight-第一回勉強会
20170329 container technight-第一回勉強会
 
20170329 container technight-第一回勉強会
20170329 container technight-第一回勉強会20170329 container technight-第一回勉強会
20170329 container technight-第一回勉強会
 
マイクロサービス時代の生存戦略 with HashiCorp
マイクロサービス時代の生存戦略 with HashiCorpマイクロサービス時代の生存戦略 with HashiCorp
マイクロサービス時代の生存戦略 with HashiCorp
 
DockerとKubernetesが作る未来
DockerとKubernetesが作る未来DockerとKubernetesが作る未来
DockerとKubernetesが作る未来
 
k8sとOpenShiftの違いとは.pdf
k8sとOpenShiftの違いとは.pdfk8sとOpenShiftの違いとは.pdf
k8sとOpenShiftの違いとは.pdf
 
AWSとGCPを使用したインフラ環境
AWSとGCPを使用したインフラ環境AWSとGCPを使用したインフラ環境
AWSとGCPを使用したインフラ環境
 
OpenStack + Common Lisp
OpenStack + Common LispOpenStack + Common Lisp
OpenStack + Common Lisp
 
RouterBOARD with OpenFlow
RouterBOARD with OpenFlowRouterBOARD with OpenFlow
RouterBOARD with OpenFlow
 
【17-E-2】Ruby PaaS「MOGOK」 ~ ソフトウェアエンジニアのためのクラウドサービス ~ 藤原秀一氏
【17-E-2】Ruby PaaS「MOGOK」 ~ ソフトウェアエンジニアのためのクラウドサービス ~ 藤原秀一氏【17-E-2】Ruby PaaS「MOGOK」 ~ ソフトウェアエンジニアのためのクラウドサービス ~ 藤原秀一氏
【17-E-2】Ruby PaaS「MOGOK」 ~ ソフトウェアエンジニアのためのクラウドサービス ~ 藤原秀一氏
 
WebRTC meetup Tokyo 1
WebRTC meetup  Tokyo 1WebRTC meetup  Tokyo 1
WebRTC meetup Tokyo 1
 
WebDB Forum 2012 基調講演資料
WebDB Forum 2012 基調講演資料WebDB Forum 2012 基調講演資料
WebDB Forum 2012 基調講演資料
 
KubeCon Recap for Istio and K8s network performance @Kubernetes Meetup #11
KubeCon Recap for Istio and K8s network performance @Kubernetes Meetup #11KubeCon Recap for Istio and K8s network performance @Kubernetes Meetup #11
KubeCon Recap for Istio and K8s network performance @Kubernetes Meetup #11
 
Cloud Foundry: Open Platform as a Service
Cloud Foundry: Open Platform as a ServiceCloud Foundry: Open Platform as a Service
Cloud Foundry: Open Platform as a Service
 
分散バージョン管理システムって何なん 20101218
分散バージョン管理システムって何なん 20101218分散バージョン管理システムって何なん 20101218
分散バージョン管理システムって何なん 20101218
 
Ansible npstudy-shtsuchi
Ansible npstudy-shtsuchiAnsible npstudy-shtsuchi
Ansible npstudy-shtsuchi
 
GKE に飛んでくるトラフィックを 自由自在に操る力 | 第 10 回 Google Cloud INSIDE Games & Apps Online
GKE に飛んでくるトラフィックを 自由自在に操る力 | 第 10 回 Google Cloud INSIDE Games & Apps OnlineGKE に飛んでくるトラフィックを 自由自在に操る力 | 第 10 回 Google Cloud INSIDE Games & Apps Online
GKE に飛んでくるトラフィックを 自由自在に操る力 | 第 10 回 Google Cloud INSIDE Games & Apps Online
 
Kubernetesと閉域網
Kubernetesと閉域網Kubernetesと閉域網
Kubernetesと閉域網
 
Cloudstack user group meeting in osaka
Cloudstack user group meeting in osakaCloudstack user group meeting in osaka
Cloudstack user group meeting in osaka
 

with NATS with Kubernetesの世界へ

  • 1. Cloud Native Meetup Tokyo #1 with NATS with Kubernetes の世界へ
  • 3. Agenda 3 2 1 About NATS NATS, NATS Streaming, Deploy, Monitoring, Logging, Benchmark NATS with Kubernetes Cluster, Deploy (NATS Operator) OpenFaas with NATS with Kubernetes Architecture, Deploy
  • 4.
  • 5.
  • 8. 順位 プロダクト名 登場回数 1 Cloud Storage 30 2 Compute Engine 24 3 BigQuery 23 4 App Engine 21 5 Cloud Dataflow 18 6 Cloud Load Balancing 15 7 Kubernetes Engine 13 7 Cloud PubSub 13 9 Cloud Bigtable 12 9 Cloud SQL 12 GCPサンプルソリューション登場プロダクト Top 10 メッセージングシステムを 必要とするソリューションは 多い!!
  • 10. Availability Cluster Security TLS / User-Token based Authentication / Authorization Go言語で実装されたオープンソースのメッセージングシステム (ソフトウェア / ハードウェアを問わず、分散したシステム間のメッセージのやり取り(送受信)をサポート) NATS Neural Autonomic Transport System 1 Performance and Scalability 1,800万メッセージ/秒 2 Simplicity Single binary / Text-based protocol / No external dependencies 3 4 DNA
  • 12. NATS Streaming データストリーミングシステム powerd by NATS > Delivery: At-least-once クライアントが接続した際に、過去のメッセージも受信 可能。 > Storage: Memory, File or Database ストレージ上にメッセージを保存することで実装。 > Store Limits設定可能 Subject毎にメッセージの保存期間を設定可能。
  • 13. Monitoring Endpoint for metrics nats-top Prometheus Grafana NATS Server NATS Server Prometheus NATS Prometheus Exporter NATS Prometheus Exporter nats-top is a top like tool for monitoring NATS servers. http://localhost:8222/vars http://localhost:8222/connz http://localhost:8222/subsz http://localhost:8222/routez
  • 14. Logging <実行コマンド> $ gnatsd -s udp://localhost:514 <実行コマンド> $ gnatsd -l nats.log ログファイル出力 Syslog <その他オプション> -l, --log FILE File to redirect log output. -T, --logtime Timestamp log entries (default is true). -s, --syslog Enable syslog as log method. -r, --remote_syslog Syslog server address. -D, --debug Enable debugging output. -V, --trace Trace the raw protocol. -DV Debug and Trace.
  • 15. <実行環境> CPU: Intel Xeon CPU E5-2643 3.30GHz Memory: 32GB <ベンチマークツール(nats-bench)インストール> $ go get github.com/nats-io/go-nats $ go install $GOPATH/src/github.com/nats-io/go-nats/examples/nats-bench.go <NATS実行> $ gnatsd <実行コマンド: オプション確認> $ nats-bench -h -np NUM_PUBLISHERS -ns NUM_SUBSCRIBERS -n NUM_MSGS -ms MESSAGE_SIZE <subject> ベンチマークとチューニング <実行コマンド N:Mスループットテスト> $ nats-bench -np 5 -ns 5 -n 10000000 -ms 16 foo ...省略... NATS Pub/Sub stats: 6,666,260 msgs/sec 101.72 MB/sec ...省略... チューニングのナレッジをお 持ちの方いらっしゃいます か?
  • 17. Let’s Deploy! <前提条件> ・Go 1.5+ and set $GOPATH <実行コマンド> $ go get github.com/nats-io/gnatsd $ gnatsd <前提条件> ・Dockerインストール <実行コマンド> $ docker run -p 4222:4222 nats ソースインストール & 実行 Dockerコンテナ実行 Client NATS NATS NATS 4222 Management HTTP/ HTTPS 8222 route: 6222
  • 18. $ telnet localhost 4222 Trying ::1... Connected to localhost. Escape character is '^]'. INFO {"server_id":"34wyPXXqogfLVYw2fMvMpc","vers ion":"1.1.1","git_commit":"","go":"go1.10.2","host":" 0.0.0.0","port":4222,"auth_required":false,"tls_re quired":false,"tls_verify":false,"max_payload":104 8576} pub foo.bar 5 hello +OK Let’s Pub/Sub! (Human NATS Client: Telnet) Subscriber実行 Publisher実行 $ telnet localhost 4222 Trying ::1... Connected to localhost. Escape character is '^]'. INFO {"server_id":"34wyPXXqogfLVYw2fMvMpc","vers ion":"1.1.1","git_commit":"","go":"go1.10.2","host":" 0.0.0.0","port":4222,"auth_required":false,"tls_re quired":false,"tls_verify":false,"max_payload":104 8576} sub foo.* 90 +OK MSG foo.bar 90 5 hello 1 2 3 4 5
  • 19.
  • 21. NATS Cluster Cluster Publisher Publisher Sbuscriber Subscriber Subscriber NATS NATS NATS クラスタ内のLeader決めなどは、Raft Consensus Algorithmに基づいて実施。 etcdでも同アルゴリズムが採用されているが、 詳細は別資料参照。
  • 22. $ echo ' apiVersion: "nats.io/v1alpha2" kind: "NatsCluster" metadata: name: "example-nats-cluster" spec: size: 3 version: "1.1.0" ' | kubectl -n nats-io apply -f - Let’s Deploy (NATS Operator)! <手順> $ kubectl apply -f https://raw.githubusercontent.com/nats-io/nats -operator/master/example/deployment.yaml $ kubectl get pod -n nats-io -o wide $ kubectl get service -n nats-io $ kubectl get crd -n nats-io NAME AGE natsclusters.nats.io 1h 1 3 2
  • 23. OpenFaas with NATS Streaming with Kubernetes
  • 24.
  • 25.
  • 26. Namespace: openfaas faas-netes Client Gateway faas-netes Prometheus nats-streaming queue-worker FUNCTION FUNCTION ... faas-netes: Kubernetes上にて、OpenFaaSが動作するのをサポート。 いくつかのデプロイツールが含まれる。 Alertmanager Namespace: openfaas-fn
  • 27. <前提条件> ・Kubernetes 1.8 or 1.9 cluster running on Linux hosts. ・Install Helm. <実行コマンド> $ git clone https://github.com/openfaas/faas-netes.git $ cd faas-netes/chart $ kubectl create ns openfaas $ kubectl create ns openfaas-fn $ helm upgrade --install openfaas openfaas/ --namespace openfaas --set functionNamespace=openfaas-fn Let’s Deploy OpenFaaS!
  • 28. <実行コマンド> $ curl -sL https://cli.openfaas.com $ git clone https://github.com/openfaas/faas-cli $ cd faas-cli $ faas-cli deploy -f stack.yml --gateway http://127.0.0.1:31112 $ faas-cli list --gateway http://127.0.0.1:31112 Function Invocations Replicas nodejs-echo 0 1 <同期実行コマンド> $ curl http://127.0.0.1:31112/function/nodejs-echo -d “hello” {"nodeVersion":"v8.9.1","input":"“hello”"} <非同期実行コマンド> $ curl http://127.0.0.1:31112/async-function/nodejs-echo -d “hello” Let’s Deploy Samples!
  • 29. Enjoy with NATS with Kubernetes!!
  • 30. 1. Youtube - NATS Intro https://www.youtube.com/watch?v=Y9bDY_oE80w 2. Youtube - NATS Deep Dive https://www.youtube.com/watch?v=MAKYz8oPRyw 3. THE LINUX FOUNDATION - CNCFがNATSをホストへ https://www.linuxfoundation.jp/blog/cncf-to-host-nats/ 4. cloud.google.com - GCP Offical Icons and Sample Solutions https://docs.google.com/presentation/d/1vjm5YdmOH5LrubFhHf1vlqW2O9Z2UqdWA8biN3e8K5U/edit?hl=ja#slide=id.g1a 96c6729e_19_0 5. GitHub - Cloud Native Landscape and Trail map https://github.com/cncf/landscape 6. NATS Cloud - Introducing NATS Cloud https://www.nats.cloud/ 7. GitHub - NATS - The Cloud Native Messaging System https://github.com/nats-io 8. Docker Hub - NATS https://hub.docker.com/_/nats/ 9. OpenFaaS - Deployment guide for Kubernetes https://docs.openfaas.com/deployment/kubernetes/ 10. GitHub - The Raft Consensus Algorithm https://raft.github.io/ 参考サイト