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

[CI/CD2023]OSSで構築するOpenAPI開発のCI/CD

 [CI/CD2023]OSSで構築するOpenAPI開発のCI/CD

Wenhan Shi

March 20, 2023
Tweet

More Decks by Wenhan Shi

Other Decks in Technology

Transcript

  1. THE CLOUD NATIVE API PLATFORM
    1
    THE CLOUD
    CONNECTIVITY COMPANY
    Wenhan Shi
    March 2023
    OSSで構築する
    OpenAPI開発のCI/CD

    View Slide

  2. THE CLOUD NATIVE API PLATFORM
    2
    2
    Who am I
    施 文翰(シ ブンカン) Wenhan Shi
    • 日立製作所 - Linux kernel module development/Support
    • Red Hat K.K. - GlusterFS/OpenShift Support
    • Canonical Japan K.K. - Ubuntu/OpenStack/Kubernetes Support
    • Rancher Lab/SUSE - Rancher Support
    • Kong Inc. - Solutions Engineer
    @shi_wenhan
    [email protected]

    View Slide

  3. THE CLOUD CONNECTIVITY COMPANY
    3
    © Kong Inc.
    ● 背景
    ● OpenAPI Specification(OAS)基礎知識
    ● CI/CDに登場するOSS
    ○ Insomnia
    ○ CLI tools(inso, deck, portal)
    ● CI/CDワークフロー
    Agenda
    本日Demoで利用したCI/CDソースコード
    https://github.com/xibuka/kong-apiops

    View Slide

  4. THE CLOUD NATIVE API PLATFORM
    4
    4
    Code First => API First

    View Slide

  5. THE CLOUD NATIVE API PLATFORM
    5
    5
    Source:
    https://stateofapis.com/
    850 responses from over
    100 countries.

    View Slide

  6. High Latency
    Unreliable
    Connectivity
    Traffic Anomaly
    Security
    Threats
    Blocked
    Access Control
    Unscalable API Connectivity
    © Kong Inc.
    Confidential & Proprietary

    View Slide

  7. THE CLOUD CONNECTIVITY COMPANY
    7
    © Kong Inc. 7
    API の公開


    View Slide

  8. THE CLOUD NATIVE API PLATFORM
    8
    8
    APIの仕様書
    OpenAPI Specification(OAS)
    基礎知識

    View Slide

  9. THE CLOUD NATIVE API PLATFORM
    9
    9
    OpenAPI Specification(OAS)の歴史

    View Slide

  10. THE CLOUD NATIVE API PLATFORM
    10
    APIの仕様書 - OpenAPI Spec(OAS)

    View Slide

  11. THE CLOUD NATIVE API PLATFORM
    11
    11
    OpenAPI Specification(OAS)とは
    • RESTful Web service(API)を記述、生成、消費、可視化するための仕様
    • この仕様はHTTP APIを説明するための標準
    • APIの概要
    • 利用可能なエンドポイント
    • Request とResponseの情報
    • 認証情報
    • Swagger Specificationとも呼ばれる

    View Slide

  12. THE CLOUD NATIVE API PLATFORM
    12
    12
    OpenAPI Specification(OAS)とは
    APIを利用する人 OpenAPI
    Specification
    APIを開発する人

    View Slide

  13. THE CLOUD NATIVE API PLATFORM
    13
    13
    OpenAPI Specification(OAS)の例
    openapi: 3.0.0
    tags:
    - description: Creates a random UUDI and returns it in a JSON structure
    name: Generate UUID
    info:
    contact:
    email: [email protected]
    url: https://konghq.com/
    description: A simple service returning a UUID based on https://httpbin.org
    title: UUID generator based on httpbin.org
    version: 1.0.0
    paths:
    /uuid:
    get:
    operationId: uuid
    summary: Return a UUID.
    description: Return a UUID
    responses:
    "200":
    description: A UUID4.
    tags:
    - Generate UUID
    servers:
    - url: https://httpbin.org
    エンドポイント (path) と、
    サポートされるメソッド (method)
    メタデータ
    titleとversionは必須
    タグと説明
    APIの所在

    View Slide

  14. THE CLOUD NATIVE API PLATFORM
    14
    14
    CI/CDに登場するOSS
    - Insomnia

    View Slide

  15. THE CLOUD NATIVE API PLATFORM
    15
    OpenAPI Spec(OAS)

    View Slide

  16. THE CLOUD NATIVE API PLATFORM
    16
    OpenAPI Spec(OAS)

    View Slide

  17. THE CLOUD CONNECTIVITY COMPANY
    17
    © Kong Inc.
    17
    OASのための 3 mode
    Design
    OASの定義内容の編集
    Debug
    リクエストの発行と結果確認
    Test
    テストケースの作成と実行
    Insomnia

    View Slide

  18. THE CLOUD CONNECTIVITY COMPANY
    18
    © Kong Inc. 18
    Insomnia 3 mode - Design
    DESIGNモード
    OASのナビゲーションメ
    ニュー
    OASエディター、リアルタイム
    文法エラーチェック
    文法エラーの詳細
    OASのプレビュー

    View Slide

  19. THE CLOUD CONNECTIVITY COMPANY
    19
    © Kong Inc. 19
    Insomnia 3 mode - Debug
    DEBUGモード
    リクエストのナビゲーショ
    ンメニュー
    設計したOASに対するリクエ
    スト。色付きの部分は環境変

    リクエストに対するレス
    ポンス
    認証情報やヘッダー設定な
    ど、より高度なリクエストが作
    成可能

    View Slide

  20. THE CLOUD CONNECTIVITY COMPANY
    20
    © Kong Inc. 20
    Insomnia 3 mode - Test
    TESTモード
    テストスイート名前
    テストの名前と
    利用するリクエスト
    テスト結果
    ユニットテストコード

    View Slide

  21. THE CLOUD NATIVE API PLATFORM
    21
    21
    CI/CDに登場するOSS
    - inso, deck, portal

    View Slide

  22. THE CLOUD CONNECTIVITY COMPANY
    22
    © Kong Inc. 22
    inso
    • APIOps のために開発された、InsomniaのCLIツール
    inso lint spec # API YAML Manifest検証
    inso run test # Insomniaで定義したテストを実行
    inso export spec # OpenAPI Specficationをエクスポート
    inso generate config # Kong configやk8s Ingress を生成

    View Slide

  23. THE CLOUD CONNECTIVITY COMPANY
    23
    © Kong Inc. 23
    decK
    • 宣言的な方法で Kong の構成を管理するツール
    deck ping # Kong Gatewayクラスタの死活確認
    deck dump # Kong Gatewayの設定内容をローカルファイルに保存
    deck validate # ローカルの設定ファイルの構成を確認
    deck diff # ローカルの設定ファイルと
    Kong Gateway環境にある差分を出力
    deck sync # ローカルの設定ファイルを
    Kong Gateway環境に反映

    View Slide

  24. THE CLOUD CONNECTIVITY COMPANY
    24
    © Kong Inc. 24
    portal
    • 宣言的な方法で Kong のDeveloper Portalの構成を管理するツール
    portal deploy # ローカルファイルからDeveloper Portalを構成
    portal config # 設定内容をローカルファイルに保存
    portal init # 設定を初期化

    View Slide

  25. THE CLOUD CONNECTIVITY COMPANY
    25
    © Kong Inc. 25
    Insomnia + inso + deck + portal
    CI/CDワークフロー

    View Slide

  26. THE CLOUD CONNECTIVITY COMPANY
    26
    © Kong Inc. 26
    CI/CD - APIOpsの流れ - ケース①

    View Slide

  27. THE CLOUD CONNECTIVITY COMPANY
    27
    © Kong Inc. 27
    CI/CD - APIOpsの流れ - ケース① - Kong 側

    View Slide

  28. THE CLOUD CONNECTIVITY COMPANY
    28
    © Kong Inc. 28
    CI/CD - APIOpsの流れ - ケース①

    View Slide

  29. THE CLOUD CONNECTIVITY COMPANY
    29
    © Kong Inc. 29
    CI/CD - APIOpsの流れ - ケース①

    View Slide

  30. THE CLOUD CONNECTIVITY COMPANY
    30
    © Kong Inc. 30
    CI/CD - APIOpsの流れ - ケース②

    View Slide

  31. THE CLOUD CONNECTIVITY COMPANY
    31
    © Kong Inc. 31
    CI/CD - APIOpsの流れ - ケース② - Kubernetes側

    View Slide

  32. THE CLOUD CONNECTIVITY COMPANY
    32
    © Kong Inc. 32
    CI/CD - APIOpsの流れ - ケース③

    View Slide

  33. THE CLOUD CONNECTIVITY COMPANY
    33
    © Kong Inc. 33
    CI/CD - APIOpsの流れ - ケース③

    View Slide

  34. THE CLOUD CONNECTIVITY COMPANY
    34
    © Kong Inc. 34
    まとめ

    View Slide

  35. THE CLOUD CONNECTIVITY COMPANY
    35
    © Kong Inc. 35
    まとめ
    - OpenAPI Specification(OAS)基礎知識
    - Insomnia
    - GUIツールで、APIの設計開発からデバッグ&テストまでカバー
    - Gitレポに全ての設定が保存可能
    - CLI tool、inso + decK+portal でAPIOps
    - コミット&プッシュ後は自動化可能
    - Kong gateway
    - Kubernetes
    - Dev portal

    View Slide

  36. THE CLOUD CONNECTIVITY COMPANY
    36
    © Kong Inc.
    Thank You
    ご不明点、ご相談などございましたら
    Twitter @shi_wenhan
    [email protected]

    View Slide