KonnectのService Catalogを触ってみる

9/11のAPI SummitのタイミングでKonnectにService Catalogの機能がPublic Betaとして[公開された](https://docs.konghq.com/konnect/updates/#september-2024)。
Service Catalogを使うと使わずに放置されたようなAPI（KongはShadow APIと呼んでいる）が見える化されてセキュリティリスクを軽減出来たり、分散した情報（コードリポジトリ、CI/CDパイプライン、API Specification、インシデントリスト等）を集約して表示したりすることが出来るらしい。
ただ、まだBeta版であり出来ることは限られており、今は外部のサービスについては以下のサービスとのみ連携することが出来る。

- [PagerDuty](https://docs.konghq.com/konnect/service-catalog/integrations/pagerduty/)
- [GitHub](https://docs.konghq.com/konnect/service-catalog/integrations/github/)
- [Traceable.io](https://docs.konghq.com/konnect/service-catalog/integrations/traceable/)

今は少ないが、Coming SoonにSwaggerHub、Datadog、GitLabもあるので連携先は順次追加されて行きそう。

今回は試しにGitHubと繋いで、どんな感じでKonnectからリポジトリが見えるのかを確認してみる。
ついでにその後にKong GatewayのServiceやAPI Productとの連携も確認してみる。

## GitHubとService Catalogの連携
最初にService CatalogをGitHubと連携し、Konnect上からリポジトリが見えるようにする。
Konnectにログインし、左サイドバーの`Integrations`から`GitHub`を選択し、`Install GitHub`をクリックする。
![20241007101744.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/547981/4f465c68-dbc4-8d96-7012-35d2413d8111.png)

すると認証が通っていないようなメッセージが表示されるので`Authorize`をクリックして認証を通す。
![20241007101850.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/547981/7ca122ee-1f35-12f3-c09a-4b6d98673b17.png)

すると連携させるリポジトリを選択する画面になる。
ここではテスト用に`konnect-catalog-test`という空のリポジトリを作っていたのでこれとPublicリポジトリを連携させてみる。
<img alt="picture 12" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/547981/462f51d8-a280-a92f-7d73-55ea6b8ba64d.png" width="300" />  

`Install & Authorize`をクリックすると連携が完了する。
なお、自分の場合ここで401が返ってきて"You must be authenticated to perform this action."というエラーが表示された。
GitHub側では連携が上手く出来ているように見えたので、一度GitHubのApplicationsから"Konnect Service Catalog"をUninstallして再度`Authorize`からやり直したら上手くいった。
<img alt="picture 12" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/547981/6f01a1c3-a727-7043-b4a8-4120d2d97f73.png" />  

連携が上手くいくとKonnectの表示が以下のようになる。
![20241007103125.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/547981/c332c839-506a-3d53-8a62-6abf3a658a69.png)
またService Catalogの`Resources`を見るとGitHubのリポジトリが確認できる。
![20241007103414.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/547981/5cd61898-7af9-781e-20d2-9f6d9aa7cb7d.png)

## Service CatalogのServiceの作成
Service Catalog内で連携した各外部・内部サービスを統合したものをServiceと呼ぶ。（これ、GatewayのServiceと被るので別名にした方が良かったのでは。。。）
このServiceを作成して任意のリポジトリを纏めてダッシュボード上で確認してみる。
Service Catalogの`Services`から`New Service`を選択する。
![20241007104000.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/547981/cb6a2168-63cc-6a98-54d2-d8d4781bd891.png)

すると作成用のフォームが表示される。必須項目はDisplay NameとNameのみだが、どういう風に見えるかを確認するために全ての項目を以下のように埋めてみた。
|項目|設定値|
|---|---|
|Display Name|My Service|
|Name|my-service|
|Description|サービスカタログのテストです。|
|Label|foo : bar|
|Cost Center|Professional Services|
|Dashboard|Konnect: https://cloud.konghq.com/|
|Git Repo|Catalog Test Repo: https://github.com/imurata/konnect-catalog-test|
|Jira Project|Dummy Jira: https://www.atlassian.com/ja/|
|Owner|ipppppei|
|Product Manager|Marco|
|Slack Channel|Dummy Slack: https://slack.com/intl/ja-jp/|

作成した結果はこちら。
Metadataのところで設定したリンクなどが表示されるようになった。
![20241007104802.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/547981/3fb1cfd4-df3b-ebf8-facc-1722fcdf2832.png)

次に登録したGitHubのリポジトリをこのServiceと連携させてみる。
下の`Map Resources`をクリックする。
すると連携させるリポジトリの一覧が表示される。
ここではテスト用に作成したPrivateのリポジトリと元々公開していたPublicのリポジトリをいくつか選択してMappingさせてみる。
![20241007105019.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/547981/9989ccb5-a128-3775-4ba2-30164da62fde.png)

するとこんな感じで各リポジトリの更新日やPR、Issueの数などが表示されるようになる。
![20241007105325.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/547981/7a959c8f-7967-3315-834e-7a81240d9cf3.png)

ということで、任意のリポジトリをまとめて表示することが出来た。
普段GitHubで見ている人も、複数のリポジトリのグルーピングとかは難しかったと思う。
KonnectのService Catalogを使えば簡単にグルーピングが出来るので、ちょっと便利になるかもしれない。

## Gateway ManagerとAPI Productsとの連携
ResourceのMap時、Kong GatewayのServiceを選択するとそれも同じService CatalogのServiceから可視化出来る。
Serviceを選択してMapすると、Gateway Managerの項目が表示され、MappingしたServiceが表示される。
またそのServiceと関連付けられているAPI Productも表示される。
![20241007110130.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/547981/e3371a7d-9b6f-813f-8945-c7d690319144.png)

また`Dashboard`のタブを選択すると、MappingしたServiceのメトリクスが見れるようになる。

![20241007110615.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/547981/a795d19a-5a4a-51cc-c321-13897b798b1f.png)

ちなみにその横の`Documents`や`API Specs`については自動で連携せず、手動でドキュメントを登録したりAPI SpecがあるAPI ProductのVersionを指定することで可視化できるようになる。
![20241007110818.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/547981/ce4957fc-72cf-6fdb-d679-7bee1c2e7bde.png)

## 所感
GitOps系のパイプラインをたくさん作ると、どれがどのサービスに紐づいていたか分かりにくくなるため、この手の統合ダッシュボードはあると本当に便利。
今回Konnectの統合ダッシュボード（Service Catalog）を使ってみて、操作感や見た目は悪くなかったので利用者、特に開発者にとっては環境の整理がすごく楽になると思う。
今時点では対応しているサービスが少ないが、今後増えていくみたいなので今後の成長に期待したい。
特にGitLab連携は楽しみである。