Delete environments

This topic explains how to delete environments. For an introduction, see About environments and environment groups.

About deleting environments

To delete an environment properly, you must make several configuration changes and apply them to your cluster. These changes include removing the environment definition and references to it from your overrides file, deleting the synchronizer, runtime, and udca components, and finally re-applying your overrides to restore your cluster without including the environment you wish to delete.

The reason you can't only delete the environment in one step is because the other elements, synchronizer, runtime, and udca are connected to each environment through their internal configurations. Only by deleting them and re-applying them can you properly delete an environment.

How to delete an environment

Assume that you have two environments, test and prod. In your overrides file, the definitions might look something like this:

...
virtualhosts:
  - name: default-test
    hostAliases: ["api-test.example.com"]
    sslCertPath: ./certs/fullchain-test.pem
    sslKeyPath: ./certs/privkey-test.pem
      env: test
  - name: default-prod
    hostAliases: ["api.example.com"]
    sslCertPath: ./certs/fullchain.pem
    sslKeyPath: ./certs/privkey.pem
      env: prod
...
envs:
  - name: test
    serviceAccountPaths:
      synchronizer: "your_keypath/synchronizer-manager-service-account.json
      udca: "your_keypath/analytic-agent-service-account.json
  - name: prod
    serviceAccountPaths:
      synchronizer: "your_keypath/synchronizer-manager-service-account.json
      udca: "your_keypath/analytic-agent-service-account.json
...

To delete the prod environment, follow these steps:

  1. Copy your original overrides file -- the one that contains both the prod and test environment definitions -- to a new file called, for example, prod-delete.yaml.
  2. Open prod-delete.yaml.
  3. Delete the test environment definition from envs and virtualhosts, leaving only the prod definitions. For example:
    ...
    virtualhosts:
      - name: default-prod
        hostAliases: ["api.example.com"]
        sslCertPath: ./certs/fullchain.pem
        sslKeyPath: ./certs/privkey.pem
          env: prod
    ...
    envs:
      - name: prod
        serviceAccountPaths:
          synchronizer: "your_keypath/synchronizer-manager-service-account.json
          udca: "your_keypath/analytic-agent-service-account.json
    ...
  4. Remove everything else from prod-delete.yaml except the cassandra config, if present:

    After making the above changes, your overrides file should look something like this:

    ...
    virtualhosts:
      - name: default-prod
        hostAliases: ["api.example.com"]
        sslCertPath: ./certs/fullchain.pem
        sslKeyPath: ./certs/privkey.pem
          env: prod
    
    envs:
      - name: prod
        serviceAccountPaths:
          synchronizer: "your_keypath/synchronizer-manager-service-account.json
          udca: "your_keypath/analytic-agent-service-account.json
    
    cassandra:
      replicaCount: 3
      resources:
        requests:
          cpu: 3500m
          memory: 7Gi
      storage:
        storageClass: pd-ssd
        capacity: 10Gi
  5. Run this command to delete the specified components:
    apigeectl delete -f prod-delete.yaml -c runtime, udca, synchronizer
  6. Open your original overrides file (the one that includes both the test and prod environment definitions).
  7. Delete the prod environment definition from the envs and virtualhosts elements. You only want the test environment definition to be present in the file.
  8. Apply the modified overrides file to your cluster. This command will recreate the deleted elements and, because it is omitted, not recreate the prod environment.
    apigeectl apply -f original-overrides.yaml -c runtime, udca, synchronizer
  9. Save your changes.

  10. You're not quite done. You must now update the environments in the hybrid UI.

  11. Open a browser and navigate to the hybrid UI at Apigee UI.
  12. Remove the environment using the steps described Delete an existing environment in the Hybrid UI.