ARO-RP

module
v0.0.0-...-c8bead7 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jan 14, 2026 License: Apache-2.0

README

Go Report Card

Azure Red Hat OpenShift Resource Provider

Welcome!

For information relating to the generally available Azure Red Hat OpenShift v4 service, please see the following links:

Quickstarts

Contributing

Azure Red Hat OpenShift (ARO) is a jointly engineered, managed, and supported service from Microsoft and Red Hat, delivered as an Azure service with shared responsibilities between Microsoft, Red Hat, and customers. The shared responsibility model is documented in the Azure Red Hat OpenShift responsibility assignment matrix.

This repository is the public home for the ARO resource provider code, but product development is primarily driven by Microsoft and Red Hat engineering teams and is not run as a traditional community‑driven open source project. Pull requests are usually created and reviewed in internal systems, then synchronized and published here, rather than being accepted directly from the public.

This project has adopted the Microsoft Open Source Code of Conduct. For more information see the Code of Conduct FAQ or contact [email protected] with any additional questions or comments.

Development
  • The main development workflow, CI/CD, and release management are operated by Microsoft and Red Hat employees.
  • Changes are authored, reviewed, and tested internally, then mirrored to this repository as pull requests and commits.
Support and feedback

For customers and partners, the preferred way to request help is through official support channels, not via pull requests on this repository.

Recommended options:

  • Azure portal: In the Azure portal, use Help + supportCreate a support request for issues related to your ARO resources.
  • Red Hat Customer Portal: If applicable, you can also open a case via the Red Hat Customer Portal, where Microsoft and Red Hat jointly handle ARO support.

For non‑urgent questions or suggestions, you may open an issue in this repository or use your existing Microsoft or Red Hat account channels.

References:

Repository map

  • .pipelines: CI workflows using Azure pipelines.

  • cmd/aro: RP entrypoint.

  • deploy: ARM templates to deploy RP in development and production.

  • docs: Documentation.

  • hack: Build scripts and utilities.

  • pkg: RP source code:

    • pkg/api: RP internal and external API definitions.

    • pkg/backend: RP backend workers.

    • pkg/bootstraplogging: Bootstrap logging configuration

    • pkg/client: Autogenerated ARO service Go client.

    • pkg/cluster: Cluster create/update/delete operations wrapper for OCP installer.

    • pkg/database: RP CosmosDB wrapper layer.

    • pkg/deploy: /deploy ARM template generation code.

    • pkg/env: RP environment-specific shims for running in production, development or test

    • pkg/frontend: RP frontend webserver.

    • pkg/metrics: Handles RP metrics via statsd.

    • pkg/mirror: OpenShift release mirror tooling.

    • pkg/monitor: Monitors running clusters.

    • pkg/operator/controllers: A list of controllers instantiated by the operator component.

      • alertwebhook: Ensures that the receiver endpoint defined in the alertmanager-main secret matches the webserver endpoint at aro-operator-master.openshift-azure-operator:8080, to avoid the AlertmanagerReceiversNotConfigured warning.

      • checker: Watches the Cluster resource for changes and updates conditions of the resource based on checks mentioned below

        • internetchecker: validate outbound internet connectivity to the nodes

        • serviceprincipalchecker: validate cluster service principal has the correct role/permissions

      • clusteroperatoraro: Ensures that the ARO cluster object is consistent and immutable

      • dnsmasq: Ensures that a dnsmasq systemd service is defined as a machineconfig for all nodes. The dnsmasq config contains records for azure load balancers such as api, api-int and *.apps domains so they will resolve even if custom DNS on the VNET is set.

      • genevalogging: Ensures all the Geneva logging resources in the openshift-azure-logging namespace matches the pre-defined specification found in pkg/operator/controllers/genevalogging/genevalogging.go.

      • imageconfig: Ensures that required registries are not blocked in image.config

      • machine: validate machine objects have the correct provider spec, vm type, vm image, disk size, three master nodes exist, and the number of worker nodes match the desired worker replicas

      • machineset: Ensures that a minimum of two worker replicas are met.

      • machinehealthcheck: Ensures the MachineHealthCheck resource is running as configured. See machinehealthcheck/doc.go

      • monitoring: Ensures that the OpenShift monitoring configuration in the openshift-monitoring namespace is consistent and immutable.

      • node: Force deletes pods when a node fails to drain for 1 hour. It should clear up any pods that refuse to be evicted on a drain due to violating a pod disruption budget.

      • pullsecret: Ensures that the ACR credentials in the openshift-config/pull-secret secret match those in the openshift/azure-operator/cluster secret.

      • rbac: Ensures that the aro-sre clusterrole and clusterrolebinding exist and are consistent.

      • routefix: Ensures all the routefix resources in the namespace openshift-azure-routefix remain on the cluster.

      • subnets: Ensures that the Network Security Groups (NSGs) are correct, and updates the Azure Machine Provider spec with subnet, vnet, and Network Resource Group.

      • workaround: Applies a set of temporary workarounds to the ARO cluster.

      • previewfeature: Allows toggling certain features that are not yet enabled by default.

    • pkg/portal: Portal for running promql queries against a cluster or requesting a kubeconfig for a cluster.

    • pkg/proxy: Proxy service for portal kubeconfig cluster access.

    • pkg/swagger: Swagger specification generation code.

    • pkg/util: Utility libraries.

  • python: Autogenerated ARO service Python client and az aro client extension.

  • swagger: Autogenerated ARO service Swagger specification.

  • test: End-to-end tests.

Basic architecture

  • pkg/frontend is intended to become a spec-compliant RP web server. It is backed by CosmosDB. Incoming PUT/DELETE requests are written to the database with an non-terminal (Updating/Deleting) provisioningState.

  • pkg/backend reads documents with non-terminal provisioningStates, asynchronously updates them and finally updates document with a terminal provisioningState (Succeeded/Failed). The backend updates the document with a heartbeat - if this fails, the document will be picked up by a different worker.

  • As CosmosDB does not support document patch, care is taken to correctly pass through any fields in the internal model which the reader is unaware of (see github.com/ugorji/go/codec.MissingFielder). This is intended to help in upgrade cases and (in the future) with multiple microservices reading from the database in parallel.

  • Care is taken to correctly use optimistic concurrency to avoid document corruption through concurrent writes (see RetryOnPreconditionFailed).

  • The pkg/api architecture differs somewhat from github.com/openshift/openshift-azure: the intention is to fix the broken merge semantics and try pushing validation into the versioned APIs to improve error reporting.

  • Everything is intended to be crash/restart/upgrade-safe, horizontally scaleable, upgradeable...

Directories

Path Synopsis
cmd
aro command
hack
aead command
clean command
cluster command
db command
fakecluster command
gendeploy command
gendevconfig command
genhiveconfig command
genkey command
licenses command
monitor command
portalauth command
proxy command
role command
stress command
swagger command
tunnel command
pkg
client/services/redhatopenshift/mgmt/2024-08-12-preview/redhatopenshift
Package redhatopenshift implements the Azure ARM Redhatopenshift service API version 2024-08-12-preview.
Package redhatopenshift implements the Azure ARM Redhatopenshift service API version 2024-08-12-preview.
client/services/redhatopenshift/mgmt/2025-07-25/redhatopenshift
Package redhatopenshift implements the Azure ARM Redhatopenshift service API version 2025-07-25.
Package redhatopenshift implements the Azure ARM Redhatopenshift service API version 2025-07-25.
env
operator/apis/aro.openshift.io/v1alpha1
Package v1alpha1 is the v1alpha1 version of the API.
Package v1alpha1 is the v1alpha1 version of the API.
operator/apis/preview.aro.openshift.io/v1alpha1
Package v1alpha1 is the v1alpha1 version of the API.
Package v1alpha1 is the v1alpha1 version of the API.
operator/clientset/versioned
This package has the automatically generated clientset.
This package has the automatically generated clientset.
operator/clientset/versioned/fake
This package has the automatically generated fake clientset.
This package has the automatically generated fake clientset.
operator/clientset/versioned/scheme
This package contains the scheme of the automatically generated clientset.
This package contains the scheme of the automatically generated clientset.
operator/clientset/versioned/typed/aro.openshift.io/v1alpha1
This package has the automatically generated typed clients.
This package has the automatically generated typed clients.
operator/clientset/versioned/typed/aro.openshift.io/v1alpha1/fake
Package fake has the automatically generated clients.
Package fake has the automatically generated clients.
operator/clientset/versioned/typed/preview.aro.openshift.io/v1alpha1
This package has the automatically generated typed clients.
This package has the automatically generated typed clients.
operator/clientset/versioned/typed/preview.aro.openshift.io/v1alpha1/fake
Package fake has the automatically generated clients.
Package fake has the automatically generated clients.
operator/controllers/rbac
Code generated for package rbac by go-bindata DO NOT EDIT.
Code generated for package rbac by go-bindata DO NOT EDIT.
portal/cluster
Code generated for package cluster by go-bindata DO NOT EDIT.
Code generated for package cluster by go-bindata DO NOT EDIT.
util/deployer
deployer is used to template and deploy services in an ARO cluster.
deployer is used to template and deploy services in an ARO cluster.
util/mocks/adminactions
Package mock_adminactions is a generated GoMock package.
Package mock_adminactions is a generated GoMock package.
util/mocks/azblob
Package mock_azblob is a generated GoMock package.
Package mock_azblob is a generated GoMock package.
util/mocks/azureclient/azuresdk/armauthorization
Package mock_armauthorization is a generated GoMock package.
Package mock_armauthorization is a generated GoMock package.
util/mocks/azureclient/azuresdk/armcosmos
Package mock_armcosmos is a generated GoMock package.
Package mock_armcosmos is a generated GoMock package.
util/mocks/azureclient/azuresdk/armdns
Package mock_armdns is a generated GoMock package.
Package mock_armdns is a generated GoMock package.
util/mocks/azureclient/azuresdk/armmsi
Package mock_armmsi is a generated GoMock package.
Package mock_armmsi is a generated GoMock package.
util/mocks/azureclient/azuresdk/armnetwork
Package mock_armnetwork is a generated GoMock package.
Package mock_armnetwork is a generated GoMock package.
util/mocks/azureclient/azuresdk/armstorage
Package mock_armstorage is a generated GoMock package.
Package mock_armstorage is a generated GoMock package.
util/mocks/azureclient/azuresdk/azblob
Package mock_azblob is a generated GoMock package.
Package mock_azblob is a generated GoMock package.
util/mocks/azureclient/azuresdk/azcertificates
Package mock_azcertificates is a generated GoMock package.
Package mock_azcertificates is a generated GoMock package.
util/mocks/azureclient/azuresdk/azcontainerregistry
Package mock_azcontainerregistry is a generated GoMock package.
Package mock_azcontainerregistry is a generated GoMock package.
util/mocks/azureclient/azuresdk/azcore
Package mock_azcore is a generated GoMock package.
Package mock_azcore is a generated GoMock package.
util/mocks/azureclient/azuresdk/azsecrets
Package mock_azsecrets is a generated GoMock package.
Package mock_azsecrets is a generated GoMock package.
util/mocks/azureclient/mgmt/authorization
Package mock_authorization is a generated GoMock package.
Package mock_authorization is a generated GoMock package.
util/mocks/azureclient/mgmt/compute
Package mock_compute is a generated GoMock package.
Package mock_compute is a generated GoMock package.
util/mocks/azureclient/mgmt/containerregistry
Package mock_containerregistry is a generated GoMock package.
Package mock_containerregistry is a generated GoMock package.
util/mocks/azureclient/mgmt/dns
Package mock_dns is a generated GoMock package.
Package mock_dns is a generated GoMock package.
util/mocks/azureclient/mgmt/features
Package mock_features is a generated GoMock package.
Package mock_features is a generated GoMock package.
util/mocks/azureclient/mgmt/msi
Package mock_msi is a generated GoMock package.
Package mock_msi is a generated GoMock package.
util/mocks/azureclient/mgmt/privatedns
Package mock_privatedns is a generated GoMock package.
Package mock_privatedns is a generated GoMock package.
util/mocks/azureclient/mgmt/storage
Package mock_storage is a generated GoMock package.
Package mock_storage is a generated GoMock package.
util/mocks/billing
Package mock_billing is a generated GoMock package.
Package mock_billing is a generated GoMock package.
util/mocks/blob
Package mock_blob is a generated GoMock package.
Package mock_blob is a generated GoMock package.
util/mocks/checkaccess
Package mock_client is a generated GoMock package.
Package mock_client is a generated GoMock package.
util/mocks/cluster
Package mock_cluster is a generated GoMock package.
Package mock_cluster is a generated GoMock package.
util/mocks/clusterdata
Package mock_clusterdata is a generated GoMock package.
Package mock_clusterdata is a generated GoMock package.
util/mocks/cosmosdb
Package mock_cosmosdb is a generated GoMock package.
Package mock_cosmosdb is a generated GoMock package.
util/mocks/deployer
Package mock_deployer is a generated GoMock package.
Package mock_deployer is a generated GoMock package.
util/mocks/dns
Package mock_dns is a generated GoMock package.
Package mock_dns is a generated GoMock package.
util/mocks/dynamic
Package mock_dynamic is a generated GoMock package.
Package mock_dynamic is a generated GoMock package.
util/mocks/dynamichelper
Package mock_dynamichelper is a generated GoMock package.
Package mock_dynamichelper is a generated GoMock package.
util/mocks/encryption
Package mock_encryption is a generated GoMock package.
Package mock_encryption is a generated GoMock package.
util/mocks/env
Package mock_env is a generated GoMock package.
Package mock_env is a generated GoMock package.
util/mocks/frontend
Package mock_frontend is a generated GoMock package.
Package mock_frontend is a generated GoMock package.
util/mocks/graph
Package mock_graph is a generated GoMock package.
Package mock_graph is a generated GoMock package.
util/mocks/hive
Package mock_hive is a generated GoMock package.
Package mock_hive is a generated GoMock package.
util/mocks/instancemetadata
Package mock_instancemetadata is a generated GoMock package.
Package mock_instancemetadata is a generated GoMock package.
util/mocks/metrics
Package mock_metrics is a generated GoMock package.
Package mock_metrics is a generated GoMock package.
util/mocks/msidataplane
Package mock_dataplane is a generated GoMock package.
Package mock_dataplane is a generated GoMock package.
util/mocks/net
Package mock_net is a generated GoMock package.
Package mock_net is a generated GoMock package.
util/mocks/operator/controllers/workaround
Package mock_workaround is a generated GoMock package.
Package mock_workaround is a generated GoMock package.
util/mocks/operator/deploy
Package mock_deploy is a generated GoMock package.
Package mock_deploy is a generated GoMock package.
util/mocks/platformworkloadidentity
Package mock_platformworkloadidentity is a generated GoMock package.
Package mock_platformworkloadidentity is a generated GoMock package.
util/mocks/proxy
Package mock_proxy is a generated GoMock package.
Package mock_proxy is a generated GoMock package.
util/mocks/samples
Package mock_v1 is a generated GoMock package.
Package mock_v1 is a generated GoMock package.
util/mocks/samplesclient
Package mock_versioned is a generated GoMock package.
Package mock_versioned is a generated GoMock package.
util/mocks/storage
Package mock_storage is a generated GoMock package.
Package mock_storage is a generated GoMock package.
util/mocks/subnet
Package mock_subnet is a generated GoMock package.
Package mock_subnet is a generated GoMock package.
util/mocks/vmsscleaner
Package mock_vmsscleaner is a generated GoMock package.
Package mock_vmsscleaner is a generated GoMock package.
api module
test
e2e

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL