# Maintain garden-setup

Garden-setup is driven by an `acre.yaml` file, which is rendered from a wrapper script like [dev-acre.sh](./dev-acre.sh).

An `acre.yaml` file allows the following configurations, we've applied some patches so the scheme is different with the original
`garden-setup`:

```yaml
landscape:
  name: dev
  domain: dev.shared.aws.tidbcloud.com
  cluster:
    kubeconfig: ./kubeconfig
    networks:
      nodes: "10.0.0.0/17"
      pods: "10.0.128.0/17"
      services: "172.20.0.0/16"
  # ip-whitelist of gardener api-server, can be collected from the output of base and seed clusters
  ingressSourceRanges:
    - 0.0.0.0/0
  etcd:
    # etcd backup bucket, retrieved from `pulumi stack output backupBucketName` of the corresponding `garden-pulumi` stack
    backupBucket: dev-etcd-bucket20200630152135809400000001
    # etcd serviceaccount, retrieved from `pulumi stack output etcdServiceAccount` of the corresponding `garden-pulumi` stack
    serviceAccount: etcd
  iaas:
    # base cluster, would not host any shoot
    - name: base
      type: aws
      region: us-west-2
      mode: soil
      zones:
        - us-west-2a
        - us-west-2b
        - us-west-2c
      cluster:
        networks:
          nodes: "192.168.0.0/16"
          pods: "10.0.0.0/16"
          services: "172.20.0.0/16"
        kubeconfig: ...

    # seeds, new seed must be appended at the tail of this list
    - name: aws-us-west-2
      type: aws
      mode: seed
      region: us-west-2
      zones:
        - us-west2-c
        - us-west2-b
        - us-west2-a
      cluster:
        networks:
          nodes: "192.168.0.0/16"
          pods: "10.0.0.0/16"
          services: "172.20.0.0/16"
        kubeconfig: ...

  # DNS type, only aws-route53 is supported
  dns:
    # roleArn of dns-controller-manager, retrieved from `pulumi stack output baseDnsControllerRole` of the corresponding `garden-pulumi` stack
    roleArn: ...
    type: aws-route53
```
