FUJITSU Cloud Service for OSSを支えるコンテナとCI/CD技術

FUJITSU Cloud Service for OSSを支えるコンテナとCI/CD技術

FUJITSU Cloud Service for OSS (旧称K5)は、OpenStackを中心とするオープンソース技術で構築された国内最大級のパブリッククラウドサービスです。2015年のサービス提供開始以来、様々な機能拡張を行ってきましたが、2018年6月にOpenStack基盤を一新しました。新基盤では、開発から配備までのサービス提供を、DockerコンテナとAnsibleを用いたCI/CD(CI:継続的インテグレーション、CD:継続的デリバリ)により実現しています。本講演では、FUJITSU Cloud Service for OSSのOpenStack基盤のアーキテクチャ―とCI/CDを支えるツールの適用事例を紹介します。

D5a83165b9644ddf8718fc32c577e74e?s=128

Noboru Iwamatsu

August 03, 2018
Tweet

Transcript

  1. 2.

    自己紹介  FUJITSU Cloud Service for OSSの開発メンバー Copyright 2018 FUJITSU

    LIMITED 岩松 昇 小西 洋太郎 松木 辰真  OS・仮想化・クラウドの研究からIaaS設計リーダーに  Xen, OpenStackなどOSSとは10数年の関わり  Kolla/Kolla-Ansible コミッター  OpenStackとはIcehouseからの付き合い  Tempest/Rally/ログ分析/トラブル対応係 1
  2. 3.

    アウトライン  FUJITSU Cloud Service for OSS の紹介  KollaによるOpenStack配備

     OpenStack ログ収集・分析自動化 Copyright 2018 FUJITSU LIMITED 2
  3. 5.

    FUJITSU Cloud Service for OSS とは  富士通が提供するパブリッククラウド  2015年9月提供開始

    • 旧称: FUJITSU Cloud Service K5 • OpenStackベース(+独自拡張)のIaaS  2018年6月に基盤刷新&名称変更 • OpenStackを最新化、そのまま利用 「OpenStack準拠」のクラウドに生まれ変わった Copyright 2018 FUJITSU LIMITED http://jp.fujitsu.com/solutions/cloud/k5/ 4
  4. 6.

    FUJITSU Cloud Service for OSS: 第二世代基盤提供リージョン  西日本第三リージョン(6/29)、東日本第三リージョン(7/31)を提供開始 Copyright 2018

    FUJITSU LIMITED jp-east-1 UK Nordic Germany Spain US jp-west-2 jp-west-1 jp-east-2 jp-west-3 jp-east-3 Available Region New Region Region Planning 5
  5. 7.

    FUJITSU Cloud Service for OSS: OpenStack提供サービス Copyright 2018 FUJITSU LIMITED

    仮想マシンとベアメタル 仮想ネットワーク • FWaaS • OctaviaベースのLBaaS 認証・証明書管理 オブジェクトストレージ • SwiftとS3互換、DR対応予定 オーケストレーション • FWaaS/LBaaS/Trove対応 データベースサービス • PostgreSQL(α版) https://www.openstack.org/project-mascots/ 仮想マシン・ベアメタル • GPGPUインスタンス対応 ブロックストレージ ・イメージ • All Flash Storage • データ持ち込みサービス 6
  6. 8.

    FUJITSU Cloud Service for OSS: OpenStack API Ecosystemへの対応  OpenStack

    Client  コマンドラインクライアントの利用ガイドを公開予定‼  Ansible  Ansible OpenStack Moduleを利用した サンプルPlaybookを公開予定‼ Copyright 2018 FUJITSU LIMITED https://docs.ansible.com/ansible/latest/modules/list_of_cloud_modules.html#openstack # yum install centos-release-openstack-queens # yum install python2-openstackclient # yum install ansible # yum install python2-shade 7
  7. 9.

    FUJITSU Cloud Service for OSS: クラウド基盤の設計方針 Copyright 2018 FUJITSU LIMITED

     パブリッククラウドの運用で分かったこと  クラウド基盤は要件・問題を事前把握できない クラウド基盤 Open Stack Multi-vendor Hardware Hypervisor お客様システム VM … VM お客様システム VM VM お客様のワークロードを事前定義できない バグあり、未成熟なのは当り前 増設やバージョンアップで特性が動的に変わる  for OSSのアプローチは「すぐ直せる」こと  インフラ全体をすぐに設定変更できる クラウド基盤全てをSoftware-Definedに  デリバリーコスト・時間を短縮する  全てをコンテナ化し、自動配備を実現  即座に問題を見つけ出しトラブルシュートできる  全ログをリアルタイム分析 8
  8. 10.

     IP Fabric/SDS採用によるハードウェア機器設定のソフトウェア管理  OpenStackのコンテナ化と管理サービス群(数10システム)のOpenStack管理/コンテナ化 FUJITSU Cloud Service for OSS:

    クラウド基盤構成 Copyright 2018 FUJITSU LIMITED Server/SDS IP Fabric OSS/BSS Audit /Analysis SDN LCM お客様システム DB AP Web お客様システム KVS AP LB AP AP … SDN ctrl. 管理サービス用OpenStack OpenStack 9
  9. 12.

    OpenStack配備ツールとしてKollaを採用 Copyright 2018 FUJITSU LIMITED 11  2015年頃より登場した Docker と

    Ansible によりOpenStackを配備 するツール  当初はテスト環境構築ツールとしてアピールしていた(ライバルのDevstack やPackstackに対して構築速度をアピール)が,近年は内容も成熟し, 商用OpenStack構築を目標として活発に開発されている
  10. 13.

    Kollaを採用することのメリット  Python, Ansible, Docker というトレンドに沿った技術に基づいている  学習コストが小さい  フォーク・独自改修も容易

     冪等性が強く意識されている  初期配備とその後の更新を区別しないで済む  柔軟に設定変更が可能  システム規模,サーバスペックやネットワークやストレージ周りなどのインフラ設定  Dockerコンテナの中身・バイナリパッケージ  OpenStackに対する設定値 Copyright 2018 FUJITSU LIMITED 12
  11. 14.

    Kolla – Kolla と Kolla-Ansible  Kolla  OpenStack用 Dockerfile(詳細にカスタマイズ可能)

    が集まったもの  Kolla-Ansible  OpenStack用 Ansible Playbook/Role が集まったもの  Kollaがつくったコンテナイメージ を Kolla-Ansibleで配備・設定する Copyright 2018 FUJITSU LIMITED 13 Kolla Kolla-Ansible
  12. 15.

    Kolla/Kolla-AnsibleによるOpenStack構築 Copyright 2018 FUJITSU LIMITED 14 配備対象ホスト Dockerコンテナ App Conf

    Log Conf dir Log dir bind mount Jenkins Docker Ansible Ansible Docker Registry Image Image Image イメージ作成 OpenStack 設定ファイル更新 Image Pull/Run指示 ※Jenkins等のCI/CD支援ツールと 組み合わせて使う
  13. 16.

    Kolla/Kolla-AnsibleによるOpenStack構築 Copyright 2018 FUJITSU LIMITED 15 Jenkins Docker Ansible Ansible

    Docker Registry Image Image Image イメージ作成 OpenStack設定 Docker操作指示 イメージPull
  14. 18.

    Kollaのカスタマイズ – Kolla Dockerfile Copyright 2018 FUJITSU LIMITED 17 FROM

    {{ namespace }}/{{ image_prefix }}nova-base:{{ tag }} ... {% block nova_scheduler_header %}{% endblock %} {% import "macros.j2" as macros with context %} {% if install_type == 'binary' %} {% if base_distro in ['centos', 'oraclelinux', 'rhel'] %} {% set nova_scheduler_packages = [ 'openstack-nova-scheduler' ] %} ... {% endif %} ... {% endif %} {% block nova_scheduler_footer %}{% endblock %} {% block footer %}{% endblock %} USER nova  特殊テンプレート形式  Jinja2ベース  設定ファイルによりカスタム可能  ヘッダ・フッタ  任意のDockerfile文を 挿入可能  パッケージリスト  デフォルトのパッケージリストに対し て任意のパッケージを追加・削 除・上書き可能
  15. 19.

     Kolla-Ansibleのほとんどの設定についても任意にオーバーライド可能 Kollaのカスタマイズ – Kolla-Ansible Copyright 2018 FUJITSU LIMITED 18

    nova globals.yml 主にネットワークインタフェース指定等の インフラ周りの設定 passwords.yml Keystoneユーザやデータベース等の パスワード設定ファイル(自動生成も可) Nova, Neutron, Glance, ...等の サービス毎のオーバライド設定ファイルを格納 (必要に応じて) config
  16. 20.

    Jenkins Pipeline への組み込み  KollaやKolla-Ansibleを実行する前に,前処理・後処理が必要   それらをJenkins Pipelineとして実装 

    Jenkins Pipeline : Jenkins Job を Stage で区切り,それぞれを独立して可視化した りリトライ・ループ・分岐などを DSL で実装できる  主な Pipeline の流れ Copyright 2018 FUJITSU LIMITED 19 OS プロビジョン (CI時) Kolla- Ansible 設定 Kolla- Ansible 実行 Post- Deploy 処理 各ホスト 基本設定
  17. 24.

    OpenStack CI における課題 テスト・トラブルシュート ~ 開発 に時間がかかる。  テスト項目が多い(約1800) •

    Tempestを利用 • 開発段階では、100以上失敗  テスト対象ホストが多い(100台~) 開発フェーズに素早く移行したい  すぐにエラー原因にたどり着ける Copyright 2018 FUJITSU LIMITED Staging Source Code, Playbook Build Deploy Test Develop 23
  18. 25.

    OpenStack ログの自動収集 Elastic Stackで、ログの収集・解析を自動化する  Elastic stack: https://www.elastic.co/products Copyright 2018

    FUJITSU LIMITED OpenStack Elastic Stack テスト実行 ログ自動転送 ログを検索 ・ログの蓄積 ・ログの検索 ・ダッシュボード 24
  19. 26.

    for OSS におけるログ自動収集 Copyright 2018 FUJITSU LIMITED  Elastic Stack

    を利用したログ収集自動化の流れ OpenStack Elasticsearch Logstash Kafka ・ データ構造化 ・ データ検索エンジン ・ ログ転送 エージェント ・ メッセージキュー 構造化定義(フィルター)を開発 nova.log Filebeat Kibana 25
  20. 27.

    LogstashでOpenStackログを構造化 Copyright 2018 FUJITSU LIMITED  OpenStackログの一例 2018-07-31 10:13:20.066 36

    INFO nova.osapi_compute.wsgi.server [req- 34378379-fad7-4b54-acf5-16d53dd0e1a8 983461ab3c3a447bbd55d8c8a9fbeff0 43906b4ccf124514b26d8a551419ac9f – 31ac69683b234ddb80f753a2a1a0450a 31ac69683b234ddb80f753a2a1a0450a] 10.101.4.138,10.101.4.49 "POST /v2.1/43906b4ccf124514b26d8a551419ac9f/os-keypairs HTTP/1.1" status: 200 len: 2597 time: 0.3791530 Loglevel Domain ID Request URI データ構造化 26
  21. 30.

    リクエストID検索によるエラーの特定  リクエストID: API呼び出し毎に付与される識別子 Copyright 2018 FUJITSU LIMITED for OSS

    でよくあるログ分析事例(1) リクエストは ちゃんと来てる。 APIはちゃんと 応答している。 その後エラーが 出ている! 29
  22. 33.

    FUJITSU Cloud Service for OSS の紹介  多数のOpenStack機能をサービス提供  OpenStack準拠のAPIを提供

    「すぐに直せる」クラウドサービスを目指した基盤設計  OpenStack/Kollaベースの配備ツールによるCI/CD  Elastic Stackを用いたログの自動収集・分析 Copyright 2018 FUJITSU LIMITED まとめ 32
  23. 34.

    33