Slide 1

Slide 1 text

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

Slide 2

Slide 2 text

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]

Slide 3

Slide 3 text

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

Slide 4

Slide 4 text

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

Slide 5

Slide 5 text

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

Slide 6

Slide 6 text

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

Slide 7

Slide 7 text

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


Slide 8

Slide 8 text

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

Slide 9

Slide 9 text

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

Slide 10

Slide 10 text

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

Slide 11

Slide 11 text

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

Slide 12

Slide 12 text

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

Slide 13

Slide 13 text

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の所在

Slide 14

Slide 14 text

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

Slide 15

Slide 15 text

THE CLOUD NATIVE API PLATFORM 15 OpenAPI Spec(OAS)

Slide 16

Slide 16 text

THE CLOUD NATIVE API PLATFORM 16 OpenAPI Spec(OAS)

Slide 17

Slide 17 text

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

Slide 18

Slide 18 text

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

Slide 19

Slide 19 text

THE CLOUD CONNECTIVITY COMPANY 19 © Kong Inc. 19 Insomnia 3 mode - Debug DEBUGモード リクエストのナビゲーショ ンメニュー 設計したOASに対するリクエ スト。色付きの部分は環境変 数 リクエストに対するレス ポンス 認証情報やヘッダー設定な ど、より高度なリクエストが作 成可能

Slide 20

Slide 20 text

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

Slide 21

Slide 21 text

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

Slide 22

Slide 22 text

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 を生成

Slide 23

Slide 23 text

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環境に反映

Slide 24

Slide 24 text

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

Slide 25

Slide 25 text

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

Slide 26

Slide 26 text

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

Slide 27

Slide 27 text

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

Slide 28

Slide 28 text

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

Slide 29

Slide 29 text

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

Slide 30

Slide 30 text

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

Slide 31

Slide 31 text

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

Slide 32

Slide 32 text

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

Slide 33

Slide 33 text

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

Slide 34

Slide 34 text

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

Slide 35

Slide 35 text

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

Slide 36

Slide 36 text

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