dev-infrastructure/svc-pipeline.yaml (165 lines of code) (raw):
#
# Purpose: Manage service cluster and supporting infra for its services
# Managed Resources:
# * AKS SVC cluster
# * SVC Key Vault with OneCert registration
# * MIs, CosmosDB and RBAC for the RP
# * MIs, Postgres DB, OIDC storage and RBAC for Cluster Service
# * MIs, Postgres DB, certificates and RBAC for the Maestro Server
# * MIs and RBAC for ACRPull
# * metrics collection
# Managed Processes:
# * Manage ACRPull
# * Configure and upgrade Istio
#
$schema: "pipeline.schema.v1"
serviceGroup: Microsoft.Azure.ARO.HCP.Service.Infra
rolloutName: Service Cluster Rollout
resourceGroups:
# Query parameters from global deployment, e.g. ACR resource IDs
- 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
# Query parameters from regional deployment, e.g. Azure Monitor workspace ID
- 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: '{{ .svc.rg }}'
subscription: '{{ .svc.subscription }}'
steps:
# Create SVC KV
- name: svc-infra
action: ARM
template: templates/svc-infra.bicep
parameters: configurations/svc-infra.tmpl.bicepparam
deploymentLevel: ResourceGroup
variables:
- name: logAnalyticsWorkspaceId
input:
step: region-output
name: logAnalyticsWorkspaceId
dependsOn:
- region-output
# Configure certificate issuers for the SVC KV
- name: svc-oncert-private-kv-issuer
action: SetCertificateIssuer
dependsOn:
- svc-infra
vaultBaseUrl:
input:
name: svcKeyVaultUrl
step: svc-infra
issuer:
value: OneCertV2-PrivateCA
- name: svc-oncert-public-kv-issuer
action: SetCertificateIssuer
dependsOn:
- svc-infra
vaultBaseUrl:
input:
name: svcKeyVaultUrl
step: svc-infra
issuer:
value: OneCertV2-PublicCA
# Create SVC cluster
- name: svc
action: ARM
template: templates/svc-cluster.bicep
parameters: configurations/svc-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: logAnalyticsWorkspaceId
input:
step: region-output
name: logAnalyticsWorkspaceId
dependsOn:
- svc-oncert-private-kv-issuer
- svc-oncert-public-kv-issuer
- global-output
- region-output
# Deploy prometheus first since istio depends on it's CRDs
- name: '{{ .svc.rg }}'
subscription: '{{ .svc.subscription }}'
aksCluster: '{{ .svc.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: svc.prometheus.prometheusOperator.image.registry
- name: PROMETHEUS_OPERATOR_REPOSITORY
configRef: svc.prometheus.prometheusOperator.image.repository
- name: PROMETHEUS_OPERATOR_DIGEST
configRef: svc.prometheus.prometheusOperator.image.digest
- name: PROMETHEUS_SPEC_REGISTRY
configRef: svc.prometheus.prometheusSpec.image.registry
- name: PROMETHEUS_SPEC_REPOSITORY
configRef: svc.prometheus.prometheusSpec.image.repository
- name: PROMETHEUS_SPEC_DIGEST
configRef: svc.prometheus.prometheusSpec.image.digest
- name: PROMETHEUS_SPEC_REPLICAS
configRef: svc.prometheus.prometheusSpec.replicas
- name: PROMETHEUS_SPEC_SHARDS
configRef: svc.prometheus.prometheusSpec.shards
- name: PROMETHEUS_SPEC_VERSION
configRef: svc.prometheus.prometheusSpec.version
- name: PROMETHEUS_NAMESPACE_LABEL
configRef: svc.prometheus.namespaceLabel
- name: RESOURCE_GROUP
configRef: svc.rg
dependsOn:
- svc
# configure istio
- name: istio-config
action: Shell
command: make -C ../istio deploy
dryRun:
variables:
- name: DRY_RUN
value: "true"
variables:
- name: ISTIO_VERSIONS
configRef: svc.istio.versions
dependsOn:
- prometheus
# - updates workload to use istio on version svc.istio.targetVersion
# - configures istio IP tag usage
- name: istio-upgrade
action: Shell
command: scripts/istio.sh
variables:
- name: TARGET_VERSION
configRef: svc.istio.targetVersion
- name: ISTIOCTL_VERSION
configRef: svc.istio.istioctlVersion
- name: ISTIO_INGRESS_GATEWAY_IP_ADDRESS_NAME
configRef: svc.istio.ingressGatewayIPAddressName
- name: TAG
configRef: svc.istio.tag
- name: SVC_RESOURCEGROUP
configRef: svc.rg
dependsOn:
- istio-config
# 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
- svc