Skip to main content

Check out Port for yourselfΒ 

Visualize your services' Kubernetes runtime using ArgoCD

Port’s ArgoCD integration allows you to model and visualize your Kubernetes deployments managed by ArgoCD, directly in Port.
This guide will help you set up the integration and visualize your services' Kubernetes runtime.

Common use cases​

  • Developers can easily view the health and status of their services' K8s runtime.
  • Platform engineers can create custom views and visualizations for different stakeholders in the organization.
  • Platform engineers can set, maintain and track standards for K8s resources.
  • R&D managers can track any data about services' K8s resources, using tailor-made views and dashboards.

Prerequisites​

  • The Git Integration that is relevant for you needs to be installed.
  • You will need an accessible k8s cluster. If you don't have one, here is how to quickly set-up a minikube cluster.
  • Helm - required to install Port's ArgoCD integration.

Set up data model​

To visualize your Kubernetes deployment managed by ArgoCD in Port, we will first install Port's ArgoCD integration which automatically creates ArgoCD-related blueprints and entities in your portal.

Install Port's ArgoCD integration​

  1. Go to your data sources page, click on + Data source, find the Kubernetes Stack category and select ArgoCD.

  2. Follow the installation command for your preferred installation method:

    To install the integration using Helm:

    1. Go to the Argocd data source page in your portal.

    2. Select the Real-time and always on method:

    3. A helm command will be displayed, with default values already filled out (e.g. your Port cliend ID, client secret, etc).
      Copy the command, replace the placeholders with your values, then run it in your terminal to install the integration.

    Selecting a Port API URL by account region

    The baseUrl, port_region, port.baseUrl, portBaseUrl, port_base_url and OCEAN__PORT__BASE_URL parameters are used to select which instance or Port API will be used.

    Port exposes two API instances, one for the EU region of Port, and one for the US region of Port.

What does the integration do?​

After installation, the integration will:

  1. Create blueprints in your Builder (as defined here) that represent ArgoCD resources:



  2. Create entities in your Software catalog. You will see a new page for each blueprint containing your resources, filled with data from your Kubernetes cluster (according to the default mapping that is defined here):



  3. Create a dashboard in your software catalog that provides you with some visual views of the data ingested from your K8s cluster.

  4. Listen to changes in your ArgoCD resources and update your entities accordingly.


Set up automatic discovery​

After onboarding, the relationship between the workload blueprint and the service blueprint is established automatically.
The next step is to configure automatic discovery to ensure that each workload entity is properly related to its respective service entity.

You may have noticed that the service relation is empty for all of our workload entities. This is because we haven't specified which workload belongs to which service. This can be done manually, or via mapping by using a convention of your choice.

In this guide we will use the following convention:
An Argo application with a label in the form of portService: <service-identifier> will automatically be assigned to a service with that identifier.

For example, an ArgoCD application with the label portService: awesomeService will be assigned to a service with the identifier awesomeService.

To achieve this, we need to update the ArgoCD integration's mapping configuration:

  1. Go to your data sources page, find the ArgoCD exporter card, click on it and you will see a YAML editor showing the current configuration. Add the following block to the mapping configuration and click Resync:

      - kind: application
    selector:
    query: 'true'
    port:
    entity:
    mappings:
    identifier: .metadata.labels.portService
    blueprint: '"workload"'
    properties: {}
    relations:
    service: .metadata.labels.portService

  2. Go to the services page of your software catalog. Click on the service for which you created the deployment. At the bottom of the page, you will see the workload related to this service, along with all of their data:


Visualize data from your Kubernetes environment​

We now have a lot of data about our Argo applications, and a dashboard that visualizes it in ways that will benefit the routines of our developers and managers. Since our ArgoCD application(workload) blueprint is connected to our service blueprint, we can now access some of the application's data directly in the context of the service.
Let's see an example of how we can add useful visualizations to our dashboard:

Display all degraded workloads for the AwesomeService service by team​

  1. Go to your ArgoCD dashboard, click on the + Add button in the top right corner, then select Table.

  2. Fill the form out like this, then click Save:

  3. In your new table, click on the Filter icon, then on + Add new filter.
    Add three filters by filling out the fields like this:

  4. Your table should now display all services belonging to your specified team, whose Health is Degraded:

Possible daily routine integrations​

  • Send a slack message in the R&D channel to let everyone know that a new deployment was created.
  • Notify Devops engineers when a service's availability drops.
  • Send a weekly/monthly report to R&D managers displaying the health of services' production runtime.

Conclusion​

Kubernetes is a complex environment that requires high-quality observability. Port's ArgoCD integration allows you to easily model and visualize your ArgoCD & Kubernetes resources, and integrate them into your daily routine.
Customize your views to display the data that matters to you, grouped or filtered by teams, namespaces, or any other criteria.