Skip to main content
Redhat Developers  Logo
  • Products

    Platforms

    • Red Hat Enterprise Linux
      Red Hat Enterprise Linux Icon
    • Red Hat AI
      Red Hat AI
    • Red Hat OpenShift
      Openshift icon
    • Red Hat Ansible Automation Platform
      Ansible icon
    • See all Red Hat products

    Featured

    • Red Hat build of OpenJDK
    • Red Hat Developer Hub
    • Red Hat JBoss Enterprise Application Platform
    • Red Hat OpenShift Dev Spaces
    • Red Hat OpenShift Local
    • Red Hat Developer Sandbox

      Try Red Hat products and technologies without setup or configuration fees for 30 days with this shared Red Hat OpenShift and Kubernetes cluster.
    • Try at no cost
  • Technologies

    Featured

    • AI/ML
      AI/ML Icon
    • Linux
      Linux Icon
    • Kubernetes
      Cloud icon
    • Automation
      Automation Icon showing arrows moving in a circle around a gear
    • See all technologies
    • Programming languages & frameworks

      • Java
      • Python
      • JavaScript
    • System design & architecture

      • Red Hat architecture and design patterns
      • Microservices
      • Event-Driven Architecture
      • Databases
    • Developer experience

      • Productivity
      • Tools
      • GitOps
    • Automated data processing

      • AI/ML
      • Data science
      • Apache Kafka on Kubernetes
    • Platform engineering

      • DevOps
      • DevSecOps
      • Red Hat Ansible Automation Platform for applications and services
    • Secure development & architectures

      • Security
      • Secure coding
  • Learn

    Featured

    • Kubernetes & cloud native
      Openshift icon
    • Linux
      Rhel icon
    • Automation
      Ansible cloud icon
    • AI/ML
      AI/ML Icon
    • See all learning resources

    E-books

    • GitOps cookbook
    • Podman in action
    • Kubernetes operators
    • The path to GitOps
    • See all e-books

    Cheat sheets

    • Linux commands
    • Bash commands
    • Git
    • systemd commands
    • See all cheat sheets

    Documentation

    • Product documentation
    • API catalog
    • Legacy documentation
  • Developer Sandbox

    Developer Sandbox

    • Access Red Hat’s products and technologies without setup or configuration, and start developing quicker than ever before with our new, no-cost sandbox environments.
    • Explore the Developer Sandbox

    Featured Developer Sandbox activities

    • Get started with your Developer Sandbox
    • OpenShift virtualization and application modernization using the Developer Sandbox
    • Explore all Developer Sandbox activities

    Ready to start developing apps?

    • Try at no cost
  • Blog
  • Events
  • Videos

How to integrate Developer Hub with OpenShift GitOps

February 9, 2026
Joshua Canter
Related topics:
GitOpsIntegrationOperators
Related products:
Red Hat Developer HubRed Hat OpenShift GitOpsRed Hat OpenShift

    In previous articles, we set up a fully functional Red Hat Developer Hub installation in Red Hat OpenShift integrated with a GitHub organization for users through the use of dynamic plug-ins. In this article, we will explore another set of dynamic plug-ins allowing deep integration with Red Hat OpenShift GitOps (based on ArgoCD). 

    Setting up ArgoCD

    The OpenShift GitOps operator provides a quick, easy setup for ArgoCD with an instance defaulted to “cluster” scope.  Use the following manifests to create the default instance of ArgoCD. ArgoCD is a tool that allows automated deployments and enforcement of your declarative manifests, allowing Git to be the source of truth for your cluster and application configurations.

    Prerequisites:

    • Red Hat Developer Hub
    • OpenShift 4.x cluster

    Note: If your cluster uses self-signed certs, the backend plug-in will reject the ArgoCD endpoint. You can set up Developer Hub to ignore insecure TLS, but this is only recommended in a PoC environment.  

    Create the required namespaces.

    ---
    kind: Namespace
    apiVersion: v1
    metadata:
      name: openshift-gitops-operator
    --- 
    kind: Namespace
    apiVersion: v1
    metadata:
      name: openshift-gitops

    Create the required OperatorGroup and subscription.

    ---
    
    apiVersion: operators.coreos.com/v1
    kind: OperatorGroup
    metadata:
      name: openshift-gitops-operator
      namespace: openshift-gitops-operator
    spec:
      upgradeStrategy: Default

     

    apiVersion: operators.coreos.com/v1alpha1
    kind: Subscription
    metadata:
      name: openshift-gitops-operator
      namespace: openshift-gitops-operator
    spec:
      channel: latest
      installPlanApproval: Automatic
      name: openshift-gitops-operator
      source: redhat-operators
      sourceNamespace: openshift-marketplace

    This will create an “ArgoCD” custom resource in the namespace “openshift-gitops” called “openshift-gitops.” For integration with Developer Hub, we require an account with apiKey access. 

    Amend the default RBAC configuration and add extraConfig for the “openshift-gitops” Argo CD resource with the following:

     rbac:
        defaultPolicy: ''
        policy: |
          g, system:cluster-admins, role:admin
          g, cluster-admins, role:admin
          g, rhdh, role:admin
        scopes: '[groups]'
      extraConfig:
        accounts.rhdh: apiKey

    This will create an account in ArgoCD called “rhdh” with the full admin role. For real workloads, the account should have a role with appropriate access.

    Next, create a token for the “rhdh” ArgoCD account. From the CLI, this involves a few simple calls.

    ARGOCD_SERVER=$(oc get route openshift-gitops-server -n openshift-gitops -o jsonpath='{.spec.host}')
    
    ADMIN_PASS=$(oc get secret openshift-gitops-cluster -ojsonpath='{.data.admin\.password}' -n openshift-gitops | base64 -d)
    
    # NOTE:If your cluster uses self signed certs use -k in curl
    ARGO_TOKEN=$(curl -s -H "Content-Type: application/json" https://$ARGOCD_SERVER/api/v1/session -d '{"username":"admin","password":"'$ADMIN_PASS'"}' | jq -r '.token')
    
    curl -s -H "Authorization: Bearer $ARGO_TOKEN" -H "Content-Type: application/json" -X POST -d '{"expiresIn": 0,"id": "rhdh","name": "RHDH top level token"}' https://$ARGOCD_SERVER/api/v1/account/rhdh/token
    {"token":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9…………"}

    Use this token to create a secret for Developer Hub to use within the rhdh-operator namespace.

    kind: Secret
    apiVersion: v1
    metadata:
     name: argo-secrets
     namespace: rhdh-operator
    stringData:
     ARGOCD_TOKEN: <argo token previously generated>
     ARGOCD_URL: <argo route in OCP>
    type: Opaque

    Last, add appropriate permissions to ArgoCD to create namespaces and resources. In a normal case, we would set up a separate “namespaced” instance of ArgoCD to deploy application resources to specific namespaces in the cluster.  

    In this demo, we are giving Argo’s controller full access for simplicity.  This is not recommended for production environments.

    Create a ClusterRoleBinding to give ArgoCD’s application controller cluster-admin permissions. Again, this is dangerous for anything but an isolated proof-of-concept cluster.

    kind: ClusterRoleBinding
    apiVersion: rbac.authorization.k8s.io/v1
    metadata:
     name: openshift-gitops-argocd-application-controller-admin
    subjects:
     - kind: ServiceAccount
       name: openshift-gitops-argocd-application-controller
       namespace: openshift-gitops
    roleRef:
     apiGroup: rbac.authorization.k8s.io
     kind: ClusterRole
     name: cluster-admin

    Optional: If you’re using self-signed certs, you can use the environment variable NODE_TLS_REJECT_UNAUTHORIZED to prevent Developer Hub from checking insecure connections. Update the Backstage CR with the extra variable. This may cause issues with various plug-ins. You should only use it for a PoC environment.

    apiVersion: rhdh.redhat.com/v1alpha4
    kind: Backstage
    ...
    spec:
     application:
    ...
       extraEnvs:
         envs:
           - name: NODE_TLS_REJECT_UNAUTHORIZED
             value: '0'

    Integrating ArgoCD with Developer Hub

    First, we need to enable the dynamic plug-ins for the backend and scaffolding. Add the three entries to the dynamic-plugins ConfigMap.

    apiVersion: v1
    metadata:
     name: dynamic-plugins-rhdh
     namespace: rhdh-operator
    data:
     dynamic-plugins.yaml: |
       includes:
         - dynamic-plugins.default.yaml
       plugins:
    ...
         - package: ./dynamic-plugins/dist/roadiehq-backstage-plugin-argo-cd-backend-dynamic
           disabled: false
         - package: ./dynamic-plugins/dist/backstage-community-plugin-redhat-argocd
           disabled: false
         - package: ./dynamic-plugins/dist/roadiehq-scaffolder-backend-argocd-dynamic
           disabled: false

    Add an ArgoCD section to the Developer Hub app config ConfigMap to allow connections with our service account.

    kind: ConfigMap
    apiVersion: v1
    metadata:
      name: app-config-rhdh
      namespace: rhdh-operator
    data:
      app-config-rhdh.yaml: |
        app:
          title: My Red Hat Developer Hub Instance
    ...
        argocd:
          appLocatorMethods:
            - type: 'config'
              instances:
                - name: clusterargo
                  url: "${ARGOCD_URL}"
                  token: "${ARGOCD_TOKEN}"
          projectSettings:
            clusterResourceWhitelist:
              - group: ''
                kind: 'Namespace'
            # Only the listed resources will be allowed
            namespaceResourceWhitelist:
              - group: 'apps'
                kind: 'Deployment'
              - group: ''
                kind: 'Service'
              - group: 'route.openshift.io'
                kind: 'Route'

    Update the Backstage CR to use the additional secret we created for ArgoCD.

    apiVersion: rhdh.redhat.com/v1alpha3
    kind: Backstage
    metadata:
      name: developer-hub
      namespace: rhdh-operator
    spec:
      application:
    ...
        extraEnvs:
          secrets:
            - name: github-secrets
            - name: argo-secrets

    Viewing Argo applications in Developer Hub

    Create a new component in Developer Hub either through a template or manually. 

    apiVersion: backstage.io/v1alpha1
    kind: Component
    metadata:
      namespace: default
      annotations:
    ...
        argocd/app-name: quarkus-app-openshift-blog-rhdh
      name: quarkus-app-openshift-blog
      title: quarkus-app-openshift-blog
      tags:
        - quarkus
        - java
        - maven
    ...

    Notice the “argocd/app-name” annotation. This tells the Developer Hub plug-in which name to look for in ArgoCD to tie to the component. When an application with that name is created, the plug-in will look for it in ArgoCD and display its current status on a component’s page (Figure 1).

    The component view of “quarkus-app-openshift-blog” showing a summary of the ArgoCD application tied to the component.
    Figure 1: An example component with a deployment summary detailing information pulled from ArgoCD.

    If multiple ArgoCD applications apply to a component, you can use “argocd/app-selector” to group them based on labels. Refer to the RoadieHQ ArgoCD Plugin for Backstage documentation for more details. If no applications with the selector are present in ArgoCD, the user will receive a 403 error.  

    Wrap up

    This article demonstrated how to integrate ArgoCD with Red Hat Developer Hub. This integration gives powerful insight into your application status, which is a great start to your Developer Portal journey. Be sure to explore all of the dynamic plug-ins to get the most out of Developer Hub.

    Related Posts

    • How to install Red Hat Developer Hub

    • Red Hat Developer Hub background and concepts

    • OpenShift AI connector for Red Hat Developer Hub (Developer Preview)

    • Customize your deployments with the Red Hat Developer Hub Operator

    Recent Posts

    • How to integrate Developer Hub with OpenShift GitOps

    • AI meets you where you are: Slack, email & ServiceNow

    • Run Voxtral Mini 4B Realtime on vLLM with Red Hat AI on Day 1: A step-by-step guide

    • Deeper visibility in Red Hat Advanced Cluster Security

    • Upgrade volume performance without downtime: VolumeAttributesClass on OpenShift

    What’s up next?

    Developer Portals share image

    Developer Portals: Prepare to Perform with Red Hat Developer Hub

    Hans-Peter Grahsl +2
    Red Hat Developers logo LinkedIn YouTube Twitter Facebook

    Platforms

    • Red Hat AI
    • Red Hat Enterprise Linux
    • Red Hat OpenShift
    • Red Hat Ansible Automation Platform
    • See all products

    Build

    • Developer Sandbox
    • Developer tools
    • Interactive tutorials
    • API catalog

    Quicklinks

    • Learning resources
    • E-books
    • Cheat sheets
    • Blog
    • Events
    • Newsletter

    Communicate

    • About us
    • Contact sales
    • Find a partner
    • Report a website issue
    • Site status dashboard
    • Report a security problem

    RED HAT DEVELOPER

    Build here. Go anywhere.

    We serve the builders. The problem solvers who create careers with code.

    Join us if you’re a developer, software engineer, web designer, front-end designer, UX designer, computer scientist, architect, tester, product manager, project manager or team lead.

    Sign me up

    Red Hat legal and privacy links

    • About Red Hat
    • Jobs
    • Events
    • Locations
    • Contact Red Hat
    • Red Hat Blog
    • Inclusion at Red Hat
    • Cool Stuff Store
    • Red Hat Summit
    © 2025 Red Hat

    Red Hat legal and privacy links

    • Privacy statement
    • Terms of use
    • All policies and guidelines
    • Digital accessibility

    Report a website issue