ArgoCD

Create an integration to manage access to ArgoCD resources

ArgoCD is a Kubernetes-native continuous delivery (CD) tool that implements GitOps practices by using Git repositories as the single source of truth for application state.

Through this integration, Apono helps you discover ArgoCD roles and resources and securely manage just-in-time (JIT) access to them.


Prerequisites

Item
Description

Apono connector

On-prem connection serving as a bridge between an ArgoCD instance and Apono:

Kubernetes Command Line Tool (kubectl)

Command-line tool used for communicating with a Kubernetes cluster's control plane

ArgoCD

Instance installed and configured with your Identity Provider (IdP) for authentication


Set up Apono in ArgoCD

The steps to set up Apono in ArgoCD depend on where the Apono Connector is running and what permissions it has. The connector’s location determines whether you need to create a new service account, bind roles, or provide a token secret.

Use the tabs below to follow the instructions that match your environment:

  • Same cluster (cluster-admin): The connector already has full permissions.

  • Same cluster (limited permissions): Grant the connector’s existing service account the minimal Role/RoleBinding it needs.

  • Different cluster: Create a dedicated service account in the ArgoCD cluster and provide its token to Apono.

Follow these steps to set up Apono access in ArgoCD:

  1. Open the argocd-cm ConfigMap in your default editor.

kubectl edit configmap argocd-cm -n argocd
  1. Add email to both the OIDC scopes: requestedScopes and groupsClaim.

This allows ArgoCD to map users by email, in addition to groups.

The following example is an edited ConfigMap.

Example: argocd-cm ConfigMap
oidc.config: |
  name: Authentik
  issuer: https://my-issuer.com
  clientID: myclientid
  clientSecret: myclientsecret
  requestedScopes:
    - openid
    - profile
    - email
    - groups
    - offline_access
  insecureSkipVerify: true
  requestedIDTokenClaims:
    groups:
      essential: true
  groupsClaim: [groups, email]
  1. Define your ArgoCD roles.

Add any global roles in the argocd-rbac-cm configmap's policy.csv for cluster-wide access. Add any project roles in the spec.roles of specific AppProject custom resource definitions (CRDs).

Apono will sync ArgoCD roles (both project and global) from the argocd-rbac-cm ConfigMap. Apono policies can then be applied to grant or revoke Just-In-Time (JIT) access to ArgoCD resources.

# Example in argocd-rbac-cm
policy.csv: |
  p, role:readonly, applications, get, */*, allow
  p, role:deployer, applications, sync, */*, allow
  1. Restart the ArgoCD API server for the changes to take effect.

kubectl rollout restart deployment argocd-server -n argocd

You can now Integrate ArgoCD.


Integrate ArgoCD

Follow these steps to complete the integration:

  1. On the Catalog tab, click ArgoCD. The Connect Integration page appears.

  2. Under Discovery, click one or more resource types to sync with Apono.

Apono automatically discovers and syncs all the instances in the environment. After syncing, you can manage Access Flows to these resources.

  1. Click Next. The Apono connector section expands.

  2. From the dropdown menu, select a connector. Choosing a connector links Apono to all the services available on the account where the connector is located.

  1. Click Next. The Integration Config section expands.

  2. Define the Integration Config settings.

    Setting
    Description

    Integration Name

    Unique, alphanumeric, user-friendly name used to identify this integration when constructing an access flow

    ArgoCD UI URL

    Public URL of your ArgoCD instance

    Example: https://argocd.my-domain.com

    ArgoCD Namespace

    Kubernetes namespace where ArgoCD is installed Default: argocd

    Kubernetes Server URL

    (Optional) API server endpoint of the Kubernetes cluster hosting ArgoCD

    Provide the URL only when connecting to an external Kubernetes API server.

    Leave this field blank when Apono’s connector is running in the same cluster.

    Kubernetes Certificate Authority

    (Optional) Certificate Authority (CA) bundle used to validate the Kubernetes API server certificate

    Provide the CA file if connecting to an external cluster with a custom CA.

    Leave this field blank when Apono's connector is running in the same cluster.

  3. Click Next. The Secret Store section expands.

This step is not necessary when the Apono connector is in the same cluster as ArgoCD.

If you select the Apono secret manager, enter the following value:

  • Kubernetes Service Account Token: Enter the service account token value from step 7 of the previous section on the Different cluster tab.

  1. Click Next. The Get more with Apono section expands.

  2. Define the Get more with Apono settings.

    Setting
    Description

    Credential Rotation

    (Optional) Number of days after which the database credentials must be rotated

    Learn more about the Credentials Rotation Policy.

    User cleanup after access is revoked (in days)

    (Optional) Defines the number of days after access has been revoked that the user should be deleted

    Learn more about Periodic User Cleanup & Deletion.

    Custom Access Details

    (Optional) Instructions explaining how to access this integration's resources

    Upon accessing an integration, a message with these instructions will be displayed to end users in the User Portal. The message may include up to 400 characters.

    To view the message as it appears to end users, click Preview.

    Integration Owner

    (Optional) Fallback approver if no resource owner is found Follow these steps to define one or several integration owners:

    1. From the Attribute dropdown menu, select User or Group under the relevant identity provider (IdP) platform.

    2. From the Value dropdown menu, select one or multiple users or groups.

    NOTE: When Resource Owner is defined, an Integration Owner must be defined.

    Resource Owner

    (Optional) Group or role responsible for managing access approvals or rejections for the resource Follow these steps to define one or several resource owners:

    1. Enter a Key name. This value is the name of the tag created in your cloud environment.

    2. From the Attribute dropdown menu, select an attribute under the IdP platform to which the key name is associated. Apono will use the value associated with the key (tag) to identify the resource owner. When you update the membership of the group or role in your IdP platform, this change is also reflected in Apono.

    NOTE: When this setting is defined, an Integration Owner must also be defined.

  3. Click Confirm.

💡Are you integrating with Apono using Terraform?

If you want to integrate with Apono using Terraform, follow these steps instead of clicking Confirm:

  1. At the top of the screen, click View as Code. A modal appears with the completed Terraform configuration code.

  2. Click to copy the code.

  3. Make any additional edits.

  4. Deploy the code in your Terraform.

Refer to Integration Config Metadata for more details about the schema definition.

Now that you have completed this integration, you can create access flows that grant permission to your ArgoCD resources.

Last updated

Was this helpful?