Skip to content

Commit

Permalink
feat: Service Catalog (#7889)
Browse files Browse the repository at this point in the history
* feat: Service Catalog landing page (#7739)

* Add sections and content (that needs to be paired down)

Signed-off-by: Diana <[email protected]>

* Revise intro paragraph and terminology table, also placeholder for FAQ and diagrams

Signed-off-by: Diana <[email protected]>

* Finish draft of Service Catalog overview and appease Vale

Signed-off-by: Diana <[email protected]>

* Improve the Service Catalog diagram

Signed-off-by: Diana <[email protected]>

* Apply Miko's feedback

Signed-off-by: Diana <[email protected]>

* Appease Vale

Signed-off-by: Diana <[email protected]>

* Fix related info link text

Signed-off-by: Diana <[email protected]>

* Apply suggestions from code review

Co-authored-by: Angel <[email protected]>

* Apply more feedback like making a use case table

Signed-off-by: Diana <[email protected]>

* Apply more feedback, fix expander menus

Signed-off-by: Diana <[email protected]>

* Small fixes

Signed-off-by: Diana <[email protected]>

* Fix naming of Service Catalog service and Gateway service

Signed-off-by: Diana <[email protected]>

* Generalize the integrations/resources in the diagram, fix diagram styling, apply Miko's feedback

Signed-off-by: Diana <[email protected]>

* Apply suggestions from code review to improve diagram

Co-authored-by: lena-larionova <[email protected]>

---------

Signed-off-by: Diana <[email protected]>
Co-authored-by: Angel <[email protected]>
Co-authored-by: lena-larionova <[email protected]>

* Service Catalog: teams and roles (#7849)

* teams and roles

* Apply suggestions from code review

Co-authored-by: lena-larionova <[email protected]>

* Update app/konnect/org-management/teams-and-roles/roles-reference.md

Co-authored-by: lena-larionova <[email protected]>

---------

Co-authored-by: lena-larionova <[email protected]>

* feat: Service Catalog Integrations landing page (#7862)

* integrations landing page

* drafts for integrations

* github, traceable, pagerduty

* fix icons + replace with smaller icons; clean up

* add bindable to dictionary

* create include for discovery info

---------

Co-authored-by: Angel <[email protected]>

* Apply suggestions from code review

* Apply suggestions from code review

* fix include

* vale

* Update app/konnect/service-catalog/integrations/traceable.md

Co-authored-by: lena-larionova <[email protected]>

---------

Signed-off-by: Diana <[email protected]>
Co-authored-by: Diana <[email protected]>
Co-authored-by: lena-larionova <[email protected]>
Co-authored-by: lena-larionova <[email protected]>
  • Loading branch information
4 people authored Sep 11, 2024
1 parent d09ea53 commit e45ec61
Show file tree
Hide file tree
Showing 15 changed files with 359 additions and 10 deletions.
1 change: 1 addition & 0 deletions .github/styles/kong/dictionary.txt
Original file line number Diff line number Diff line change
Expand Up @@ -153,6 +153,7 @@ backporting
backtrace
Bagdi
bcc
bindable
Bintray
Bitnami
blockquote
Expand Down
10 changes: 10 additions & 0 deletions app/_data/docs_nav_konnect.yml
Original file line number Diff line number Diff line change
Expand Up @@ -125,6 +125,16 @@
items:
- text: Overview
url: /service-catalog/
- text: Integrations
items:
- text: Overview
url: /service-catalog/integrations/
- text: GitHub
url: /service-catalog/integrations/github/
- text: PagerDuty
url: /service-catalog/integrations/pagerduty/
- text: Traceable
url: /service-catalog/integrations/traceable/

- title: API Products
icon: /assets/images/icons/konnect/icn-api-product.svg
Expand Down
21 changes: 21 additions & 0 deletions app/_data/tables/konnect/integrations.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
integrations:
- name: PagerDuty
icon: pagerduty.svg
slug: pagerduty
description: Alert service teams via PagerDuty alerts and provide information on current open incidents
- name: GitHub
icon: github.svg
slug: github
description: Associate a service to one or more GitHub repositories
- name: Traceable.io
icon: traceable.svg
slug: traceable
description: Manage and secure services that Traceable discovers by analyzing API traffic across your entire application landscape

##### Using this file ######
# - name: Name of the integration
# icon: The filename + extension of the icon for the integration, e.g. pagerduty.svg
# Put icon in /assets/images/icons/third-party/<file>.
# slug: The filename of the integration page itself, used for links. Don't include the file extension (e.g. .md)
# E.g. if the page is at /konnect/service-catalog/integrations/pagerduty, the slug is pagerduty
# description: Short description (100 char max) of the integration
4 changes: 4 additions & 0 deletions app/_includes/service-catalog-discovery.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
* Discovery {% if include.discovery_support == true %}is{% else %}isn't{% endif %} supported by this integration
* Discovery {% if include.discovery_default == true %}is{% else %}isn't{% endif %} enabled by default
* Bindable entities: {{ include.bindable_entities }}
* Discovery mechanism: {{ include.mechanism }}
13 changes: 13 additions & 0 deletions app/_includes/service-catalog-integrations.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
<div class="docs-grid-install max-3">
{% for i in site.data.tables.konnect.integrations.integrations %}
<a class="docs-grid-install-block docs-grid-install-block__bottom" href="/konnect/service-catalog/integrations/{{i.slug}}/">
<img class="install-icon no-image-expand small" src="/assets/images/icons/third-party/{{i.icon }}" style="width:32px" alt="">
<div class="install-block-column">
<div class="install-text">
<span style="font-size: 22px;display:block;margin-bottom:8px;">{{ i.name }}</span>
</div>
<div class="install-description">{{i.description}}</div>
</div>
</a>
{% endfor %}
</div>
3 changes: 3 additions & 0 deletions app/assets/images/icons/third-party/github.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
4 changes: 4 additions & 0 deletions app/assets/images/icons/third-party/pagerduty.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
31 changes: 31 additions & 0 deletions app/assets/images/icons/third-party/traceable.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
10 changes: 10 additions & 0 deletions app/konnect/org-management/teams-and-roles/roles-reference.md
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,16 @@ The following predefined roles are available in {{site.konnect_short_name}}:
| Creator | Access to create a new mesh control plane in Mesh Manager. The creator becomes the owner of the control plane they create, gaining admin access to the new control plane. <br><br>This role does not grant access to _existing_ control planes or their configurations. See the mesh control plane `Admin` role. |
| Viewer | Read-only access to all the configurations of a {{site.konnect_short_name}} mesh control plane, including zones, Zone Ingress and Egress, meshes, and RBAC. |

## Service Catalog

| Role | Description |
|-----------------------------|--------------|
| Integration Admin | Can view and edit all integrations (install/authorize). |
| Service Viewer | Can view a select list of services and all resources and discovery rules. |
| Service Admin | Can view and edit a select list of services, map resources to those services, and manage all resources and discovery rules. |
| Service Creator | Can create new services, becomes the service admin for any service they create, and can view, edit, and create all resources and discovery rules.


## Administration

| Role | Description |
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,5 +20,6 @@ Keywords:
| Data Plane Node Admin | Users can configure data plane nodes for the organization. They can also manage global configuration of the following entities: Gateway services, routes, plugins, upstreams, SNIs, and certificates.
| API Product Admin | Users can create and manage API products, including publishing API product versions to Dev Portal and enabling application registration.|
| API Product Developer | Users can create and manage versions of API products. |
| Service Admin | Users can view and edit a select list of services, map resources to those services, and manage all resources and discovery rules. |

To set up a custom team, see [Manage Teams and Roles](/konnect/org-management/teams-and-roles/).
130 changes: 120 additions & 10 deletions app/konnect/service-catalog/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,17 +4,127 @@ subtitle: Track every service across your architecture
content-type: explanation
---

A new {{site.service_catalog_name}} experience is currently in development. The new {{site.service_catalog_name}} will be a one-stop place to see all your services, with all your service information, right at your fingertips.
{{site.konnect_saas}}'s {{site.service_catalog_name}} offers a comprehensive catalog of all services running in your organization. By integrating with both Konnect-internal applications, like Gateway Manager and Mesh Manager, as well as external applications like Github and PagerDuty, {{site.service_catalog_name}} provides you with a 360 overview into each of your organization's services. It presents you with information that include who the service's owner is, its upstream and downstream dependencies, its code repositories, its CI/CD pipelines, and whether it is fronted by an API gateway or is part of a service mesh.

If you would like to get early access to the new {{site.service_catalog_name}}, go to **{{site.service_catalog_name}}** in the sidebar of your {{site.konnect_short_name}} instance.
<!-- vale off-->
{% mermaid %}
graph LR
%% Define styles for icons and nodes
classDef konnect stroke-dasharray:3,rx:10,ry:10
classDef serviceCatalog fill:#d0e5f3,rx:10,ry:10
%% Define the resources
ExternalIntegration1(External Integration 1):::resource
ExternalIntegration2(External Integration 2</div>):::resource
GatewayManager(<div style="text-align:center;"><img src="/assets/images/logos/konglogo-gradient-secondary.svg" style="max-width:25px; display:block; margin:0 auto;" class="no-image-expand"/> Gateway Manager</div>):::resource

## How to manage your services
%% Define the Konnect Service Catalog and its subgraphs
subgraph KonnectServiceCatalog[Konnect Service Catalog]
direction TB

While the new {{site.service_catalog_name}} is in development, you can manage your services in the following ways:
%% Define the Billing Service subgraph inside Konnect Service Catalog
subgraph BillingService[Billing Service]
direction LR
KongGatewayService(Gateway service 1)
ExternalResourceMapping1(External resource)
ExternalResourceMapping2(External resource)
end

%% Define the Inventory Service Catalog Service subgraph inside Konnect Service Catalog
subgraph InventoryService[Inventory Service]
direction LR
SomeOtherService(Gateway service 2)
AnotherService(External resource)
DifferentRepo(External resource)
end

end

%% Connect the resources to the Konnect Service Catalog
ExternalIntegration1 -- "External resource" --> KonnectServiceCatalog
ExternalIntegration2 -- "External resource" --> KonnectServiceCatalog
GatewayManager -- "Gateway services" --> KonnectServiceCatalog

%% Style the subgraphs
class KonnectServiceCatalog konnect
class BillingService serviceCatalog
class InventoryService serviceCatalog
{% endmermaid %}
<!-- vale on-->

> *Figure 1: This diagram shows how you can use both external integrations, like GitHub and PagerDuty, as well as internal integrations like Gateway Manager to pull resources into Service Catalog. You can then map those resources (like GitHub repositories, PagerDuty services, and Gateway services) to Service Catalog services.*
## Service Catalog use cases

| You want to... | Then use... |
| -------------- | ----------- |
| Keep track of your organization's resource ownership by mapping teams to Service Catalog services. | Add the Service Catalog service's owner when you [create a new Service Catalog service in {{site.konnect_short_name}}](https://cloud.konghq.com/service-catalog/create-service) |
| Gain visibility into all your services, including unrecognized or undiscovered APIs in your organization. | [Service Catalog integrations](https://cloud.konghq.com/service-catalog/integrations) |
| Consolidate key Service Catalog service health metrics, documentation, and API specs into a single list, allowing you to interact with other tools from one place. | [Service Catalog dashboard](https://cloud.konghq.com/service-catalog/) |

<!-- commenting this out until it's released:
| Govern how services are created and maintained across your company to adhere to security, compliance, and engineering best practices. | Scorecards |-->

## Service Catalog terminology

| Term | Definition |
| ---- | ---------- |
| Integration | These are applications, either {{site.konnect_short_name}}-internal or external, that act as sources from which you can ingest resources. For example, GitHub. |
| Resource | An umbrella term that denotes entities ingested by Service Catalog from enabled integrations. A resource can range from an infrastructural component (like Gateway services, mesh services, databases, and caches) to an external application or tool (like code repositories, CI/CD infrastructure, and on-call systems) to a piece of documentation (like API specs). Resources can be mapped to one or more Service Catalog services. |
| Service Catalog service | A unit of software that is typically owned by a single team, exposes one or more APIs, and may be dependent on other Service Catalog services (as either upstream or downstream). A Service Catalog service can be thought of as a collection of one or more resources. |
| Service Catalog | A comprehensive catalog of all resources and Service Catalog services running in your organization. |

## FAQs

<details><summary>How do Service Catalog services map to API products? What is the relationship there?</summary>

{% capture service_mapping %}
Service Catalog services do not directly map to API products. Rather, a Gateway service can be linked to a Service Catalog service and you can then map the Gateway service to an API product version in Service Catalog.
{% endcapture %}

{{ service_mapping | markdownify }}

</details>

<details><summary>How do I view the health and status of my services in the Service Catalog?</summary>

{% capture service_health %}
Navigate to **Services** in the Service Catalog and click on the Service Catalog service you want to view the health and status of.
{% endcapture %}

{{ service_health | markdownify }}

</details>

<details><summary>How can I identify which resources are available for mapping to my Service Catalog services?</summary>

{% capture reuse_resources %}
Navigate to the **Resources** page in the Service Catalog to view a list of all available resources. These are ingested by Service Catalog from the integrations that have been installed and authorized, which are found on the **Integrations** page.
{% endcapture %}

{{ reuse_resources | markdownify }}

</details>

<details><summary>What should I do if I notice discrepancies in the data shown in the Service Catalog?</summary>

{% capture discrepancies %}
Check the Service Catalog integration settings and data sources for any issues. Ensure that all connected tools are properly configured and that data synchronization is functioning correctly.
{% endcapture %}

{{ discrepancies | markdownify }}

</details>

<details><summary>Can I control who has access to specific Service Catalog service or data?</summary>

{% capture service_access %}
Yes, you can configure access controls and manage permissions to Service Catalog by configuring [teams](/konnect/org-management/teams-and-roles/manage/) and [roles](/konnect/org-management/teams-and-roles/roles-reference/).
{% endcapture %}

{{ service_access | markdownify }}

</details>

## More information
* [Service Catalog integrations](/konnect/service-catalog/integrations)

| Action | New location |
| ------ | ------------ |
| Create a new service | Go to [**Gateway Manager** in {{site.konnect_short_name}}](https://cloud.konghq.com/us/gateway-manager/). |
| Manage my existing services | Go to [**Gateway Manager** in {{site.konnect_short_name}}](https://cloud.konghq.com/us/gateway-manager/). |
| Manage service packages | Service packages are now API products. Go to [**API Products** in {{site.konnect_short_name}}](https://cloud.konghq.com/us/api-products/). |
| Create a service version | Service versions are now API product versions. Go to [**API Products** in {{site.konnect_short_name}}](https://cloud.konghq.com/us/api-products/). |
43 changes: 43 additions & 0 deletions app/konnect/service-catalog/integrations/github.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
---
title: GitHub Integration
content-type: reference

discovery_support: true
discovery_default: true
bindable_entities: "Repositories"
mechanism: "pull/ingestion model"
---

_Type: External_

The GitHub integration allows you to associate your Service Catalog service to one or more GitHub repositories.

For each linked Repository, the UI can show a **Repository Summary** with simple data pulled from the GitHub API, such as the number of open issues, open pull requests, most recently closed pull requests, languages, and more.

## Authorize the GitHub integration

1. From {{site.konnect_product_name}} select **[Integrations](https://cloud.konghq.com/us/service-catalog/integrations)**.
2. Select **GitHub**, then **Install Github**.
3. Select **Authorize**.

This will take you to GitHub where you can grant {{site.konnect_product_name}} access to either **All Repositories** or **Select repositories**.

The {{site.konnect_product_name}} application can be managed from GitHub as a [GitHub Application](https://docs.github.com/en/apps/using-github-apps/authorizing-github-apps).

## Resources

Entity | Description
-------|-------------
Repository | A GitHub repository relating to the service

## Discovery information

<!-- vale off-->

{% include_cached service-catalog-discovery.html
discovery_support=page.discovery_support
discovery_default=page.discovery_default
bindable_entities=page.bindable_entities
mechanism=page.mechanism %}

<!-- vale on-->
Loading

0 comments on commit e45ec61

Please sign in to comment.