gke-anthos-with-demo-app/hub.yaml (168 lines of code) (raw):
version: 1
kind: stack
meta:
name: GKE Sandbox Stack
brief: GKE Sandbox with Anthos and Demo App
components:
- name: gke-gcloud
source:
dir: components/gke-gcloud
git:
remote: https://github.com/agilestacks/google-components.git
subDir: gke-gcloud
- name: gke-gcloud-node-pool
source:
dir: components/gke-gcloud-node-pool
git:
remote: https://github.com/agilestacks/google-components.git
subDir: gke-gcloud-node-pool
depends: [gke-gcloud]
- name: anthos-service-mesh
source:
dir: components/anthos-service-mesh
git:
remote: https://github.com/agilestacks/google-components.git
subDir: anthos-service-mesh
depends: [gke-gcloud]
hooks:
- file: .hub/gke-context
brief: Sets Kubernetes (GKE) Context
triggers:
- pre-*
- name: anthos-ingress-gateway
source:
dir: components/anthos-ingress-gateway
git:
remote: https://github.com/agilestacks/google-components.git
subDir: anthos-ingress-gateway
ref: main
depends: [anthos-service-mesh]
hooks:
- file: .hub/gke-context
brief: Sets Kubernetes (GKE) Context
triggers:
- pre-*
- name: online-boutique-app
source:
dir: components/online-boutique-app
git:
remote: https://github.com/agilestacks/google-components.git
subDir: online-boutique-app
depends: [gke-gcloud-node-pool, anthos-ingress-gateway]
hooks:
- file: .hub/gke-context
brief: Sets Kubernetes (GKE) Context
triggers:
- pre-*
- name: dns-zone-record-set
source:
dir: components/dns-zone-record-set
git:
remote: https://github.com/agilestacks/google-components.git
subDir: dns-zone-record-set
depends: [anthos-ingress-gateway]
extensions:
init:
- gcp
- .hub/get-info
configure:
- gcp
- .hub/set-gke-version
- env
requires:
- gcp
lifecycle:
verbs:
- deploy
- undeploy
order:
- gke-gcloud
- gke-gcloud-node-pool
- anthos-service-mesh
- anthos-ingress-gateway
- dns-zone-record-set
- online-boutique-app
parameters:
- name: hub.sandboxDir
fromEnv: SANDBOX_DIR
- name: hub.sandboxCommit
fromEnv: SANDBOX_COMMIT
- name: hub.userAccount
fromEnv: USER_ACCOUNT
- name: projectId
fromEnv: GOOGLE_PROJECT
- name: dns.domain
fromEnv: HUB_DOMAIN_NAME
- name: stateBucketName
fromEnv: HUB_STATE_BUCKET
- name: hubStackName
fromEnv: HUB_STACK_NAME
- name: component.gke
parameters:
- name: name
value: ${hubStackName}
- name: zone
fromEnv: GOOGLE_ZONE
- name: region
fromEnv: GOOGLE_REGION
- name: machineType
value: e2-standard-4
brief: GKE cluster worker nodes machine type
fromEnv: GKE_CLUSTER_MACHINE_TYPE
- name: nodeCount
default: 1
brief: GKE cluster worker nodes count
fromEnv: GKE_CLUSTER_NODE_COUNT
- name: version
fromEnv: GOOGLE_GKE_CLUSTER_VERSION
- name: releaseChannel
fromEnv: GOOGLE_GKE_RELEASE_CHANNEL
- name: component.gkeNodePool
parameters:
- name: name
value: ${component.gke.name}-1
- name: clusterName
value: ${component.gke.name}
- name: zone
value: ${component.gke.zone}
- name: nodeCount
default: 3
brief: GKE worker node pool size
fromEnv: GKE_NODE_POOL_COUNT
- name: machineType
default: e2-standard-4
brief: GKE worker node machine size
fromEnv: GKE_NODE_POOL_MACHINE_TYPE
- name: component.anthosServiceMesh
parameters:
- name: clusterName
value: ${component.gke.name}
- name: zone
value: ${component.gke.zone}
- name: component.anthosIngressGateway.name
value: ingressgateway
- name: component.dnsZoneRecordSet
parameters:
- name: name
value: "*.${component.anthosIngressGateway.name}"
- name: type
value: "A"
- name: value
value: ${component.anthosIngressGateway.ip}
kind: link
- name: zoneName
fromEnv: HUB_STACK_NAME
- name: component.onlineBoutiqueApp
parameters:
- name: istioRevision
value: ${component.anthosServiceMesh.revision}
kind: link
- name: host
value: boutique.${component.anthosIngressGateway.name}.${dns.domain}
- name: ingressGateway
value: ${component.anthosIngressGateway.name}
outputs:
- name: component.anthosIngressGateway.ip
- name: component.onlineBoutiqueApp.host
- name: component.gke.url
- name: component.anthosServiceMesh.url