config/config.msft.yaml (523 lines of code) (raw):
$schema: config.schema.json
#
# A B O U T N A M I N G
#
# For Azure resource names that need to be unique within a cloud, use {{ .ctx }} variables to ensure uniqueness, e.g.
# - for global, regional and SC naming use {{ .ctx.regionShort }} or {{ .ctx.region }}
# - for MGMT naming additionally use {{ .ctx.stamp }}
#
# We have different requirements for naming uniqueness for Azure resources
#
# - [globally-unique] - a resource needs to be unique within the Azure cloud.
# This is a technical requirement of Azure for certain resource types
# - [env-unique] - a resource needs to be unique within an ARO HCP environment,
# so accross all regions of ARO HCP in the same environment.
# An environment unique names does not need to be unique within the Azure cloud
#
# To implement names, we leverate static strings combined with the {{ .ctx }} variables, e.g.
# - {{ .ctx.regionShort }} length: 2-4 / starts with a character, may end with a digit
# - {{ .ctx.region }} very long, up to 20 characters / starts with a character, may end with a digit
# - {{ .ctx.stamp }} used for for uniqueness for MGMT stamps within a region / digits only
defaults:
#
# All defaults mentioned in this section need to be environment and region agnostic.
#
releaseApprover:
id: feca6a27-8f05-4abe-b9e4-e1185f5833ab
name: TM-AzureRedHatOpenShift-HCP-Leads
# The long Azure region name
region: "{{ .ctx.region }}"
regionRG: "{{ .ctx.region }}-shared-resources"
global:
rg: global-shared-resources
subscription: hcp-global
globalMSIName: "global-ev2-identity"
safeDnsIntAppObjectId: "" # intentionally blank - only required in INT
keyVault:
private: false
softDelete: true
secretsToSyncDir: "none"
# ACR
acr:
svc:
zoneRedundantMode: Enabled
ocp:
zoneRedundantMode: Enabled
# ACR Pull
acrPull:
image:
registry: mcr.microsoft.com
repository: aks/msi-acrpull
digest: sha256:c802a91b3b0fe4a3875a03904140a14eb54c8b94db1d510946c9c438d28689c0 #v0.1.14
backplaneAPI:
image:
registry: quay.io
repository: app-sre/backplane-api
# Logs
logs:
mdsd:
namespace: logs
msiName: logs-mdsd
serviceAccountName: genevabit-aggregator
cert:
name: logs-mdsd
type: x-pem-file # GCS certificate file in PEM format
issuer: OneCertV2-PrivateCA
loganalytics:
enable: false
# Hypershift
hypershift:
namespace: hypershift
additionalInstallArg: '--limit-crd-install=Azure'
image:
registry: quay.io
repository: acm-d/rhtap-hypershift-operator
# OIDC
oidcZoneRedundantMode: Auto
# FPA certificate settings
firstPartyAppCertificate:
issuer: OneCertV2-PrivateCA
manage: true
# SVC cluster specifics
svc:
subscription: "hcp-{{ .ctx.region }}"
rg: "hcp-underlay-{{ .ctx.region }}-svc"
nsp:
name: nsp-{{ .ctx.regionShort }}-svc
accessMode: 'Learning'
aks:
name: "{{ .ctx.region }}-svc-1" # [env-unique]
vnetAddressPrefix: "10.128.0.0/14"
subnetPrefix: "10.128.8.0/21"
podSubnetPrefix: "10.128.64.0/18"
kubernetesVersion: 1.31.6
networkDataplane: "cilium"
networkPolicy: "cilium"
systemAgentPool:
vmSize: 'Standard_D2s_v3'
osDiskSizeGB: 32
userAgentPool:
vmSize: 'Standard_D2s_v3'
osDiskSizeGB: 32
infraAgentPool:
minCount: 1
maxCount: 3
vmSize: 'Standard_D2s_v3'
osDiskSizeGB: 128
azCount: 3
etcd:
kvSoftDelete: true
clusterOutboundIPAddressIPTags: "FirstPartyUsage:/aro-hcp-prod-outbound-svc"
istio:
istioctlVersion: "1.24.1"
tag: "prod-stable"
targetVersion: "asm-1-23"
versions: "asm-1-23"
ingressGatewayIPAddressName: "aro-hcp-istio-ingress"
ingressGatewayIPAddressIPTags: "FirstPartyUsage:/aro-hcp-prod-inbound-svc"
logs:
namespace: HCPServiceLogs
prometheus:
namespace: prometheus
namespaceLabel: ""
prometheusOperator:
image:
registry: mcr.microsoft.com/oss/v2
repository: prometheus/prometheus-operator
digest: a5bf4407cb83dc93d4e29ef680e0a4d621256e0f004822f53b2ff1c592bf2a82
version: ""
prometheusSpec:
image:
registry: mcr.microsoft.com/oss/v2
repository: prometheus/prometheus
digest: 2dcc22f4a8ea5c198e1c9eb6e7f04d127c55924da72e0f4334e659633185283c
version: ""
replicas: 2
shards: 1
# MGMT cluster specifics
mgmt:
subscription: "hcp-{{ .ctx.region }}"
rg: "hcp-underlay-{{ .ctx.region }}-mgmt-{{ .ctx.stamp }}"
nsp:
name: nsp-{{ .ctx.regionShort }}-mgmt
accessMode: 'Learning'
aks:
name: "{{ .ctx.region }}-mgmt-{{ .ctx.stamp }}" # [env-unique]
vnetAddressPrefix: "10.128.0.0/14"
subnetPrefix: "10.128.8.0/21"
podSubnetPrefix: "10.128.64.0/18"
kubernetesVersion: 1.31.6
# CNI
networkDataplane: "azure"
networkPolicy: "azure"
systemAgentPool:
vmSize: 'Standard_E8s_v3'
osDiskSizeGB: 128
userAgentPool:
vmSize: 'Standard_D16s_v3'
osDiskSizeGB: 128
infraAgentPool:
minCount: 1
maxCount: 3
vmSize: 'Standard_D2s_v3'
osDiskSizeGB: 128
azCount: 3
etcd:
kvSoftDelete: true
clusterOutboundIPAddressIPTags: "FirstPartyUsage:/aro-hcp-prod-outbound-cx"
enableSwiftV2: true
applyKubeletFixes: true
logs:
namespace: HCPCustomerLogs
prometheus:
namespace: prometheus
namespaceLabel: network.openshift.io/policy-group=monitoring
prometheusOperator:
image:
registry: mcr.microsoft.com/oss/v2
repository: prometheus/prometheus-operator
digest: a5bf4407cb83dc93d4e29ef680e0a4d621256e0f004822f53b2ff1c592bf2a82
version: ""
prometheusSpec:
image:
registry: mcr.microsoft.com/oss/v2
repository: prometheus/prometheus
digest: 2dcc22f4a8ea5c198e1c9eb6e7f04d127c55924da72e0f4334e659633185283c
version: "v2.55.1-3"
replicas: 2
shards: 2
# RP Frontend
frontend:
image:
registry: arohcpsvcdev.azurecr.io
repository: arohcpfrontend
cert:
name: frontend-cert
issuer: OneCertV2-PublicCA
cosmosDB:
deploy: true
disableLocalAuth: true
private: true
zoneRedundantMode: Auto
tracing:
address: ""
exporter: ""
# Mise
mise:
deploy: true
image:
repository: mise
# RP Backend
backend:
image:
registry: arohcpsvcdev.azurecr.io
repository: arohcpbackend
# Maestro
maestro:
server:
mqttClientName: maestro-server
loglevel: 4
managedIdentityName: maestro-server
k8s:
namespace: maestro
serviceAccountName: maestro
agent:
consumerName: "hcp-underlay-{{ .ctx.regionShort }}-mgmt-{{ .ctx.stamp }}" # [env-unique]
loglevel: 4
sidecar:
image:
registry: mcr.microsoft.com
repository: azurelinux/base/nginx
digest: sha256:f203d7e49ce778f8464f403d2558c5d7162b1b9189657c6b32d4f70a99e0fe83
eventGrid:
maxClientSessionsPerAuthName: 6
private: false
certDomain: ""
certIssuer: OneCertV2-PrivateCA
postgres:
serverVersion: '15'
serverStorageSizeGB: 32
deploy: true
private: false
minTLSVersion: 'TLSV1.2'
databaseName: maestro
zoneRedundantMode: 'Auto'
restrictIstioIngress: true
image:
registry: quay.io
repository: redhat-user-workloads/maestro-rhtap-tenant/maestro/maestro
# Cluster Service
clustersService:
image:
registry: quay.io
repository: app-sre/uhc-clusters-service
azureOperatorsManagedIdentities:
cloudControllerManager:
roleName: Azure Red Hat OpenShift Cloud Controller Manager
ingress:
roleName: Azure Red Hat OpenShift Cluster Ingress Operator
diskCsiDriver:
roleName: Azure Red Hat OpenShift Disk Storage Operator
fileCsiDriver:
roleName: Azure Red Hat OpenShift File Storage Operator
imageRegistry:
roleName: Azure Red Hat OpenShift Image Registry Operator
cloudNetworkConfig:
roleName: Azure Red Hat OpenShift Network Operator
kms:
roleName: Key Vault Crypto User
# below two are supposed to be replaced with ARO-specific builtin roles
clusterApiAzure:
roleName: Contributor
controlPlane:
roleName: Contributor
postgres:
deploy: true
private: false
minTLSVersion: 'TLSV1.2'
zoneRedundantMode: 'Auto'
managedIdentityName: clusters-service
k8s:
namespace: clusters-service
serviceAccountName: clusters-service
tracing:
address: ""
exporter: ""
# Image Sync
imageSync:
environmentName: aro-hcp-image-sync
outboundServiceTags: "FirstPartyUsage:/Unprivileged"
componentSync:
enabled: false # we rely on on-demand sync within the respective pipelines
image:
registry: arohcpsvcdev.azurecr.io
repository: image-sync/component-sync
repositories: ""
secrets: ""
pullSecretName: component-sync-pull-secret
ocMirror:
enabled: true
image:
registry: arohcpsvcdev.azurecr.io
repository: image-sync/oc-mirror
pullSecretName: ocmirror-pull-secret
# MCE
mce:
clcStateMetrics:
imageDigest: bf5bb514e4d8af5e38317c3727d4cd9f90c22b293fe3e2367f9f0e179e0ee0c7
# SVC KV
serviceKeyVault:
rg: "hcp-underlay-{{ .ctx.region }}-svc"
region: "{{ .ctx.region }}"
softDelete: false
private: false
# Management Cluster KV
cxKeyVault:
softDelete: false
private: false
msiKeyVault:
softDelete: false
private: false
mgmtKeyVault:
softDelete: false
private: false
# DNS
dns:
baseDnsZoneRG: global-shared-resources
regionalSubdomain: "{{ .ctx.region }}"
# Metrics
monitoring:
grafanaZoneRedundantMode: Disabled
grafanaMajorVersion: "11"
workspaceName: "arohcp-{{ .ctx.regionShort }}"
# Mock Managed Identities - not relevant for most MSFT envs
miMockClientId: ""
miMockPrincipalId: ""
miMockCertName: ""
armHelperClientId: ""
armHelperFPAPrincipalId: ""
armHelperCertName: ""
clouds:
public:
defaults:
imageSync:
componentSync:
image:
digest: sha256:d838c4910bc53a5583dd501ed7e3ab08aa7c08b45b5997c90764c65ceef01a8f
ocMirror:
image:
digest: sha256:92dc2b18de0126caa2212f62c54023f6e8ecf12e2025c37a5f4151d0253ae14e
mise:
azureAdInstance: https://login.microsoftonline.com/
armInstance: https://management.azure.com
environments:
int:
# this is the MSFT INT environment
defaults:
# Region for global resources in INT is uksouth
global:
region: uksouth
safeDnsIntAppObjectId: "c54b6bce-1cd3-4d37-bebe-aa22f4ce4fbc"
keyVault:
name: arohcpint-global # [globally-unique]
secretsToSyncDir: "msft-int/arohcpint-global"
# Cluster Service
clustersService:
environment: "arohcpint"
postgres:
name: "arohcpint-csdb-{{ .ctx.regionShort }}" # [globally-unique]
image:
digest: sha256:777e6f7be92f113b9c188de36b6925dff2537c23fd2efca115b21d42fa9d29e5
# Geneva Actions
genevaActions:
serviceTag: GenevaActionsNonProd
# OIDC
oidcStorageAccountName: "arohcpintoidc{{ .ctx.regionShort }}" # [globally-unique]
# SVC KV
serviceKeyVault:
name: "arohcpint-svc-{{ .ctx.regionShort }}" # [globally-unique]
# Management Cluster KV
cxKeyVault:
name: "arohcpint-cx-{{ .ctx.regionShort }}-{{ .ctx.stamp }}" # [globally-unique]
msiKeyVault:
name: "arohcpint-msi-{{ .ctx.regionShort }}-{{ .ctx.stamp }}" # [globally-unique]
mgmtKeyVault:
name: "arohcpint-mgmt-{{ .ctx.regionShort }}-{{ .ctx.stamp }}" # [globally-unique]
# SVC cluster settings
svc:
aks:
systemAgentPool:
minCount: 1
maxCount: 3
userAgentPool:
minCount: 1
maxCount: 3
azCount: 3
clusterOutboundIPAddressIPTags: "FirstPartyUsage:/NonProd"
etcd:
kvName: "arohcpint-etcd-{{ .ctx.regionShort }}" # [globally-unique]
istio:
ingressGatewayIPAddressIPTags: "FirstPartyUsage:/NonProd"
logs:
san: SVC.GENEVA.KEYVAULT.ARO-HCP-INT.AZURE.COM
configVersion: "1.0"
# MC cluster settings
mgmt:
aks:
# MGMTM AKS nodepools
systemAgentPool:
minCount: 1
maxCount: 4
userAgentPool:
minCount: 1
maxCount: 12
azCount: 3
clusterOutboundIPAddressIPTags: "FirstPartyUsage:/NonProd"
etcd:
kvName: "arohcpint-etcd-{{ .ctx.regionShort }}-{{ .ctx.stamp }}" # [globally-unique]
logs:
san: MGMT.GENEVA.KEYVAULT.ARO-HCP-INT.AZURE.COM
configVersion: "1.0"
# DNS
dns:
cxParentZoneName: aroapp-hcp.azure-test.net
cxParentZoneDelegation: true
svcParentZoneName: aro-hcp.azure-test.net
parentZoneName: azure-test.net
# ACR
acr:
svc:
name: arohcpsvcint # [globally-unique]
ocp:
name: arohcpocpint # [globally-unique]
# RP Frontend
frontend:
cosmosDB:
name: "arohcpint-rp-{{ .ctx.regionShort }}" # [globally-unique]
private: false
image:
digest: sha256:aa1ae769ca6318aab0c9fe6cb2772416430aa5adb69eb69623d6198e580e08c3
# Mise
mise:
firstPartyAppId: 5bc505bc-50ef-4be9-9a82-2ed7973f1c37 # This is the aro-hcp-fp-int app in the MSIT Tenant.
armAppId: e2c2ff5c-e5b4-4e79-8c3e-1da8c48461e7
tenantId: 33e01921-4d64-4f8c-a055-5bdaffd5e33d
image:
digest: sha256:d56506305ea64f368c920e5e4bce6ee44415d4133559a548b82a81bbd1828f9b
# RP Backend
backend:
image:
digest: sha256:02a32af8d34c5725d0096ee7f94adf2ef151d0634e8682fe7517e6f9ebba9bdc
# Hypershift
hypershift:
additionalInstallArg: ''
image:
digest: sha256:930a2851e0ed5144901eabdb1247096fea527231a990ea764b27754b766ef821
# Maestro
maestro:
eventGrid:
name: "arohcpint-maestro-{{ .ctx.regionShort }}" # [globally-unique]
postgres:
name: "arohcpint-maestrodb-{{ .ctx.regionShort }}" # [globally-unique]
image:
digest: sha256:f64ad21dcbe40ed7d29aff7d2d7320c0a5ee18c6bfabfef9486550a96ff27141
# 1P app - from RH Tenant
firstPartyAppClientId: b3cb2fab-15cb-4583-ad06-f91da9bfe2d1
firstPartyAppCertificate:
name: firstPartyCert2
manage: false # we have the cert from RH for int
# Mock Managed Identities Service Princiapl - from RH Tenant
miMockClientId: e8723db7-9b9e-46a4-9f7d-64d75c3534f0
miMockPrincipalId: d6b62dfa-87f5-49b3-bbcb-4a687c4faa96
miMockCertName: msiMockCert2
# ARM Helper - from RH Tenant
armHelperClientId: 3331e670-0804-48e8-a086-6241671ddc93
armHelperFPAPrincipalId: 47f69502-0065-4d9a-b19b-d403e183d2f4
armHelperCertName: armHelperCert2
# Grafana
monitoring:
grafanaName: "arohcp-int"
grafanaAdminGroupPrincipalId: "2fdb57d4-3fd3-415d-b604-1d0e37a188fe" # Azure Red Hat OpenShift MSFT Engineering.
# Global MSI
aroDevopsMsiId: "/subscriptions/5299e6b7-b23b-46c8-8277-dc1147807117/resourcegroups/global-shared-resources/providers/Microsoft.ManagedIdentity/userAssignedIdentities/global-ev2-identity"
# Cert Officer used for KV signer registration
kvCertOfficerPrincipalId: "32af88de-a61c-4f71-b709-50538598c4f2" # aro-ev2-admin-int-sp
# Logs
logs:
mdsd:
subscriptions:
- 5299e6b7-b23b-46c8-8277-dc1147807117
stg:
# this is the MSFT STAGE environment
defaults:
# Region for global resources in STAGE is uksouth
global:
region: uksouth
keyVault:
name: arohcpstg-global # [globally-unique]
secretsToSyncDir: "msft-stg/arohcpstg-global"
# Cluster Service
clustersService:
environment: "arohcpstg"
postgres:
name: "arohcpstg-cs-{{ .ctx.regionShort }}" # [globally-unique]
image:
digest: sha256:777e6f7be92f113b9c188de36b6925dff2537c23fd2efca115b21d42fa9d29e5
# Geneva Actions
genevaActions:
serviceTag: GenevaActions
# OIDC
oidcStorageAccountName: "arohcpstgoidc{{ .ctx.regionShort }}" # [globally-unique]
# SVC KV
serviceKeyVault:
name: "arohcpstg-svc-{{ .ctx.regionShort }}" # [globally-unique]
# Management Cluster KV
cxKeyVault:
name: "arohcpstg-cx-{{ .ctx.regionShort }}-{{ .ctx.stamp }}" # [globally-unique]
msiKeyVault:
name: "arohcpstg-msi-{{ .ctx.regionShort }}-{{ .ctx.stamp }}" # [globally-unique]
mgmtKeyVault:
name: "arohcpstg-mgmt-{{ .ctx.regionShort }}-{{ .ctx.stamp }}" # [globally-unique]
# SVC cluster settings
svc:
subscription: "hcp-stg-svc-{{ .ctx.region }}"
aks:
systemAgentPool:
minCount: 1
maxCount: 3
userAgentPool:
minCount: 1
maxCount: 3
azCount: 3
etcd:
kvName: "arohcpstg-etcd-{{ .ctx.regionShort }}" # [globally-unique]
logs:
san: SVC.GENEVA.KEYVAULT.ARO-HCP-STG.AZURE.COM # TBD
configVersion: "1.0"
# MC cluster settings
mgmt:
subscription: "hcp-stg-mgmt-{{ .ctx.region }}-{{ .ctx.stamp }}"
aks:
# MGMTM AKS nodepools
systemAgentPool:
minCount: 1
maxCount: 4
userAgentPool:
minCount: 1
maxCount: 12
azCount: 3
etcd:
kvName: "arohcpstg-etcd-{{ .ctx.regionShort }}-{{ .ctx.stamp }}" # [globally-unique]
logs:
san: MGMT.GENEVA.KEYVAULT.ARO-HCP-STG.AZURE.COM # TBD
configVersion: "1.0"
# DNS
dns:
# we share the same DNS zones between staging and production
# therefore it is crucial to use the staging suffix on the regional subdomain
# in order to avoid a conflict with the production environment
regionalSubdomain: "{{ .ctx.region }}staging"
cxParentZoneName: aroapp-hcp.io
cxParentZoneDelegation: false
svcParentZoneName: aro-hcp.azure.com
parentZoneName: azure.com
# ACR
acr:
svc:
name: arohcpsvcstg # [globally-unique]
ocp:
name: arohcpocpstg # [globally-unique]
# RP Frontend
frontend:
cosmosDB:
name: "arohcpstg-rp-{{ .ctx.regionShort }}" # [globally-unique]
private: false
image:
digest: sha256:aa1ae769ca6318aab0c9fe6cb2772416430aa5adb69eb69623d6198e580e08c3
cert:
issuer: OneCertV2-PrivateCA # let's use private until we have approval for public
# Mise
mise:
firstPartyAppId: 7f4a113a-c61d-412a-bea1-85dee5baf4a8
armAppId: e2c2ff5c-e5b4-4e79-8c3e-1da8c48461e7
tenantId: 33e01921-4d64-4f8c-a055-5bdaffd5e33d
image:
digest: sha256:d56506305ea64f368c920e5e4bce6ee44415d4133559a548b82a81bbd1828f9b
# RP Backend
backend:
image:
digest: sha256:02a32af8d34c5725d0096ee7f94adf2ef151d0634e8682fe7517e6f9ebba9bdc
# Hypershift
hypershift:
image:
digest: sha256:930a2851e0ed5144901eabdb1247096fea527231a990ea764b27754b766ef821
# Maestro
maestro:
eventGrid:
name: "arohcpstg-maestro-{{ .ctx.regionShort }}" # [globally-unique]
postgres:
name: "arohcpstg-maestro-{{ .ctx.regionShort }}" # [globally-unique]
image:
digest: sha256:f64ad21dcbe40ed7d29aff7d2d7320c0a5ee18c6bfabfef9486550a96ff27141
# 1P app - from RH Tenant
firstPartyAppClientId: "7f4a113a-c61d-412a-bea1-85dee5baf4a8"
firstPartyAppCertificate:
name: tmp-rp-firstparty
# Grafana
monitoring:
grafanaName: 'arohcp-stg'
grafanaAdminGroupPrincipalId: '' # object id for group 'RH-AROAPPR'. EV2 currently only allows service principal role assignment, so leave it empty for now
# Global MSI
aroDevopsMsiId: '/subscriptions/9a53d80e-dae0-4c8a-af90-30575d253127/resourceGroups/global-shared-resources/providers/Microsoft.ManagedIdentity/userAssignedIdentities/global-ev2-identity'
# Cert Officer used for KV signer registration
kvCertOfficerPrincipalId: ce4e50ef-1059-4b6f-a53a-53001d517513 # objectId for 'aro-ev2-admin-prod-sp'
# Logs
logs:
mdsd:
subscriptions: [] # TBD