dev-infrastructure/mgmt-pipeline.yaml (191 lines of code) (raw):
#
# Purpose: Manage management cluster and supporting infra for its services
# Managed Resources:
# * AKS MGMT cluster
# * MSI, CX and MGMT Key Vaults with OneCert registration
# * metrics collection
# * MI, certificate and RBAC for Maestro
#
$schema: "pipeline.schema.v1"
serviceGroup: Microsoft.Azure.ARO.HCP.Management.Infra
rolloutName: Management Cluster Rollout
resourceGroups:
- name: '{{ .global.rg }}'
subscription: '{{ .global.subscription }}'
steps:
- name: global-output
action: ARM
template: templates/output-global.bicep
parameters: configurations/output-global.tmpl.bicepparam
deploymentLevel: ResourceGroup
outputOnly: true
- name: '{{ .svc.rg }}'
subscription: '{{ .svc.subscription }}'
steps:
- name: svc-output
action: ARM
template: templates/output-svc.bicep
parameters: configurations/output-svc.tmpl.bicepparam
deploymentLevel: ResourceGroup
outputOnly: true
- name: '{{ .regionRG }}'
subscription: '{{ .svc.subscription }}'
steps:
- name: region-output
action: ARM
template: templates/output-region.bicep
parameters: configurations/output-region.tmpl.bicepparam
deploymentLevel: ResourceGroup
outputOnly: true
- name: '{{ .mgmt.rg }}'
subscription: '{{ .mgmt.subscription }}'
steps:
- name: rpRegistration
action: ResourceProviderRegistration
resourceProviderNamespaces:
value:
- Microsoft.Storage # for deployment scripts
- name: mgmt-infra
action: ARM
template: templates/mgmt-infra.bicep
parameters: configurations/mgmt-infra.tmpl.bicepparam
deploymentLevel: ResourceGroup
variables:
- name: clusterServiceMIResourceId
input:
step: svc-output
name: cs
- name: logAnalyticsWorkspaceId
input:
step: region-output
name: logAnalyticsWorkspaceId
dependsOn:
- region-output
- svc-output
- rpRegistration
# Configure certificate issuers for the MC KVs
- name: cx-oncert-public-kv-issuer
action: SetCertificateIssuer
dependsOn:
- mgmt-infra
vaultBaseUrl:
input:
name: cxKeyVaultUrl
step: mgmt-infra
issuer:
value: OneCertV2-PublicCA
- name: mgmt-oncert-private-kv-issuer
action: SetCertificateIssuer
dependsOn:
- mgmt-infra
vaultBaseUrl:
input:
name: mgmtKeyVaultUrl
step: mgmt-infra
issuer:
value: OneCertV2-PrivateCA
- name: mgmt-oncert-public-kv-issuer
action: SetCertificateIssuer
dependsOn:
- mgmt-infra
vaultBaseUrl:
input:
name: mgmtKeyVaultUrl
step: mgmt-infra
issuer:
value: OneCertV2-PublicCA
# Build the MC
- name: mgmt-cluster
action: ARM
template: templates/mgmt-cluster.bicep
parameters: configurations/mgmt-cluster.tmpl.bicepparam
deploymentLevel: ResourceGroup
variables:
- name: ocpAcrResourceId
input:
step: global-output
name: ocpAcrResourceId
- name: svcAcrResourceId
input:
step: global-output
name: svcAcrResourceId
- name: azureMonitoringWorkspaceId
input:
step: region-output
name: azureMonitoringWorkspaceId
- name: maestroEventGridNamespaceId
input:
step: region-output
name: maestroEventGridNamespaceId
- name: logAnalyticsWorkspaceId
input:
step: region-output
name: logAnalyticsWorkspaceId
dependsOn:
- cx-oncert-public-kv-issuer
- mgmt-oncert-private-kv-issuer
- mgmt-oncert-public-kv-issuer
- global-output
- region-output
- name: mgmt-nsp
action: ARM
template: templates/mgmt-nsp.bicep
parameters: configurations/mgmt-nsp.tmpl.bicepparam
deploymentLevel: ResourceGroup
dependsOn:
- mgmt-cluster
- mgmt-infra
- name: '{{ .mgmt.rg }}'
subscription: '{{ .mgmt.subscription }}'
aksCluster: '{{ .mgmt.aks.name }}'
steps:
- name: prometheus
action: Shell
command: make -C ../observability/prometheus deploy
dryRun:
variables:
- name: DRY_RUN
value: "true"
variables:
- name: PROMETHEUS_OPERATOR_REGISTRY
configRef: mgmt.prometheus.prometheusOperator.image.registry
- name: PROMETHEUS_OPERATOR_REPOSITORY
configRef: mgmt.prometheus.prometheusOperator.image.repository
- name: PROMETHEUS_OPERATOR_DIGEST
configRef: mgmt.prometheus.prometheusOperator.image.digest
- name: PROMETHEUS_SPEC_REGISTRY
configRef: mgmt.prometheus.prometheusSpec.image.registry
- name: PROMETHEUS_SPEC_REPOSITORY
configRef: mgmt.prometheus.prometheusSpec.image.repository
- name: PROMETHEUS_SPEC_DIGEST
configRef: mgmt.prometheus.prometheusSpec.image.digest
- name: PROMETHEUS_SPEC_REPLICAS
configRef: mgmt.prometheus.prometheusSpec.replicas
- name: PROMETHEUS_SPEC_SHARDS
configRef: mgmt.prometheus.prometheusSpec.shards
- name: PROMETHEUS_SPEC_VERSION
configRef: mgmt.prometheus.prometheusSpec.version
- name: PROMETHEUS_NAMESPACE_LABEL
configRef: mgmt.prometheus.namespaceLabel
- name: RESOURCE_GROUP
configRef: mgmt.rg
dependsOn:
- mgmt-cluster
# Install ACRpull
- name: acrpull
action: Shell
command: make -C ../acrpull deploy
dryRun:
variables:
- name: DRY_RUN
value: "true"
variables:
- name: ACRPULL_DIGEST
configRef: acrPull.image.digest
- name: ACRPULL_REPO
configRef: acrPull.image.repository
- name: ACRPULL_REGISTRY
configRef: acrPull.image.registry
dependsOn:
- prometheus
# Install cluster patches
- name: mgmt-fixes
action: Shell
command: make -C ../mgmt-fixes deploy
dryRun:
variables:
- name: DRY_RUN
value: "true"
variables:
- name: APPLY_KUBELET_FIXES
configRef: mgmt.applyKubeletFixes
dependsOn:
- mgmt-cluster