Skip to main content
AI
  • Get started with AI

    • Red Hat AI

      Accelerate the development and deployment of enterprise AI solutions.

    • AI learning hub

      Explore learning materials and tools, organized by task.

    • AI interactive demos

      Click through scenarios with Red Hat AI, including training LLMs and more.

    • AI/ML learning paths

      Expand your Red Hat OpenShift AI knowledge using these learning resources.

    • AI quickstarts

      Focused AI use cases designed for fast deployment on Red Hat AI platforms.

    • No-cost AI training

      Foundational Red Hat AI training.

  • Featured resources

    • Red Hat OpenShift AI
    • Open source AI for developers
    • AI product application development
    • Open source-powered AI/ML for hybrid cloud
    • AI and Node.js cheat sheet

Red Hat AI Factory with NVIDIA

Red Hat AI Factory with NVIDIA is a co-engineered, enterprise-grade AI solution for building, deploying, and managing AI at scale across hybrid cloud environments.

Learn
  • Self-guided

    • Documentation

      Find answers, get step-by-step guidance, and learn how to use Red Hat products.

    • Learning paths

      Explore curated walkthroughs for common development tasks.

    • Guided learning

      Receive custom learning paths powered by our AI assistant.

    • See all learning
  • Hands-on

    • Developer Sandbox

      Spin up Red Hat's products and technologies without setup or configuration.

    • Interactive labs

      Learn by doing in these hands-on, browser-based experiences.

    • Interactive demos

      Click through product features in these guided tours.

  • Browse by topic

    • AI/ML
    • Automation
    • Java
    • Kubernetes
    • Linux
    • See all topics
  • Training & certifications

    • Courses and exams
    • Certifications
    • Skills assessments
    • Red Hat Academy
    • Learning subscription
    • Explore training
Build
  • Get started

    • Red Hat build of Podman Desktop

      A downloadable, local development hub to experiment with our products and builds.

    • Developer Sandbox

      Spin up Red Hat's products and technologies without setup or configuration.

  • Download products

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

    • Red Hat build of OpenJDK
    • Red Hat JBoss Enterprise Application Platform
    • Red Hat OpenShift Dev Spaces
    • Red Hat Developer Toolset
  • References

    • E-books
    • Documentation
    • Cheat sheets
    • Architecture center
Community
  • Get involved

    • Events
    • Live AI events
    • Red Hat Summit
    • Red Hat Accelerators
    • Community discussions
  • Follow along

    • Articles & blogs
    • Developer newsletter
    • Videos
    • Github
  • Get help

    • Customer service
    • Customer support
    • Regional contacts
    • Find a partner

Join the Red Hat Developer program

Download Red Hat products and project builds, access support documentation, learning content, and more.

ConsoleDocsSupport Search
New For you

Recommended

We'll recommend resources you may like as you browse. Try these suggestions for now.

  • Product downloads
  • Cheat sheets
  • Red Hat Developer learning portal
  • Developer blog
  • E-books
  • Developer Sandbox
Log in

Get more with a Red Hat Developer account

  • Product downloads
  • Console access
  • Event registration
  • Training & trials
Explore more account benefitsLog in or register

A subscription may be required for some services.

Contact us

Integrate Red Hat Advanced Cluster Management with Argo CD

March 24, 2026
Francisco De Melo Junior
Related topics:
AutomationGitOpsKubernetes
Related products:
Red Hat Advanced Cluster Management for KubernetesRed Hat OpenShift GitOpsRed Hat OpenShift

    As explained in this Red Hat solution, Red Hat Advanced Cluster Management for Kubernetes integrates with Argo CD. For example, you can use the Argo CD operator ApplicationSet Custom Resource. This combination uses the Channel and Subscription features in Red Hat Advanced Cluster Management to allow clusters to subscribe to a Git repository and track changes.

    Argo CD supports both push and pull models. You can combine these with the Application Manager add-on to use Red Hat Advanced Cluster Management add-ons that extend application functionality.

    Note

    While the principles in this article remain relevant, the implementation landscape has evolved. Please note that AppSub (including Channels and Subscriptions) is now considered a legacy component. Furthermore, the ecosystem is transitioning from the pull-model toward the Argo CD Agent architecture. We recommend cross-referencing these sections with the latest documentation for current best practices.

    Understanding subscriptions and channels

    The subscription feature (subscription.apps.open-cluster-management.io) allows clusters to subscribe to a source repository, also known as a Channel. You can use a Git repository, a Helm release registry, or an object storage repository as a source.

    The complete process is explained in the Red Hat Advanced Cluster Management for Kubernetes 2.11 - GitOps Section. If you encounter errors, check the Red Hat Advanced Cluster Management and GitOps logs.

    Argo CD demo

    After you install the Red Hat OpenShift GitOps operator and create the ArgoCD custom resource, create an Application or ApplicationSet, such as the following example:

    spec:
      destination:
        namespace: gitops-app-test
        server: 'https://kubernetes.default.svc'
      project: default
      source:
        path: .
        repoURL: 'https://github.com/FranciscoMeloJr/rh-case-03752258'
        targetRevision: HEAD
      syncPolicy:
        automated: {}
        syncOptions:
          - CreateNamespace=true

    After you create the application, the Argo CD console (accessed via the Route) lists the application, as shown in Figure 1.

    ArgoCD example application
    Figure 1: The Argo CD console lists the newly created application.

    In the application settings, pay close attention to the Sync Policy configuration options:

    • Automated: Disabled or no auto-sync.
    • Prune resources: Enabled or disabled.
    • Self heal: Enabled or disabled.
    Sync Policy
    Figure 2: Configuration options for the application sync policy.

    Audit logs

    As explained in the OpenShift Container Platform 4.16, Section: Security and compliance - Viewing audit logs, there are two types of audit logs:

    • kube-apiserver audit logs: These logs cover the primary execution component.
    • openshift-apiserver audit logs: These logs cover an extension that assists the kube-apiserver with specific tasks.

    For example, if you delete a Route, the action only appears in the openshift-apiserver logs because that component serves the Route resource. Other components that are not below openshift-apiserver will not be on its audit logs.

    When investigating audit logs, match the service account (SA) with the application. It is essential to use the correct names. If you use the default SA from the default project, the audit logs show user=...serviceaccount:default:default. You can then investigate which component granted access through that serviceaccount.

    The article How to classify Red Hat OpenShift audit logs provides several examples of operations and how the system records them.

    The deletion method affects logging. Deleting a resource through the Argo CD console is not recorded as a user or SA action. Instead, it is recorded in the openshift-gitops-application-controller logs:

    time="2024-09-11T21:39:06Z" level=info msg="Deleting resources" application=openshift-gitops/https-gitops-tester
    time="2024-09-11T21:39:06Z" level=info msg="Deleting application's resources with Foreground propagation policy" application=openshift-gitops/https-gitops-tester
    time="2024-09-11T21:39:06Z" level=info msg="Refreshing app status (controller refresh requested), level (1)" application=openshift-gitops/https-gitops-tester
    time="2024-09-11T21:39:06Z" level=info msg="Comparing app state (cluster: https://kubernetes.default.svc, namespace: https-gitops)" application=openshift-gitops/https-gitops-tester
    time="2024-09-11T21:39:06Z" level=info msg="5 objects remaining for deletion" application=openshift-gitops/https-gitops-tester

    openshift-apiserver audit log example:

    {"kind":"Event","apiVersion":"audit.k8s.io/v1","level":"Metadata","auditID":"570afa85-5527-4b7b-888b-405ea4598ebe","stage":"ResponseComplete","requestURI":"/apis/metrics.k8s.io/v1beta1?timeout=32s","verb":"get","user":{"username":"system:serviceaccount:openshift-gitops:gitops-service-cluster","groups":["system:serviceaccounts","system:serviceaccounts:openshift-gitops","system:authenticated"],"extra":{"authentication.kubernetes.io/pod-name":["cluster-6c5dd549d4-pvk6b"],"authentication.kubernetes.io/pod-uid":["00a6d8f6-4385-406c-8694-80ad3a70f5ff"]}},"sourceIPs":["10.0.94.231","10.128.0.1"],"userAgent":"backend-http/v0.0.0 (linux/amd64) kubernetes/$Format","responseStatus":{"metadata":{},"code":200},"requestReceivedTimestamp":"2024-09-11T19:26:27.072078Z","stageTimestamp":"2024-09-11T19:26:27.090558Z","annotations":{"authorization.k8s.io/decision":"allow","authorization.k8s.io/reason":"RBAC: allowed by ClusterRoleBinding \"system:openshift:discovery\" of ClusterRole \"system:openshift:discovery\" to Group \"system:authenticated\""}}

    kube-apiserver audit log example:

    {"kind":"Event","apiVersion":"audit.k8s.io/v1","level":"Metadata","auditID":"b8fa1e31-ec78-49fa-bbcc-5b07cc086cbf","stage":"ResponseComplete","requestURI":"/apis/argoproj.io/v1alpha1/namespaces/openshift-gitops/applications/https-gitops-tester","verb":"get","user":{"username":"system:serviceaccount:openshift-gitops:openshift-gitops-argocd-server","uid":"6ed0fc21-4bac-45ea-a55a-47bef1e4da8f","groups":["system:serviceaccounts","system:serviceaccounts:openshift-gitops","system:authenticated"],"extra":{"authentication.kubernetes.io/pod-name":["openshift-gitops-server-6c8bc8bd44-4f2sq"],"authentication.kubernetes.io/pod-uid":["180063c7-4198-4d33-8ef4-83f5b207d474"]}},"sourceIPs":["10.0.90.237"],"userAgent":"argocd-server/v0.0.0 (linux/amd64) kubernetes/$Format","objectRef":{"resource":"applications","namespace":"openshift-gitops","name":"https-gitops-tester","apiGroup":"argoproj.io","apiVersion":"v1alpha1"},"responseStatus":{"metadata":{},"status":"Failure","message":"applications.argoproj.io \"https-gitops-tester\" not found","reason":"NotFound","details":{"name":"https-gitops-tester","group":"argoproj.io","kind":"applications"},"code":404},"requestReceivedTimestamp":"2024-09-11T20:30:09.173626Z","stageTimestamp":"2024-09-11T20:30:09.175366Z","annotations":{"authorization.k8s.io/decision":"allow","authorization.k8s.io/reason":"RBAC: allowed by ClusterRoleBinding \"openshift-gitops-openshift-gitops-argocd-server\" of ClusterRole \"openshift-gitops-openshift-gitops-argocd-server\" to ServiceAccount \"openshift-gitops-argocd-server/openshift-gitops\""}}
    {"kind":"Event","apiVersion":"audit.k8s.io/v1","level":"Metadata","auditID":"7ac5605c-2c92-4a57-bc80-8cb3e4227731","stage":"ResponseComplete","requestURI":"/apis/argoproj.io/v1alpha1/namespaces/openshift-gitops/applications","verb":"create","user":{"username":"system:serviceaccount:openshift-gitops:openshift-gitops-argocd-server","uid":"6ed0fc21-4bac-45ea-a55a-47bef1e4da8f","groups":["system:serviceaccounts","system:serviceaccounts:openshift-gitops","system:authenticated"],"extra":{"authentication.kubernetes.io/pod-name":["openshift-gitops-server-6c8bc8bd44-4f2sq"],"authentication.kubernetes.io/pod-uid":["180063c7-4198-4d33-8ef4-83f5b207d474"]}},"sourceIPs":["10.0.90.237"],"userAgent":"argocd-server/v0.0.0 (linux/amd64) kubernetes/$Format","objectRef":{"resource":"applications","namespace":"openshift-gitops","name":"https-gitops-tester","apiGroup":"argoproj.io","apiVersion":"v1alpha1"},"responseStatus":{"metadata":{},"code":201},"requestReceivedTimestamp":"2024-09-11T20:30:09.399761Z","stageTimestamp":"2024-09-11T20:30:09.405610Z","annotations":{"authorization.k8s.io/decision":"allow","authorization.k8s.io/reason":"RBAC: allowed by RoleBinding \"openshift-gitops-argocd-server/openshift-gitops\" of Role \"openshift-gitops-argocd-server\" to ServiceAccount \"openshift-gitops-argocd-server/openshift-gitops\""}}

    Integrate Red Hat Advanced Cluster Management with Argo CD

    Red Hat Advanced Cluster Management integration with Argo CD supports both push and pull models for application control. You can also configure Argo CD to watch kind: Policy resources used by Red Hat Advanced Cluster Management.

    Warning

    Changing these policies can significantly impact your clusters. Use caution when updating them.

    To integrate clusters with Argo CD through Red Hat Advanced Cluster Management, complete the following steps:

    1. Create a ManagedClusterSet custom resource on the GitOps cluster.
    2. Create a Placementcustom resource on the GitOps cluster.
    3. Create a GitOpsCluster custom resource on the GitOps cluster (the Placement must match the above).

    The Placement resource is associated with the GitOpsCluster. This is useful because each policy requires a Placement, depending on your integration.

    In Red Hat Advanced Cluster Management, a policy applies resources to a cluster to ensure it complies with your requirements. It's part of the governance architecture, as described in Red Hat Advanced Cluster Management for Kubernetes 2.11 documentation.

    Troubleshooting

    To begin troubleshooting, verify the Argo CD console and the Red Hat OpenShift GitOps operator logs. As shown in the previous examples, the deletion operation should appear there.

    If you open a support case, Red Hat will likely request a must-gather from Red Hat OpenShift GitOps. This tool bundles logs and custom resources (CRs), such as Application and ApplicationSet, into a single package.

    Use the following command to get it:

    oc adm must-gather –image registry.redhat.io/openshift-gitops-1/must-gather-rhel8:v<image_version_tag>

    Note that this must-gather output does not use the same directory hierarchy as other Red Hat products.

    As mentioned earlier, audit logs can also be helpful, depending on the type of resource deleted.

    Finally, Red Hat Advanced Cluster Management logs and custom resources, such as Policy and PolicyGenerator objects, might be required for troubleshooting the integration.

    If a Red Hat OpenShift 4 cluster node disconnects, you might see a ChunkLoadError instead of a timeout, as shown in Figure 3.

    In case the OCP cluster is disconnected
    Figure 3: A ChunkLoadError message indicating a disconnected cluster node.

    General recommendations

    Follow these procedures to avoid production mishaps that can impact deployments.

    Organization

    When you create namespaces, avoid using similar names to prevent accidental changes to the wrong environment.

    Governance

    Establish a change window to allocate specific times for service updates. This also provides time for testing and familiarizing your team with new versions. Additionally including warnings and communications in-and-out team to make sure the users know about the changes and impact.

    Furthermore, the following three main aspects can be observed in terms of application changes:

    • Prevention: How to prevent a problem.
    • Detection: How to detect the production environment is impacted
    • Resilience: how to bring the environment up as soon as possible.

    Procedural 

    To remove artifacts without deleting associated resources, use --cascade=false. The default setting is --cascade=true, which means deleting an application also deletes all related resources.

    Understanding

    Review the integration between Red Hat Advanced Cluster Management and Argo CD regarding application management and policy enforcement. Understand how a change in one area affects the other. The user handling the policies must be aware of how they impact the cluster (and its components).

    Conclusion

    This article introduced Argo CD and its integration with Red Hat Advanced Cluster Management on Red Hat OpenShift 4.

    We covered deploying an application in GitOps, the integration process, and troubleshooting paths. We also looked at examples of what to expect in the audit logs.

    I hope this article helps you understand these tools and how they manage clusters and application deployments.

    Additional resources

    To learn more, see the Red Hat OpenShift GitOps documentation. For details on integrating Red Hat Advanced Cluster Management with Argo CD, refer to this Red Hat solution.

    For other specific inquiries, open a case with Red Hat support. Our global team of experts can help you with any issues.

    Special thanks to Gricel Barrera and Ryan Spagnola for contributing to this article and Alexander Barbosa for reviewing it.

    Last updated: March 25, 2026

    Related Posts

    • How to manage Red Hat OpenShift AI dependencies with Kustomize and Argo CD

    • Using the Argo CD Agent with OpenShift GitOps

    • How to configure and manage Argo CD instances

    • How to automate multi-cluster deployments using Argo CD

    • Enhance Kubernetes deployment efficiency with Argo CD and ApplicationSet

    • 3 patterns for deploying Helm charts with Argo CD

    Recent Posts

    • A day in the life of an NVIDIA H100 on Red Hat OpenShift 5

    • Migrate BuildConfigs to builds for Red Hat OpenShift with one plug-in install

    • Run Red Hat Enterprise Linux CoreOS on NVIDIA BlueField DPUs

    • Agent harness engineering: Separating model capabilities from enforcement

    • What's new for developers in Red Hat Enterprise Linux 10.3 and 9.9

    What’s up next?

    Getting gitops cover art

    Getting GitOps: A practical platform with OpenShift, Argo CD, and Tekton

    Wanja Pernath
    Red Hat Developers logo

    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
    © 2026 Red Hat

    Red Hat legal and privacy links

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