Upgrade to Pro — share decks privately, control downloads, hide ads and more …

SRE Lounge#3 UZABASE

tanan
May 18, 2018

SRE Lounge#3 UZABASE

SPEEDAでのProduction Kubernetes運用についてSREの取り組みを話しました。

tanan

May 18, 2018
Tweet

More Decks by tanan

Other Decks in Technology

Transcript

  1. • 阿南 肇史
    • 2016年7月 UZABASE 入社
    – 前職はSIerでアドテク系Infra Enginner
    • UZABASE SRE Team 所属
    – Infra Team => SRE Team (2017/07〜現在)
    自己紹介

    View full-size slide

  2. Mission
    経済情報で、世界をかえる
    Business Intelligence to Change Your World
    私たちは、世界中で愛される経済情報インフラをつくります。
    あらゆる経済情報を人とテクノロジーの力で整理・分析・創出し、
    ビジネスパーソンの生産性を高め、創造性を解放します。
    私たちは経済情報を通じて世界中の意思決定を支え、世界をかえます。

    View full-size slide

  3. Our Services
    B2Bマーケティングエンジン
    ソーシャル経済ニュース
    企業・業界情報プラットフォーム 日本最大級のベンチャーデータベース
    2009年
    2008年
    創業
    2014年
    2016年
    2017年

    View full-size slide

  4. ● ビジネスパーソンの情報収集・分析における課
    題を解決する最先端のプラットフォーム
    ● 世界中の企業情報、業界レポート、市場デー
    タ、ニュース、統計、M&Aなどあらゆるビジネ
    ス情報をカバー
    https://jp.ub-speeda.com
    SPEEDAとは?

    View full-size slide

  5. ● SPEEDA
    ○ インフラ+ソフトウェアで新機能開発以外を担当
    ■ インフラの構築運用
    ■ サービス・ジョブの運用
    ■ プロダクト改善、本番バグ対応、管理ツール開発
    ● 社内
    ○ オフィスネットワーク構築運用
    ○ 社内システム・PC・各種アカウント管理
    ○ コーポレートサイト、各サービスのLPサイトの構築運用
    SREの業務範囲

    View full-size slide

  6. Kubernetes運用における
    開発チームとSREの関わり方
    本日のテーマ

    View full-size slide

  7. 1. Backgrounds
    2. k8s Architecture
    3. Deployment
    4. Logging
    5. Monitoring
    Table of Contents

    View full-size slide

  8. Version:1.0
    LB
    Huge Monolithic App
    File
    Server

    View full-size slide

  9. Version:1.0
    LB
    Huge Monolithic App
    File
    Server
    ・小改修でも全体に影響
    ・機能追加も大がかり
    ・開発スピードが遅い
    ・デプロイが遅い
    ・増大し続けるヒープ
    ・頻繁なGC
    ・サーバ増設のコスト

    View full-size slide

  10. Version:2.0
    LB
    Huge Monolithic App
    File
    Server
    Int LB
    Microservice with VMs

    View full-size slide

  11. Version:2.0
    LB
    Huge Monolithic App
    File
    Server
    Int LB
    Microservice with VMs
    ・Microservice化
    ・機能別に開発可能
    ・ インフラ依頼増加
    (開発スピードが上がらない)
    ・多数のVM構築
    ・リソース効率悪い
    ・機能別にエンド
     ポイント(LB)準備
    ・運用コスト増加
    ・ヒープ増加が緩やかに

    View full-size slide

  12. Version:3.0
    LB
    Huge Monolithic App
    File
    Server
    Microservice with k8s
    Ingress

    View full-size slide

  13. Product Development
    Team
    Site Reliability Engineering
    Team
    CI / CDまで開発チームで完結できる世界を作る
    ● アプリケーション開発
    ● テスト
    ● コンテナイメージ作成
    ● デプロイ
    ● 監視用エンドポイント作成
    ● Logging
    ● Cluster全体の設定
    ● Nodeメンテナンス
    ● Logging
    ● Monitoring
    ● Security
    ● Kubernetes外のDataStore構築

    View full-size slide

  14. 1. Backgrounds
    2. k8s Architecture
    3. Deployment
    4. Logging
    5. Monitoring
    Table of Contents

    View full-size slide

  15. Rancher Server
    Rancher Agent
    ・Rancher Dashboard
    ・Cluster追加 / 削除
    ・ノード追加 / 削除
    ・Audit Logging
    ・Security
    Kubernetes Cluster
    rancher/agent rancher/agent rancher/agent rancher/agent
    Rancher Ingress
    service A : 8080 service B : 8080
    Namespace A Namespace B
    external LB
    k8s Architecture

    View full-size slide

  16. 凡例
    ホスト毎でのコンテナ配備状況
    台で稼働
    全台で稼働
    全台で稼働
    スタック

    View full-size slide

  17. 1. Backgrounds
    2. k8s Architecture
    3. Deployment
    4. Logging
    5. Monitoring
    Table of Contents

    View full-size slide

  18. Blue/Greenを
    バランサで切替
    開発k8sに
    e2eテスト環境をデ
    プロイ
    自動テストを実行
    本番k8sの
    Blue環境にデプロイ
    kubectl

    Shell Script
    kubectl

    Shell Script

    View full-size slide

  19. Rancher Ingress
    external LB
    Port: 10080
    Namespace: foo-green
    Port: 11080
    Namespace: foo-blue
    Aerospike
    Live
    同じDatasourceを利用して
    blue環境でテスト
    Green環境で稼働
    Blue/Green Deployment

    View full-size slide

  20. Rancher Ingress
    external LB
    Port: 10080
    Namespace: foo-green
    Port: 11080
    Namespace: foo-blue
    Aerospike
    Live
    Blue環境へ切替
    バランサー操作含め
    Developmentチームが
    自由にデプロイできる状態に
    Blue/Green Deployment

    View full-size slide

  21. 1. Backgrounds
    2. k8s Architecture
    3. Deployment
    4. Logging
    5. Monitoring
    Table of Contents

    View full-size slide

  22. • app-containerはログを標準(エラー)出力
    • 各ノードにログファイルが出力
    • logging-agentがログファイルをtail
    • Logging Backendへ送信
    • アーキテクチャ詳細は下記
    https://kubernetes.io/docs/concepts/cluster-admi
    nistration/logging/
    Logging
    Cluster-level Logging architecture

    View full-size slide

  23. Logging
    SPEEDA Logging Architecture
    BigQuery
    • app-containerはログを標準(エラー)出力
    – JSON形式で統一する
    • namespaceごとにfluentdをdaemonsetで稼働
    – プロジェクトごとに権限を分けることが可能
    • BackendはBigQuery
    – table / schemaは自動生成

    View full-size slide

  24. Logging
    【Containerで標準出力(JSON形式)】
    【Node上のファイル(ネストした JSON形式)】
    各Nodeの /var/log/containers/[pod_name]-[namespace]-[container_name]-[container_id].log に出力

    View full-size slide

  25. fluent-plugin-kubernetes_metadata_filter
    "log" カラムの内容を
    parseして取り出す
    開発チーム主導で自由に
    ログを出力して
    アップロードする

    View full-size slide

  26. 1. Backgrounds
    2. k8s Architecture
    3. Deployment
    4. Logging
    5. Monitoring
    Table of Contents

    View full-size slide

  27. Monitoring
    ・監視基盤としてPrometheus + Grafana を採用
    ・k8sにNode-exporter、Prometheusのコンテナを稼働
    ・k8sの各ノードで収集
    ・データ保存期間は24時間
    ・k8s外のPrometheusからfederationで収集
    ・GrafanaでVisualize
    ・詳細は弊社tech blogを参照ください!
     http://tech.uzabase.com/entry/2018/03/14/200512

    View full-size slide

  28. Prometheus Monitoring
    k8s cluster
    App pods
    node node node
    App pods App pods
    Node
    Exporter
    federation
    datasource
    Prometheus
    Alertmanager
    $ kubectl describe deployment prometheus --namespace=metrics
    Args:
    --config.file=/mnt/etc/prometheus.yml
    --storage.tsdb.retention=24h
    --web.external-url=$(EXTERNAL_URL)/prometheus
    Grafana

    View full-size slide

  29. • 開発チームでデプロイまで完結する
    • SREはクラスター全体の設計に集中
    • 権限を移譲することにより各チームが自律して
    プロジェクトに取り組める環境を作る
    まとめ

    View full-size slide

  30. Any questions?
    Thank you for listening!

    View full-size slide