diff --git a/.werft/build.ts b/.werft/build.ts index c41bff4a5877d4..c551bab4f8bcae 100644 --- a/.werft/build.ts +++ b/.werft/build.ts @@ -114,9 +114,6 @@ export async function build(context, version) { throw new Error(`'${version}' is not semver compliant and thus cannot used for Self-Hosted releases!`) } - werft.phase("publish", "publishing docker images..."); - exec(`leeway run --werft=true install/installer:publish-as-latest -Dversion=${version} -DimageRepoBase=${imageRepo}`); - werft.phase("publish", "publishing Helm chart..."); publishHelmChart("gcr.io/gitpod-io/self-hosted", version); diff --git a/docs/self-hosted/install/configure-ingress.md b/docs/self-hosted/install/configure-ingress.md index ca3dbfcec8c244..c9c70c0c74579e 100644 --- a/docs/self-hosted/install/configure-ingress.md +++ b/docs/self-hosted/install/configure-ingress.md @@ -28,10 +28,14 @@ Installing Gitpod on a subdomain works as well. For example: kubectl describe svc proxy | grep -i ingress ``` - 2. Create a file `values.custom.yaml` with the following content: + 1. Merge the following into your `values.custom.yaml` file: ```yaml hostname: your-domain.com + components: + proxy: + loadBalancerIP: ``` + Specifying the `loadBalancerIP` make sure it stays the same across all redeploys. ## 2. HTTPS Gitpod requires HTTPS certificates to function properly. We recommend using [Let's Encrypt](https://letsencrypt.org/) for retrieving certificates as we do for [gitpod.io](https://gitpod.io). @@ -55,7 +59,7 @@ To configure the HTTPS certificates for your domain ```bash kubectl create secret generic https-certificates --from-file=secrets/https-certificates ``` - 4. Afterwards, do an `helm upgrade --install -f values.custom.yaml gitpod gitpod.io/gitpod --version=0.8.0` to apply the changes. + 4. Afterwards, do an `helm upgrade --install -f values.custom.yaml gitpod gitpod.io/gitpod --version=0.9.0` to apply the changes. ### Using Let's Encrypt to generate HTTPS certificates diff --git a/docs/self-hosted/install/database.md b/docs/self-hosted/install/database.md index b536ff370b3210..a3f44b3641ac70 100644 --- a/docs/self-hosted/install/database.md +++ b/docs/self-hosted/install/database.md @@ -38,4 +38,4 @@ This chart installs a MySQL database which gets Gitpod up and running but is not mysql: enabled: false ``` - 3. Do a `helm upgrade --install -f values.custom.yaml gitpod gitpod.io/gitpod --version=0.8.0` to apply the changes. + 3. Do a `helm upgrade --install -f values.custom.yaml gitpod gitpod.io/gitpod --version=0.9.0` to apply the changes. diff --git a/docs/self-hosted/install/docker-registry.md b/docs/self-hosted/install/docker-registry.md index e54d9ef53c0b52..4b85c274fefcce 100644 --- a/docs/self-hosted/install/docker-registry.md +++ b/docs/self-hosted/install/docker-registry.md @@ -48,7 +48,7 @@ To connect to an existing Docker registry, perform the following steps: > This does not work for Google Cloud Registries because their login tokens are short-lived. See the [example](#example-google-cloud-registry-credentials) below on how to configure it. - 3. Do a `helm upgrade --install -f values.custom.yaml gitpod gitpod.io/gitpod --version=0.8.0` to apply the changes. + 3. Do a `helm upgrade --install -f values.custom.yaml gitpod gitpod.io/gitpod --version=0.9.0` to apply the changes. Make sure the resulting JSON file contains the credentials (there should be an `auths` section containing them as base64 encoded string). diff --git a/docs/self-hosted/install/install-on-aws-script.md b/docs/self-hosted/install/install-on-aws-script.md index 8d468b68735674..b2bb76b17abf01 100644 --- a/docs/self-hosted/install/install-on-aws-script.md +++ b/docs/self-hosted/install/install-on-aws-script.md @@ -2,71 +2,8 @@ url: /docs/self-hosted/latest/install/install-on-aws-script/ --- -> Since the `0.6.0` release (December 2019) the installers are deprecated. They are no longer working to their full extend and will be removed in a future release. +> Since the `0.6.0` release (December 2020) the installers have been deprecated and have been removed with the `0.9.0` release (April 2021). -# Getting started with Gitpod on AWS - -This guide explains how to install an instance of Gitpod with 3 simple steps: - -## 1. Get your AWS credentials - -You need an [AWS account](https://aws.amazon.com/). Once you have access to an account, follow [these steps](https://docs.aws.amazon.com/IAM/latest/UserGuide/getting-started_create-admin-group.html) to obtain valid credentials. - -```bash -export AWS_ACCESS_KEY_ID=... -export AWS_SECRET_ACCESS_KEY=... -``` - -### Note: - - Setting up an AWS account the first time can take some time as they require - and test for - a valid credit card. - - -## 2. Run the installer image -```bash -mkdir -p $PWD/awsinstall -docker run --rm -it \ - -e AWS_ACCESS_KEY_ID \ - -e AWS_SECRET_ACCESS_KEY \ - -v "$PWD/awsinstall":"/workspace" \ - gcr.io/gitpod-io/self-hosted/installer:0.8.0 aws -``` - -This will kickstart the installation process, authenticate with AWS and automatically set up your Gitpod deployment using Docker and Terraform. - -### Note: - - This guide assumes you have the [docker](https://docs.docker.com/engine/install/) installed. - - - The final step - creating the cluster - might take around 30 minutes on AWS. Good time to grab a cup of coffee! - -## 3. Launch the first workspace -Once finished, the installer will print the URL at which your Gitpod installation can be found. There you need to connect Gitpod to at least one Git provider: - - [Configure an OAuth application for GitLab](/docs/gitlab-integration/#oauth-application) - - [Configure an OAuth application for GitHub](/docs/github-integration/#oauth-application) - -## 4. Configure the Browser extension - -Afterwards you can jump right into your first workspace, by prefixing the repository URL with your Gitpod Self-Hosted URL. - -Examples: - - GitLab: `/#https://gitlab.com/gitpod/spring-petclinic` - - GitHub: `/#https://github.com/gitpod-io/spring-petclinic` - -### Note: - - The local mount point `./awsinstall` will hold your Terraform config files. You can always modify them and re-run the install script in order to make changes to your Gitpod deployment. - - - The first workspace start might take a up to 10 minutes because it needs to pull several docker images and initialize the registry. - -## FAQ - -### Q: I get "OptInRequired: You are not subscribed to this service. Please go to http://aws.amazon.com to subscribe." - A: Your account seems to be missing a credit card. Go to https://portal.aws.amazon.com/billing/signup?type=resubscribe#/resubscribed and finish the subscription process. - -### Q: I get "Status Reason: The requested configuration is currently not supported" - A: Switch to another [AWS region](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Concepts.RegionsAndAvailabilityZones.html) often helps. Some machine types/configurations are not available in all regions. - -### Q: I get "Error: Service "proxy" is invalid: spec.ports[0].nodePort: Invalid value: 31080: provided port is already allocated" on re-applying the terraform script - A: This is a kubernetes issue on AWS. Please wait for 2-5 minutes and retry (cmp. Kubernetes issues [32987](https://github.com/kubernetes/kubernetes/issues/32987) and [73140](https://github.com/kubernetes/kubernetes/issues/73140)). - -### Q: One of my pods throws errors reading "networkPlugin cni failed to set up pod "< name >" network: add cmd: failed to assign an IP address to container" - A: Seems like the pod-per-node limit is reached: https://github.com/awslabs/amazon-eks-ami/blob/master/files/eni-max-pods.txt . Please report this as this as a bug [here](https://github.com/gitpod-io/gitpod/issues). +We currently [do not support AWS as platform](https://www.notion.so/gitpod/1b9eac5cb33d42e391f86a87f0e37836?v=4f2ec7c943514ee19203b9d4fe096094) for running Gitpod. +You still might get Gitpod to run on AWS (especially with the help of our [awesome community](https://community.gitpod.io/)) but there will be no support from Gitpod for those efforts. diff --git a/docs/self-hosted/install/install-on-gcp-script.md b/docs/self-hosted/install/install-on-gcp-script.md index 683712120c8f3d..1956f9f2305395 100644 --- a/docs/self-hosted/install/install-on-gcp-script.md +++ b/docs/self-hosted/install/install-on-gcp-script.md @@ -2,53 +2,6 @@ url: /docs/self-hosted/latest/install/install-on-gcp-script/ --- -> Since the `0.6.0` release (December 2019) the installers are deprecated. They are no longer working to their full extend and will be removed in a future release. +> Since the `0.6.0` release (December 2020) the installers have been deprecated and have been removed with the `0.9.0` release (April 2021). -# Getting started with Gitpod on GCP - -Gitpod runs best on Google Cloud Platform. That's also where [gitpod.io](https://gitpod.io) is deployed and operated at scale. -This guide explains how to install an instance of Gitpod with 4 simple steps: - -## 1. Get a GCP project -You need a fresh [Google Cloud project](https://cloud.google.com/resource-manager/docs/creating-managing-projects), for which you can also use the [Google Cloud Platform trial](https://console.cloud.google.com/freetrial) with $300 worth of resources. - -Once you have the project, keep its project ID handy. - -## 2. Run the installer image -```bash -mkdir -p $PWD/gpinstall -docker run --rm -it \ - -v $PWD/gcloud:/root/.config/gcloud \ - -v $PWD/gpinstall:/workspace \ - gcr.io/gitpod-io/self-hosted/installer:0.8.0 \ - gcp -``` - -This will kickstart the installation process, log in with Google Cloud, and automatically set up your Gitpod deployment using [Terraform](https://www.terraform.io) and [Helm](https://helm.sh). - -### Note: -- This guide assumes you have the [docker](https://docs.docker.com/engine/install/) installed. - -- The local mount point `$PWD/gpinstall` will hold your Terraform config files. You can always modify them and re-run the install script in order to make changes to your Gitpod deployment. - -- The local mount point `$PWD/gcloud` will cache your Google Cloud credentials. It is safe to delete this folder if you don't wish to leave any tokens behind. - -Once the installation process is complete, the script will print the URL at which your Gitpod installation can be accessed. - -## 3. Launch the first workspace -Once finished, the installer will print the URL at which your Gitpod installation can be found. There you need to connect Gitpod to at least one Git provider: - - [Configure an OAuth application for GitLab](/docs/gitlab-integration/#oauth-application) - - [Configure an OAuth application for GitHub](/docs/github-integration/#oauth-application) - -## 4. Configure the Browser extension -Afterwards you can jump right into your first workspace, by prefixing the repository URL with your Gitpod Self-Hosted URL. - -Examples: - - GitLab: `/#https://gitlab.com/gitpod/spring-petclinic` - - GitHub: `/#https://github.com/gitpod-io/spring-petclinic` - -# Going further -- Using a [custom domain](../domain/) -- Configuring a [custom Docker registry](../docker-registry/) -- Configuring a [storage backend](../storage/) -- Configuring [workspace sizes](../workspaces/) +If you are looking for a guide on how to deploy Gitpod Self-Hosted on GCP there is one [here](../install-on-gcp/). diff --git a/docs/self-hosted/install/install-on-gcp.md b/docs/self-hosted/install/install-on-gcp.md new file mode 100644 index 00000000000000..f9c2e9080d6251 --- /dev/null +++ b/docs/self-hosted/install/install-on-gcp.md @@ -0,0 +1,55 @@ +--- +url: /docs/self-hosted/latest/install/install-on-gcp/ +--- + +# Getting started with Gitpod on GCP + +Gitpod runs best on Google Cloud Platform. That's also where [gitpod.io](https://gitpod.io) is deployed and operated at scale. +This guide explains how to install an instance of Gitpod with the following steps: + +## 1. Get a GCP project +You need a fresh [Google Cloud project](https://cloud.google.com/resource-manager/docs/creating-managing-projects), for which you can also use the [Google Cloud Platform trial](https://console.cloud.google.com/freetrial) with $300 worth of resources. + +Once you have the project, keep its project ID handy. + +## 2. Run Terraform +Running the following Terraform script will create a Gitpod Cluster, Database, Service Accounts and everything else necessary to run Gitpod installation . + + > Note: While this is the most integrated and powerful setup, it will burn some money (users reported ~100$/week) even if not used. This obviously depends on the specific configuration, especially node sizing. + + 1. Enable APIs: + + 1. Visit https://console.cloud.google.com/apis/library/dns.googleapis.com?project=|your-project-id| and hit "Enable". + + 2. Visit https://console.cloud.google.com/apis/api/compute.googleapis.com/overview?project=|your-project-id| and hit "Enable". + + 2. Install all necessary infrastructure using the following commands: + + ``` + export PROJECT_ID=|your-project-id| + cd install/gcp-terraform/environment/full + terraform init + terraform plan -var "project=$PROJECT_ID" -var 'region=europe-west1' -var 'hostname=gpl.gitpod-self-hosted.com' -var 'certificate_email=test@test.sh' + terraform apply -var "project=$PROJECT_ID" -var 'region=europe-west1' -var 'hostname=gpl.gitpod-self-hosted.com' -var 'certificate_email=test@test.sh' + ``` + At the end there are two files: + - a `values.terraform.yaml` containing all infrastructure-specific helm config + - a `secrets/kubeconfig` containing the `kubectl` config to connect to the cluster + + +## 3. Setup DNS nameserver + + The Terraform scripts create a "dangling" DNS zone with Google's [Cloud DNS](https://cloud.google.com/dns). To finish the setup you have two options: + - Buy a domain from Google Cloud Domain: https://console.cloud.google.com/net-services/dns/zones?project=|your-project-id| + - Install Gitpod on a subdomain (`gitpod.my-domain.com`) of an existing domain (`my-domain.com`) that might be from another registrar: For this to work you need to add several `NS` records to the DNS zone `my-domain.com` that point to Google's nameservers. + 1. Go to https://console.cloud.google.com/net-services/dns/zones?project=|your-project-id|, open your Gitpod DNS zone to learn and look for the `NS` entry. This contains a list of nameservers. + 2. Go to the registrar of `my-domain.com` and add a `NS` entry for `gitpod.my-domain.com` that points to _all_ of the Google nameservers (typically 4). + +## 4. Install Gitpod using Helm +To actually install Gitpod follow the [the generic Kubernetes instructions](../install-on-kubernetes/) to install Gitpod. + > Note: You can skip "Configure Ingress to your Gitpod installation" entirely, as this has already been taken care of. + +Make sure to always: + - prepend `values.terraform.yaml` like this: `helm upgrade --install -f values.terraform.yaml -f values.custom.yaml` + - append your `kubeconfig` file to your `KUBECONFIG` environment variable so `kubectl` is able to access the Gitpod cluster: `export KUBECONFIG=$KUBECONFIG:$PWD/secrets/kubeconfig` + diff --git a/docs/self-hosted/install/install-on-kubernetes.md b/docs/self-hosted/install/install-on-kubernetes.md index 5fb3725a3f90b3..aaf5f0b5c9a7dc 100644 --- a/docs/self-hosted/install/install-on-kubernetes.md +++ b/docs/self-hosted/install/install-on-kubernetes.md @@ -6,19 +6,25 @@ url: /docs/self-hosted/latest/install/install-on-kubernetes/ This section describes how to install Gitpod on any Kubernetes cluster using [Helm](https://helm.sh). This is the most flexible and generic way of installing Gitpod. The chart for stable releases resides in Helm repository [charts.gitpod.io](https://charts.gitpod.io), charts for branch-builds can be found [here](#install-branch-build), and the source of the charts is in our [public git repository](https://github.com/gitpod-io/gitpod/blob/master/chart/). -For some cloud providers, we offer [Terraform](https://www.terraform.io/) scripts packaged into an installer. The installer aims to use the managed services from your cloud provider (Kubernetes Cluster, database, storage, image registry) rather than installing them along with the chart. Also, the script configures the cluster for best performance and cost-efficiency. We recommend using the installer if your cloud provider is supported. Once the installer has created the cluster, it will pre-configure and install this Gitpod helm chart into it. -* [Installer for Google Cloud Platform (GCP)](../install-on-gcp-script/). -* [Installer for Amazon Web Services (AWS)](../install-on-aws-script/). +For some platforms we offer [Terraform](https://www.terraform.io/) scripts that ease the infrastructure setup. Once the script has created the necessary infrastructure it will output a `values.terraform.yaml` that contains infrastructure-specific configuration for the `helm` deployment. +* [Terraform for Google Cloud Platform (GCP)](../install-on-gcp/). ## Prerequisites - * A Kubernetes cluster in version 1.15 <= x <= 1.17. +As we at Gitpod follow a ["Saas First" strategy](https://www.notion.so/gitpod/Gitpod-s-Direction-be35d064c0704fbda61c542b84e07ef6#57d3e4659c50449280411ac1f7dd1906) we have a [very limited set of platforms that we support](https://www.notion.so/gitpod/1b9eac5cb33d42e391f86a87f0e37836?v=4f2ec7c943514ee19203b9d4fe096094). - * local `kubectl` with connection to your cluster +You still might get Gitpod to run on other platforms (especially with the help of our [awesome community](https://community.gitpod.io/)) but there will be no support from Gitpod for those efforts. - * local `helm` in version >= 3. +Requirements regarding the Kubernetes the cluster: + * Workspace nodes require Ubuntu `= 18.04` as Host OS at the moment - Gitpod should work on small Kubernetes nodes out of the box (2vCPUs, 8GB RAM). For a better experience we recommend at least 4vCPUs and 16GB RAM for workspaces nodes. For cost efficiency, we recommend to enable cluster-autoscaling. + * Gitpod should work on small Kubernetes nodes out of the box (2vCPUs, 8GB RAM). For a better experience we recommend at least 4vCPUs and 16GB RAM for workspaces nodes. For cost efficiency, we recommend to enable cluster-autoscaling. + +You need the following "local" tools to follow this guide: + + * `kubectl` with connection to your cluster + + * `helm` in version `>= 3`. ## Installation @@ -26,6 +32,10 @@ To install Gitpod in your Kubernetes cluster, follow these steps: 1. Create a file `values.custom.yaml` with the following content: ``` + rabbitmq: + auth: + username: your-rabbitmq-user + password: your-secret-rabbitmq-password minio: accessKey: your-random-access-key secretKey: your-random-secret-key @@ -36,7 +46,7 @@ To install Gitpod in your Kubernetes cluster, follow these steps: ```console helm repo add gitpod.io https://charts.gitpod.io - helm install -f values.custom.yaml gitpod gitpod.io/gitpod --version=0.8.0 + helm install -f values.custom.yaml gitpod gitpod.io/gitpod --version=0.9.0 ``` 1. Configure [domain and https](../configure-ingress/). @@ -52,7 +62,7 @@ To install Gitpod in your Kubernetes cluster, follow these steps: 1. Run the update ```console - helm install -f values.custom.yaml gitpod gitpod.io/gitpod --version=0.8.0 + helm install -f values.custom.yaml gitpod gitpod.io/gitpod --version=0.9.0 ``` 1. Run `kubectl get pods` and verify that all pods are in state `RUNNING`. If some are not, please see the [Troubleshooting Guide](../troubleshooting/). diff --git a/docs/self-hosted/install/nodes.md b/docs/self-hosted/install/nodes.md index c0ede50957fdb3..0a5b0e2765a702 100644 --- a/docs/self-hosted/install/nodes.md +++ b/docs/self-hosted/install/nodes.md @@ -36,6 +36,6 @@ To do this: # The faster this location is (in terms of IO) the faster workspaces will initialize. hostWorkspaceArea: /mnt/disks/ssd0/workspaces ``` - 2. Do a `helm upgrade --install -f values.custom.yaml gitpod gitpod.io/gitpod --version=0.8.0` to apply the changes. + 2. Do a `helm upgrade --install -f values.custom.yaml gitpod gitpod.io/gitpod --version=0.9.0` to apply the changes. > Note that Helm does _not_ merge hierarchies in a single file. Please make sure there is only ever _one_ `components` hierarchy or the last one overwrites all previous values. diff --git a/docs/self-hosted/install/oauth.md b/docs/self-hosted/install/oauth.md deleted file mode 100644 index ab9005cafbb1f3..00000000000000 --- a/docs/self-hosted/install/oauth.md +++ /dev/null @@ -1,70 +0,0 @@ ---- -url: /docs/self-hosted/latest/install/oauth/ ---- - -# How To integrate Gitpod with OAuth providers - -Gitpod does not implement user authentication itself, but integrates with other auth provider using [OAuth2](https://oauth.net/2/). -Usually your Git hosting solution (e.g. GitHub or GitLab) acts as the OAuth auth provider. This way we control access to Gitpod while at -the same time making sure every user has proper access to their Git repository. - -Gitpod supports the following authentication providers: -* github.com -* GitHub Enterprise in version 2.16.x and higher -* gitlab.com -* GitLab Community/Enterprise Edition in version 11.7.x and higher -* Bitbucket.com - -On first access, a fresh Gitpod installation guides the first users to configure one or more OAuth providers. - -Alternatively, you can configure it per Helm values file: - 1. Configure an OAuth app per instructions linked below (cmp. [GitHub](#GitHub) or [GitLab](#GitLab)) and copy the `clientId` and `clientSecret`. - - 2. Merge the following into your `values.custom.yaml`: - ```yaml - authProviders: - - id: "Public-GitHub" - host: "github.com" - type: "GitHub" - oauth: - clientId: "CLIENT_ID" - clientSecret: "SECRET" - callBackUrl: "https://gitpod.io/auth/github/callback" - settingsUrl: "https://github.com/settings/connections/applications/CLIENT_ID" - description: "" - icon: "" - - id: "Public-GitLab" - host: "gitlab.com" - type: "GitLab" - oauth: - clientId: "CLIENT_ID" - clientSecret: "SECRET" - callBackUrl: "https://gitpod.io/auth/gitlab/callback" - settingsUrl: "https://gitlab.com/profile/applications" - description: "" - icon: "" - ``` - Replace `CLIENT_ID` and `SECRET` with their respective values. - - 3. Do a `helm upgrade --install -f values.custom.yaml gitpod gitpod.io/gitpod --version=0.8.0` to apply the changes. - -## GitHub -To authenticate your users with GitHub you need to create a [GitHub OAuth App](https://developer.github.com/apps/building-oauth-apps/creating-an-oauth-app/). -Follow the guide linked above and: - - Set "Authentication callback URL" to: - - https:///auth/github/callback - - - Copy `clientId` and `clientSecret` - -## GitLab -To authenticate your users with GitLab you need to create an [GitLab OAuth application](https://docs.gitlab.com/ee/integration/oauth_provider.html). -Follow the guide linked above and: - - Set "Authentication callback URL" to: - - https:///auth//callback - - - Set "Scopes" to `api`, `read_user` and `read_repository`. - - Copy the following values: - - `clientId` is the "Application ID" from the GitLab OAuth appication - - `clientSecret` is the "Secret" from the GitLab OAuth appication diff --git a/docs/self-hosted/install/storage.md b/docs/self-hosted/install/storage.md index 35cde420d93c40..9b575bad2d2107 100644 --- a/docs/self-hosted/install/storage.md +++ b/docs/self-hosted/install/storage.md @@ -33,7 +33,7 @@ For more complex use case we recommend configuring more permanent means of persi minio: enabled: false ``` - 2. Redeploy Gitpod using `helm upgrade --install -f values.custom.yaml gitpod gitpod.io/gitpod --version=0.8.0` to apply the changes + 2. Redeploy Gitpod using `helm upgrade --install -f values.custom.yaml gitpod gitpod.io/gitpod --version=0.9.0` to apply the changes > Note that Helm does _not_ merge hierarchies in a single file. Please make sure there is only ever _one_ `components` hierarchy or the last one overwrites all previous values. @@ -46,4 +46,4 @@ For more complex use case we recommend configuring more permanent means of persi secretKey: add-a-radom-secret-key-here # insert custom config here ``` - 3. Redeploy Gitpod using `helm upgrade --install -f values.custom.yaml gitpod gitpod.io/gitpod --version=0.8.0` to apply the changes + 3. Redeploy Gitpod using `helm upgrade --install -f values.custom.yaml gitpod gitpod.io/gitpod --version=0.9.0` to apply the changes diff --git a/docs/self-hosted/install/troubleshooting.md b/docs/self-hosted/install/troubleshooting.md index 919c6aca2b2bb0..54672571096cc9 100644 --- a/docs/self-hosted/install/troubleshooting.md +++ b/docs/self-hosted/install/troubleshooting.md @@ -27,7 +27,7 @@ This section should solve all errors that might come up during installation of G - ``` - 3. Do an `helm upgrade --install -f values.custom.yaml gitpod gitpod.io/gitpod --version=0.8.0` to apply the changes. + 3. Do an `helm upgrade --install -f values.custom.yaml gitpod gitpod.io/gitpod --version=0.9.0` to apply the changes. ## 2. `helm install` fails with: "minio access key is required, please add a value to your values.yaml" diff --git a/docs/self-hosted/install/upgrade.md b/docs/self-hosted/install/upgrade.md index 0923a9a2cd8c6f..3199719b96afa9 100644 --- a/docs/self-hosted/install/upgrade.md +++ b/docs/self-hosted/install/upgrade.md @@ -4,6 +4,25 @@ url: /docs/self-hosted/latest/install/upgrade/ # Gitpod Self-Hosted Upgrade Notes +## Upgrading Gitpod from v0.8.0 to v0.9.0 + +With version 0.9.0 there is one change that requires user action regarding the rabbitmq messagebus: + +### rabbitmq now requires dexplicitly set password and username + +Gitpod uses a rabbitmq installation for distributing messages between components. So far that has been using default credentials if not configured otherwise. With v0.9.0 this is now explicitly required. +To do so add the following to your `values.custom.yaml`: +``` +rabbitmq: + auth: + username: your-rabbitmq-user + password: your-secret-rabbitmq-password +``` + +If this is not present, `helm` will fail with the following message: + +> rabbitmq username is required, please add a value to your values.yaml or with the helm flag --set rabbitmq.auth.username=xxxxx + ## Upgrading Gitpod from v0.6.0 to v0.8.0 With version 0.8.0 there are two major changes that require a user action. Both relate to the remote storage. diff --git a/docs/self-hosted/install/workspaces.md b/docs/self-hosted/install/workspaces.md index 01a2391a8815dc..474e0d1010223a 100644 --- a/docs/self-hosted/install/workspaces.md +++ b/docs/self-hosted/install/workspaces.md @@ -46,4 +46,4 @@ If you want to change the default sizing (~ 8GiB per workspace) you should controlPeriod: "15m" ``` - 2. Do a `helm upgrade --install -f values.custom.yaml gitpod gitpod.io/gitpod --version=0.8.0` to apply the changes. + 2. Do a `helm upgrade --install -f values.custom.yaml gitpod gitpod.io/gitpod --version=0.9.0` to apply the changes. diff --git a/gitpod-ws.code-workspace b/gitpod-ws.code-workspace index 04bf50a5420fcd..79a15e0a133fe7 100644 --- a/gitpod-ws.code-workspace +++ b/gitpod-ws.code-workspace @@ -18,7 +18,6 @@ { "path": "components/ws-daemon" }, { "path": "components/ws-manager" }, { "path": "components/ws-proxy" }, - { "path": "install/installer" }, { "path": "test" }, { "path": "dev/blowtorch" }, { "path": "dev/gpctl" }, diff --git a/install/BUILD.yaml b/install/BUILD.yaml index b38b39700ca640..73ee611a7b5941 100644 --- a/install/BUILD.yaml +++ b/install/BUILD.yaml @@ -6,7 +6,6 @@ packages: deps: - install/docker/examples/gitpod-gitlab/gitlab:docker - install/docker/gitpod-image:docker - - install/installer:docker - name: release-tar srcs: - "aws-terraform" diff --git a/install/aws-full-terraform/.gitignore b/install/aws-full-terraform/.gitignore deleted file mode 100644 index 79b629a0ee2369..00000000000000 --- a/install/aws-full-terraform/.gitignore +++ /dev/null @@ -1,38 +0,0 @@ - -# Local .terraform directories -**/.terraform/* - -# .tfstate files -*.tfstate -*.tfstate.* - -# Crash log files -crash.log - -# Exclude all .tfvars files, which are likely to contain sentitive data, such as -# password, private keys, and other secrets. These should not be part of version -# control as they are data points which are potentially sensitive and subject -# to change depending on the environment. -# -# *.tfvars - -# Ignore override files as they are usually used to override resources locally and so -# are not checked in -override.tf -override.tf.json -*_override.tf -*_override.tf.json - -# Include override files you do wish to add to version control using negated pattern -# -# !example_override.tf - -# Include tfplan files to ignore the plan output of command: terraform plan -out=tfplan -# example: *tfplan* - -# Ignore CLI configuration files -.terraformrc -terraform.rc - -# Debugging graph -*.svg diff --git a/install/aws-full-terraform/BUILD.yaml b/install/aws-full-terraform/BUILD.yaml deleted file mode 100644 index 8a462258c6dd4c..00000000000000 --- a/install/aws-full-terraform/BUILD.yaml +++ /dev/null @@ -1,31 +0,0 @@ -# Copyright (c) 2020 Gitpod GmbH. All rights reserved. -# Licensed under the MIT License. See License-MIT.txt in the project root for license information. - -packages: - - name: lib - type: generic - deps: - - :test - srcs: - - "**/*.tf" - - "**/*.tfvars" - - "**/*.yaml" - - "**/*.md" - - "**/*.tpl" - config: - commands: - - ["echo"] - - name: test - type: generic - srcs: - - "**/*.tf" - - "**/*.tfvars" - - "**/*.yaml" - - "**/*.md" - - '**/*.sh' - - "**/*.tpl" - config: - commands: - - ["terraform", "init", "-backend=false"] - - ["terraform", "fmt", "-recursive", "-check"] - - ["terraform", "validate"] diff --git a/install/aws-full-terraform/Makefile b/install/aws-full-terraform/Makefile deleted file mode 100644 index 3eb188960875d3..00000000000000 --- a/install/aws-full-terraform/Makefile +++ /dev/null @@ -1,42 +0,0 @@ -MODULES := $(shell ls modules) - -.PHONY: destroy -destroy: - terraform destroy - -.PHONY: apply -apply: - terraform apply - -.PHONY: fmt -fmt: - for i in $(MODULES); do cd modules/$$i; terraform fmt; cd -; done - terraform fmt - -.PHONY: debug-apply -debug-apply: - TF_LOG=DEBUG terraform apply - -.PHONY: debug-destroy -debug-destroy: - TF_LOG=DEBUG terraform destroy - -.PHONY: reconfigure -reconfigure: - terraform init -reconfigure -backend-config=backend.hcl - -.PHONY: refresh -refresh: - terraform refresh - -.PHONY: plan -plan: - terraform plan - -.PHONY: graph -graph: - terraform graph -draw-cycles | dot -Tsvg > graph.svg - -.PHONY: init -init: - terraform init -backend-config=backend.hcl diff --git a/install/aws-full-terraform/README.md b/install/aws-full-terraform/README.md deleted file mode 100644 index bbcdc2f7b6b157..00000000000000 --- a/install/aws-full-terraform/README.md +++ /dev/null @@ -1,25 +0,0 @@ -# Gitpod AWS Terraform - -1. Create S3 Bucket for remote state -2. Configure a Route 53 Hosted zone to your domain -3. Configure `backend.hcl` to match the S3 Bucket -4. Fill out `main.auto.tfvars` to match what you want (and put in the name of the hosted zone where required) -5. (Optional) configure any additional helm values in the values.yml file -6. Run `make init` -7. Run `make apply` -8. Confirm the plan -9. Go get coffee (this could take a while) -10. Come back, if its done then go to the domain you specified in the tfvars file and play with your new configuration - -# FAQ -## Q: I get "OptInRequired: You are not subscribed to this service. Please go to http://aws.amazon.com to subscribe." - A: Your account seems to be missing a credit card. Go to https://portal.aws.amazon.com/billing/signup?type=resubscribe#/resubscribed and finish the subscription process. - -## Q: I get "Status Reason: The requested configuration is currently not supported" - A: Switch to another [AWS region](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Concepts.RegionsAndAvailabilityZones.html) often helps. Some machines are not available in all regions. - -## Q: I get "Error: Service "proxy" is invalid: spec.ports[0].nodePort: Invalid value: 31080: provided port is already allocated" on re-applying the terraform script - A: Wait 2-5mins (cmp. Kubernetes issues [32987](https://github.com/kubernetes/kubernetes/issues/32987) and [73140](https://github.com/kubernetes/kubernetes/issues/73140)) - -## Q: One of my pods throws errors reading "networkPlugin cni failed to set up pod "" network: add cmd: failed to assign an IP address to container" - A: Seems like the pod-per-node limit is reached: https://github.com/awslabs/amazon-eks-ami/blob/master/files/eni-max-pods.txt (?) \ No newline at end of file diff --git a/install/aws-full-terraform/backend.hcl b/install/aws-full-terraform/backend.hcl deleted file mode 100644 index 99c347d0d485b0..00000000000000 --- a/install/aws-full-terraform/backend.hcl +++ /dev/null @@ -1,3 +0,0 @@ -key = "terraform/dev/terraform_dev.tfstate" -region = "REGION" -bucket = "BUCKET_NAME" diff --git a/install/aws-full-terraform/data.tf b/install/aws-full-terraform/data.tf deleted file mode 100644 index 25688ed4449a0a..00000000000000 --- a/install/aws-full-terraform/data.tf +++ /dev/null @@ -1,24 +0,0 @@ -/** - * Copyright (c) 2020 Gitpod GmbH. All rights reserved. - * Licensed under the MIT License. See License-MIT.txt in the project root for license information. - */ - -# AZ lookup -data "aws_availability_zones" "available" { - state = "available" -} - -data "aws_route53_zone" "selected" { - name = var.dns.zone_name - private_zone = false -} - -# For the Kubernetes and Helm providers -# https://www.terraform.io/docs/providers/aws/d/eks_cluster_auth.html -data "aws_eks_cluster_auth" "default" { - name = module.kubernetes.cluster_id -} - -data "aws_eks_cluster" "gitpod_cluster" { - name = module.kubernetes.cluster_id -} diff --git a/install/aws-full-terraform/main.auto.tfvars b/install/aws-full-terraform/main.auto.tfvars deleted file mode 100644 index a804ba5c8fc861..00000000000000 --- a/install/aws-full-terraform/main.auto.tfvars +++ /dev/null @@ -1,78 +0,0 @@ -# (Optional) We Use this variable to name resources -project = { - name = "your-project" -} - -# (Optional) Gitpod install values -gitpod = { - # What namespace should Gitpod be installed into? (Namespace is creaed if does not exist) - namespace = "default" - # Place any additional values in this file - valueFiles = ["./values.yml"] -} - -dns = { - # What (sub)domain should Gitpod be installed into. - domain = "your-domain.com" - # Name of the **Existing** Hosted zone with your domain configured - zone_name = "your-domain.com." -} - -kubernetes = { - # Name of the Kubernetes Cluster Terraform should create - cluster_name = "gitpod-cluster" - # The Cluster's desired Kubernetes Version - version = "1.16" - # How many worker nodes the Cluster should have - node_count = 6 - # How large the Worker nodes should be - instance_type = "m4.large" - # Your Home directory where the kubeconfig should be created - home_dir = "/home/gitpod" -} - -# (Optional) The configuration of your AWS profile -aws = { - region = "us-east-2" - profile = "default" -} - -# (Optional) MySQL Configuration -database = { - name = "db" - port = 3306 - instance_class = "db.t2.micro" - engine_version = "5.7.26" - user_name = "gitpod" - password = "DB-PASSWORD" -} - -# The configuration of your **EXISTING** OAuth Appliaton -auth_providers = [ - { - id = "Github" - host = "github.com" - client_id = "" - client_secret = "" - settings_url = "https://github.com/settings/connections/applications/" - callback_url = "https://your-domain.com/auth/github/callback" - type = "GitHub" - protocol = "https" - } -] - -# (Optional) VPC configurtion -vpc = { - # Name of the VPC you want to make - name = "gitpod-network" -} - -# Configure cert-manager -cert_manager = { - # Name of the cert-manager chart (you likely won't need to change this) - chart = "cert-manager" - # Email Address associated with the ACME account created - email = "you@example.com" - # Namespace where cert-manager should be installed (namespace will be created if it doesn't exist) - namespace = "cert-manager" -} diff --git a/install/aws-full-terraform/main.tf b/install/aws-full-terraform/main.tf deleted file mode 100644 index 7cb08b5df577b2..00000000000000 --- a/install/aws-full-terraform/main.tf +++ /dev/null @@ -1,159 +0,0 @@ -/** - * Copyright (c) 2020 Gitpod GmbH. All rights reserved. - * Licensed under the MIT License. See License-MIT.txt in the project root for license information. - */ - -# Derived from https://learn.hashicorp.com/terraform/kubernetes/provision-eks-cluster -module "vpc" { - source = "terraform-aws-modules/vpc/aws" - version = "2.64.0" - - name = var.vpc.name - cidr = "10.0.0.0/16" - azs = data.aws_availability_zones.available.names - private_subnets = ["10.0.1.0/24", "10.0.2.0/24", "10.0.3.0/24"] - public_subnets = ["10.0.4.0/24", "10.0.5.0/24", "10.0.6.0/24"] - enable_nat_gateway = true - single_nat_gateway = true - enable_dns_hostnames = true - - tags = { - "kubernetes.io/cluster/${var.kubernetes.cluster_name}" = "shared" - } - - public_subnet_tags = { - "kubernetes.io/cluster/${var.kubernetes.cluster_name}" = "shared" - "kubernetes.io/role/elb" = "1" - } - - private_subnet_tags = { - "kubernetes.io/cluster/${var.kubernetes.cluster_name}" = "shared" - "kubernetes.io/role/internal-elb" = "1" - } -} - -module "kubernetes" { - source = "terraform-aws-modules/eks/aws" - version = "13.2.1" - - cluster_name = var.kubernetes.cluster_name - cluster_version = var.kubernetes.version - subnets = module.vpc.public_subnets - write_kubeconfig = true - config_output_path = "${var.kubernetes.home_dir}/.kube/config" - vpc_id = module.vpc.vpc_id - - worker_groups = [for i in range(var.kubernetes.node_count) : { - instance_type = var.kubernetes.instance_type - asg_max_size = 5 - }] -} - -resource "null_resource" "kubeconfig" { - provisioner "local-exec" { - command = "aws eks update-kubeconfig --name $CLUSTER" - environment = { - CLUSTER = var.kubernetes.cluster_name - } - } - depends_on = [ - module.kubernetes - ] -} - -module "cert-manager" { - source = "./modules/https" - gitpod-node-arn = module.kubernetes.worker_iam_role_arn - cluster_name = module.kubernetes.cluster_id - dns = var.dns - aws = var.aws - cert_manager = var.cert_manager - gitpod = var.gitpod - - project = var.project - - providers = { - local = local - kubectl = kubectl - } -} - -module "database" { - source = "./modules/mysql" - - vpc_id = module.vpc.vpc_id - subnet_ids = module.vpc.public_subnets - security_group_id = module.kubernetes.worker_security_group_id - database = var.database - - project = var.project - gitpod = var.gitpod - -} - - - -module "registry" { - source = "./modules/registry" - project = var.project - gitpod = var.gitpod - region = var.aws.region - worker_iam_role_name = module.kubernetes.worker_iam_role_name - - depends_on = [module.kubernetes.cluster_id] -} - -module "storage" { - source = "./modules/storage" - project = var.project - region = var.aws.region - worker_iam_role_name = module.kubernetes.worker_iam_role_name - vpc_id = module.vpc.vpc_id - - depends_on = [ - module.kubernetes.cluster_id - ] -} - - - -# -# Gitpod -# - -module "gitpod" { - source = "./modules/gitpod" - gitpod = var.gitpod - domain_name = var.dns.domain - cluster_name = module.kubernetes.cluster_id - - providers = { - helm = helm - kubernetes = kubernetes - } - - auth_providers = var.auth_providers - - helm = { - repository = "${path.root}/../../" - chart = "chart" - } - - values = [ - module.registry.values, - module.storage.values, - module.database.values - ] - - depends_on = [ - module.kubernetes.cluster_id, - module.cert-manager.ready - ] -} - - -module "route53" { - source = "./modules/route53" - dns = var.dns - external_dns = module.gitpod.external_dns -} diff --git a/install/aws-full-terraform/modules/gitpod/main.tf b/install/aws-full-terraform/modules/gitpod/main.tf deleted file mode 100644 index bd6381601d1a60..00000000000000 --- a/install/aws-full-terraform/modules/gitpod/main.tf +++ /dev/null @@ -1,41 +0,0 @@ -/** - * Copyright (c) 2020 Gitpod GmbH. All rights reserved. - * Licensed under the MIT License. See License-MIT.txt in the project root for license information. - */ - -# Installs Gitpod! - -# https://www.terraform.io/docs/providers/helm/r/release.html -resource "helm_release" "gitpod" { - name = "gitpod" - repository = var.helm.repository - chart = var.helm.chart - recreate_pods = true - wait = true - timeout = 600 - dependency_update = true - - values = flatten([ - data.template_file.gitpod_values_main.rendered, - data.template_file.gitpod_values_auth_provider.rendered, - [for path in var.gitpod.valueFiles : file(path)], - var.values - ]) -} - -# -# Kubernetes Resources -# - -# To get the external load balancer IP -# https://www.terraform.io/docs/providers/kubernetes/d/service.html -data "kubernetes_service" "proxy" { - metadata { - name = "proxy" - namespace = helm_release.gitpod.namespace - } - - depends_on = [ - helm_release.gitpod - ] -} diff --git a/install/aws-full-terraform/modules/gitpod/output.tf b/install/aws-full-terraform/modules/gitpod/output.tf deleted file mode 100644 index f2c3283555a4d7..00000000000000 --- a/install/aws-full-terraform/modules/gitpod/output.tf +++ /dev/null @@ -1,8 +0,0 @@ -/** - * Copyright (c) 2020 Gitpod GmbH. All rights reserved. - * Licensed under the MIT License. See License-MIT.txt in the project root for license information. - */ - -output "external_dns" { - value = data.kubernetes_service.proxy.load_balancer_ingress.0.hostname -} diff --git a/install/aws-full-terraform/modules/gitpod/templates.tf b/install/aws-full-terraform/modules/gitpod/templates.tf deleted file mode 100644 index c60147eadd9fde..00000000000000 --- a/install/aws-full-terraform/modules/gitpod/templates.tf +++ /dev/null @@ -1,18 +0,0 @@ -/** - * Copyright (c) 2020 Gitpod GmbH. All rights reserved. - * Licensed under the MIT License. See License-MIT.txt in the project root for license information. - */ - -data "template_file" "gitpod_values_main" { - template = file("${path.module}/templates/values.tpl") - vars = { - domain_name = var.domain_name - } -} - -data "template_file" "gitpod_values_auth_provider" { - template = file("${path.module}/templates/auth_provider.tpl") - vars = { - auth_providers = jsonencode(var.auth_providers) - } -} diff --git a/install/aws-full-terraform/modules/gitpod/templates/auth_provider.tpl b/install/aws-full-terraform/modules/gitpod/templates/auth_provider.tpl deleted file mode 100644 index d8ecbe452c9329..00000000000000 --- a/install/aws-full-terraform/modules/gitpod/templates/auth_provider.tpl +++ /dev/null @@ -1,14 +0,0 @@ -authProviders: -%{ for auth_provider in jsondecode(auth_providers) ~} -- id: "${auth_provider.id}" - host: "${auth_provider.host}" - type: "${auth_provider.type}" - protocol: https - oauth: - clientId: "${auth_provider.client_id}" - clientSecret: "${auth_provider.client_secret}" - callBackUrl: "${auth_provider.callback_url}" - settingsUrl: "${auth_provider.settings_url}" - description: "" - icon: "" -%{ endfor ~} \ No newline at end of file diff --git a/install/aws-full-terraform/modules/gitpod/templates/values.tpl b/install/aws-full-terraform/modules/gitpod/templates/values.tpl deleted file mode 100644 index a38171f4939527..00000000000000 --- a/install/aws-full-terraform/modules/gitpod/templates/values.tpl +++ /dev/null @@ -1,10 +0,0 @@ -hostname: ${domain_name} - -certificatesSecret: - secretName: proxy-config-certificates - -components: - proxy: - loadBalancerIP: null - -installPodSecurityPolicies: true \ No newline at end of file diff --git a/install/aws-full-terraform/modules/gitpod/variables.tf b/install/aws-full-terraform/modules/gitpod/variables.tf deleted file mode 100644 index 2880b7d5fc1968..00000000000000 --- a/install/aws-full-terraform/modules/gitpod/variables.tf +++ /dev/null @@ -1,53 +0,0 @@ -/** - * Copyright (c) 2020 Gitpod GmbH. All rights reserved. - * Licensed under the MIT License. See License-MIT.txt in the project root for license information. - */ - -variable "gitpod" { - type = object({ - valueFiles = list(string) - namespace = string - }) - default = { - valueFiles = ["./values.yml"] - namespace = "default" - } -} - -variable "helm" { - type = object({ - repository = string - chart = string - }) - default = { - repository = "https://charts.gitpod.io" - chart = "gitpod" - } -} - -variable "domain_name" { - type = string -} - -variable "cluster_name" { - type = string -} - -variable "auth_providers" { - type = list( - object({ - id = string - host = string - client_id = string - client_secret = string - settings_url = string - callback_url = string - protocol = string - type = string - }) - ) -} - -variable "values" { - type = list(string) -} \ No newline at end of file diff --git a/install/aws-full-terraform/modules/https/hack.tf b/install/aws-full-terraform/modules/https/hack.tf deleted file mode 100644 index 2ad939f94e42b6..00000000000000 --- a/install/aws-full-terraform/modules/https/hack.tf +++ /dev/null @@ -1,16 +0,0 @@ -/** - * Copyright (c) 2020 Gitpod GmbH. All rights reserved. - * Licensed under the MIT License. See License-MIT.txt in the project root for license information. - */ - -resource "null_resource" "wait_for_certs" { - provisioner "local-exec" { - command = "bash ${path.module}/scripts/wait_for_certificate.sh" - } - - depends_on = [ - null_resource.kubeconfig, - kubectl_manifest.cluster_issuer, - kubectl_manifest.certificate - ] -} diff --git a/install/aws-full-terraform/modules/https/helm.tf b/install/aws-full-terraform/modules/https/helm.tf deleted file mode 100644 index 067bc746e3383b..00000000000000 --- a/install/aws-full-terraform/modules/https/helm.tf +++ /dev/null @@ -1,21 +0,0 @@ -/** - * Copyright (c) 2020 Gitpod GmbH. All rights reserved. - * Licensed under the MIT License. See License-MIT.txt in the project root for license information. - */ - -# https://www.terraform.io/docs/providers/helm/r/release.html -resource "helm_release" "cert_manager" { - name = "cert-manager" - repository = "https://charts.jetstack.io" - namespace = var.cert_manager.namespace - chart = var.cert_manager.chart - version = "v0.16.0" - recreate_pods = true - create_namespace = true - wait = true - - set { - name = "installCRDs" - value = "true" - } -} diff --git a/install/aws-full-terraform/modules/https/iam.tf b/install/aws-full-terraform/modules/https/iam.tf deleted file mode 100644 index 17ff6fb7e30bbb..00000000000000 --- a/install/aws-full-terraform/modules/https/iam.tf +++ /dev/null @@ -1,65 +0,0 @@ -/** - * Copyright (c) 2020 Gitpod GmbH. All rights reserved. - * Licensed under the MIT License. See License-MIT.txt in the project root for license information. - */ - -# https://cert-manager.io/docs/configuration/acme/dns01/route53/ - -# -# AWS IAM role 'dns-manager-role' -# -resource "aws_iam_role" "dns_manager" { - name = "dns-manager-role-${var.project.name}" - - assume_role_policy = <<-EOF -{ - "Version": "2012-10-17", - "Statement": [ - { - "Effect": "Allow", - "Principal": { - "AWS": "${var.gitpod-node-arn}" - }, - "Action": "sts:AssumeRole" - } - ] -} -EOF -} - - - -# -# AWS IAM role policy 'dns-manager-role-policy' -# allow 'dns-manager-role' to configure Route53 txt records -# -resource "aws_iam_role_policy" "dns_manager" { - name = "dns-manager-role-policy" - - policy = <<-EOF -{ - "Version": "2012-10-17", - "Statement": [ - { - "Effect": "Allow", - "Action": "route53:GetChange", - "Resource": "arn:aws:route53:::change/*" - }, - { - "Effect": "Allow", - "Action": [ - "route53:ChangeResourceRecordSets", - "route53:ListResourceRecordSets" - ], - "Resource": "arn:aws:route53:::hostedzone/*" - }, - { - "Effect": "Allow", - "Action": "route53:ListHostedZonesByName", - "Resource": "*" - } - ] -} -EOF - role = aws_iam_role.dns_manager.name -} diff --git a/install/aws-full-terraform/modules/https/kube_resources.tf b/install/aws-full-terraform/modules/https/kube_resources.tf deleted file mode 100644 index 5f0ad611079841..00000000000000 --- a/install/aws-full-terraform/modules/https/kube_resources.tf +++ /dev/null @@ -1,65 +0,0 @@ -/** - * Copyright (c) 2020 Gitpod GmbH. All rights reserved. - * Licensed under the MIT License. See License-MIT.txt in the project root for license information. - */ - -# -# Cluster Issuer -# - -resource "kubectl_manifest" "cluster_issuer" { - validate_schema = false - depends_on = [ - null_resource.kubeconfig, - helm_release.cert_manager, - ] - - yaml_body = <" network: add cmd: failed to assign an IP address to container" - A: Seems like the pod-per-node limit is reached: https://github.com/awslabs/amazon-eks-ami/blob/master/files/eni-max-pods.txt (?) \ No newline at end of file diff --git a/install/aws-terraform/data.tf b/install/aws-terraform/data.tf deleted file mode 100644 index 94ee62d92a1bc6..00000000000000 --- a/install/aws-terraform/data.tf +++ /dev/null @@ -1,18 +0,0 @@ -/** - * Copyright (c) 2020 Gitpod GmbH. All rights reserved. - * Licensed under the MIT License. See License-MIT.txt in the project root for license information. - */ - -data "aws_availability_zones" "available" { - state = "available" -} - -# For the Kubernetes and Helm providers -# https://www.terraform.io/docs/providers/aws/d/eks_cluster_auth.html -data "aws_eks_cluster_auth" "default" { - name = module.kubernetes.cluster_id -} - -data "aws_eks_cluster" "gitpod_cluster" { - name = module.kubernetes.cluster_id -} diff --git a/install/aws-terraform/kubernetes.tf b/install/aws-terraform/kubernetes.tf deleted file mode 100644 index 5c6fc5a632e086..00000000000000 --- a/install/aws-terraform/kubernetes.tf +++ /dev/null @@ -1,176 +0,0 @@ -/** - * Copyright (c) 2020 Gitpod GmbH. All rights reserved. - * Licensed under the MIT License. See License-MIT.txt in the project root for license information. - */ - -# Derived from https://learn.hashicorp.com/terraform/kubernetes/provision-eks-cluster -module "vpc" { - source = "terraform-aws-modules/vpc/aws" - version = "2.64.0" - - name = "gitpod" - cidr = "10.0.0.0/16" - azs = data.aws_availability_zones.available.names - private_subnets = ["10.0.1.0/24", "10.0.2.0/24", "10.0.3.0/24"] - public_subnets = ["10.0.4.0/24", "10.0.5.0/24", "10.0.6.0/24"] - enable_nat_gateway = true - single_nat_gateway = true - enable_dns_hostnames = true - - tags = { - "kubernetes.io/cluster/${local.kubernetes.cluster_name}" = "shared" - } - - public_subnet_tags = { - "kubernetes.io/cluster/${local.kubernetes.cluster_name}" = "shared" - "kubernetes.io/role/elb" = "1" - } - - private_subnet_tags = { - "kubernetes.io/cluster/${local.kubernetes.cluster_name}" = "shared" - "kubernetes.io/role/internal-elb" = "1" - } -} - -module "kubernetes" { - source = "terraform-aws-modules/eks/aws" - version = "13.2.1" - - cluster_name = local.kubernetes.cluster_name - cluster_version = local.kubernetes.version - subnets = module.vpc.public_subnets - write_kubeconfig = true - config_output_path = local.config_output_path - vpc_id = module.vpc.vpc_id - - # Valid options: https://github.com/terraform-aws-modules/terraform-aws-eks/blob/master/local.tf#L36 - worker_groups = [ - { - instance_type = local.kubernetes.instance_type - asg_max_size = local.kubernetes.max_node_count - asg_min_size = local.kubernetes.min_node_count - placement_tenancy = "default" - - tags = [ - # These tags are required for the cluster-autoscaler to discover this ASG - { - "key" = "k8s.io/cluster-autoscaler/${local.kubernetes.cluster_name}" - "value" = "true" - "propagate_at_launch" = true - }, - { - "key" = "k8s.io/cluster-autoscaler/enabled" - "value" = "true" - "propagate_at_launch" = true - } - ] - } - ] -} - -resource "null_resource" "kubeconfig" { - provisioner "local-exec" { - command = "AWS_DEFAULT_REGION=${var.region} aws eks update-kubeconfig --name $CLUSTER" - environment = { - CLUSTER = local.kubernetes.cluster_name - } - } - depends_on = [ - module.kubernetes - ] -} - - -# Autoscaling for a cluster created with "terraform-aws-modules/eks/aws" -# Source: https://github.com/terraform-aws-modules/terraform-aws-eks/blob/master/docs/autoscaling.md -resource "aws_iam_role_policy_attachment" "workers_autoscaling" { - policy_arn = aws_iam_policy.worker_autoscaling.arn - role = module.kubernetes.worker_iam_role_name #[0] -} - -resource "aws_iam_policy" "worker_autoscaling" { - name_prefix = "eks-worker-autoscaling-${module.kubernetes.cluster_id}" - description = "EKS worker node autoscaling policy for cluster ${module.kubernetes.cluster_id}" - policy = data.aws_iam_policy_document.worker_autoscaling.json - # path = var.iam_path -} - -data "aws_iam_policy_document" "worker_autoscaling" { - statement { - sid = "eksWorkerAutoscalingAll" - effect = "Allow" - - actions = [ - "autoscaling:DescribeAutoScalingGroups", - "autoscaling:DescribeAutoScalingInstances", - "autoscaling:DescribeLaunchConfigurations", - "autoscaling:DescribeTags", - "ec2:DescribeLaunchTemplateVersions", - ] - - resources = ["*"] - } - - statement { - sid = "eksWorkerAutoscalingOwn" - effect = "Allow" - - actions = [ - "autoscaling:SetDesiredCapacity", - "autoscaling:TerminateInstanceInAutoScalingGroup", - "autoscaling:UpdateAutoScalingGroup", - ] - - resources = ["*"] - - condition { - test = "StringEquals" - variable = "autoscaling:ResourceTag/kubernetes.io/cluster/${module.kubernetes.cluster_id}" - values = ["owned"] - } - - condition { - test = "StringEquals" - variable = "autoscaling:ResourceTag/k8s.io/cluster-autoscaler/enabled" - values = ["true"] - } - } -} - - - -# Loosely following: https://github.com/terraform-aws-modules/terraform-aws-eks/blob/master/docs/autoscaling.md -# https://www.terraform.io/docs/providers/helm/r/release.html -resource "helm_release" "autoscaler" { - name = "cluster-autoscaler" - repository = "https://kubernetes-charts.storage.googleapis.com" - chart = "cluster-autoscaler" - - namespace = "cluster-autoscaler" - create_namespace = true - recreate_pods = true - wait = true - - values = [ - # TODO [geropl] Make sure the tag below is in line with local.kubernetes.version and references a valid (minor) version - <<-EOT - rbac: - create: true - - cloudProvider: aws - awsRegion: ${var.region} - - autoDiscovery: - clusterName: ${local.kubernetes.cluster_name} - enabled: true - - image: - repository: eu.gcr.io/k8s-artifacts-prod/autoscaling/cluster-autoscaler - tag: v1.16.5 - EOT - ] - - depends_on = [ - module.kubernetes - ] -} diff --git a/install/aws-terraform/locals.tf b/install/aws-terraform/locals.tf deleted file mode 100644 index fff484dc2cb15c..00000000000000 --- a/install/aws-terraform/locals.tf +++ /dev/null @@ -1,22 +0,0 @@ -/** - * Copyright (c) 2020 Gitpod GmbH. All rights reserved. - * Licensed under the MIT License. See License-MIT.txt in the project root for license information. - */ - -locals { - kubernetes = { - cluster_name = "gitpod${var.project == "" ? "" : "-${var.project}"}" - version = "1.16" - min_node_count = 1 - max_node_count = 3 - instance_type = "m4.large" - } - vpc = { - name = "gitpod${var.project == "" ? "" : "-${var.project}"}" - } - config_output_path = pathexpand("~/.kube/config") - gitpod = { - namespace = "default" - valuesFiles = [] - } -} diff --git a/install/aws-terraform/main.auto.tfvars b/install/aws-terraform/main.auto.tfvars deleted file mode 100644 index e69de29bb2d1d6..00000000000000 diff --git a/install/aws-terraform/main.tf b/install/aws-terraform/main.tf deleted file mode 100644 index 647d6d02d6284b..00000000000000 --- a/install/aws-terraform/main.tf +++ /dev/null @@ -1,82 +0,0 @@ -/** - * Copyright (c) 2020 Gitpod GmbH. All rights reserved. - * Licensed under the MIT License. See License-MIT.txt in the project root for license information. - */ - -module "registry" { - source = "./modules/registry" - project = { - name = var.project - } - gitpod = local.gitpod - region = var.region - worker_iam_role_name = module.kubernetes.worker_iam_role_name - - depends_on = [module.kubernetes.cluster_id] -} - -module "storage" { - source = "./modules/storage" - project = { - name = var.project - } - region = var.region - worker_iam_role_name = module.kubernetes.worker_iam_role_name - vpc_id = module.vpc.vpc_id - - depends_on = [ - module.kubernetes.cluster_id - ] -} - -module "gitpod" { - source = "./modules/gitpod" - gitpod = local.gitpod - domain_name = var.domain - cluster_name = module.kubernetes.cluster_id - - providers = { - helm = helm - kubernetes = kubernetes - } - - auth_providers = [] - - helm = { - chart = "${path.root}/${var.chart_location}" - } - - values = [ - module.registry.values, - module.storage.values, - <<-EOT - version: ${var.image_version} - imagePrefix: ${var.image_prefix} - - # simply setting "{}" does not work as it does not override: https://github.com/helm/helm/issues/5407 - certificatesSecret: - secretName: "" - forceHTTPS: ${var.force_https} - - installation: - region: ${var.region} - - components: - # Necessary to make minio send the right header to S3 (region headers must match) - contentService: - remoteStorage: - minio: - region: ${var.region} - - proxy: - certbot: - enabled: ${var.certbot_enabled} - email: ${var.certificate_email} - - EOT - ] - - depends_on = [ - module.kubernetes.cluster_id - ] -} diff --git a/install/aws-terraform/modules/gitpod/main.tf b/install/aws-terraform/modules/gitpod/main.tf deleted file mode 100644 index 40140c36735b75..00000000000000 --- a/install/aws-terraform/modules/gitpod/main.tf +++ /dev/null @@ -1,23 +0,0 @@ -/** - * Copyright (c) 2020 Gitpod GmbH. All rights reserved. - * Licensed under the MIT License. See License-MIT.txt in the project root for license information. - */ - -# Installs Gitpod! - -# https://www.terraform.io/docs/providers/helm/r/release.html -resource "helm_release" "gitpod" { - name = "gitpod" - chart = var.helm.chart - wait = true - timeout = 600 - dependency_update = true - - values = flatten([ - data.template_file.gitpod_values_main.rendered, - data.template_file.gitpod_values_auth_provider.rendered, - [for path in var.gitpod.valuesFiles : file(path)], - var.values - ]) - -} diff --git a/install/aws-terraform/modules/gitpod/templates.tf b/install/aws-terraform/modules/gitpod/templates.tf deleted file mode 100644 index c60147eadd9fde..00000000000000 --- a/install/aws-terraform/modules/gitpod/templates.tf +++ /dev/null @@ -1,18 +0,0 @@ -/** - * Copyright (c) 2020 Gitpod GmbH. All rights reserved. - * Licensed under the MIT License. See License-MIT.txt in the project root for license information. - */ - -data "template_file" "gitpod_values_main" { - template = file("${path.module}/templates/values.tpl") - vars = { - domain_name = var.domain_name - } -} - -data "template_file" "gitpod_values_auth_provider" { - template = file("${path.module}/templates/auth_provider.tpl") - vars = { - auth_providers = jsonencode(var.auth_providers) - } -} diff --git a/install/aws-terraform/modules/gitpod/templates/auth_provider.tpl b/install/aws-terraform/modules/gitpod/templates/auth_provider.tpl deleted file mode 100644 index d8ecbe452c9329..00000000000000 --- a/install/aws-terraform/modules/gitpod/templates/auth_provider.tpl +++ /dev/null @@ -1,14 +0,0 @@ -authProviders: -%{ for auth_provider in jsondecode(auth_providers) ~} -- id: "${auth_provider.id}" - host: "${auth_provider.host}" - type: "${auth_provider.type}" - protocol: https - oauth: - clientId: "${auth_provider.client_id}" - clientSecret: "${auth_provider.client_secret}" - callBackUrl: "${auth_provider.callback_url}" - settingsUrl: "${auth_provider.settings_url}" - description: "" - icon: "" -%{ endfor ~} \ No newline at end of file diff --git a/install/aws-terraform/modules/gitpod/templates/values.tpl b/install/aws-terraform/modules/gitpod/templates/values.tpl deleted file mode 100644 index a38171f4939527..00000000000000 --- a/install/aws-terraform/modules/gitpod/templates/values.tpl +++ /dev/null @@ -1,10 +0,0 @@ -hostname: ${domain_name} - -certificatesSecret: - secretName: proxy-config-certificates - -components: - proxy: - loadBalancerIP: null - -installPodSecurityPolicies: true \ No newline at end of file diff --git a/install/aws-terraform/modules/gitpod/variables.tf b/install/aws-terraform/modules/gitpod/variables.tf deleted file mode 100644 index 7637d64a237eba..00000000000000 --- a/install/aws-terraform/modules/gitpod/variables.tf +++ /dev/null @@ -1,48 +0,0 @@ -/** - * Copyright (c) 2020 Gitpod GmbH. All rights reserved. - * Licensed under the MIT License. See License-MIT.txt in the project root for license information. - */ - -variable "gitpod" { - type = object({ - valuesFiles = list(string) - namespace = string - }) - default = { - valuesFiles = [] - namespace = "default" - } -} - -variable "helm" { - type = object({ - chart = string - }) -} - -variable "domain_name" { - type = string -} - -variable "cluster_name" { - type = string -} - -variable "auth_providers" { - type = list( - object({ - id = string - host = string - client_id = string - client_secret = string - settings_url = string - callback_url = string - protocol = string - type = string - }) - ) -} - -variable "values" { - type = list(string) -} \ No newline at end of file diff --git a/install/aws-terraform/modules/registry/locals.tf b/install/aws-terraform/modules/registry/locals.tf deleted file mode 100644 index 8c46af7bdf511c..00000000000000 --- a/install/aws-terraform/modules/registry/locals.tf +++ /dev/null @@ -1,8 +0,0 @@ -/** - * Copyright (c) 2020 Gitpod GmbH. All rights reserved. - * Licensed under the MIT License. See License-MIT.txt in the project root for license information. - */ - -locals { - registry = aws_ecr_repository.gitpod_registry -} diff --git a/install/aws-terraform/modules/registry/main.tf b/install/aws-terraform/modules/registry/main.tf deleted file mode 100644 index d89cda0c4bed8d..00000000000000 --- a/install/aws-terraform/modules/registry/main.tf +++ /dev/null @@ -1,108 +0,0 @@ -/** - * Copyright (c) 2020 Gitpod GmbH. All rights reserved. - * Licensed under the MIT License. See License-MIT.txt in the project root for license information. - */ - -# -# Registry -# -locals { - secret_name = "gitpod-registry" -} - -resource "aws_ecr_repository" "gitpod_registry" { - name = "workspace-images" - image_tag_mutability = "MUTABLE" - - image_scanning_configuration { - scan_on_push = true - } - tags = { - project = var.project.name - } -} - -resource "aws_ecr_repository" "gitpod_registry_base" { - name = "base-images" - image_tag_mutability = "MUTABLE" - - image_scanning_configuration { - scan_on_push = true - } - tags = { - project = var.project.name - } -} - - -resource "aws_iam_role_policy" "dns_manager" { - name = "${var.project.name}-registry" - - policy = <<-EOF -{ - "Version": "2012-10-17", - "Statement": [ - { - "Effect": "Allow", - "Action": [ - "ecr:*", - "cloudtrail:LookupEvents" - ], - "Resource": "*" - }, - { - "Effect": "Allow", - "Action": [ - "ecr:BatchCheckLayerAvailability", - "ecr:BatchGetImage", - "ecr:GetDownloadUrlForLayer", - "ecr:GetAuthorizationToken" - ], - "Resource": "*" - } - ] -} -EOF - role = var.worker_iam_role_name -} - - -data "aws_ecr_authorization_token" "gitpod_registry" { - registry_id = aws_ecr_repository.gitpod_registry.registry_id -} - - -# -# file: secrets/registry-auth.json -# - -data "template_file" "gitpod_registry_auth" { - template = file("${path.module}/templates/registry-auth.tpl") - vars = { - host = aws_ecr_repository.gitpod_registry.repository_url - auth = data.aws_ecr_authorization_token.gitpod_registry.authorization_token - } -} - - -resource "kubernetes_secret" "gitpod_registry_auth" { - metadata { - name = local.secret_name - namespace = var.gitpod.namespace - } - - data = { - ".dockerconfigjson" = data.template_file.gitpod_registry_auth.rendered - } - - type = "kubernetes.io/dockerconfigjson" -} - - -data "template_file" "gitpod_registry_values" { - template = file("${path.module}/templates/values.tpl") - vars = { - host = "${aws_ecr_repository.gitpod_registry.registry_id}.dkr.ecr.${var.region}.amazonaws.com" - secret_name = local.secret_name - } -} diff --git a/install/aws-terraform/modules/registry/outputs.tf b/install/aws-terraform/modules/registry/outputs.tf deleted file mode 100644 index 87ee2651cd3165..00000000000000 --- a/install/aws-terraform/modules/registry/outputs.tf +++ /dev/null @@ -1,12 +0,0 @@ -/** - * Copyright (c) 2020 Gitpod GmbH. All rights reserved. - * Licensed under the MIT License. See License-MIT.txt in the project root for license information. - */ - -output "output" { - value = local.registry -} - -output "values" { - value = data.template_file.gitpod_registry_values.rendered -} \ No newline at end of file diff --git a/install/aws-terraform/modules/registry/templates/registry-auth.tpl b/install/aws-terraform/modules/registry/templates/registry-auth.tpl deleted file mode 100644 index 5272bb9d6aa2aa..00000000000000 --- a/install/aws-terraform/modules/registry/templates/registry-auth.tpl +++ /dev/null @@ -1,7 +0,0 @@ -{ - "auths": { - "${host}": { - "auth": "${auth}" - } - } -} \ No newline at end of file diff --git a/install/aws-terraform/modules/registry/templates/values.tpl b/install/aws-terraform/modules/registry/templates/values.tpl deleted file mode 100644 index 63a24fb961b4b2..00000000000000 --- a/install/aws-terraform/modules/registry/templates/values.tpl +++ /dev/null @@ -1,17 +0,0 @@ -components: - imageBuilder: - registryCerts: [] - registry: - name: "${host}" - secretName: ${secret_name} - - workspace: - pullSecret: - secretName: ${secret_name} - -docker-registry: - enabled: false - -gitpod_selfhosted: - variants: - customRegistry: true \ No newline at end of file diff --git a/install/aws-terraform/modules/registry/variables.tf b/install/aws-terraform/modules/registry/variables.tf deleted file mode 100644 index f955a276654c6c..00000000000000 --- a/install/aws-terraform/modules/registry/variables.tf +++ /dev/null @@ -1,25 +0,0 @@ -/** - * Copyright (c) 2020 Gitpod GmbH. All rights reserved. - * Licensed under the MIT License. See License-MIT.txt in the project root for license information. - */ - -variable "project" { - type = object({ - name = string - }) -} - - -variable "worker_iam_role_name" { - type = string -} - -variable "region" { - type = string -} - -variable "gitpod" { - type = object({ - namespace = string - }) -} diff --git a/install/aws-terraform/modules/storage/main.tf b/install/aws-terraform/modules/storage/main.tf deleted file mode 100644 index 246b76494134dc..00000000000000 --- a/install/aws-terraform/modules/storage/main.tf +++ /dev/null @@ -1,160 +0,0 @@ -/** - * Copyright (c) 2020 Gitpod GmbH. All rights reserved. - * Licensed under the MIT License. See License-MIT.txt in the project root for license information. - */ - -# -# S3 Bucket -# - -resource "aws_s3_bucket" "gitpod_storage" { - bucket = "${var.project.name}-storage" - acl = "private" - tags = { - project = var.project.name - } -} - -resource "aws_s3_access_point" "gitpod_storage" { - bucket = aws_s3_bucket.gitpod_storage.id - name = "${var.project.name}-storage" - vpc_configuration { - vpc_id = var.vpc_id - } -} - - -resource "aws_s3_bucket_policy" "gitpod_storage" { - bucket = aws_s3_bucket.gitpod_storage.id - - policy = < zone_name + - dns.certificate_email + - ? location (ÈU|US for storage, and image registy?) + + ### GCP Project To install Gitpod, a GCP project has to be present (https://support.google.com/googleapi/answer/6251787?hl=en). diff --git a/install/gcp-terraform/environment/full/main.tf b/install/gcp-terraform/environment/full/main.tf index ab9d1b2c9a1e5b..edce7712ca590c 100644 --- a/install/gcp-terraform/environment/full/main.tf +++ b/install/gcp-terraform/environment/full/main.tf @@ -20,7 +20,6 @@ module "kubernetes" { region = var.region } - module "kubeconfig" { source = "../../modules/kubeconfig" @@ -36,11 +35,10 @@ module "kubeconfig" { module "dns" { source = "../../modules/dns" + hostname = var.hostname project = var.project region = var.region - zone_name = var.zone_name name = "gitpod-dns" - subdomain = var.subdomain providers = { google = google @@ -48,28 +46,25 @@ module "dns" { } } - module "certmanager" { source = "../../modules/certmanager" project = var.project email = var.certificate_email - domain = module.dns.hostname + domain = var.hostname providers = { google = google kubernetes = kubernetes - helm = helm kubectl = kubectl + helm = helm } } module "registry" { source = "../../modules/registry" - name = var.subdomain project = var.project - location = var.container_registry.location providers = { google = google @@ -77,21 +72,18 @@ module "registry" { } } - module "storage" { source = "../../modules/storage" - name = var.subdomain project = var.project region = var.region - location = "EU" } module "database" { source = "../../modules/database" project = var.project - name = var.database.name + name = "gitpod-db" region = var.region network = { id = google_compute_network.gitpod.id @@ -99,32 +91,27 @@ module "database" { } } +locals { + helmValues = yamlencode( + merge( + yamldecode(file("./values.static.yaml")), + try(yamldecode(module.dns.values), {}), + try(yamldecode(module.certmanager.values), {}), + try(yamldecode(module.registry.values), {}), + try(yamldecode(module.storage.values), {}), + try(yamldecode(module.database.values), {}) + ) + ) +} + # -# Gitpod +# Gitpod Terraform values # - -module "gitpod" { - source = "../../modules/gitpod" - - project = var.project - region = var.region - namespace = var.namespace - values = file("values.yaml") - dns_values = module.dns.values - certificate_values = module.certmanager.values - database_values = module.database.values - registry_values = module.registry.values - storage_values = module.storage.values - license = var.license - - gitpod = { - chart = "../../../../chart" - image_prefix = "gcr.io/gitpod-io/self-hosted/" - } - - providers = { - google = google - kubernetes = kubernetes - helm = helm - } +output "values" { + value = local.helmValues } + +resource "local_file" "values" { + content = local.helmValues + filename = "${path.module}/values.terraform.yaml" +} \ No newline at end of file diff --git a/install/gcp-terraform/environment/full/providers.tf b/install/gcp-terraform/environment/full/providers.tf index 743e3c099b1c34..e6aa2c641e34df 100644 --- a/install/gcp-terraform/environment/full/providers.tf +++ b/install/gcp-terraform/environment/full/providers.tf @@ -11,8 +11,6 @@ provider "google" { data "google_client_config" "provider" {} provider "kubernetes" { - load_config_file = "false" - host = module.kubernetes.cluster.endpoint token = data.google_client_config.provider.access_token cluster_ca_certificate = base64decode(module.kubernetes.cluster.master_auth[0].cluster_ca_certificate) @@ -27,8 +25,6 @@ provider "helm" { } provider "kubectl" { - load_config_file = "false" - host = module.kubernetes.cluster.endpoint token = data.google_client_config.provider.access_token cluster_ca_certificate = base64decode(module.kubernetes.cluster.master_auth[0].cluster_ca_certificate) diff --git a/install/gcp-terraform/environment/full/terraform.tfstate b/install/gcp-terraform/environment/full/terraform.tfstate new file mode 100644 index 00000000000000..7276b0da83bde6 --- /dev/null +++ b/install/gcp-terraform/environment/full/terraform.tfstate @@ -0,0 +1,2946 @@ +{ + "version": 4, + "terraform_version": "0.14.2", + "serial": 107, + "lineage": "3770200e-1304-048e-d7d4-5082923aa8c6", + "outputs": { + "values": { + "value": "\"branding\":\n \"homepage\": \"gpl.gitpod-self-hosted.com\"\n \"redirectUrlAfterLogout\": \"gpl.gitpod-self-hosted.com\"\n \"redirectUrlIfNotAuthenticated\": \"/workspaces/\"\n\"certificatesSecret\":\n \"chainName\": \"tls.crt\"\n \"fullChainName\": \"tls.crt\"\n \"keyName\": \"tls.key\"\n \"secretName\": \"gitpod-certificate\"\n\"components\":\n \"db\":\n \"autoMigrate\": true\n \"gcloudSqlProxy\":\n \"credentials\": \"gcloud-sql-token\"\n \"enabled\": true\n \"instance\": \"gpl-sh-090-3:europe-west3:gitpod-db-f68922fd\"\n \"serviceType\": \"ClusterIP\"\n\"db\":\n \"host\": \"10.194.0.3\"\n \"password\": \"kqbPzZLO29P%N_tq\"\n\"docker-registry\":\n \"enabled\": false\n\"hostname\": \"gpl.gitpod-self-hosted.com\"\n\"minio\":\n \"enabled\": false\n\"mysql\":\n \"enabled\": false\n", + "type": "string" + } + }, + "resources": [ + { + "mode": "data", + "type": "google_client_config", + "name": "provider", + "provider": "provider[\"registry.terraform.io/hashicorp/google\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "access_token": "ya29.a0AfH6SMDnz9lgXAyAmFMry2RBnNIyLuHF84vyGJHWVoaPjSH5DOBpVwSQT9JUOh5h_Fkq_NEV9dcsaTRB9zqDCvPlMlwEcM2dAwMkXKingXRUodaMc-ikBTrpTWGm-CBHeugutQbNAM7sm-x4mwfRFN5X4hsFszw", + "id": "projects/gpl-sh-090-3/regions/europe-west3/zones/", + "project": "gpl-sh-090-3", + "region": "europe-west3", + "zone": "" + }, + "sensitive_attributes": [] + } + ] + }, + { + "mode": "managed", + "type": "google_compute_network", + "name": "gitpod", + "provider": "provider[\"registry.terraform.io/hashicorp/google\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "auto_create_subnetworks": false, + "delete_default_routes_on_create": false, + "description": "Gitpod Cluster Network", + "gateway_ipv4": "", + "id": "projects/gpl-sh-090-3/global/networks/gitpod", + "mtu": 0, + "name": "gitpod", + "project": "gpl-sh-090-3", + "routing_mode": "REGIONAL", + "self_link": "https://www.googleapis.com/compute/v1/projects/gpl-sh-090-3/global/networks/gitpod", + "timeouts": null + }, + "sensitive_attributes": [], + "private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjoyNDAwMDAwMDAwMDAsImRlbGV0ZSI6MjQwMDAwMDAwMDAwLCJ1cGRhdGUiOjI0MDAwMDAwMDAwMH19" + } + ] + }, + { + "mode": "managed", + "type": "local_file", + "name": "values", + "provider": "provider[\"registry.terraform.io/hashicorp/local\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "content": "\"branding\":\n \"homepage\": \"gpl.gitpod-self-hosted.com\"\n \"redirectUrlAfterLogout\": \"gpl.gitpod-self-hosted.com\"\n \"redirectUrlIfNotAuthenticated\": \"/workspaces/\"\n\"certificatesSecret\":\n \"chainName\": \"tls.crt\"\n \"fullChainName\": \"tls.crt\"\n \"keyName\": \"tls.key\"\n \"secretName\": \"gitpod-certificate\"\n\"components\":\n \"db\":\n \"autoMigrate\": true\n \"gcloudSqlProxy\":\n \"credentials\": \"gcloud-sql-token\"\n \"enabled\": true\n \"instance\": \"gpl-sh-090-3:europe-west3:gitpod-db-f68922fd\"\n \"serviceType\": \"ClusterIP\"\n\"db\":\n \"host\": \"10.194.0.3\"\n \"password\": \"kqbPzZLO29P%N_tq\"\n\"docker-registry\":\n \"enabled\": false\n\"hostname\": \"gpl.gitpod-self-hosted.com\"\n\"minio\":\n \"enabled\": false\n\"mysql\":\n \"enabled\": false\n", + "content_base64": null, + "directory_permission": "0777", + "file_permission": "0777", + "filename": "./values.terraform.yaml", + "id": "d07790567ac7e3fc5b634687d3029d3a36b90b69", + "sensitive_content": null, + "source": null + }, + "sensitive_attributes": [], + "private": "bnVsbA==", + "dependencies": [ + "data.google_client_config.provider", + "google_compute_network.gitpod", + "module.certmanager.data.template_file.values", + "module.database.data.template_file.values", + "module.database.google_compute_global_address.gitpod", + "module.database.google_service_account.gitpod_database", + "module.database.google_service_account_key.gitpod_database", + "module.database.google_service_networking_connection.gitpod", + "module.database.google_sql_database_instance.gitpod", + "module.database.google_sql_user.gitpod", + "module.database.kubernetes_secret.database", + "module.database.random_id.database", + "module.database.random_password.gitpod_db_user", + "module.dns.data.template_file.values", + "module.dns.google_compute_address.gitpod", + "module.kubernetes.google_compute_subnetwork.gitpod", + "module.kubernetes.google_container_cluster.gitpod", + "module.registry.data.template_file.registry", + "module.registry.data.template_file.values", + "module.registry.google_service_account.gitpod_registry", + "module.registry.google_service_account_key.gitpod_registry", + "module.registry.kubernetes_secret.registry", + "module.storage.data.template_file.values", + "module.storage.google_service_account.gitpod_storage", + "module.storage.google_service_account_key.gitpod_storage", + "module.storage.kubernetes_secret.storage" + ] + } + ] + }, + { + "module": "module.certmanager", + "mode": "data", + "type": "template_file", + "name": "certificate", + "provider": "provider[\"registry.terraform.io/hashicorp/template\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "filename": null, + "id": "fbc26ce097e06edcb985a8bb3e79cf36acc2128c5610eeb6c265bfa8d40451c7", + "rendered": "# Copyright (c) 2020 Gitpod GmbH. All rights reserved.\n# Licensed under the MIT License. See License-MIT.txt in the project root for license information.\n\napiVersion: cert-manager.io/v1alpha2\nkind: Certificate\nmetadata:\n name: gitpod-certificate\n namespace: default\nspec:\n secretName: gitpod-certificate\n renewBefore: 24h\n dnsNames:\n - \"gpl.gitpod-self-hosted.com\"\n - \"*.gpl.gitpod-self-hosted.com\"\n - \"*.ws.gpl.gitpod-self-hosted.com\"\n issuerRef:\n name: letsencrypt-issuer\n kind: ClusterIssuer", + "template": "# Copyright (c) 2020 Gitpod GmbH. All rights reserved.\n# Licensed under the MIT License. See License-MIT.txt in the project root for license information.\n\napiVersion: cert-manager.io/v1alpha2\nkind: Certificate\nmetadata:\n name: ${name}\n namespace: ${namespace}\nspec:\n secretName: ${name}\n renewBefore: 24h\n dnsNames:\n - \"${domain}\"\n - \"*.${domain}\"\n - \"*.ws.${domain}\"\n issuerRef:\n name: letsencrypt-issuer\n kind: ClusterIssuer", + "vars": { + "domain": "gpl.gitpod-self-hosted.com", + "name": "gitpod-certificate", + "namespace": "default" + } + }, + "sensitive_attributes": [] + } + ] + }, + { + "module": "module.certmanager", + "mode": "data", + "type": "template_file", + "name": "cluster_issuer", + "provider": "provider[\"registry.terraform.io/hashicorp/template\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "filename": null, + "id": "c8fe99430abf9ee42d0d0a82d8b407fae11ecf649d50b6d9df87dc5029d7e7c7", + "rendered": "# Copyright (c) 2020 Gitpod GmbH. All rights reserved.\n# Licensed under the MIT License. See License-MIT.txt in the project root for license information.\n\napiVersion: cert-manager.io/v1\nkind: ClusterIssuer\nmetadata:\n name: letsencrypt-issuer\nspec:\n acme:\n server: https://acme-v02.api.letsencrypt.org/directory\n email: \"test@test.sh\"\n privateKeySecretRef:\n name: letsencrypt-private-key\n solvers:\n - dns01:\n cloudDNS:\n # The ID of the GCP project\n project: gpl-sh-090-3\n # This is the secret used to access the service account\n serviceAccountSecretRef:\n name: clouddns-dns01-solver-svc-acct\n key: credentials.json\n", + "template": "# Copyright (c) 2020 Gitpod GmbH. All rights reserved.\n# Licensed under the MIT License. See License-MIT.txt in the project root for license information.\n\napiVersion: cert-manager.io/v1\nkind: ClusterIssuer\nmetadata:\n name: ${name}\nspec:\n acme:\n server: https://acme-v02.api.letsencrypt.org/directory\n email: \"${email}\"\n privateKeySecretRef:\n name: ${key_name}\n solvers:\n - dns01:\n cloudDNS:\n # The ID of the GCP project\n project: ${project}\n # This is the secret used to access the service account\n serviceAccountSecretRef:\n name: ${secret_name}\n key: credentials.json\n", + "vars": { + "email": "test@test.sh", + "key_name": "letsencrypt-private-key", + "name": "letsencrypt-issuer", + "project": "gpl-sh-090-3", + "secret_name": "clouddns-dns01-solver-svc-acct" + } + }, + "sensitive_attributes": [] + } + ] + }, + { + "module": "module.certmanager", + "mode": "data", + "type": "template_file", + "name": "values", + "provider": "provider[\"registry.terraform.io/hashicorp/template\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "filename": null, + "id": "6b4f204faa748b2beb9d8071f10caaf063da0670a040a77acde4a672677e8725", + "rendered": "certificatesSecret:\n secretName: gitpod-certificate\n keyName: tls.key\n chainName: tls.crt\n fullChainName: tls.crt\n\ncomponents:\n restarter:\n enabled: true\n", + "template": "certificatesSecret:\n secretName: ${secret_name}\n keyName: ${key_name}\n chainName: ${chain_name}\n fullChainName: ${full_chain_name}\n\ncomponents:\n restarter:\n enabled: true\n", + "vars": { + "chain_name": "tls.crt", + "full_chain_name": "tls.crt", + "key_name": "tls.key", + "secret_name": "gitpod-certificate" + } + }, + "sensitive_attributes": [] + } + ] + }, + { + "module": "module.certmanager", + "mode": "managed", + "type": "google_project_iam_member", + "name": "project", + "provider": "provider[\"registry.terraform.io/hashicorp/google\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "condition": [], + "etag": "BwXBasRJJWc=", + "id": "gpl-sh-090-3/roles/dns.admin/serviceAccount:certmanger@gpl-sh-090-3.iam.gserviceaccount.com", + "member": "serviceAccount:certmanger@gpl-sh-090-3.iam.gserviceaccount.com", + "project": "gpl-sh-090-3", + "role": "roles/dns.admin" + }, + "sensitive_attributes": [], + "private": "bnVsbA==", + "dependencies": [ + "module.certmanager.google_service_account.certmanager" + ] + } + ] + }, + { + "module": "module.certmanager", + "mode": "managed", + "type": "google_service_account", + "name": "certmanager", + "provider": "provider[\"registry.terraform.io/hashicorp/google\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "account_id": "certmanger", + "description": "Cert-Manager Account certmanger", + "display_name": "certmanger", + "email": "certmanger@gpl-sh-090-3.iam.gserviceaccount.com", + "id": "projects/gpl-sh-090-3/serviceAccounts/certmanger@gpl-sh-090-3.iam.gserviceaccount.com", + "name": "projects/gpl-sh-090-3/serviceAccounts/certmanger@gpl-sh-090-3.iam.gserviceaccount.com", + "project": "gpl-sh-090-3", + "timeouts": null, + "unique_id": "101723156074465487158" + }, + "sensitive_attributes": [], + "private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjozMDAwMDAwMDAwMDB9fQ==" + } + ] + }, + { + "module": "module.certmanager", + "mode": "managed", + "type": "google_service_account_key", + "name": "certmanager", + "provider": "provider[\"registry.terraform.io/hashicorp/google\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "id": "projects/gpl-sh-090-3/serviceAccounts/certmanger@gpl-sh-090-3.iam.gserviceaccount.com/keys/949f9b6877653a4854560c995052d1c60a05ae80", + "keepers": null, + "key_algorithm": "KEY_ALG_RSA_2048", + "name": "projects/gpl-sh-090-3/serviceAccounts/certmanger@gpl-sh-090-3.iam.gserviceaccount.com/keys/949f9b6877653a4854560c995052d1c60a05ae80", + "private_key": "ewogICJ0eXBlIjogInNlcnZpY2VfYWNjb3VudCIsCiAgInByb2plY3RfaWQiOiAiZ3BsLXNoLTA5MC0zIiwKICAicHJpdmF0ZV9rZXlfaWQiOiAiOTQ5ZjliNjg3NzY1M2E0ODU0NTYwYzk5NTA1MmQxYzYwYTA1YWU4MCIsCiAgInByaXZhdGVfa2V5IjogIi0tLS0tQkVHSU4gUFJJVkFURSBLRVktLS0tLVxuTUlJRXZnSUJBREFOQmdrcWhraUc5dzBCQVFFRkFBU0NCS2d3Z2dTa0FnRUFBb0lCQVFETGZkQVVIaXQrdlh1c1xuTWVKY2c3WlVUbzh4MFcwT2xKTXcyYjV2MFVsMFJTUHBUZzJYRmVCRTQ0WVNicUJORHhIQjFYa1JnVVJNOFBTNFxuRmY5eG5ONmZOMnVEVy9qZ2Z1dVVBeGR3M1MrQVpKWWVxUmdWV3RzQWw2bXZ5WDFiTmhYamdjaS9LTGtqU2xmRlxuMW56Y2xRZ3kwbS9MSWJzTk51MHZGUVB4M0h3UmtSTjNidDN4SjhuY1cxVFZlVDNLMlk3bmlUQlRNaXo4dXMydFxuQ05tNnJMMDdCeDVMaFJIYjZpTlB1RU9PTm9zaWpXZlI2RE41OVFhdUJGbytNaUFFbnF0UlpETjYyYlpxY2lsTFxuMjM3ZFEyeTZhSXdndmF1RmE1SXk4VmFhSjdjQllybFZoNEN6cFJKNW44VVpCOVdXa3h4akJoaW1OQ3Z5TjdieFxuaExtRjI3MjNBZ01CQUFFQ2dnRUFKZ09yNG9ZOFUrSHIvNkFXREhoaWtGOVlxdExYejdoN3dzMTZvUUwwK082TlxucGVENTh2YVlQZVpQUHBSQ0NBTS9xdmxKTTdiMVhuWkpFVGF5MExPZ2R4ZndVc3JVdElPaFdMWTNJOU4rTXpzWFxuUEVVVWhiRENadHJ1VFRPVDRuMDVHNVk4UFZITFBFZUFIQ3BVaXhTZ1FuWkRnaXdiK0gwQlZDRlY2bEhwTDVLWVxuSWdweDhLZjN5VGswZGZ1clk2SVZTUUFpeHZvRkU1Vk15bG9PVEVBbGhUZytCdWU5OWc5ZjBEYnBvUHZVN2FVUFxuLytBeDRQS0l3S043NEsrRmpQUkxWdDVOWHRaQWZ4K2hnN2N0SFp0NDNldS9nRkNaMWUwL1BiczRGNXlOL1NFQ1xucDBiZzlwUGlyWWlQZUVNc1NLYUdtTGQ1TU4xdVZLT3VGSTVEdG56Z1NRS0JnUUR5N2NDbGZMNFNkSFB3R2pKalxuUkpmSnhtNG5jZW5Lell5a2hNRW1PcS90MjV4NVQyNWVRN3NmTDVvZDc1U0twZWxDK0RFUC8vdW5ManBaZXZYcVxueUREYnpDdHAyVSt5QTBlMUdEZGJyVU1XalBFdDJyZmV4Nnd0bTkwN3loNGo4NTU4SVJ6dXlCY2lRTnBDekJETFxuMTYzRlVCSEtNNml0ZTFyQUpnQTZLd2ZDTFFLQmdRRFdjTlBXZlYxRUNyckI1dlJ3bkFPbC9pS3I1Q3dzeWVmZlxuOENrK0phc1pVc3E5d29kTjN6VWxOcW9VVHZUWlNyQUhPTzllMWpMM0Y2Y2RUUlg2emNibXo0V3djOXZmWFJzQ1xuVWJIMllkRTgwNXFDVE11YXRyTUN3TTRhSUV3STB6S3JPZ2VwUHZ6MjhpeTRZSnRiakljaXhmWnJscm9aSE0zUFxuYXEwMEZaVkI4d0tCZ1FDc1BxK05wdmtPRk12dnZtTmp4MHJvb20yUVFsREdueC9OdHVOTXUrZnArd0RqY3RLS1xudS9OOWxUN3RZdVlydUovQUFFS3BXWk9SWWxHMUNGNDlibHhXUEZtNzMzMkdkcFR0YnBJeHlwUDY5VXc4ZXd4TVxuUmI5clIweUNERGw2dkUzdkxYdGFRejFENkQvWmhOK1Q2UVVwRmpERzhnSHpuN2NrN3N6U2NaZzZzUUtCZ1FDZVxudm1salYreXFDUk5WcFdZQTBzMjBuTndIeVdLV1NXVTRscTNCVHR0SlpNdW5EQkZqcVQvTGE1c2VhNURBSnBVR1xuMDdRSHphTnUzWGlkclVuL0gwUUY2MHY1WXRzNmo4OEZ1WHAzZk5RTEprNHo5U3VvUFdWcFBWZVZhYUUveXpDd1xuSnNZekdPamsya1FXdlpWa2dUUXNuc1did2JuRUMxbWtHVUZjMURsbzF3S0JnR2tHUlVIYmhHdGFaejlzWHB3SVxuOURyM0NhT0U0ZHJTUmM1bWJmZW9ibFJIOEhpdDFMQS8yWUppTXRXRUdsS3p5eitzUkhVTzNuVTZCa0hDL3V1RFxuZUd0RXBsMVBBSFh4T0UwQWU0S3JnT09NZGswZVdwc1BvVmNHQkpYN1dDbmlsaHYwb0xuY3MyL09TMXNuWmZSNFxuSzRkWGZIMlVocHM1WlVXUDVyN2xLdkRCXG4tLS0tLUVORCBQUklWQVRFIEtFWS0tLS0tXG4iLAogICJjbGllbnRfZW1haWwiOiAiY2VydG1hbmdlckBncGwtc2gtMDkwLTMuaWFtLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICJjbGllbnRfaWQiOiAiMTAxNzIzMTU2MDc0NDY1NDg3MTU4IiwKICAiYXV0aF91cmkiOiAiaHR0cHM6Ly9hY2NvdW50cy5nb29nbGUuY29tL28vb2F1dGgyL2F1dGgiLAogICJ0b2tlbl91cmkiOiAiaHR0cHM6Ly9vYXV0aDIuZ29vZ2xlYXBpcy5jb20vdG9rZW4iLAogICJhdXRoX3Byb3ZpZGVyX3g1MDlfY2VydF91cmwiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vb2F1dGgyL3YxL2NlcnRzIiwKICAiY2xpZW50X3g1MDlfY2VydF91cmwiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vcm9ib3QvdjEvbWV0YWRhdGEveDUwOS9jZXJ0bWFuZ2VyJTQwZ3BsLXNoLTA5MC0zLmlhbS5nc2VydmljZWFjY291bnQuY29tIgp9Cg==", + "private_key_type": "TYPE_GOOGLE_CREDENTIALS_FILE", + "public_key": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUMvRENDQWVTZ0F3SUJBZ0lJZFBSTk9Qc3IyYUV3RFFZSktvWklodmNOQVFFRkJRQXdJREVlTUJ3R0ExVUUKQXhNVk1UQXhOekl6TVRVMk1EYzBORFkxTkRnM01UVTRNQ0FYRFRJeE1EVXdNekV3TlRNd01sb1lEems1T1RreApNak14TWpNMU9UVTVXakFnTVI0d0hBWURWUVFERXhVeE1ERTNNak14TlRZd056UTBOalUwT0RjeE5UZ3dnZ0VpCk1BMEdDU3FHU0liM0RRRUJBUVVBQTRJQkR3QXdnZ0VLQW9JQkFRRExmZEFVSGl0K3ZYdXNNZUpjZzdaVVRvOHgKMFcwT2xKTXcyYjV2MFVsMFJTUHBUZzJYRmVCRTQ0WVNicUJORHhIQjFYa1JnVVJNOFBTNEZmOXhuTjZmTjJ1RApXL2pnZnV1VUF4ZHczUytBWkpZZXFSZ1ZXdHNBbDZtdnlYMWJOaFhqZ2NpL0tMa2pTbGZGMW56Y2xRZ3kwbS9MCklic05OdTB2RlFQeDNId1JrUk4zYnQzeEo4bmNXMVRWZVQzSzJZN25pVEJUTWl6OHVzMnRDTm02ckwwN0J4NUwKaFJIYjZpTlB1RU9PTm9zaWpXZlI2RE41OVFhdUJGbytNaUFFbnF0UlpETjYyYlpxY2lsTDIzN2RRMnk2YUl3Zwp2YXVGYTVJeThWYWFKN2NCWXJsVmg0Q3pwUko1bjhVWkI5V1dreHhqQmhpbU5DdnlON2J4aExtRjI3MjNBZ01CCkFBR2pPREEyTUF3R0ExVWRFd0VCL3dRQ01BQXdEZ1lEVlIwUEFRSC9CQVFEQWdlQU1CWUdBMVVkSlFFQi93UU0KTUFvR0NDc0dBUVVGQndNQ01BMEdDU3FHU0liM0RRRUJCUVVBQTRJQkFRQkhlR2I3NVRzakVaTGttMDJTcnA0SApWcHI3dXN1L1RpTnZlSHMwRHoxelhsMG52K085bmpEV21rMmhjbHpoRHFPME5OdjBsYldrVWpzdTQ1NlYxUkZaClVTd3ZEMXI0cDl3c05JZ3RiNDkwZlVibUdtcHdROVByQnJwc3NwdExnY2hwSTU0UTRhTWwxTkRvWFZDWmlwQWoKbGJxcWhhdU45dXltZmlpdFBzVERkT1Z4Ni9tODNFaUtRamlqeVd4ZW01VzhNOEhuOUJIbUkvNWsyNk9jS21sRAoySTJvb0UxV2tYeE1palRHamlBVmlRc21BbDgzMUw0UUNSS1J0SnVYWUJ6S3F0dWx4Snh2dExUR0RSSlk2aFZlCjVhSUtMdTF4V3ViazA1dEFWRldOdmUwMm1DUmpNWVY1ckxLcGxFZ1p5Z3NLSk11ZHBTK296eHh3TVZsaGFMMFcKLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQo=", + "public_key_data": null, + "public_key_type": "TYPE_X509_PEM_FILE", + "service_account_id": "projects/gpl-sh-090-3/serviceAccounts/certmanger@gpl-sh-090-3.iam.gserviceaccount.com", + "valid_after": "2021-05-03T10:53:02Z", + "valid_before": "9999-12-31T23:59:59Z" + }, + "sensitive_attributes": [], + "private": "bnVsbA==", + "dependencies": [ + "module.certmanager.google_service_account.certmanager" + ] + } + ] + }, + { + "module": "module.certmanager", + "mode": "managed", + "type": "helm_release", + "name": "certmanager", + "provider": "provider[\"registry.terraform.io/hashicorp/helm\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "atomic": false, + "chart": "cert-manager", + "cleanup_on_fail": false, + "create_namespace": false, + "dependency_update": false, + "description": null, + "devel": null, + "disable_crd_hooks": false, + "disable_openapi_validation": false, + "disable_webhooks": false, + "force_update": false, + "id": "certmanger", + "keyring": null, + "lint": false, + "manifest": null, + "max_history": 0, + "metadata": [ + { + "app_version": "v1.3.1", + "chart": "cert-manager", + "name": "certmanger", + "namespace": "certmanager", + "revision": 1, + "values": "{\"installCRDs\":true}", + "version": "v1.3.1" + } + ], + "name": "certmanger", + "namespace": "certmanager", + "postrender": [], + "recreate_pods": false, + "render_subchart_notes": true, + "replace": false, + "repository": "https://charts.jetstack.io", + "repository_ca_file": null, + "repository_cert_file": null, + "repository_key_file": null, + "repository_password": null, + "repository_username": null, + "reset_values": false, + "reuse_values": false, + "set": [ + { + "name": "installCRDs", + "type": "", + "value": "true" + } + ], + "set_sensitive": [], + "skip_crds": false, + "status": "deployed", + "timeout": 300, + "values": null, + "verify": false, + "version": "v1.3.1", + "wait": true + }, + "sensitive_attributes": [], + "private": "bnVsbA==", + "dependencies": [ + "data.google_client_config.provider", + "google_compute_network.gitpod", + "module.certmanager.kubernetes_namespace.certmanager", + "module.kubernetes.google_compute_subnetwork.gitpod", + "module.kubernetes.google_container_cluster.gitpod" + ] + } + ] + }, + { + "module": "module.certmanager", + "mode": "managed", + "type": "kubectl_manifest", + "name": "certificate", + "provider": "provider[\"registry.terraform.io/gavinbunney/kubectl\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "api_version": "cert-manager.io/v1alpha2", + "force_new": false, + "id": "/apis/cert-manager.io/v1alpha2/namespaces/default/certificates/gitpod-certificate", + "ignore_fields": null, + "kind": "Certificate", + "live_manifest_incluster": "apiVersion=cert-manager.io/v1alpha2,kind=Certificate,metadata.name=gitpod-certificate,metadata.namespace=default,spec.dnsNames.#=3,spec.dnsNames.0=gpl.gitpod-self-hosted.com,spec.dnsNames.1=*.gpl.gitpod-self-hosted.com,spec.dnsNames.2=*.ws.gpl.gitpod-self-hosted.com,spec.issuerRef.kind=ClusterIssuer,spec.issuerRef.name=letsencrypt-issuer,spec.renewBefore=24h0m0s,spec.secretName=gitpod-certificate", + "live_resource_version": "22551", + "live_uid": "d276bb89-af3b-4b36-b454-f435af039ea3", + "name": "gitpod-certificate", + "namespace": "default", + "override_namespace": null, + "resource_version": "20375", + "sensitive_fields": null, + "timeouts": null, + "uid": "d276bb89-af3b-4b36-b454-f435af039ea3", + "validate_schema": true, + "wait": null, + "wait_for_rollout": true, + "yaml_body": "# Copyright (c) 2020 Gitpod GmbH. All rights reserved.\n# Licensed under the MIT License. See License-MIT.txt in the project root for license information.\n\napiVersion: cert-manager.io/v1alpha2\nkind: Certificate\nmetadata:\n name: gitpod-certificate\n namespace: default\nspec:\n secretName: gitpod-certificate\n renewBefore: 24h\n dnsNames:\n - \"gpl.gitpod-self-hosted.com\"\n - \"*.gpl.gitpod-self-hosted.com\"\n - \"*.ws.gpl.gitpod-self-hosted.com\"\n issuerRef:\n name: letsencrypt-issuer\n kind: ClusterIssuer", + "yaml_body_parsed": "apiVersion: cert-manager.io/v1alpha2\nkind: Certificate\nmetadata:\n name: gitpod-certificate\n namespace: default\nspec:\n dnsNames:\n - gpl.gitpod-self-hosted.com\n - '*.gpl.gitpod-self-hosted.com'\n - '*.ws.gpl.gitpod-self-hosted.com'\n issuerRef:\n kind: ClusterIssuer\n name: letsencrypt-issuer\n renewBefore: 24h\n secretName: gitpod-certificate\n", + "yaml_incluster": "apiVersion=cert-manager.io/v1alpha2,kind=Certificate,metadata.name=gitpod-certificate,metadata.namespace=default,spec.dnsNames.#=3,spec.dnsNames.0=gpl.gitpod-self-hosted.com,spec.dnsNames.1=*.gpl.gitpod-self-hosted.com,spec.dnsNames.2=*.ws.gpl.gitpod-self-hosted.com,spec.issuerRef.kind=ClusterIssuer,spec.issuerRef.name=letsencrypt-issuer,spec.renewBefore=24h0m0s,spec.secretName=gitpod-certificate" + }, + "sensitive_attributes": [], + "private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjo2MDAwMDAwMDAwMDB9fQ==", + "dependencies": [ + "data.google_client_config.provider", + "google_compute_network.gitpod", + "module.certmanager.data.template_file.certificate", + "module.kubernetes.google_compute_subnetwork.gitpod", + "module.kubernetes.google_container_cluster.gitpod" + ] + } + ] + }, + { + "module": "module.certmanager", + "mode": "managed", + "type": "kubectl_manifest", + "name": "clusterissuer", + "provider": "provider[\"registry.terraform.io/gavinbunney/kubectl\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "api_version": "cert-manager.io/v1", + "force_new": false, + "id": "/apis/cert-manager.io/v1/clusterissuers/letsencrypt-issuer", + "ignore_fields": null, + "kind": "ClusterIssuer", + "live_manifest_incluster": "apiVersion=cert-manager.io/v1,kind=ClusterIssuer,metadata.name=letsencrypt-issuer,spec.acme.email=test@test.sh,spec.acme.privateKeySecretRef.name=letsencrypt-private-key,spec.acme.server=https://acme-v02.api.letsencrypt.org/directory,spec.acme.solvers.#=1,spec.acme.solvers.0.dns01.cloudDNS.project=gpl-sh-090-3,spec.acme.solvers.0.dns01.cloudDNS.serviceAccountSecretRef.key=credentials.json,spec.acme.solvers.0.dns01.cloudDNS.serviceAccountSecretRef.name=clouddns-dns01-solver-svc-acct", + "live_resource_version": "20404", + "live_uid": "a8c9e0bf-f2fa-4d63-8f24-19bd32a439b9", + "name": "letsencrypt-issuer", + "namespace": null, + "override_namespace": null, + "resource_version": "20393", + "sensitive_fields": null, + "timeouts": null, + "uid": "a8c9e0bf-f2fa-4d63-8f24-19bd32a439b9", + "validate_schema": true, + "wait": null, + "wait_for_rollout": true, + "yaml_body": "# Copyright (c) 2020 Gitpod GmbH. All rights reserved.\n# Licensed under the MIT License. See License-MIT.txt in the project root for license information.\n\napiVersion: cert-manager.io/v1\nkind: ClusterIssuer\nmetadata:\n name: letsencrypt-issuer\nspec:\n acme:\n server: https://acme-v02.api.letsencrypt.org/directory\n email: \"test@test.sh\"\n privateKeySecretRef:\n name: letsencrypt-private-key\n solvers:\n - dns01:\n cloudDNS:\n # The ID of the GCP project\n project: gpl-sh-090-3\n # This is the secret used to access the service account\n serviceAccountSecretRef:\n name: clouddns-dns01-solver-svc-acct\n key: credentials.json\n", + "yaml_body_parsed": "apiVersion: cert-manager.io/v1\nkind: ClusterIssuer\nmetadata:\n name: letsencrypt-issuer\nspec:\n acme:\n email: test@test.sh\n privateKeySecretRef:\n name: letsencrypt-private-key\n server: https://acme-v02.api.letsencrypt.org/directory\n solvers:\n - dns01:\n cloudDNS:\n project: gpl-sh-090-3\n serviceAccountSecretRef:\n key: credentials.json\n name: clouddns-dns01-solver-svc-acct\n", + "yaml_incluster": "apiVersion=cert-manager.io/v1,kind=ClusterIssuer,metadata.name=letsencrypt-issuer,spec.acme.email=test@test.sh,spec.acme.privateKeySecretRef.name=letsencrypt-private-key,spec.acme.server=https://acme-v02.api.letsencrypt.org/directory,spec.acme.solvers.#=1,spec.acme.solvers.0.dns01.cloudDNS.project=gpl-sh-090-3,spec.acme.solvers.0.dns01.cloudDNS.serviceAccountSecretRef.key=credentials.json,spec.acme.solvers.0.dns01.cloudDNS.serviceAccountSecretRef.name=clouddns-dns01-solver-svc-acct" + }, + "sensitive_attributes": [], + "private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjo2MDAwMDAwMDAwMDB9fQ==", + "dependencies": [ + "data.google_client_config.provider", + "google_compute_network.gitpod", + "module.certmanager.data.template_file.cluster_issuer", + "module.certmanager.google_service_account.certmanager", + "module.certmanager.google_service_account_key.certmanager", + "module.certmanager.kubernetes_namespace.certmanager", + "module.certmanager.kubernetes_secret.certmanager", + "module.kubernetes.google_compute_subnetwork.gitpod", + "module.kubernetes.google_container_cluster.gitpod" + ] + } + ] + }, + { + "module": "module.certmanager", + "mode": "managed", + "type": "kubernetes_namespace", + "name": "certmanager", + "provider": "provider[\"registry.terraform.io/hashicorp/kubernetes\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "id": "certmanager", + "metadata": [ + { + "annotations": {}, + "generate_name": "", + "generation": 0, + "labels": {}, + "name": "certmanager", + "resource_version": "18945", + "self_link": "", + "uid": "eca243a0-507d-4c88-b853-0544269fceaa" + } + ], + "timeouts": null + }, + "sensitive_attributes": [], + "private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiZGVsZXRlIjozMDAwMDAwMDAwMDB9fQ==", + "dependencies": [ + "data.google_client_config.provider", + "google_compute_network.gitpod", + "module.kubernetes.google_compute_subnetwork.gitpod", + "module.kubernetes.google_container_cluster.gitpod" + ] + } + ] + }, + { + "module": "module.certmanager", + "mode": "managed", + "type": "kubernetes_secret", + "name": "certmanager", + "provider": "provider[\"registry.terraform.io/hashicorp/kubernetes\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "data": { + "credentials.json": "{\n \"type\": \"service_account\",\n \"project_id\": \"gpl-sh-090-3\",\n \"private_key_id\": \"949f9b6877653a4854560c995052d1c60a05ae80\",\n \"private_key\": \"-----BEGIN PRIVATE KEY-----\\nMIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDLfdAUHit+vXus\\nMeJcg7ZUTo8x0W0OlJMw2b5v0Ul0RSPpTg2XFeBE44YSbqBNDxHB1XkRgURM8PS4\\nFf9xnN6fN2uDW/jgfuuUAxdw3S+AZJYeqRgVWtsAl6mvyX1bNhXjgci/KLkjSlfF\\n1nzclQgy0m/LIbsNNu0vFQPx3HwRkRN3bt3xJ8ncW1TVeT3K2Y7niTBTMiz8us2t\\nCNm6rL07Bx5LhRHb6iNPuEOONosijWfR6DN59QauBFo+MiAEnqtRZDN62bZqcilL\\n237dQ2y6aIwgvauFa5Iy8VaaJ7cBYrlVh4CzpRJ5n8UZB9WWkxxjBhimNCvyN7bx\\nhLmF2723AgMBAAECggEAJgOr4oY8U+Hr/6AWDHhikF9YqtLXz7h7ws16oQL0+O6N\\npeD58vaYPeZPPpRCCAM/qvlJM7b1XnZJETay0LOgdxfwUsrUtIOhWLY3I9N+MzsX\\nPEUUhbDCZtruTTOT4n05G5Y8PVHLPEeAHCpUixSgQnZDgiwb+H0BVCFV6lHpL5KY\\nIgpx8Kf3yTk0dfurY6IVSQAixvoFE5VMyloOTEAlhTg+Bue99g9f0DbpoPvU7aUP\\n/+Ax4PKIwKN74K+FjPRLVt5NXtZAfx+hg7ctHZt43eu/gFCZ1e0/Pbs4F5yN/SEC\\np0bg9pPirYiPeEMsSKaGmLd5MN1uVKOuFI5DtnzgSQKBgQDy7cClfL4SdHPwGjJj\\nRJfJxm4ncenKzYykhMEmOq/t25x5T25eQ7sfL5od75SKpelC+DEP//unLjpZevXq\\nyDDbzCtp2U+yA0e1GDdbrUMWjPEt2rfex6wtm907yh4j8558IRzuyBciQNpCzBDL\\n163FUBHKM6ite1rAJgA6KwfCLQKBgQDWcNPWfV1ECrrB5vRwnAOl/iKr5Cwsyeff\\n8Ck+JasZUsq9wodN3zUlNqoUTvTZSrAHOO9e1jL3F6cdTRX6zcbmz4Wwc9vfXRsC\\nUbH2YdE805qCTMuatrMCwM4aIEwI0zKrOgepPvz28iy4YJtbjIcixfZrlroZHM3P\\naq00FZVB8wKBgQCsPq+NpvkOFMvvvmNjx0room2QQlDGnx/NtuNMu+fp+wDjctKK\\nu/N9lT7tYuYruJ/AAEKpWZORYlG1CF49blxWPFm7332GdpTtbpIxypP69Uw8ewxM\\nRb9rR0yCDDl6vE3vLXtaQz1D6D/ZhN+T6QUpFjDG8gHzn7ck7szScZg6sQKBgQCe\\nvmljV+yqCRNVpWYA0s20nNwHyWKWSWU4lq3BTttJZMunDBFjqT/La5sea5DAJpUG\\n07QHzaNu3XidrUn/H0QF60v5Yts6j88FuXp3fNQLJk4z9SuoPWVpPVeVaaE/yzCw\\nJsYzGOjk2kQWvZVkgTQsnsWbwbnEC1mkGUFc1Dlo1wKBgGkGRUHbhGtaZz9sXpwI\\n9Dr3CaOE4drSRc5mbfeoblRH8Hit1LA/2YJiMtWEGlKzyz+sRHUO3nU6BkHC/uuD\\neGtEpl1PAHXxOE0Ae4KrgOOMdk0eWpsPoVcGBJX7WCnilhv0oLncs2/OS1snZfR4\\nK4dXfH2Uhps5ZUWP5r7lKvDB\\n-----END PRIVATE KEY-----\\n\",\n \"client_email\": \"certmanger@gpl-sh-090-3.iam.gserviceaccount.com\",\n \"client_id\": \"101723156074465487158\",\n \"auth_uri\": \"https://accounts.google.com/o/oauth2/auth\",\n \"token_uri\": \"https://oauth2.googleapis.com/token\",\n \"auth_provider_x509_cert_url\": \"https://www.googleapis.com/oauth2/v1/certs\",\n \"client_x509_cert_url\": \"https://www.googleapis.com/robot/v1/metadata/x509/certmanger%40gpl-sh-090-3.iam.gserviceaccount.com\"\n}\n" + }, + "id": "certmanager/clouddns-dns01-solver-svc-acct", + "metadata": [ + { + "annotations": {}, + "generate_name": "", + "generation": 0, + "labels": {}, + "name": "clouddns-dns01-solver-svc-acct", + "namespace": "certmanager", + "resource_version": "20391", + "self_link": "", + "uid": "c09f988c-3a4c-4569-86e0-f82891669f43" + } + ], + "type": "Opaque" + }, + "sensitive_attributes": [], + "private": "bnVsbA==", + "dependencies": [ + "data.google_client_config.provider", + "google_compute_network.gitpod", + "module.certmanager.google_service_account.certmanager", + "module.certmanager.google_service_account_key.certmanager", + "module.certmanager.kubernetes_namespace.certmanager", + "module.kubernetes.google_compute_subnetwork.gitpod", + "module.kubernetes.google_container_cluster.gitpod" + ] + } + ] + }, + { + "module": "module.database", + "mode": "data", + "type": "template_file", + "name": "values", + "provider": "provider[\"registry.terraform.io/hashicorp/template\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "filename": null, + "id": "2feda1d1f8ce20cd45b19089f26646ab5c42487b81a842d712e3c5c9132446c4", + "rendered": "# Copyright (c) 2020 Gitpod GmbH. All rights reserved.\n# Licensed under the MIT License. See License-MIT.txt in the project root for license information.\n\ndb:\n host: \"10.194.0.3\"\n password: \"kqbPzZLO29P%N_tq\"\n\ncomponents:\n db:\n autoMigrate: true\n gcloudSqlProxy:\n enabled: true\n instance: gpl-sh-090-3:europe-west3:gitpod-db-f68922fd\n credentials: gcloud-sql-token\n serviceType: ClusterIP\n\nmysql:\n enabled: false\n", + "template": "# Copyright (c) 2020 Gitpod GmbH. All rights reserved.\n# Licensed under the MIT License. See License-MIT.txt in the project root for license information.\n\ndb:\n host: \"${host}\"\n password: \"${password}\"\n\ncomponents:\n db:\n autoMigrate: true\n gcloudSqlProxy:\n enabled: true\n instance: ${instance}\n credentials: ${credentials}\n serviceType: ClusterIP\n\nmysql:\n enabled: false\n", + "vars": { + "credentials": "gcloud-sql-token", + "host": "10.194.0.3", + "instance": "gpl-sh-090-3:europe-west3:gitpod-db-f68922fd", + "password": "kqbPzZLO29P%N_tq" + } + }, + "sensitive_attributes": [] + } + ] + }, + { + "module": "module.database", + "mode": "managed", + "type": "google_compute_global_address", + "name": "gitpod", + "provider": "provider[\"registry.terraform.io/hashicorp/google\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "address": "10.194.0.0", + "address_type": "INTERNAL", + "creation_timestamp": "2021-05-03T03:07:47.685-07:00", + "description": "", + "id": "projects/gpl-sh-090-3/global/addresses/gitpod-db", + "ip_version": "", + "name": "gitpod-db", + "network": "https://www.googleapis.com/compute/v1/projects/gpl-sh-090-3/global/networks/gitpod", + "prefix_length": 16, + "project": "gpl-sh-090-3", + "purpose": "VPC_PEERING", + "self_link": "https://www.googleapis.com/compute/v1/projects/gpl-sh-090-3/global/addresses/gitpod-db", + "timeouts": null + }, + "sensitive_attributes": [], + "private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjoyNDAwMDAwMDAwMDAsImRlbGV0ZSI6MjQwMDAwMDAwMDAwfX0=", + "dependencies": [ + "google_compute_network.gitpod" + ] + } + ] + }, + { + "module": "module.database", + "mode": "managed", + "type": "google_compute_network_peering_routes_config", + "name": "servicenetwork", + "provider": "provider[\"registry.terraform.io/hashicorp/google\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "export_custom_routes": true, + "id": "projects/gpl-sh-090-3/global/networks/gitpod/networkPeerings/servicenetworking-googleapis-com", + "import_custom_routes": true, + "network": "gitpod", + "peering": "servicenetworking-googleapis-com", + "project": "gpl-sh-090-3", + "timeouts": null + }, + "sensitive_attributes": [], + "private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjozNjAwMDAwMDAwMDAsImRlbGV0ZSI6MzYwMDAwMDAwMDAwLCJ1cGRhdGUiOjM2MDAwMDAwMDAwMH19", + "dependencies": [ + "google_compute_network.gitpod", + "module.database.google_compute_global_address.gitpod", + "module.database.google_service_networking_connection.gitpod", + "module.database.google_sql_database_instance.gitpod", + "module.database.random_id.database" + ] + } + ] + }, + { + "module": "module.database", + "mode": "managed", + "type": "google_project_iam_binding", + "name": "gitpod_database", + "provider": "provider[\"registry.terraform.io/hashicorp/google\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "condition": [], + "etag": "BwXBasRJJWc=", + "id": "gpl-sh-090-3/roles/cloudsql.client", + "members": [ + "serviceAccount:gitpod-db@gpl-sh-090-3.iam.gserviceaccount.com" + ], + "project": "gpl-sh-090-3", + "role": "roles/cloudsql.client" + }, + "sensitive_attributes": [], + "private": "bnVsbA==", + "dependencies": [ + "module.database.google_service_account.gitpod_database" + ] + } + ] + }, + { + "module": "module.database", + "mode": "managed", + "type": "google_project_service", + "name": "database", + "provider": "provider[\"registry.terraform.io/hashicorp/google\"]", + "instances": [ + { + "index_key": 0, + "schema_version": 0, + "attributes": { + "disable_dependent_services": false, + "disable_on_destroy": false, + "id": "gpl-sh-090-3/sql-component.googleapis.com", + "project": "gpl-sh-090-3", + "service": "sql-component.googleapis.com", + "timeouts": null + }, + "sensitive_attributes": [], + "private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjoxMjAwMDAwMDAwMDAwLCJkZWxldGUiOjEyMDAwMDAwMDAwMDAsInJlYWQiOjYwMDAwMDAwMDAwMCwidXBkYXRlIjoxMjAwMDAwMDAwMDAwfX0=" + }, + { + "index_key": 1, + "schema_version": 0, + "attributes": { + "disable_dependent_services": false, + "disable_on_destroy": false, + "id": "gpl-sh-090-3/sqladmin.googleapis.com", + "project": "gpl-sh-090-3", + "service": "sqladmin.googleapis.com", + "timeouts": null + }, + "sensitive_attributes": [], + "private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjoxMjAwMDAwMDAwMDAwLCJkZWxldGUiOjEyMDAwMDAwMDAwMDAsInJlYWQiOjYwMDAwMDAwMDAwMCwidXBkYXRlIjoxMjAwMDAwMDAwMDAwfX0=" + }, + { + "index_key": 2, + "schema_version": 0, + "attributes": { + "disable_dependent_services": false, + "disable_on_destroy": false, + "id": "gpl-sh-090-3/servicenetworking.googleapis.com", + "project": "gpl-sh-090-3", + "service": "servicenetworking.googleapis.com", + "timeouts": null + }, + "sensitive_attributes": [], + "private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjoxMjAwMDAwMDAwMDAwLCJkZWxldGUiOjEyMDAwMDAwMDAwMDAsInJlYWQiOjYwMDAwMDAwMDAwMCwidXBkYXRlIjoxMjAwMDAwMDAwMDAwfX0=" + } + ] + }, + { + "module": "module.database", + "mode": "managed", + "type": "google_service_account", + "name": "gitpod_database", + "provider": "provider[\"registry.terraform.io/hashicorp/google\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "account_id": "gitpod-db", + "description": "Gitpod Database Account gitpod-db", + "display_name": "gitpod-db", + "email": "gitpod-db@gpl-sh-090-3.iam.gserviceaccount.com", + "id": "projects/gpl-sh-090-3/serviceAccounts/gitpod-db@gpl-sh-090-3.iam.gserviceaccount.com", + "name": "projects/gpl-sh-090-3/serviceAccounts/gitpod-db@gpl-sh-090-3.iam.gserviceaccount.com", + "project": "gpl-sh-090-3", + "timeouts": null, + "unique_id": "114026934685529940940" + }, + "sensitive_attributes": [], + "private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjozMDAwMDAwMDAwMDB9fQ==" + } + ] + }, + { + "module": "module.database", + "mode": "managed", + "type": "google_service_account_key", + "name": "gitpod_database", + "provider": "provider[\"registry.terraform.io/hashicorp/google\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "id": "projects/gpl-sh-090-3/serviceAccounts/gitpod-db@gpl-sh-090-3.iam.gserviceaccount.com/keys/f249e3f3120dd5453d3939cf2cfa4c086731bccc", + "keepers": null, + "key_algorithm": "KEY_ALG_RSA_2048", + "name": "projects/gpl-sh-090-3/serviceAccounts/gitpod-db@gpl-sh-090-3.iam.gserviceaccount.com/keys/f249e3f3120dd5453d3939cf2cfa4c086731bccc", + "private_key": "ewogICJ0eXBlIjogInNlcnZpY2VfYWNjb3VudCIsCiAgInByb2plY3RfaWQiOiAiZ3BsLXNoLTA5MC0zIiwKICAicHJpdmF0ZV9rZXlfaWQiOiAiZjI0OWUzZjMxMjBkZDU0NTNkMzkzOWNmMmNmYTRjMDg2NzMxYmNjYyIsCiAgInByaXZhdGVfa2V5IjogIi0tLS0tQkVHSU4gUFJJVkFURSBLRVktLS0tLVxuTUlJRXZBSUJBREFOQmdrcWhraUc5dzBCQVFFRkFBU0NCS1l3Z2dTaUFnRUFBb0lCQVFDNStiOU9tNmNBeW9pTlxud0hVaXFjYVBVKzhWWDdpWnpMVXl1eDlZS3IydzNBQnlzR2p2RGNqMjZ4SjBtb1ZTcnlxVHJ2bG9WSmZlbHlGUlxuWnFFTTJtSkxoNXFaL2IxZ2ZCUU1XU2JqVTJwdWtvRVdmbEsrN1cvOHVPRWIzRnpwWEQwQlFGQUUxbmkrRGlUK1xuVjZVNUx0aUF3NkJoRjFqWXRwR0xzOFVWUlplOUhoQ0VKYzNQU3ZzQ3J4VzBkT1ZRYlI3L0IxaDBzQnp4MFRpelxub3dYc3d6dmFrUFZ6WW5rR2NhUm5lT1lSV1prRGt6cFBZcXZPZi9rR3hzaUcwYTJzRy9nZkFGQnJYdy9NNXlUK1xub1ptSDVVTUFHK2RjbUR5ZmQzcUJmOXg5WkNUUjRVMmVnZUVuMGtDQTczdkRqVGlQeGRsdHFTVFl0S25DSGMzVVxuRUxLeGpKczFBZ01CQUFFQ2dnRUFBTVU3bVNoRTYxaHJjMmJpTlZnTnRnZExmTU91UUpqY0FVOU1KSEhjNGxBdlxuQWtxZnpLbTZkT2RwWnFsRE55SDVvNjM4WTRYQ01VNWYrWFhhNGZJL3FQOXhVUVQvbFZnK1B3VFpoK1NQRXRFeFxuanJYTVF2VTUyd3FyQ0JJRUlvVmF6VmdHWE5iRW5ranh0MG9HcWJON2V5RVVWNEtnd0JrVmhrWWk0V0V0N1Q4aVxuVWtzcWlDZ0s1T0QxeS9NaUJ3ZDJHcUpCWGV0aHdwNGRTalhWRUJSNm9Nei9ORzE4WitHUjFNVHhMZ2xlcG90ZVxuS0cyajFyclJWeXlwSUZ1andLMUVrL1pkZW9OYloyU2VpVjU4N1VBanNpanJPWXlRbkh6TXJLY0NSRFduVG1pSFxuSC9aQlRMVUJlSEkzQUhUb3IyN1VnNVhQNHNVWUZJeFBwd2tLLzQwL3V3S0JnUUR3NjZVcUs3cEk1UHpmOG9XalxuOElnVGtINjk2aUR2ZWZEZ2Q0YlZ0RTYzUTlBUjFYMjVJZGFtZ1lWVGxVUEFvc0FxNG5VTnl4WmtCZ0U4RHQrdFxuRDhKdjE4Ty80VERHNytzV2IzL2R0UFRUSzR1ODI5VGNKaXkyUDdCZncvRUxOWmI2MXM3bFZNWkRUcFdrYlRPcVxuelltZFFYZUwxMlFRYWhISlFBWjVEY3Jpc3dLQmdRREZuYk0vMjVraVpYNm43MEs1Y1ZsZVVXK2RyVFpmNmhZdFxuZjJtNGpiL0JKSXNqVlpUQ1lDWlhvR1BUa01oWm8waERBYUNFclhYR0Nxdk9kR1R1M2xXRk80RDdOQTgvTXNSOVxuMVZyNDQyQ3hqVVBtTEJtQWU3dkRYQW9HTHVyVnFhWEJIRFBxYXBFK1RZVkRuRFdXM1pDczdpQXVZUW9GcFA4WlxuZDVHQVJNTGVkd0tCZ0hTOTZ6bmxHSTZzRDNGQlpzckxDbFZZcG1IR3F4RUFLTjNNYlpUdW0xb296UkZuUDFYUFxuZE9FWVVBL3hlM1JFS1JSZXlkUFdQbEpYcW85OHNaeDl6MzA4czRrdVNPR05ib0JmcFRrOHI0b0lSdDFNTlBnOFxuczF2WXZ0R1k5QnUzYXlLL3BsL3dWV1pXRlNNcEcyay8wZGhXMmVQMGluTjl3b0tmdU1NK0VMc0xBb0dBU2ZLMVxuUE5Rai9hY1ZPaXBpUVpxVTRxSityZlkvUHEwT0Y0QnlRMGxuMUJLa3JsZzhEbkNFYUkzd1RSOEVtZVpzQ0FiM1xuMWk1Q3dCVUdMWCtJdFlvbFhuSGgxaDZwQmZFdGJoa0VyZFlJUE9pcjI5bnN3Uk9NTTVLaGZhYlk0Wk5XSDJrNlxuVkNJRXI5ZTZZbzUxenpxaUJOUW0zclFaVi90aUtsbC83UXZPRUFrQ2dZQm9adm82bWp5d0tkUzdwV0Q4Uk9tN1xuVWx0TmFmVkhwQzNzYzBXVGxyUnBaTXBnT3hmTG5HcjhCTnhsOWZGSVorSUFTNGRFcFp4V1FnUTVRejE4S0V6WVxuNFpOQUtPQi9vdDM5cmo5UFh2akQzZFZnYS94MTFlOGxJU2ZEMis4eG1iMWVyUExETXBma091UjB0c29tTTVIL1xubVh1dW1ZLzNIK2xGYWdNNm80Rk93Zz09XG4tLS0tLUVORCBQUklWQVRFIEtFWS0tLS0tXG4iLAogICJjbGllbnRfZW1haWwiOiAiZ2l0cG9kLWRiQGdwbC1zaC0wOTAtMy5pYW0uZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgImNsaWVudF9pZCI6ICIxMTQwMjY5MzQ2ODU1Mjk5NDA5NDAiLAogICJhdXRoX3VyaSI6ICJodHRwczovL2FjY291bnRzLmdvb2dsZS5jb20vby9vYXV0aDIvYXV0aCIsCiAgInRva2VuX3VyaSI6ICJodHRwczovL29hdXRoMi5nb29nbGVhcGlzLmNvbS90b2tlbiIsCiAgImF1dGhfcHJvdmlkZXJfeDUwOV9jZXJ0X3VybCI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9vYXV0aDIvdjEvY2VydHMiLAogICJjbGllbnRfeDUwOV9jZXJ0X3VybCI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9yb2JvdC92MS9tZXRhZGF0YS94NTA5L2dpdHBvZC1kYiU0MGdwbC1zaC0wOTAtMy5pYW0uZ3NlcnZpY2VhY2NvdW50LmNvbSIKfQo=", + "private_key_type": "TYPE_GOOGLE_CREDENTIALS_FILE", + "public_key": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUMvRENDQWVTZ0F3SUJBZ0lJZnNSU2YxcWROaTh3RFFZSktvWklodmNOQVFFRkJRQXdJREVlTUJ3R0ExVUUKQXhNVk1URTBNREkyT1RNME5qZzFOVEk1T1RRd09UUXdNQ0FYRFRJeE1EVXdNekV3TXpBME9Gb1lEems1T1RreApNak14TWpNMU9UVTVXakFnTVI0d0hBWURWUVFERXhVeE1UUXdNalk1TXpRMk9EVTFNams1TkRBNU5EQXdnZ0VpCk1BMEdDU3FHU0liM0RRRUJBUVVBQTRJQkR3QXdnZ0VLQW9JQkFRQzUrYjlPbTZjQXlvaU53SFVpcWNhUFUrOFYKWDdpWnpMVXl1eDlZS3IydzNBQnlzR2p2RGNqMjZ4SjBtb1ZTcnlxVHJ2bG9WSmZlbHlGUlpxRU0ybUpMaDVxWgovYjFnZkJRTVdTYmpVMnB1a29FV2ZsSys3Vy84dU9FYjNGenBYRDBCUUZBRTFuaStEaVQrVjZVNUx0aUF3NkJoCkYxall0cEdMczhVVlJaZTlIaENFSmMzUFN2c0NyeFcwZE9WUWJSNy9CMWgwc0J6eDBUaXpvd1hzd3p2YWtQVnoKWW5rR2NhUm5lT1lSV1prRGt6cFBZcXZPZi9rR3hzaUcwYTJzRy9nZkFGQnJYdy9NNXlUK29abUg1VU1BRytkYwptRHlmZDNxQmY5eDlaQ1RSNFUyZWdlRW4wa0NBNzN2RGpUaVB4ZGx0cVNUWXRLbkNIYzNVRUxLeGpKczFBZ01CCkFBR2pPREEyTUF3R0ExVWRFd0VCL3dRQ01BQXdEZ1lEVlIwUEFRSC9CQVFEQWdlQU1CWUdBMVVkSlFFQi93UU0KTUFvR0NDc0dBUVVGQndNQ01BMEdDU3FHU0liM0RRRUJCUVVBQTRJQkFRQVBFdnljNnhva3htdVUyTDB1Y0QyaQpLM3AxMStyeUdCUTZvc0hqMGFYTlJKYjM0eHE1cGhOc3grTTkwK0pxUFRGRWFaQ1Vad2Q5Q1FPbWNZZHdqNDNZCkgyU3NBYy9kbjJkZnNOcWx2ejZoTFBubSsrdU5qcmg5MERHYlpGckxuZGhjcFdpVEErKzJpY0FvY0xIaHBvemMKS09GSjJZaWNTOUZlV1dYbTV3TGs4aGFDQVFYYllLTlg0WWhJdllUaHJZWlhvbUJiUWs1bVNidSt5MWNqSVA2UwpreFVyR3p3b1JNOGdkbWswbWJlRGUvS2hVcjNZbG5JSVRCWGZKMEFJUEtHLzVJVFoxTGd6WndOM3FhOTA1SDRFCmp0anl1VUJpK29weWZMZGd4K0MwNWFEWDk1dU9vTXhpQ1djMFFyWEx1TitEYVNmSWhDUDBNOUhmeEljdWw1T0wKLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQo=", + "public_key_data": null, + "public_key_type": "TYPE_X509_PEM_FILE", + "service_account_id": "projects/gpl-sh-090-3/serviceAccounts/gitpod-db@gpl-sh-090-3.iam.gserviceaccount.com", + "valid_after": "2021-05-03T10:30:48Z", + "valid_before": "9999-12-31T23:59:59Z" + }, + "sensitive_attributes": [], + "private": "bnVsbA==", + "dependencies": [ + "module.database.google_service_account.gitpod_database" + ] + } + ] + }, + { + "module": "module.database", + "mode": "managed", + "type": "google_service_networking_connection", + "name": "gitpod", + "provider": "provider[\"registry.terraform.io/hashicorp/google\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "id": "projects%2Fgpl-sh-090-3%2Fglobal%2Fnetworks%2Fgitpod:servicenetworking.googleapis.com", + "network": "projects/gpl-sh-090-3/global/networks/gitpod", + "peering": "servicenetworking-googleapis-com", + "reserved_peering_ranges": [ + "gitpod-db" + ], + "service": "servicenetworking.googleapis.com", + "timeouts": null + }, + "sensitive_attributes": [], + "private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjo2MDAwMDAwMDAwMDAsImRlbGV0ZSI6NjAwMDAwMDAwMDAwLCJ1cGRhdGUiOjYwMDAwMDAwMDAwMH19", + "dependencies": [ + "google_compute_network.gitpod", + "module.database.google_compute_global_address.gitpod" + ] + } + ] + }, + { + "module": "module.database", + "mode": "managed", + "type": "google_sql_database", + "name": "gitpod", + "provider": "provider[\"registry.terraform.io/hashicorp/google\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "charset": "utf8mb4", + "collation": "utf8mb4_bin", + "id": "projects/gpl-sh-090-3/instances/gitpod-db-f68922fd/databases/gitpod", + "instance": "gitpod-db-f68922fd", + "name": "gitpod", + "project": "gpl-sh-090-3", + "self_link": "https://sqladmin.googleapis.com/sql/v1beta4/projects/gpl-sh-090-3/instances/gitpod-db-f68922fd/databases/gitpod", + "timeouts": null + }, + "sensitive_attributes": [], + "private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjo5MDAwMDAwMDAwMDAsImRlbGV0ZSI6NjAwMDAwMDAwMDAwLCJ1cGRhdGUiOjYwMDAwMDAwMDAwMH19", + "dependencies": [ + "google_compute_network.gitpod", + "module.database.google_compute_global_address.gitpod", + "module.database.google_service_networking_connection.gitpod", + "module.database.google_sql_database_instance.gitpod", + "module.database.random_id.database" + ] + } + ] + }, + { + "module": "module.database", + "mode": "managed", + "type": "google_sql_database", + "name": "gitpod_sessions", + "provider": "provider[\"registry.terraform.io/hashicorp/google\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "charset": "utf8mb4", + "collation": "utf8mb4_bin", + "id": "projects/gpl-sh-090-3/instances/gitpod-db-f68922fd/databases/gitpod-sessions", + "instance": "gitpod-db-f68922fd", + "name": "gitpod-sessions", + "project": "gpl-sh-090-3", + "self_link": "https://sqladmin.googleapis.com/sql/v1beta4/projects/gpl-sh-090-3/instances/gitpod-db-f68922fd/databases/gitpod-sessions", + "timeouts": null + }, + "sensitive_attributes": [], + "private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjo5MDAwMDAwMDAwMDAsImRlbGV0ZSI6NjAwMDAwMDAwMDAwLCJ1cGRhdGUiOjYwMDAwMDAwMDAwMH19", + "dependencies": [ + "google_compute_network.gitpod", + "module.database.google_compute_global_address.gitpod", + "module.database.google_service_networking_connection.gitpod", + "module.database.google_sql_database_instance.gitpod", + "module.database.random_id.database" + ] + } + ] + }, + { + "module": "module.database", + "mode": "managed", + "type": "google_sql_database_instance", + "name": "gitpod", + "provider": "provider[\"registry.terraform.io/hashicorp/google\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "clone": [], + "connection_name": "gpl-sh-090-3:europe-west3:gitpod-db-f68922fd", + "database_version": "MYSQL_5_7", + "deletion_protection": true, + "first_ip_address": "10.194.0.3", + "id": "gitpod-db-f68922fd", + "ip_address": [ + { + "ip_address": "10.194.0.3", + "time_to_retire": "", + "type": "PRIVATE" + } + ], + "master_instance_name": "", + "name": "gitpod-db-f68922fd", + "private_ip_address": "10.194.0.3", + "project": "gpl-sh-090-3", + "public_ip_address": "", + "region": "europe-west3", + "replica_configuration": [], + "restore_backup_context": [], + "root_password": null, + "self_link": "https://sqladmin.googleapis.com/sql/v1beta4/projects/gpl-sh-090-3/instances/gitpod-db-f68922fd", + "server_ca_cert": [ + { + "cert": "-----BEGIN CERTIFICATE-----\nMIIDfzCCAmegAwIBAgIBADANBgkqhkiG9w0BAQsFADB3MS0wKwYDVQQuEyRhN2Vh\nZGUwOS1mYzU5LTQ5NzQtOWIyNS1iOGIwODUxN2VmZmIxIzAhBgNVBAMTGkdvb2ds\nZSBDbG91ZCBTUUwgU2VydmVyIENBMRQwEgYDVQQKEwtHb29nbGUsIEluYzELMAkG\nA1UEBhMCVVMwHhcNMjEwNTAzMTAxMjA5WhcNMzEwNTAxMTAxMzA5WjB3MS0wKwYD\nVQQuEyRhN2VhZGUwOS1mYzU5LTQ5NzQtOWIyNS1iOGIwODUxN2VmZmIxIzAhBgNV\nBAMTGkdvb2dsZSBDbG91ZCBTUUwgU2VydmVyIENBMRQwEgYDVQQKEwtHb29nbGUs\nIEluYzELMAkGA1UEBhMCVVMwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIB\nAQDtV0orqDAe67zdZmszzvQFfnuohY7D0f9BG4XZJ/GXqticIwJlHoSf5aPShC4W\nY71IDnlKx/Dowypi6OoU6bJAglE7a04QbXkCdHTQhdQM2UDFp4E+FaCM3Vg2SuBK\nN+xe+zu06W/iOBeBLzuoZZD4Ni9UhaPWmIlDK8zGoYXOVC36nsYTbZww6hpGy/n3\n2aPZbomdOEOrzpRPvButPNfzpsbNLU3uRSCN0KjhUPW3adzJuj20eY8k7FcAsuIO\n+KR8KW3Jf5BIum/5XIHWZnBHyejfSLNV/CrbYTnuyyzp8JTyyfSW1ePJHlqa/O3w\npvSDCaTiYwonCdY+QOL19sRvAgMBAAGjFjAUMBIGA1UdEwEB/wQIMAYBAf8CAQAw\nDQYJKoZIhvcNAQELBQADggEBAETiPFxgc8L6MiAYQSgWwXxD85RRGGKYTc56WWPB\nwxGxZhF1NeQqsqMfBjya6Em1jv26pY1gjYCdSwPGKcSzGvN34ezpUA+Z794K/L8c\nPthvj4QqvaODXq6K3a/+d9MFEm0GVdHMumlqfhHu1n2ixk6IBRjEiEt5wRklheXL\nGxXi55dAj+yFQV9fOlbGPc5qaSajhw+28RuYow9QZzhsQEcXlrvlK46XWccC9QMi\nVAb1uS28cbhEjT3DlYqZqWMXYE1ZRrxIbaswnKZE7elAzeYp4bbzMvF7Mll6p4gc\nM7F63EMuGcdt9WMCw/Xzuw1OVgdwYbBWpfmEd+A6htGZvfM=\n-----END CERTIFICATE-----", + "common_name": "C=US,O=Google\\, Inc,CN=Google Cloud SQL Server CA,dnQualifier=a7eade09-fc59-4974-9b25-b8b08517effb", + "create_time": "2021-05-03T10:12:09.521Z", + "expiration_time": "2031-05-01T10:13:09.521Z", + "sha1_fingerprint": "2a5c815a3fc2206a7c9576a60becd33162c9a8be" + } + ], + "service_account_email_address": "p681006032247-4ppdj2@gcp-sa-cloud-sql.iam.gserviceaccount.com", + "settings": [ + { + "activation_policy": "ALWAYS", + "authorized_gae_applications": [], + "availability_type": "ZONAL", + "backup_configuration": [ + { + "backup_retention_settings": [ + { + "retained_backups": 7, + "retention_unit": "COUNT" + } + ], + "binary_log_enabled": false, + "enabled": false, + "location": "", + "point_in_time_recovery_enabled": false, + "start_time": "12:00", + "transaction_log_retention_days": 7 + } + ], + "crash_safe_replication": false, + "database_flags": [], + "disk_autoresize": true, + "disk_size": 10, + "disk_type": "PD_SSD", + "insights_config": [], + "ip_configuration": [ + { + "authorized_networks": [], + "ipv4_enabled": false, + "private_network": "projects/gpl-sh-090-3/global/networks/gitpod", + "require_ssl": false + } + ], + "location_preference": [ + { + "follow_gae_application": "", + "zone": "europe-west3-a" + } + ], + "maintenance_window": [], + "pricing_plan": "PER_USE", + "replication_type": "SYNCHRONOUS", + "tier": "db-f1-micro", + "user_labels": {}, + "version": 1 + } + ], + "timeouts": null + }, + "sensitive_attributes": [], + "private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjoxODAwMDAwMDAwMDAwLCJkZWxldGUiOjE4MDAwMDAwMDAwMDAsInVwZGF0ZSI6MTgwMDAwMDAwMDAwMH19", + "dependencies": [ + "google_compute_network.gitpod", + "module.database.google_compute_global_address.gitpod", + "module.database.google_service_networking_connection.gitpod", + "module.database.random_id.database" + ] + } + ] + }, + { + "module": "module.database", + "mode": "managed", + "type": "google_sql_user", + "name": "gitpod", + "provider": "provider[\"registry.terraform.io/hashicorp/google\"]", + "instances": [ + { + "schema_version": 1, + "attributes": { + "deletion_policy": null, + "host": "10.%", + "id": "gitpod/10.%/gitpod-db-f68922fd", + "instance": "gitpod-db-f68922fd", + "name": "gitpod", + "password": "kqbPzZLO29P%N_tq", + "project": "gpl-sh-090-3", + "timeouts": null, + "type": "" + }, + "sensitive_attributes": [], + "private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjo2MDAwMDAwMDAwMDAsImRlbGV0ZSI6NjAwMDAwMDAwMDAwLCJ1cGRhdGUiOjYwMDAwMDAwMDAwMH0sInNjaGVtYV92ZXJzaW9uIjoiMSJ9", + "dependencies": [ + "google_compute_network.gitpod", + "module.database.google_compute_global_address.gitpod", + "module.database.google_service_networking_connection.gitpod", + "module.database.google_sql_database_instance.gitpod", + "module.database.random_id.database", + "module.database.random_password.gitpod_db_user" + ] + } + ] + }, + { + "module": "module.database", + "mode": "managed", + "type": "kubernetes_job", + "name": "mysql_initializer", + "provider": "provider[\"registry.terraform.io/hashicorp/kubernetes\"]", + "instances": [ + { + "schema_version": 1, + "attributes": { + "id": "default/gitpod-db-initialization", + "metadata": [ + { + "annotations": {}, + "generate_name": "", + "generation": 0, + "labels": {}, + "name": "gitpod-db-initialization", + "namespace": "default", + "resource_version": "15615", + "self_link": "", + "uid": "42c0f374-55a0-4bb5-b903-b7b3c35974e3" + } + ], + "spec": [ + { + "active_deadline_seconds": 0, + "backoff_limit": 4, + "completions": 1, + "manual_selector": false, + "parallelism": 1, + "selector": [ + { + "match_expressions": [], + "match_labels": null + } + ], + "template": [ + { + "metadata": [ + { + "annotations": {}, + "generate_name": "", + "generation": 0, + "labels": {}, + "name": "", + "resource_version": "", + "self_link": "", + "uid": "" + } + ], + "spec": [ + { + "active_deadline_seconds": 0, + "affinity": [], + "automount_service_account_token": true, + "container": [ + { + "args": [], + "command": [ + "/init.sh", + "\u0026\u0026", + "echo", + "finished" + ], + "env": [ + { + "name": "MYSQL_HOST", + "value": "", + "value_from": [ + { + "config_map_key_ref": [], + "field_ref": [], + "resource_field_ref": [], + "secret_key_ref": [ + { + "key": "host", + "name": "gitpod-database", + "optional": false + } + ] + } + ] + }, + { + "name": "MYSQL_USER", + "value": "gitpod", + "value_from": [] + }, + { + "name": "MYSQL_PORT", + "value": "3306", + "value_from": [] + }, + { + "name": "MYSQL_ROOT_PASSWORD", + "value": "", + "value_from": [ + { + "config_map_key_ref": [], + "field_ref": [], + "resource_field_ref": [], + "secret_key_ref": [ + { + "key": "password", + "name": "gitpod-database", + "optional": false + } + ] + } + ] + } + ], + "env_from": [], + "image": "gcr.io/gitpod-io/db-migrations:v0.4.0-dev-selfhosted-gitpod-db-init.15", + "image_pull_policy": "IfNotPresent", + "lifecycle": [], + "liveness_probe": [], + "name": "db-initialization", + "port": [], + "readiness_probe": [], + "resources": [ + { + "limits": null, + "requests": null + } + ], + "security_context": [], + "startup_probe": [], + "stdin": false, + "stdin_once": false, + "termination_message_path": "/dev/termination-log", + "termination_message_policy": "File", + "tty": false, + "volume_mount": [], + "working_dir": "" + } + ], + "dns_config": [], + "dns_policy": "ClusterFirst", + "enable_service_links": true, + "host_aliases": [], + "host_ipc": false, + "host_network": false, + "host_pid": false, + "hostname": "", + "image_pull_secrets": [], + "init_container": [], + "node_name": "", + "node_selector": {}, + "priority_class_name": "", + "readiness_gate": [], + "restart_policy": "Never", + "security_context": [], + "service_account_name": "", + "share_process_namespace": false, + "subdomain": "", + "termination_grace_period_seconds": 30, + "toleration": [], + "topology_spread_constraint": [], + "volume": [] + } + ] + } + ], + "ttl_seconds_after_finished": "" + } + ], + "timeouts": null, + "wait_for_completion": true + }, + "sensitive_attributes": [], + "private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjo2MDAwMDAwMDAwMCwiZGVsZXRlIjo2MDAwMDAwMDAwMCwidXBkYXRlIjo2MDAwMDAwMDAwMH0sInNjaGVtYV92ZXJzaW9uIjoiMSJ9", + "dependencies": [ + "data.google_client_config.provider", + "google_compute_network.gitpod", + "module.kubernetes.google_compute_subnetwork.gitpod", + "module.kubernetes.google_container_cluster.gitpod" + ] + } + ] + }, + { + "module": "module.database", + "mode": "managed", + "type": "kubernetes_secret", + "name": "database", + "provider": "provider[\"registry.terraform.io/hashicorp/kubernetes\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "data": { + "credentials.json": "{\n \"type\": \"service_account\",\n \"project_id\": \"gpl-sh-090-3\",\n \"private_key_id\": \"f249e3f3120dd5453d3939cf2cfa4c086731bccc\",\n \"private_key\": \"-----BEGIN PRIVATE KEY-----\\nMIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQC5+b9Om6cAyoiN\\nwHUiqcaPU+8VX7iZzLUyux9YKr2w3ABysGjvDcj26xJ0moVSryqTrvloVJfelyFR\\nZqEM2mJLh5qZ/b1gfBQMWSbjU2pukoEWflK+7W/8uOEb3FzpXD0BQFAE1ni+DiT+\\nV6U5LtiAw6BhF1jYtpGLs8UVRZe9HhCEJc3PSvsCrxW0dOVQbR7/B1h0sBzx0Tiz\\nowXswzvakPVzYnkGcaRneOYRWZkDkzpPYqvOf/kGxsiG0a2sG/gfAFBrXw/M5yT+\\noZmH5UMAG+dcmDyfd3qBf9x9ZCTR4U2egeEn0kCA73vDjTiPxdltqSTYtKnCHc3U\\nELKxjJs1AgMBAAECggEAAMU7mShE61hrc2biNVgNtgdLfMOuQJjcAU9MJHHc4lAv\\nAkqfzKm6dOdpZqlDNyH5o638Y4XCMU5f+XXa4fI/qP9xUQT/lVg+PwTZh+SPEtEx\\njrXMQvU52wqrCBIEIoVazVgGXNbEnkjxt0oGqbN7eyEUV4KgwBkVhkYi4WEt7T8i\\nUksqiCgK5OD1y/MiBwd2GqJBXethwp4dSjXVEBR6oMz/NG18Z+GR1MTxLglepote\\nKG2j1rrRVyypIFujwK1Ek/ZdeoNbZ2SeiV587UAjsijrOYyQnHzMrKcCRDWnTmiH\\nH/ZBTLUBeHI3AHTor27Ug5XP4sUYFIxPpwkK/40/uwKBgQDw66UqK7pI5Pzf8oWj\\n8IgTkH696iDvefDgd4bVtE63Q9AR1X25IdamgYVTlUPAosAq4nUNyxZkBgE8Dt+t\\nD8Jv18O/4TDG7+sWb3/dtPTTK4u829TcJiy2P7Bfw/ELNZb61s7lVMZDTpWkbTOq\\nzYmdQXeL12QQahHJQAZ5DcriswKBgQDFnbM/25kiZX6n70K5cVleUW+drTZf6hYt\\nf2m4jb/BJIsjVZTCYCZXoGPTkMhZo0hDAaCErXXGCqvOdGTu3lWFO4D7NA8/MsR9\\n1Vr442CxjUPmLBmAe7vDXAoGLurVqaXBHDPqapE+TYVDnDWW3ZCs7iAuYQoFpP8Z\\nd5GARMLedwKBgHS96znlGI6sD3FBZsrLClVYpmHGqxEAKN3MbZTum1oozRFnP1XP\\ndOEYUA/xe3REKRReydPWPlJXqo98sZx9z308s4kuSOGNboBfpTk8r4oIRt1MNPg8\\ns1vYvtGY9Bu3ayK/pl/wVWZWFSMpG2k/0dhW2eP0inN9woKfuMM+ELsLAoGASfK1\\nPNQj/acVOipiQZqU4qJ+rfY/Pq0OF4ByQ0ln1BKkrlg8DnCEaI3wTR8EmeZsCAb3\\n1i5CwBUGLX+ItYolXnHh1h6pBfEtbhkErdYIPOir29nswROMM5KhfabY4ZNWH2k6\\nVCIEr9e6Yo51zzqiBNQm3rQZV/tiKll/7QvOEAkCgYBoZvo6mjywKdS7pWD8ROm7\\nUltNafVHpC3sc0WTlrRpZMpgOxfLnGr8BNxl9fFIZ+IAS4dEpZxWQgQ5Qz18KEzY\\n4ZNAKOB/ot39rj9PXvjD3dVga/x11e8lISfD2+8xmb1erPLDMpfkOuR0tsomM5H/\\nmXuumY/3H+lFagM6o4FOwg==\\n-----END PRIVATE KEY-----\\n\",\n \"client_email\": \"gitpod-db@gpl-sh-090-3.iam.gserviceaccount.com\",\n \"client_id\": \"114026934685529940940\",\n \"auth_uri\": \"https://accounts.google.com/o/oauth2/auth\",\n \"token_uri\": \"https://oauth2.googleapis.com/token\",\n \"auth_provider_x509_cert_url\": \"https://www.googleapis.com/oauth2/v1/certs\",\n \"client_x509_cert_url\": \"https://www.googleapis.com/robot/v1/metadata/x509/gitpod-db%40gpl-sh-090-3.iam.gserviceaccount.com\"\n}\n" + }, + "id": "default/gcloud-sql-token", + "metadata": [ + { + "annotations": {}, + "generate_name": "", + "generation": 0, + "labels": {}, + "name": "gcloud-sql-token", + "namespace": "default", + "resource_version": "13498", + "self_link": "", + "uid": "e0e84d80-0155-41df-8b3a-8a91cdcca53a" + } + ], + "type": "Opaque" + }, + "sensitive_attributes": [], + "private": "bnVsbA==", + "dependencies": [ + "data.google_client_config.provider", + "google_compute_network.gitpod", + "module.database.google_service_account.gitpod_database", + "module.database.google_service_account_key.gitpod_database", + "module.kubernetes.google_compute_subnetwork.gitpod", + "module.kubernetes.google_container_cluster.gitpod" + ] + } + ] + }, + { + "module": "module.database", + "mode": "managed", + "type": "kubernetes_secret", + "name": "gitpod_database", + "provider": "provider[\"registry.terraform.io/hashicorp/kubernetes\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "data": { + "host": "10.194.0.3", + "password": "kqbPzZLO29P%N_tq", + "user": "gitpod" + }, + "id": "default/gitpod-database", + "metadata": [ + { + "annotations": {}, + "generate_name": "", + "generation": 0, + "labels": {}, + "name": "gitpod-database", + "namespace": "default", + "resource_version": "10294", + "self_link": "", + "uid": "0968b070-098a-4c35-a12f-22eb4786c064" + } + ], + "type": "Opaque" + }, + "sensitive_attributes": [], + "private": "bnVsbA==", + "dependencies": [ + "data.google_client_config.provider", + "google_compute_network.gitpod", + "module.database.google_compute_global_address.gitpod", + "module.database.google_service_networking_connection.gitpod", + "module.database.google_sql_database_instance.gitpod", + "module.database.google_sql_user.gitpod", + "module.database.random_id.database", + "module.database.random_password.gitpod_db_user", + "module.kubernetes.google_compute_subnetwork.gitpod", + "module.kubernetes.google_container_cluster.gitpod" + ] + } + ] + }, + { + "module": "module.database", + "mode": "managed", + "type": "random_id", + "name": "database", + "provider": "provider[\"registry.terraform.io/hashicorp/random\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "b64_std": "9oki/Q==", + "b64_url": "9oki_Q", + "byte_length": 4, + "dec": "4136182525", + "hex": "f68922fd", + "id": "9oki_Q", + "keepers": null, + "prefix": null + }, + "sensitive_attributes": [], + "private": "bnVsbA==" + } + ] + }, + { + "module": "module.database", + "mode": "managed", + "type": "random_password", + "name": "gitpod_db_user", + "provider": "provider[\"registry.terraform.io/hashicorp/random\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "id": "none", + "keepers": null, + "length": 16, + "lower": true, + "min_lower": 0, + "min_numeric": 0, + "min_special": 0, + "min_upper": 0, + "number": true, + "override_special": "_%@", + "result": "kqbPzZLO29P%N_tq", + "special": true, + "upper": true + }, + "sensitive_attributes": [], + "private": "bnVsbA==" + } + ] + }, + { + "module": "module.dns", + "mode": "data", + "type": "template_file", + "name": "values", + "provider": "provider[\"registry.terraform.io/hashicorp/template\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "filename": null, + "id": "ce2b088886435098847ab6a3e962d4da983869be4db01c79a2562ef56ecc7ce9", + "rendered": "# Copyright (c) 2020 Gitpod GmbH. All rights reserved.\n# Licensed under the MIT License. See License-MIT.txt in the project root for license information.\n\nhostname: gpl.gitpod-self-hosted.com\ncomponents:\n proxy:\n loadBalancerIP: 35.242.237.190\n\nbranding:\n homepage: gpl.gitpod-self-hosted.com\n redirectUrlIfNotAuthenticated: /workspaces/\n redirectUrlAfterLogout: gpl.gitpod-self-hosted.com\n", + "template": "# Copyright (c) 2020 Gitpod GmbH. All rights reserved.\n# Licensed under the MIT License. See License-MIT.txt in the project root for license information.\n\nhostname: ${hostname}\ncomponents:\n proxy:\n loadBalancerIP: ${loadBalancerIP}\n\nbranding:\n homepage: ${hostname}\n redirectUrlIfNotAuthenticated: /workspaces/\n redirectUrlAfterLogout: ${hostname}\n", + "vars": { + "hostname": "gpl.gitpod-self-hosted.com", + "loadBalancerIP": "35.242.237.190" + } + }, + "sensitive_attributes": [] + } + ] + }, + { + "module": "module.dns", + "mode": "managed", + "type": "google_compute_address", + "name": "gitpod", + "provider": "provider[\"registry.terraform.io/hashicorp/google\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "address": "35.242.237.190", + "address_type": "EXTERNAL", + "creation_timestamp": "2021-05-03T03:42:08.267-07:00", + "description": "", + "id": "projects/gpl-sh-090-3/regions/europe-west3/addresses/gitpod-dns", + "name": "gitpod-dns", + "network_tier": "PREMIUM", + "project": "gpl-sh-090-3", + "purpose": "", + "region": "europe-west3", + "self_link": "https://www.googleapis.com/compute/v1/projects/gpl-sh-090-3/regions/europe-west3/addresses/gitpod-dns", + "subnetwork": "", + "timeouts": null, + "users": [] + }, + "sensitive_attributes": [], + "private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjoyNDAwMDAwMDAwMDAsImRlbGV0ZSI6MjQwMDAwMDAwMDAwfX0=" + } + ] + }, + { + "module": "module.dns", + "mode": "managed", + "type": "google_dns_managed_zone", + "name": "gitpod", + "provider": "provider[\"registry.terraform.io/hashicorp/google\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "description": "Gitpod DNS zone", + "dns_name": "gpl.gitpod-self-hosted.com.", + "dnssec_config": [], + "force_destroy": false, + "forwarding_config": [], + "id": "projects/gpl-sh-090-3/managedZones/gpl-gitpod-self-hosted-com", + "labels": {}, + "name": "gpl-gitpod-self-hosted-com", + "name_servers": [ + "ns-cloud-d1.googledomains.com.", + "ns-cloud-d2.googledomains.com.", + "ns-cloud-d3.googledomains.com.", + "ns-cloud-d4.googledomains.com." + ], + "peering_config": [], + "private_visibility_config": [], + "project": "gpl-sh-090-3", + "timeouts": null, + "visibility": "public" + }, + "sensitive_attributes": [], + "private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjoyNDAwMDAwMDAwMDAsImRlbGV0ZSI6MjQwMDAwMDAwMDAwLCJ1cGRhdGUiOjI0MDAwMDAwMDAwMH19" + } + ] + }, + { + "module": "module.dns", + "mode": "managed", + "type": "google_dns_record_set", + "name": "gitpod", + "provider": "provider[\"registry.terraform.io/hashicorp/google\"]", + "instances": [ + { + "index_key": 0, + "schema_version": 0, + "attributes": { + "id": "projects/gpl-sh-090-3/managedZones/gpl-gitpod-self-hosted-com/rrsets/gpl.gitpod-self-hosted.com./A", + "managed_zone": "gpl-gitpod-self-hosted-com", + "name": "gpl.gitpod-self-hosted.com.", + "project": "gpl-sh-090-3", + "rrdatas": [ + "35.242.237.190" + ], + "timeouts": null, + "ttl": 300, + "type": "A" + }, + "sensitive_attributes": [], + "private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjoyNDAwMDAwMDAwMDAsImRlbGV0ZSI6MjQwMDAwMDAwMDAwLCJ1cGRhdGUiOjI0MDAwMDAwMDAwMH19", + "dependencies": [ + "module.dns.google_compute_address.gitpod", + "module.dns.google_dns_managed_zone.gitpod" + ] + }, + { + "index_key": 1, + "schema_version": 0, + "attributes": { + "id": "projects/gpl-sh-090-3/managedZones/gpl-gitpod-self-hosted-com/rrsets/*.gpl.gitpod-self-hosted.com./A", + "managed_zone": "gpl-gitpod-self-hosted-com", + "name": "*.gpl.gitpod-self-hosted.com.", + "project": "gpl-sh-090-3", + "rrdatas": [ + "35.242.237.190" + ], + "timeouts": null, + "ttl": 300, + "type": "A" + }, + "sensitive_attributes": [], + "private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjoyNDAwMDAwMDAwMDAsImRlbGV0ZSI6MjQwMDAwMDAwMDAwLCJ1cGRhdGUiOjI0MDAwMDAwMDAwMH19", + "dependencies": [ + "module.dns.google_compute_address.gitpod", + "module.dns.google_dns_managed_zone.gitpod" + ] + }, + { + "index_key": 2, + "schema_version": 0, + "attributes": { + "id": "projects/gpl-sh-090-3/managedZones/gpl-gitpod-self-hosted-com/rrsets/*.ws.gpl.gitpod-self-hosted.com./A", + "managed_zone": "gpl-gitpod-self-hosted-com", + "name": "*.ws.gpl.gitpod-self-hosted.com.", + "project": "gpl-sh-090-3", + "rrdatas": [ + "35.242.237.190" + ], + "timeouts": null, + "ttl": 300, + "type": "A" + }, + "sensitive_attributes": [], + "private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjoyNDAwMDAwMDAwMDAsImRlbGV0ZSI6MjQwMDAwMDAwMDAwLCJ1cGRhdGUiOjI0MDAwMDAwMDAwMH19", + "dependencies": [ + "module.dns.google_compute_address.gitpod", + "module.dns.google_dns_managed_zone.gitpod" + ] + } + ] + }, + { + "module": "module.dns", + "mode": "managed", + "type": "google_project_iam_member", + "name": "dns", + "provider": "provider[\"registry.terraform.io/hashicorp/google\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "condition": [], + "etag": "BwXBasRJJWc=", + "id": "gpl-sh-090-3/roles/dns.admin/serviceAccount:gitpod-dns@gpl-sh-090-3.iam.gserviceaccount.com", + "member": "serviceAccount:gitpod-dns@gpl-sh-090-3.iam.gserviceaccount.com", + "project": "gpl-sh-090-3", + "role": "roles/dns.admin" + }, + "sensitive_attributes": [], + "private": "bnVsbA==", + "dependencies": [ + "module.dns.google_service_account.dns" + ] + } + ] + }, + { + "module": "module.dns", + "mode": "managed", + "type": "google_project_service", + "name": "dns", + "provider": "provider[\"registry.terraform.io/hashicorp/google\"]", + "instances": [ + { + "index_key": 0, + "schema_version": 0, + "attributes": { + "disable_dependent_services": false, + "disable_on_destroy": false, + "id": "gpl-sh-090-3/dns.googleapis.com", + "project": "gpl-sh-090-3", + "service": "dns.googleapis.com", + "timeouts": null + }, + "sensitive_attributes": [], + "private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjoxMjAwMDAwMDAwMDAwLCJkZWxldGUiOjEyMDAwMDAwMDAwMDAsInJlYWQiOjYwMDAwMDAwMDAwMCwidXBkYXRlIjoxMjAwMDAwMDAwMDAwfX0=" + }, + { + "index_key": 1, + "schema_version": 0, + "attributes": { + "disable_dependent_services": false, + "disable_on_destroy": false, + "id": "gpl-sh-090-3/compute.googleapis.com", + "project": "gpl-sh-090-3", + "service": "compute.googleapis.com", + "timeouts": null + }, + "sensitive_attributes": [], + "private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjoxMjAwMDAwMDAwMDAwLCJkZWxldGUiOjEyMDAwMDAwMDAwMDAsInJlYWQiOjYwMDAwMDAwMDAwMCwidXBkYXRlIjoxMjAwMDAwMDAwMDAwfX0=" + } + ] + }, + { + "module": "module.dns", + "mode": "managed", + "type": "google_service_account", + "name": "dns", + "provider": "provider[\"registry.terraform.io/hashicorp/google\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "account_id": "gitpod-dns", + "description": "Gitpod DNS Admin gitpod-dns", + "display_name": "gitpod-dns", + "email": "gitpod-dns@gpl-sh-090-3.iam.gserviceaccount.com", + "id": "projects/gpl-sh-090-3/serviceAccounts/gitpod-dns@gpl-sh-090-3.iam.gserviceaccount.com", + "name": "projects/gpl-sh-090-3/serviceAccounts/gitpod-dns@gpl-sh-090-3.iam.gserviceaccount.com", + "project": "gpl-sh-090-3", + "timeouts": null, + "unique_id": "101308488843856540721" + }, + "sensitive_attributes": [], + "private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjozMDAwMDAwMDAwMDB9fQ==" + } + ] + }, + { + "module": "module.dns", + "mode": "managed", + "type": "google_service_account_key", + "name": "dns", + "provider": "provider[\"registry.terraform.io/hashicorp/google\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "id": "projects/gpl-sh-090-3/serviceAccounts/gitpod-dns@gpl-sh-090-3.iam.gserviceaccount.com/keys/cb427556940495766c68b34d6ee05955bd50161e", + "keepers": null, + "key_algorithm": "KEY_ALG_RSA_2048", + "name": "projects/gpl-sh-090-3/serviceAccounts/gitpod-dns@gpl-sh-090-3.iam.gserviceaccount.com/keys/cb427556940495766c68b34d6ee05955bd50161e", + "private_key": "ewogICJ0eXBlIjogInNlcnZpY2VfYWNjb3VudCIsCiAgInByb2plY3RfaWQiOiAiZ3BsLXNoLTA5MC0zIiwKICAicHJpdmF0ZV9rZXlfaWQiOiAiY2I0Mjc1NTY5NDA0OTU3NjZjNjhiMzRkNmVlMDU5NTViZDUwMTYxZSIsCiAgInByaXZhdGVfa2V5IjogIi0tLS0tQkVHSU4gUFJJVkFURSBLRVktLS0tLVxuTUlJRXZ3SUJBREFOQmdrcWhraUc5dzBCQVFFRkFBU0NCS2t3Z2dTbEFnRUFBb0lCQVFDd3lGb01iQ2ZLc3JOTlxuM3dSWWt5bjZDV1EwN1Bad290SFdLbTlmZEpaSWhydjRHbFJyNkVaQzFDZWhHbjkzVEROekdBaTh0Y2VXeFpOdVxuQVpGWjRNLzJHM1JpdWRwa0xyRTBLMTU1c2Y1VzhndkVPVmZHSEVMS2gydUlmNkFNRnNSMUVYMXZ2YitBcHdVY1xud1pQK1B3b0RZRk52c3ZvbDNCaG1wSWxkS1Z2bTkrVUlkaU85RHFzbFd0VlgxRFRYUE5FY2pqbmtwblh3OHo4K1xuQUtJUjhEQ29RSmN6K2hCaGZ6d2RwNW1xTHpJaG9MS0hRQzdJNjBTTUJPMXJYeUtqSUFDbjhzUWVyL3lrNm1yYlxuTXU5THVCYUdCRmdDNE9zenFldkplVW4xRzRFSWs3VTVSSXdpWWFmb01QYzY5ZWhuT2huQ0gyZ2JGUUpKVW9rN1xublRCQjZoelhBZ01CQUFFQ2dnRUFGbzdQbVhEZVRhblZOMi9vYzJUK29PazhpdG14N2dMWXc5Q21aWWZRVUJ1TFxuNE1kN1U1NzZyWXhrMTM4MHhLNzBqR1hhRE9VbFBXMU9EV1lsMEtlSjRkMmUvRTlsanJobWp1eFBJZUxwNXRqN1xuL0xpcHovTWdrcmRmckF0SHRrTXhlUlFYbUNxZVJTRzFoVXN1UWUzSldVK2NBS1RWOFZRa2M1ODE2QUswWWhtMFxuS0JibVhNNmFhbXNZUjJFRnA3MGFLSnZveFcxTkR2L3JJTWFOS1g4Z24vblNETWFlZHFnZG5JS0N1NEJ5dHgwelxuaDNTdVBrNVJOc240RjZMb214VmRCaVpUaGFFSWR5aGZYQ1hyWnM0VjhYL05RdytIZE01a2szay81anc3a0RlV1xubHBCcXZaODJKRUp2UVhhUzV6UTRkNzVYZ1Z3QmJhcEp2QVp4S1BoZ0FRS0JnUURZM211OFlFeGZoNFFaS2hmVVxuOVJXcFZpMkNFMGllZ1l2VDFrNmxQS0Z0aHUvcUovbFJ0RXVneVdBRFVTbmdLU2NiTXpoZDZud0xZRWxIRkdzcVxuUmV1eXpFd1V4U0p1S0syWDF2akxBUStRUnhVZ2lOMFdYQ3cydHhlaUlVcFl3dmg3djFWNlV2TDZlNnliSmpwUlxuU2NCVFpGazRyQ2RtY3djeFFxSHRtcDl5T1FLQmdRRFFya1lMQVFQZXhOcVNKTXhOVkZxd2FwbW54dVVjeGQwbVxuZkdEb2JIRVFpNXVOZjM0ZGRDOFJaRWFoZ3JnbWVVczVlSzFiRUN3aXozam9rNE9pMytEME13OEt2U3NxZXI0WVxuR2tVRFA4Rnd0U0E3OWQ1STlEVy9JeG5nL0d6YmU0ejVzaldQYTl6RUxMNkpyUXRMR2Y0SG9mbFBjVVVJbWk0NFxuR3hrNVhZZkhqd0tCZ1FEQ0RKc1lEbzZuOStreVh5Qzk4Nkt6UjZJbXZyeCszK25PM2ZhM0VYNWNNNTVleGUvblxudE16ckRPVTFjcDFtcjB3SG9aZ3hLTXhmbllOVDc2aElSaEkxaFdvYU41NnNOUWZIVXBxQmd1eDdLNjl5MGlRSlxuaXVZZyswbFJVRHBuRytZZFRFSGUxM1FFdno3ZUFLR3o5S3I3czFIR1RQeGdSbExNT0JRT09BbXR1UUtCZ1FDSlxuV1ZzU25RMXVEMFVKRVoxQ2ZIWGdUWmxxdTFkTE05UVdJNkVvK1U4Rm84MnpPU25KdXhITHNhTm5aSUZPR1dGd1xucDBQNmZzOTk3ZTVYcmRmaldOVllCVTh1TTBuNUFLYWplSTdaejVuRFZBT3VVMnFGdSs2d0tpczdVUWxaQUozT1xuTHdSZnJJKzJzdmlKNTFKYWtQWUpFZ3ZreE5tNkNyakhCdGI0VWQ0dmN3S0JnUURIbGZhSUpsZ0VoQlYxeWR5R1xudWx3dVhxaGx1R2dBaUNodjRRMXZQZnJjTXNSTTFVb1BQZmFXeVdrWG5CYjl0NTByREFqQ0ozRlpNVk91Nnk0Q1xuME1Lc0RwSFNPeGNPbjcvU3pBTnlJZUlaK1U1dC9DNnNBemp6RWd5ekMxdmU3R3lTNmxLRHgzdDhmZWJRNEhlTlxuUnJrdzBZKzdEbE9IR0N4TDFpK01CNmV2RWc9PVxuLS0tLS1FTkQgUFJJVkFURSBLRVktLS0tLVxuIiwKICAiY2xpZW50X2VtYWlsIjogImdpdHBvZC1kbnNAZ3BsLXNoLTA5MC0zLmlhbS5nc2VydmljZWFjY291bnQuY29tIiwKICAiY2xpZW50X2lkIjogIjEwMTMwODQ4ODg0Mzg1NjU0MDcyMSIsCiAgImF1dGhfdXJpIjogImh0dHBzOi8vYWNjb3VudHMuZ29vZ2xlLmNvbS9vL29hdXRoMi9hdXRoIiwKICAidG9rZW5fdXJpIjogImh0dHBzOi8vb2F1dGgyLmdvb2dsZWFwaXMuY29tL3Rva2VuIiwKICAiYXV0aF9wcm92aWRlcl94NTA5X2NlcnRfdXJsIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL29hdXRoMi92MS9jZXJ0cyIsCiAgImNsaWVudF94NTA5X2NlcnRfdXJsIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3JvYm90L3YxL21ldGFkYXRhL3g1MDkvZ2l0cG9kLWRucyU0MGdwbC1zaC0wOTAtMy5pYW0uZ3NlcnZpY2VhY2NvdW50LmNvbSIKfQo=", + "private_key_type": "TYPE_GOOGLE_CREDENTIALS_FILE", + "public_key": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUMvRENDQWVTZ0F3SUJBZ0lJQmNTSm5xS2UwOTB3RFFZSktvWklodmNOQVFFRkJRQXdJREVlTUJ3R0ExVUUKQXhNVk1UQXhNekE0TkRnNE9EUXpPRFUyTlRRd056SXhNQ0FYRFRJeE1EVXdNekV3TkRneU5sb1lEems1T1RreApNak14TWpNMU9UVTVXakFnTVI0d0hBWURWUVFERXhVeE1ERXpNRGcwT0RnNE5ETTROVFkxTkRBM01qRXdnZ0VpCk1BMEdDU3FHU0liM0RRRUJBUVVBQTRJQkR3QXdnZ0VLQW9JQkFRQ3d5Rm9NYkNmS3NyTk4zd1JZa3luNkNXUTAKN1Bad290SFdLbTlmZEpaSWhydjRHbFJyNkVaQzFDZWhHbjkzVEROekdBaTh0Y2VXeFpOdUFaRlo0TS8yRzNSaQp1ZHBrTHJFMEsxNTVzZjVXOGd2RU9WZkdIRUxLaDJ1SWY2QU1Gc1IxRVgxdnZiK0Fwd1Vjd1pQK1B3b0RZRk52CnN2b2wzQmhtcElsZEtWdm05K1VJZGlPOURxc2xXdFZYMURUWFBORWNqam5rcG5Ydzh6OCtBS0lSOERDb1FKY3oKK2hCaGZ6d2RwNW1xTHpJaG9MS0hRQzdJNjBTTUJPMXJYeUtqSUFDbjhzUWVyL3lrNm1yYk11OUx1QmFHQkZnQwo0T3N6cWV2SmVVbjFHNEVJazdVNVJJd2lZYWZvTVBjNjllaG5PaG5DSDJnYkZRSkpVb2s3blRCQjZoelhBZ01CCkFBR2pPREEyTUF3R0ExVWRFd0VCL3dRQ01BQXdEZ1lEVlIwUEFRSC9CQVFEQWdlQU1CWUdBMVVkSlFFQi93UU0KTUFvR0NDc0dBUVVGQndNQ01BMEdDU3FHU0liM0RRRUJCUVVBQTRJQkFRQVV2Tk9CKzJ3THBxY2RjdmszUkw0ZwpLZ3R3dTdYM0hZY2xkRFA3NGs0VWpGZW1yNWpPU2RSNDNRTEFXOUhSdkptcWk2U3gydUFIeXJHRFlwdEdyMEFpCi9Ob0ZPVFRZRDlyUFRQb1dwYkpTT3EyRFYxWkNnZkpCMEt1NjNwdWRIZTJuL0ZqNmhIK2tONnZlT0p1SDZhc0oKbmRRUFIxWnl0cnhjTXd4UWZ1N1NGUzYrRlE5WU0yeFIyUjhSS0s4aThoSlBnSmZCZDV1UVI1dlVoSGpJSDZ3eApCR3o5RDlUb0sycFN2VHNEamM2cU5hbmw1eEdlUWFiQUNYTUsxUzZEWk9jTXlSK2MyNERKTTdCSzZWK28zUEZGCmZxWEV6M3Q4bHQxbHd1WkJETWlBS0d3OG83VmlZQUJLUlpINlZRWWt4ZWFLTFdIdmJYRnFZY0haU1Z1eGZHQ1YKLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQo=", + "public_key_data": null, + "public_key_type": "TYPE_X509_PEM_FILE", + "service_account_id": "projects/gpl-sh-090-3/serviceAccounts/gitpod-dns@gpl-sh-090-3.iam.gserviceaccount.com", + "valid_after": "2021-05-03T10:48:26Z", + "valid_before": "9999-12-31T23:59:59Z" + }, + "sensitive_attributes": [], + "private": "bnVsbA==", + "dependencies": [ + "module.dns.google_service_account.dns" + ] + } + ] + }, + { + "module": "module.dns", + "mode": "managed", + "type": "kubernetes_secret", + "name": "dns", + "provider": "provider[\"registry.terraform.io/hashicorp/kubernetes\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "data": { + "key.json": "{\n \"type\": \"service_account\",\n \"project_id\": \"gpl-sh-090-3\",\n \"private_key_id\": \"cb427556940495766c68b34d6ee05955bd50161e\",\n \"private_key\": \"-----BEGIN PRIVATE KEY-----\\nMIIEvwIBADANBgkqhkiG9w0BAQEFAASCBKkwggSlAgEAAoIBAQCwyFoMbCfKsrNN\\n3wRYkyn6CWQ07PZwotHWKm9fdJZIhrv4GlRr6EZC1CehGn93TDNzGAi8tceWxZNu\\nAZFZ4M/2G3RiudpkLrE0K155sf5W8gvEOVfGHELKh2uIf6AMFsR1EX1vvb+ApwUc\\nwZP+PwoDYFNvsvol3BhmpIldKVvm9+UIdiO9DqslWtVX1DTXPNEcjjnkpnXw8z8+\\nAKIR8DCoQJcz+hBhfzwdp5mqLzIhoLKHQC7I60SMBO1rXyKjIACn8sQer/yk6mrb\\nMu9LuBaGBFgC4OszqevJeUn1G4EIk7U5RIwiYafoMPc69ehnOhnCH2gbFQJJUok7\\nnTBB6hzXAgMBAAECggEAFo7PmXDeTanVN2/oc2T+oOk8itmx7gLYw9CmZYfQUBuL\\n4Md7U576rYxk1380xK70jGXaDOUlPW1ODWYl0KeJ4d2e/E9ljrhmjuxPIeLp5tj7\\n/Lipz/MgkrdfrAtHtkMxeRQXmCqeRSG1hUsuQe3JWU+cAKTV8VQkc5816AK0Yhm0\\nKBbmXM6aamsYR2EFp70aKJvoxW1NDv/rIMaNKX8gn/nSDMaedqgdnIKCu4Bytx0z\\nh3SuPk5RNsn4F6LomxVdBiZThaEIdyhfXCXrZs4V8X/NQw+HdM5kk3k/5jw7kDeW\\nlpBqvZ82JEJvQXaS5zQ4d75XgVwBbapJvAZxKPhgAQKBgQDY3mu8YExfh4QZKhfU\\n9RWpVi2CE0iegYvT1k6lPKFthu/qJ/lRtEugyWADUSngKScbMzhd6nwLYElHFGsq\\nReuyzEwUxSJuKK2X1vjLAQ+QRxUgiN0WXCw2txeiIUpYwvh7v1V6UvL6e6ybJjpR\\nScBTZFk4rCdmcwcxQqHtmp9yOQKBgQDQrkYLAQPexNqSJMxNVFqwapmnxuUcxd0m\\nfGDobHEQi5uNf34ddC8RZEahgrgmeUs5eK1bECwiz3jok4Oi3+D0Mw8KvSsqer4Y\\nGkUDP8FwtSA79d5I9DW/Ixng/Gzbe4z5sjWPa9zELL6JrQtLGf4HoflPcUUImi44\\nGxk5XYfHjwKBgQDCDJsYDo6n9+kyXyC986KzR6Imvrx+3+nO3fa3EX5cM55exe/n\\ntMzrDOU1cp1mr0wHoZgxKMxfnYNT76hIRhI1hWoaN56sNQfHUpqBgux7K69y0iQJ\\niuYg+0lRUDpnG+YdTEHe13QEvz7eAKGz9Kr7s1HGTPxgRlLMOBQOOAmtuQKBgQCJ\\nWVsSnQ1uD0UJEZ1CfHXgTZlqu1dLM9QWI6Eo+U8Fo82zOSnJuxHLsaNnZIFOGWFw\\np0P6fs997e5XrdfjWNVYBU8uM0n5AKajeI7Zz5nDVAOuU2qFu+6wKis7UQlZAJ3O\\nLwRfrI+2sviJ51JakPYJEgvkxNm6CrjHBtb4Ud4vcwKBgQDHlfaIJlgEhBV1ydyG\\nulwuXqhluGgAiChv4Q1vPfrcMsRM1UoPPfaWyWkXnBb9t50rDAjCJ3FZMVOu6y4C\\n0MKsDpHSOxcOn7/SzANyIeIZ+U5t/C6sAzjzEgyzC1ve7GyS6lKDx3t8febQ4HeN\\nRrkw0Y+7DlOHGCxL1i+MB6evEg==\\n-----END PRIVATE KEY-----\\n\",\n \"client_email\": \"gitpod-dns@gpl-sh-090-3.iam.gserviceaccount.com\",\n \"client_id\": \"101308488843856540721\",\n \"auth_uri\": \"https://accounts.google.com/o/oauth2/auth\",\n \"token_uri\": \"https://oauth2.googleapis.com/token\",\n \"auth_provider_x509_cert_url\": \"https://www.googleapis.com/oauth2/v1/certs\",\n \"client_x509_cert_url\": \"https://www.googleapis.com/robot/v1/metadata/x509/gitpod-dns%40gpl-sh-090-3.iam.gserviceaccount.com\"\n}\n" + }, + "id": "default/gitpod-dns", + "metadata": [ + { + "annotations": {}, + "generate_name": "", + "generation": 0, + "labels": {}, + "name": "gitpod-dns", + "namespace": "default", + "resource_version": "18799", + "self_link": "", + "uid": "8b374c9d-d5fa-4b68-bb55-b83a066f6997" + } + ], + "type": "Opaque" + }, + "sensitive_attributes": [], + "private": "bnVsbA==", + "dependencies": [ + "data.google_client_config.provider", + "google_compute_network.gitpod", + "module.dns.google_service_account.dns", + "module.dns.google_service_account_key.dns", + "module.kubernetes.google_compute_subnetwork.gitpod", + "module.kubernetes.google_container_cluster.gitpod" + ] + } + ] + }, + { + "module": "module.kubeconfig", + "mode": "data", + "type": "google_client_config", + "name": "provider", + "provider": "provider[\"registry.terraform.io/hashicorp/google\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "access_token": "ya29.a0AfH6SMDnz9lgXAyAmFMry2RBnNIyLuHF84vyGJHWVoaPjSH5DOBpVwSQT9JUOh5h_Fkq_NEV9dcsaTRB9zqDCvPlMlwEcM2dAwMkXKingXRUodaMc-ikBTrpTWGm-CBHeugutQbNAM7sm-x4mwfRFN5X4hsFszw", + "id": "projects/gpl-sh-090-3/regions/europe-west3/zones/", + "project": "gpl-sh-090-3", + "region": "europe-west3", + "zone": "" + }, + "sensitive_attributes": [] + } + ] + }, + { + "module": "module.kubeconfig", + "mode": "data", + "type": "google_container_cluster", + "name": "kubernetes", + "provider": "provider[\"registry.terraform.io/hashicorp/google\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "addons_config": [ + { + "cloudrun_config": [], + "horizontal_pod_autoscaling": [], + "http_load_balancing": [], + "network_policy_config": [ + { + "disabled": false + } + ] + } + ], + "authenticator_groups_config": [], + "cluster_autoscaling": [ + { + "auto_provisioning_defaults": [], + "enabled": false, + "resource_limits": [] + } + ], + "cluster_ipv4_cidr": "10.72.0.0/14", + "database_encryption": [ + { + "key_name": "", + "state": "DECRYPTED" + } + ], + "datapath_provider": "", + "default_max_pods_per_node": 110, + "default_snat_status": [ + { + "disabled": false + } + ], + "description": "", + "enable_autopilot": false, + "enable_binary_authorization": false, + "enable_intranode_visibility": false, + "enable_kubernetes_alpha": false, + "enable_legacy_abac": false, + "enable_shielded_nodes": false, + "enable_tpu": false, + "endpoint": "35.246.188.98", + "id": "projects/gpl-sh-090-3/locations/europe-west3/clusters/gitpod", + "initial_node_count": 1, + "instance_group_urls": [ + "https://www.googleapis.com/compute/v1/projects/gpl-sh-090-3/zones/europe-west3-a/instanceGroups/gke-gitpod-nodepool-0-55cc245a-grp", + "https://www.googleapis.com/compute/v1/projects/gpl-sh-090-3/zones/europe-west3-b/instanceGroups/gke-gitpod-nodepool-0-ab90e42d-grp", + "https://www.googleapis.com/compute/v1/projects/gpl-sh-090-3/zones/europe-west3-c/instanceGroups/gke-gitpod-nodepool-0-bd520db7-grp" + ], + "ip_allocation_policy": [ + { + "cluster_ipv4_cidr_block": "10.72.0.0/14", + "cluster_secondary_range_name": "gke-gitpod-pods-124423b3", + "services_ipv4_cidr_block": "10.76.0.0/20", + "services_secondary_range_name": "gke-gitpod-services-124423b3" + } + ], + "label_fingerprint": "a9dc16a7", + "location": "europe-west3", + "logging_service": "logging.googleapis.com/kubernetes", + "maintenance_policy": [], + "master_auth": [ + { + "client_certificate": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUMrekNDQWVPZ0F3SUJBZ0lRUHlqL1RIZE1XdmRtNnRsd3ZvK1EyakFOQmdrcWhraUc5dzBCQVFzRkFEQXYKTVMwd0t3WURWUVFERXlSbFltTTRNRFEwWkMxak1HVXpMVFJqTmpjdE9UQTBOeTFoWlRsaU56SXdaVEJsWldVdwpIaGNOTWpFd05UQXpNRGswTnpRMVdoY05Nall3TlRBeU1EazBOelExV2pBUk1ROHdEUVlEVlFRREV3WmpiR2xsCmJuUXdnZ0VpTUEwR0NTcUdTSWIzRFFFQkFRVUFBNElCRHdBd2dnRUtBb0lCQVFEWXFBNC9FOFhDV0EvUlo5bTcKTUZJVlpRVFQvUjQzYlhyVzk1cTBtOTBpRG93QzRNclVOeWdxTzRwaG5WM3dFOTFKR0o3ZExVck5ZaWxwd2tISwpJSlVLRmRwQ3pCeXpFT0dZdVhZbWRjUkNONWVRcFF3c1d3cm50MlE1RTgxbTBCemJQMkY1U3FiVmphVCs0OUIvCkhZUzFkS3ZyWXlWQW9DUzJWQmtCM1VuNXVPMXNMOFp0ZTljVldBbTNRM00xYit4UThhczcxMlVFaklJMXdlV0oKNU56Z1VxUnRFUVZFNkpjNVFub01LMXUrbXZQSm95T2I4OXAvSDhtbmpzQmUybGZ0RzFLNzQxM0szWEhqRlB4cwpnY1hpcnU3VUhNTDIzNG95a0RuVTdBQURkOGpoeEFqNDczY1Era0UwWHNwMVBFbVRSVUlsYVNJcXNUOG1GenB1CkhqeE5BZ01CQUFHak1UQXZNQXdHQTFVZEV3RUIvd1FDTUFBd0h3WURWUjBqQkJnd0ZvQVVSRXRTUWFNeGhEbWoKb29CTUpScERUZkVXRXpzd0RRWUpLb1pJaHZjTkFRRUxCUUFEZ2dFQkFDMHZYZnFEK2NyRTlCSit6amhQYW1oaQphcWlNdzE4emo0ZzZaeFMxRkc2aDlIVi90aUJ3YUZMMm92K0M4MzhmY2FJSis1Tm5xVjRPWHVFeDFoY1lLSWlPCnpPQUhNMjYrSjViUlpYYnVnWHEwdytldXQwQ2IzUTRHS0dGR2JFTVcwR1Q4RjgzR0kyZFcwRWU0Ujc2Z29ObnkKeVFLOFJZbmR0M2NveTBLTE52blBTKzJXWlpTM1lEQUR3UTlVTXdwRDV6TkJxVWpHWFd3N2RkOHE0MlN5d1lpdwp6ZkRlNmNrZjVQSE5aOXhFT091OFFKaGhEM3VPL0xRU1pwVlFIak53YmFUMEZwU3IvOFFXU3Jnbjd1blBPV2JpCmVlMkxmeU1UUXd4N0Y5S25lRWhyNzBwclhuK2lnenkzWXpBaFB4WTRYS0RlZ1MwTldHNWJMS0pUODFJMEV3Yz0KLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQo=", + "client_certificate_config": [ + { + "issue_client_certificate": true + } + ], + "client_key": "LS0tLS1CRUdJTiBSU0EgUFJJVkFURSBLRVktLS0tLQpNSUlFcEFJQkFBS0NBUUVBMktnT1B4UEZ3bGdQMFdmWnV6QlNGV1VFMC8wZU4yMTYxdmVhdEp2ZElnNk1BdURLCjFEY29LanVLWVoxZDhCUGRTUmllM1MxS3pXSXBhY0pCeWlDVkNoWGFRc3djc3hEaG1MbDJKblhFUWplWGtLVU0KTEZzSzU3ZGtPUlBOWnRBYzJ6OWhlVXFtMVkyay91UFFmeDJFdFhTcjYyTWxRS0FrdGxRWkFkMUorYmp0YkMvRwpiWHZYRlZnSnQwTnpOVy9zVVBHck85ZGxCSXlDTmNIbGllVGM0RktrYlJFRlJPaVhPVUo2REN0YnZwcnp5YU1qCm0vUGFmeC9KcDQ3QVh0cFg3UnRTdStOZHl0MXg0eFQ4YklIRjRxN3UxQnpDOXQrS01wQTUxT3dBQTNmSTRjUUkKK085M0VQcEJORjdLZFR4SmswVkNKV2tpS3JFL0poYzZiaDQ4VFFJREFRQUJBb0lCQUFlS29BWlRrSjV4ZE1tQQpBU3o2STExUnlSOTg3OVNUbDhOTVZxTURTdWtBMHlCVmhWSHFRcGhudnFzanNHMm5MMXg0UWkxbVFuU1FQbXRMClF3Ri9iVml1eG94dE1QR052S0NWa2hhSUltY0FxdUt5MEEvcU1tQzYrajdmWU5hN2wwbU5kUDNsR3BZVDZtS2gKK1BPM3loTUw1dUVZY0NkRis4a3A5NzNnSDA5VkwyUFpvczhQN0NiSU95RiswdFBRek8rZGFHcnVZYnBiZ1lXaQpMNnJ1S1ZZMkZUN21nV1hZc1NtVDZ6K1NmVjFYbmdsV2tLaTRCKzZaMzcwU2xGbURaRm1hRk9MQUQ5QjEvQXhtCm5MYllMSzd5NjBnMExzN3ZPWmh5SFhsdW1uT2J3N1dlZnl3Qi9mQnduUlMvWkNUOTZPOVEzMFd6MlJYQWdneTMKZGFWZWpNa0NnWUVBL1lDQVhMc0c4Q3FkR3grQXBmbWhuMzVONmhJSUpHcW9VM1g1bU9mVUFnaE01L2lqdEJueQowQk9KUDRxTW1WR2NZVnRJLzlEcVE5SllRbVhCa3J4c1BXb1pJeGRzT1dCSS9WVUxaZE5FRUlhajNkOUlnNnh1Cm1JTjVnS1QxQksrcWlzWUdHQStyVWxwZURzcjJySFNCSFk0TmpxMFNRMTZzM3BYaWRSVTQvQ2tDZ1lFQTJzcWIKRGlqOWdVQmQyeUFjdytkZjUzK1dRYXdlV1ZpLytqY0ZIY3ZxS2xaY3RmbmJBWUpCcWtiWTNhVmRBWkZpTGh5egpoZEFRNU5sTHkvRHduc1RoMzN3eTZ5MzN4Q2hrcGh6S1Q5STdtZWg1V2cycFdaNytuZys5OEYyb1JlYTZmcEF6CnkyM3liUDE0ZXhiWU5VMHNvajc1MjcrVnc5TTNmTHV3cGZId3c0VUNnWUIzMHovWmxVWW9TOXhMTDg3ZHBXdXkKT2orVi9zUCtnclBpRDRmVnNPOVRycHk3b1ptdnpmd3FRckhEYVRnZ1dLVTBsN09meUI2VHhGK1hzd1dXMkozSgpRZGR6OE9SbEVwQXR2djlPT0ZpWi95cUIrOE1KQ242VWRNRC8vL2taSi9mUzlOdDRrQitKSTlJRjZBWkZhaVNGCjFkbXVzVHhLdi91eWt1S2lPVS9nVVFLQmdRQzl2bC9pVStJbUtiQTd6UW1sVEE5OE1NWWFoaTU3eGVBWUc0Y3cKWkJ2Y1E3RjdrQWhDc3JoSDk5RXp4NmwxSnFSQzRWay9mMFpuY1p1dWJuSCsvemYwSFQzN2Y0NFViQU45bkJKSQpUMGFwSDFlK3BZSnMydHB1TWJERHVEV3JDWUpMS0x3Q2ZJTjF5Z3lta3hWR2hIdGs2Y0MrdHRRblZCSVc5cDhvCkN6NkdFUUtCZ1FEY3NVNHQrKzAvM3JQRm1peSt3czRPdVU4VEZRc3N2UnpIL0pFbGlhV2h0ZDFKNGxPRXhIZ3IKQ3h4eTg2YUFwRTVqeG1ndUpDYUNwNk9EMFl4ME5JTC9haVAvamRxRDZHdUxRMmVUUFN4T3BpTlRMS2UyRm8xUAphcVdES1BGZmFTaG9yYk1rSmt6ZUdzdUJWS1A1U0dsaHBzM0ZVcllVK2JiTUFxd2ZLc3JtVFE9PQotLS0tLUVORCBSU0EgUFJJVkFURSBLRVktLS0tLQo=", + "cluster_ca_certificate": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSURLakNDQWhLZ0F3SUJBZ0lRTUFaY0xPUnNhSmpCYzdENjRhRXlhVEFOQmdrcWhraUc5dzBCQVFzRkFEQXYKTVMwd0t3WURWUVFERXlSbFltTTRNRFEwWkMxak1HVXpMVFJqTmpjdE9UQTBOeTFoWlRsaU56SXdaVEJsWldVdwpIaGNOTWpFd05UQXpNRGcwTnpRMVdoY05Nall3TlRBeU1EazBOelExV2pBdk1TMHdLd1lEVlFRREV5UmxZbU00Ck1EUTBaQzFqTUdVekxUUmpOamN0T1RBME55MWhaVGxpTnpJd1pUQmxaV1V3Z2dFaU1BMEdDU3FHU0liM0RRRUIKQVFVQUE0SUJEd0F3Z2dFS0FvSUJBUUM3RTE3VE85ZmRPYitTQXZzZ21HcHNYd2htb3R2dm9IMEYvWGlVMFZPYgo1Slo3MGJtMk40WnBiaTJVMTNEWXJ4clg3WHh3VzRIcStIaC9qN1J1c3c0NVJ2SUVremk1ZXpHd09TaTJ0cms4CjYwM2F5bVhRT2d6NFJjQmtMeHVOWW9wd0xKY29qWk9zMktjUnFIeUhwMEZvSkJlMWdVVVdzSWJGdFZLQVM4RFEKM0VvMzJhbnpqcU5jdUhVVnExaEZtRDY1ZG9XNGJIeDNERHIxN2VYVi9leUJjY1BxQmNqUkJET0grV1dwR25zMApMRmdCZkZaWm82TkFsdlZMUk85MDlsMUVvL1l4WmpRMmE1cjlWMklyQktvK0gwSTd6N1hpYWY3b3R1UHVJaWE3Ck01S3JlZFZwNUVlZkFhbmtNS1h2T05RazJFYnlzeFlhbEhlQitkZ0Y2SXBuQWdNQkFBR2pRakJBTUE0R0ExVWQKRHdFQi93UUVBd0lDQkRBUEJnTlZIUk1CQWY4RUJUQURBUUgvTUIwR0ExVWREZ1FXQkJSRVMxSkJvekdFT2FPaQpnRXdsR2tOTjhSWVRPekFOQmdrcWhraUc5dzBCQVFzRkFBT0NBUUVBQ2I2NUdYR2lhSXpZQnlObkhQUHRJWVJPCnJmWUk0WHphaVNFNnkvNUYvUTRYajJHM0R4UzhFSWFJQzlaU202UFYyWkYwK1FDUUI0UDdWV3VNTFFVdElrL1UKSTNJWFdmQ05pU2ozc2tqZ3k2cDZwdUhkd3hIL0MrWkRuUDlERW16OXVSTjdsUmc0VXRzeHVBb3E3UkFCRktwZQpmRjRoTXVud2JINFZsN1NEN2YrWkVWd3hjZ3FuNHdLRERVYXMvc0hqQXAxVVFBUUc5K3RtcjFUdHBoTEwyREY0CkYvSVArWTFLV2kwVmU1aFFzMHZiak9wYWJCZDl0SVg0VFBHUGI3TS84ZmN5ajJsM0Fya1VWdUVKQ3ZCUExlTkcKaFBmWG1wS25QeDF3NGYyTnovYi9ic21RZmpOZ0Q1NVhubmY0UzNOTG1QTHg5NUhCYmNnSzJKZ3VmUUhnNnc9PQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCg==", + "password": "", + "username": "" + } + ], + "master_authorized_networks_config": [], + "master_version": "1.16.15-gke.14800", + "min_master_version": null, + "monitoring_service": "monitoring.googleapis.com/kubernetes", + "name": "gitpod", + "network": "projects/gpl-sh-090-3/global/networks/gitpod", + "network_policy": [ + { + "enabled": true, + "provider": "CALICO" + } + ], + "networking_mode": "VPC_NATIVE", + "node_config": [ + { + "disk_size_gb": 100, + "disk_type": "pd-ssd", + "guest_accelerator": [], + "image_type": "UBUNTU_CONTAINERD", + "labels": { + "gitpod.io/workload_meta": "true", + "gitpod.io/workload_workspace": "true" + }, + "local_ssd_count": 1, + "machine_type": "n2-standard-8", + "metadata": { + "disable-legacy-endpoints": "true" + }, + "min_cpu_platform": "", + "oauth_scopes": [ + "https://www.googleapis.com/auth/devstorage.read_write", + "https://www.googleapis.com/auth/logging.write", + "https://www.googleapis.com/auth/monitoring" + ], + "preemptible": false, + "service_account": "gitpod-nodes@gpl-sh-090-3.iam.gserviceaccount.com", + "shielded_instance_config": [ + { + "enable_integrity_monitoring": true, + "enable_secure_boot": false + } + ], + "tags": [], + "taint": [], + "workload_metadata_config": [ + { + "node_metadata": "SECURE" + } + ] + } + ], + "node_locations": [ + "europe-west3-a", + "europe-west3-b", + "europe-west3-c" + ], + "node_pool": [ + { + "autoscaling": [], + "initial_node_count": 1, + "instance_group_urls": [ + "https://www.googleapis.com/compute/v1/projects/gpl-sh-090-3/zones/europe-west3-a/instanceGroupManagers/gke-gitpod-nodepool-0-55cc245a-grp", + "https://www.googleapis.com/compute/v1/projects/gpl-sh-090-3/zones/europe-west3-b/instanceGroupManagers/gke-gitpod-nodepool-0-ab90e42d-grp", + "https://www.googleapis.com/compute/v1/projects/gpl-sh-090-3/zones/europe-west3-c/instanceGroupManagers/gke-gitpod-nodepool-0-bd520db7-grp" + ], + "management": [ + { + "auto_repair": true, + "auto_upgrade": true + } + ], + "max_pods_per_node": 110, + "name": "nodepool-0", + "name_prefix": "", + "node_config": [ + { + "disk_size_gb": 100, + "disk_type": "pd-ssd", + "guest_accelerator": [], + "image_type": "UBUNTU_CONTAINERD", + "labels": { + "gitpod.io/workload_meta": "true", + "gitpod.io/workload_workspace": "true" + }, + "local_ssd_count": 1, + "machine_type": "n2-standard-8", + "metadata": { + "disable-legacy-endpoints": "true" + }, + "min_cpu_platform": "", + "oauth_scopes": [ + "https://www.googleapis.com/auth/devstorage.read_write", + "https://www.googleapis.com/auth/logging.write", + "https://www.googleapis.com/auth/monitoring" + ], + "preemptible": false, + "service_account": "gitpod-nodes@gpl-sh-090-3.iam.gserviceaccount.com", + "shielded_instance_config": [ + { + "enable_integrity_monitoring": true, + "enable_secure_boot": false + } + ], + "tags": [], + "taint": [], + "workload_metadata_config": [ + { + "node_metadata": "SECURE" + } + ] + } + ], + "node_count": 1, + "node_locations": [ + "europe-west3-a", + "europe-west3-b", + "europe-west3-c" + ], + "upgrade_settings": [ + { + "max_surge": 1, + "max_unavailable": 0 + } + ], + "version": "1.16.15-gke.14800" + } + ], + "node_version": "1.16.15-gke.14800", + "operation": null, + "pod_security_policy_config": null, + "private_cluster_config": [], + "private_ipv6_google_access": "", + "project": "gpl-sh-090-3", + "release_channel": [ + { + "channel": "UNSPECIFIED" + } + ], + "remove_default_node_pool": null, + "resource_labels": {}, + "resource_usage_export_config": [], + "self_link": "https://container.googleapis.com/v1beta1/projects/gpl-sh-090-3/locations/europe-west3/clusters/gitpod", + "services_ipv4_cidr": "10.76.0.0/20", + "subnetwork": "projects/gpl-sh-090-3/regions/europe-west3/subnetworks/gitpod-subnet", + "tpu_ipv4_cidr_block": "", + "vertical_pod_autoscaling": [], + "workload_identity_config": [] + }, + "sensitive_attributes": [] + } + ] + }, + { + "module": "module.kubeconfig", + "mode": "data", + "type": "template_file", + "name": "kubeconfig", + "provider": "provider[\"registry.terraform.io/hashicorp/template\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "filename": null, + "id": "ff5a9384aaa12588f3625c6a9387215a76dcd5b65c2dc9ed64e85b591f59b26c", + "rendered": "# Copyright (c) 2020 Gitpod GmbH. All rights reserved.\n# Licensed under the MIT License. See License-MIT.txt in the project root for license information.\n\n\napiVersion: v1\nclusters:\n- cluster:\n certificate-authority-data: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSURLakNDQWhLZ0F3SUJBZ0lRTUFaY0xPUnNhSmpCYzdENjRhRXlhVEFOQmdrcWhraUc5dzBCQVFzRkFEQXYKTVMwd0t3WURWUVFERXlSbFltTTRNRFEwWkMxak1HVXpMVFJqTmpjdE9UQTBOeTFoWlRsaU56SXdaVEJsWldVdwpIaGNOTWpFd05UQXpNRGcwTnpRMVdoY05Nall3TlRBeU1EazBOelExV2pBdk1TMHdLd1lEVlFRREV5UmxZbU00Ck1EUTBaQzFqTUdVekxUUmpOamN0T1RBME55MWhaVGxpTnpJd1pUQmxaV1V3Z2dFaU1BMEdDU3FHU0liM0RRRUIKQVFVQUE0SUJEd0F3Z2dFS0FvSUJBUUM3RTE3VE85ZmRPYitTQXZzZ21HcHNYd2htb3R2dm9IMEYvWGlVMFZPYgo1Slo3MGJtMk40WnBiaTJVMTNEWXJ4clg3WHh3VzRIcStIaC9qN1J1c3c0NVJ2SUVremk1ZXpHd09TaTJ0cms4CjYwM2F5bVhRT2d6NFJjQmtMeHVOWW9wd0xKY29qWk9zMktjUnFIeUhwMEZvSkJlMWdVVVdzSWJGdFZLQVM4RFEKM0VvMzJhbnpqcU5jdUhVVnExaEZtRDY1ZG9XNGJIeDNERHIxN2VYVi9leUJjY1BxQmNqUkJET0grV1dwR25zMApMRmdCZkZaWm82TkFsdlZMUk85MDlsMUVvL1l4WmpRMmE1cjlWMklyQktvK0gwSTd6N1hpYWY3b3R1UHVJaWE3Ck01S3JlZFZwNUVlZkFhbmtNS1h2T05RazJFYnlzeFlhbEhlQitkZ0Y2SXBuQWdNQkFBR2pRakJBTUE0R0ExVWQKRHdFQi93UUVBd0lDQkRBUEJnTlZIUk1CQWY4RUJUQURBUUgvTUIwR0ExVWREZ1FXQkJSRVMxSkJvekdFT2FPaQpnRXdsR2tOTjhSWVRPekFOQmdrcWhraUc5dzBCQVFzRkFBT0NBUUVBQ2I2NUdYR2lhSXpZQnlObkhQUHRJWVJPCnJmWUk0WHphaVNFNnkvNUYvUTRYajJHM0R4UzhFSWFJQzlaU202UFYyWkYwK1FDUUI0UDdWV3VNTFFVdElrL1UKSTNJWFdmQ05pU2ozc2tqZ3k2cDZwdUhkd3hIL0MrWkRuUDlERW16OXVSTjdsUmc0VXRzeHVBb3E3UkFCRktwZQpmRjRoTXVud2JINFZsN1NEN2YrWkVWd3hjZ3FuNHdLRERVYXMvc0hqQXAxVVFBUUc5K3RtcjFUdHBoTEwyREY0CkYvSVArWTFLV2kwVmU1aFFzMHZiak9wYWJCZDl0SVg0VFBHUGI3TS84ZmN5ajJsM0Fya1VWdUVKQ3ZCUExlTkcKaFBmWG1wS25QeDF3NGYyTnovYi9ic21RZmpOZ0Q1NVhubmY0UzNOTG1QTHg5NUhCYmNnSzJKZ3VmUUhnNnc9PQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCg==\n server: https://35.246.188.98\n name: gitpod-cluster\ncontexts:\n- context:\n cluster: gitpod-cluster\n namespace: default\n user: gitpod-user\n name: gitpod\ncurrent-context: gitpod\nkind: Config\npreferences: {}\nusers:\n- name: gitpod-user\n user:\n auth-provider:\n name: gcp\n access-token: ya29.a0AfH6SMDnz9lgXAyAmFMry2RBnNIyLuHF84vyGJHWVoaPjSH5DOBpVwSQT9JUOh5h_Fkq_NEV9dcsaTRB9zqDCvPlMlwEcM2dAwMkXKingXRUodaMc-ikBTrpTWGm-CBHeugutQbNAM7sm-x4mwfRFN5X4hsFszw\n", + "template": "# Copyright (c) 2020 Gitpod GmbH. All rights reserved.\n# Licensed under the MIT License. See License-MIT.txt in the project root for license information.\n\n\napiVersion: v1\nclusters:\n- cluster:\n certificate-authority-data: ${cluster_ca_certificate}\n server: https://${host}\n name: ${name}-cluster\ncontexts:\n- context:\n cluster: ${name}-cluster\n namespace: ${namespace}\n user: ${name}-user\n name: ${name}\ncurrent-context: ${name}\nkind: Config\npreferences: {}\nusers:\n- name: ${name}-user\n user:\n auth-provider:\n name: gcp\n access-token: ${token}\n", + "vars": { + "cluster_ca_certificate": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSURLakNDQWhLZ0F3SUJBZ0lRTUFaY0xPUnNhSmpCYzdENjRhRXlhVEFOQmdrcWhraUc5dzBCQVFzRkFEQXYKTVMwd0t3WURWUVFERXlSbFltTTRNRFEwWkMxak1HVXpMVFJqTmpjdE9UQTBOeTFoWlRsaU56SXdaVEJsWldVdwpIaGNOTWpFd05UQXpNRGcwTnpRMVdoY05Nall3TlRBeU1EazBOelExV2pBdk1TMHdLd1lEVlFRREV5UmxZbU00Ck1EUTBaQzFqTUdVekxUUmpOamN0T1RBME55MWhaVGxpTnpJd1pUQmxaV1V3Z2dFaU1BMEdDU3FHU0liM0RRRUIKQVFVQUE0SUJEd0F3Z2dFS0FvSUJBUUM3RTE3VE85ZmRPYitTQXZzZ21HcHNYd2htb3R2dm9IMEYvWGlVMFZPYgo1Slo3MGJtMk40WnBiaTJVMTNEWXJ4clg3WHh3VzRIcStIaC9qN1J1c3c0NVJ2SUVremk1ZXpHd09TaTJ0cms4CjYwM2F5bVhRT2d6NFJjQmtMeHVOWW9wd0xKY29qWk9zMktjUnFIeUhwMEZvSkJlMWdVVVdzSWJGdFZLQVM4RFEKM0VvMzJhbnpqcU5jdUhVVnExaEZtRDY1ZG9XNGJIeDNERHIxN2VYVi9leUJjY1BxQmNqUkJET0grV1dwR25zMApMRmdCZkZaWm82TkFsdlZMUk85MDlsMUVvL1l4WmpRMmE1cjlWMklyQktvK0gwSTd6N1hpYWY3b3R1UHVJaWE3Ck01S3JlZFZwNUVlZkFhbmtNS1h2T05RazJFYnlzeFlhbEhlQitkZ0Y2SXBuQWdNQkFBR2pRakJBTUE0R0ExVWQKRHdFQi93UUVBd0lDQkRBUEJnTlZIUk1CQWY4RUJUQURBUUgvTUIwR0ExVWREZ1FXQkJSRVMxSkJvekdFT2FPaQpnRXdsR2tOTjhSWVRPekFOQmdrcWhraUc5dzBCQVFzRkFBT0NBUUVBQ2I2NUdYR2lhSXpZQnlObkhQUHRJWVJPCnJmWUk0WHphaVNFNnkvNUYvUTRYajJHM0R4UzhFSWFJQzlaU202UFYyWkYwK1FDUUI0UDdWV3VNTFFVdElrL1UKSTNJWFdmQ05pU2ozc2tqZ3k2cDZwdUhkd3hIL0MrWkRuUDlERW16OXVSTjdsUmc0VXRzeHVBb3E3UkFCRktwZQpmRjRoTXVud2JINFZsN1NEN2YrWkVWd3hjZ3FuNHdLRERVYXMvc0hqQXAxVVFBUUc5K3RtcjFUdHBoTEwyREY0CkYvSVArWTFLV2kwVmU1aFFzMHZiak9wYWJCZDl0SVg0VFBHUGI3TS84ZmN5ajJsM0Fya1VWdUVKQ3ZCUExlTkcKaFBmWG1wS25QeDF3NGYyTnovYi9ic21RZmpOZ0Q1NVhubmY0UzNOTG1QTHg5NUhCYmNnSzJKZ3VmUUhnNnc9PQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCg==", + "host": "35.246.188.98", + "name": "gitpod", + "namespace": "default", + "token": "ya29.a0AfH6SMDnz9lgXAyAmFMry2RBnNIyLuHF84vyGJHWVoaPjSH5DOBpVwSQT9JUOh5h_Fkq_NEV9dcsaTRB9zqDCvPlMlwEcM2dAwMkXKingXRUodaMc-ikBTrpTWGm-CBHeugutQbNAM7sm-x4mwfRFN5X4hsFszw" + } + }, + "sensitive_attributes": [] + } + ] + }, + { + "module": "module.kubeconfig", + "mode": "managed", + "type": "local_file", + "name": "kubeconfig", + "provider": "provider[\"registry.terraform.io/hashicorp/local\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "content": "# Copyright (c) 2020 Gitpod GmbH. All rights reserved.\n# Licensed under the MIT License. See License-MIT.txt in the project root for license information.\n\n\napiVersion: v1\nclusters:\n- cluster:\n certificate-authority-data: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSURLakNDQWhLZ0F3SUJBZ0lRTUFaY0xPUnNhSmpCYzdENjRhRXlhVEFOQmdrcWhraUc5dzBCQVFzRkFEQXYKTVMwd0t3WURWUVFERXlSbFltTTRNRFEwWkMxak1HVXpMVFJqTmpjdE9UQTBOeTFoWlRsaU56SXdaVEJsWldVdwpIaGNOTWpFd05UQXpNRGcwTnpRMVdoY05Nall3TlRBeU1EazBOelExV2pBdk1TMHdLd1lEVlFRREV5UmxZbU00Ck1EUTBaQzFqTUdVekxUUmpOamN0T1RBME55MWhaVGxpTnpJd1pUQmxaV1V3Z2dFaU1BMEdDU3FHU0liM0RRRUIKQVFVQUE0SUJEd0F3Z2dFS0FvSUJBUUM3RTE3VE85ZmRPYitTQXZzZ21HcHNYd2htb3R2dm9IMEYvWGlVMFZPYgo1Slo3MGJtMk40WnBiaTJVMTNEWXJ4clg3WHh3VzRIcStIaC9qN1J1c3c0NVJ2SUVremk1ZXpHd09TaTJ0cms4CjYwM2F5bVhRT2d6NFJjQmtMeHVOWW9wd0xKY29qWk9zMktjUnFIeUhwMEZvSkJlMWdVVVdzSWJGdFZLQVM4RFEKM0VvMzJhbnpqcU5jdUhVVnExaEZtRDY1ZG9XNGJIeDNERHIxN2VYVi9leUJjY1BxQmNqUkJET0grV1dwR25zMApMRmdCZkZaWm82TkFsdlZMUk85MDlsMUVvL1l4WmpRMmE1cjlWMklyQktvK0gwSTd6N1hpYWY3b3R1UHVJaWE3Ck01S3JlZFZwNUVlZkFhbmtNS1h2T05RazJFYnlzeFlhbEhlQitkZ0Y2SXBuQWdNQkFBR2pRakJBTUE0R0ExVWQKRHdFQi93UUVBd0lDQkRBUEJnTlZIUk1CQWY4RUJUQURBUUgvTUIwR0ExVWREZ1FXQkJSRVMxSkJvekdFT2FPaQpnRXdsR2tOTjhSWVRPekFOQmdrcWhraUc5dzBCQVFzRkFBT0NBUUVBQ2I2NUdYR2lhSXpZQnlObkhQUHRJWVJPCnJmWUk0WHphaVNFNnkvNUYvUTRYajJHM0R4UzhFSWFJQzlaU202UFYyWkYwK1FDUUI0UDdWV3VNTFFVdElrL1UKSTNJWFdmQ05pU2ozc2tqZ3k2cDZwdUhkd3hIL0MrWkRuUDlERW16OXVSTjdsUmc0VXRzeHVBb3E3UkFCRktwZQpmRjRoTXVud2JINFZsN1NEN2YrWkVWd3hjZ3FuNHdLRERVYXMvc0hqQXAxVVFBUUc5K3RtcjFUdHBoTEwyREY0CkYvSVArWTFLV2kwVmU1aFFzMHZiak9wYWJCZDl0SVg0VFBHUGI3TS84ZmN5ajJsM0Fya1VWdUVKQ3ZCUExlTkcKaFBmWG1wS25QeDF3NGYyTnovYi9ic21RZmpOZ0Q1NVhubmY0UzNOTG1QTHg5NUhCYmNnSzJKZ3VmUUhnNnc9PQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCg==\n server: https://35.246.188.98\n name: gitpod-cluster\ncontexts:\n- context:\n cluster: gitpod-cluster\n namespace: default\n user: gitpod-user\n name: gitpod\ncurrent-context: gitpod\nkind: Config\npreferences: {}\nusers:\n- name: gitpod-user\n user:\n auth-provider:\n name: gcp\n access-token: ya29.a0AfH6SMDnz9lgXAyAmFMry2RBnNIyLuHF84vyGJHWVoaPjSH5DOBpVwSQT9JUOh5h_Fkq_NEV9dcsaTRB9zqDCvPlMlwEcM2dAwMkXKingXRUodaMc-ikBTrpTWGm-CBHeugutQbNAM7sm-x4mwfRFN5X4hsFszw\n", + "content_base64": null, + "directory_permission": "0777", + "file_permission": "400", + "filename": "./secrets/kubeconfig", + "id": "4b67e597bb472fb444f634d92e97746eae557ebb", + "sensitive_content": null, + "source": null + }, + "sensitive_attributes": [], + "private": "bnVsbA==", + "dependencies": [ + "google_compute_network.gitpod", + "module.kubeconfig.data.template_file.kubeconfig", + "module.kubernetes.google_compute_subnetwork.gitpod", + "module.kubernetes.google_container_cluster.gitpod", + "module.kubernetes.google_container_node_pool.gitpod", + "module.kubernetes.google_project_iam_member.gitpod", + "module.kubernetes.google_project_service.kubernetes", + "module.kubernetes.google_service_account.gitpod" + ] + } + ] + }, + { + "module": "module.kubernetes", + "mode": "managed", + "type": "google_compute_subnetwork", + "name": "gitpod", + "provider": "provider[\"registry.terraform.io/hashicorp/google\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "creation_timestamp": "2021-05-03T02:47:23.520-07:00", + "description": "", + "fingerprint": null, + "gateway_address": "10.23.0.1", + "id": "projects/gpl-sh-090-3/regions/europe-west3/subnetworks/gitpod-subnet", + "ip_cidr_range": "10.23.0.0/16", + "log_config": [], + "name": "gitpod-subnet", + "network": "https://www.googleapis.com/compute/v1/projects/gpl-sh-090-3/global/networks/gitpod", + "private_ip_google_access": true, + "private_ipv6_google_access": "DISABLE_GOOGLE_ACCESS", + "project": "gpl-sh-090-3", + "region": "europe-west3", + "secondary_ip_range": [ + { + "ip_cidr_range": "10.72.0.0/14", + "range_name": "gke-gitpod-pods-124423b3" + }, + { + "ip_cidr_range": "10.76.0.0/20", + "range_name": "gke-gitpod-services-124423b3" + } + ], + "self_link": "https://www.googleapis.com/compute/v1/projects/gpl-sh-090-3/regions/europe-west3/subnetworks/gitpod-subnet", + "timeouts": null + }, + "sensitive_attributes": [], + "private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjozNjAwMDAwMDAwMDAsImRlbGV0ZSI6MzYwMDAwMDAwMDAwLCJ1cGRhdGUiOjM2MDAwMDAwMDAwMH19", + "dependencies": [ + "google_compute_network.gitpod" + ] + } + ] + }, + { + "module": "module.kubernetes", + "mode": "managed", + "type": "google_container_cluster", + "name": "gitpod", + "provider": "provider[\"registry.terraform.io/hashicorp/google\"]", + "instances": [ + { + "schema_version": 1, + "attributes": { + "addons_config": [ + { + "cloudrun_config": [], + "horizontal_pod_autoscaling": [], + "http_load_balancing": [], + "network_policy_config": [ + { + "disabled": false + } + ] + } + ], + "authenticator_groups_config": [], + "cluster_autoscaling": [ + { + "auto_provisioning_defaults": [], + "enabled": false, + "resource_limits": [] + } + ], + "cluster_ipv4_cidr": "10.72.0.0/14", + "database_encryption": [ + { + "key_name": "", + "state": "DECRYPTED" + } + ], + "datapath_provider": "", + "default_max_pods_per_node": 110, + "default_snat_status": [ + { + "disabled": false + } + ], + "description": "", + "enable_autopilot": false, + "enable_binary_authorization": false, + "enable_intranode_visibility": false, + "enable_kubernetes_alpha": false, + "enable_legacy_abac": false, + "enable_shielded_nodes": false, + "enable_tpu": false, + "endpoint": "35.246.188.98", + "id": "projects/gpl-sh-090-3/locations/europe-west3/clusters/gitpod", + "initial_node_count": 1, + "instance_group_urls": [ + "https://www.googleapis.com/compute/v1/projects/gpl-sh-090-3/zones/europe-west3-a/instanceGroups/gke-gitpod-nodepool-0-55cc245a-grp", + "https://www.googleapis.com/compute/v1/projects/gpl-sh-090-3/zones/europe-west3-b/instanceGroups/gke-gitpod-nodepool-0-ab90e42d-grp", + "https://www.googleapis.com/compute/v1/projects/gpl-sh-090-3/zones/europe-west3-c/instanceGroups/gke-gitpod-nodepool-0-bd520db7-grp" + ], + "ip_allocation_policy": [ + { + "cluster_ipv4_cidr_block": "10.72.0.0/14", + "cluster_secondary_range_name": "gke-gitpod-pods-124423b3", + "services_ipv4_cidr_block": "10.76.0.0/20", + "services_secondary_range_name": "gke-gitpod-services-124423b3" + } + ], + "label_fingerprint": "a9dc16a7", + "location": "europe-west3", + "logging_service": "logging.googleapis.com/kubernetes", + "maintenance_policy": [], + "master_auth": [ + { + "client_certificate": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUMrekNDQWVPZ0F3SUJBZ0lRUHlqL1RIZE1XdmRtNnRsd3ZvK1EyakFOQmdrcWhraUc5dzBCQVFzRkFEQXYKTVMwd0t3WURWUVFERXlSbFltTTRNRFEwWkMxak1HVXpMVFJqTmpjdE9UQTBOeTFoWlRsaU56SXdaVEJsWldVdwpIaGNOTWpFd05UQXpNRGswTnpRMVdoY05Nall3TlRBeU1EazBOelExV2pBUk1ROHdEUVlEVlFRREV3WmpiR2xsCmJuUXdnZ0VpTUEwR0NTcUdTSWIzRFFFQkFRVUFBNElCRHdBd2dnRUtBb0lCQVFEWXFBNC9FOFhDV0EvUlo5bTcKTUZJVlpRVFQvUjQzYlhyVzk1cTBtOTBpRG93QzRNclVOeWdxTzRwaG5WM3dFOTFKR0o3ZExVck5ZaWxwd2tISwpJSlVLRmRwQ3pCeXpFT0dZdVhZbWRjUkNONWVRcFF3c1d3cm50MlE1RTgxbTBCemJQMkY1U3FiVmphVCs0OUIvCkhZUzFkS3ZyWXlWQW9DUzJWQmtCM1VuNXVPMXNMOFp0ZTljVldBbTNRM00xYit4UThhczcxMlVFaklJMXdlV0oKNU56Z1VxUnRFUVZFNkpjNVFub01LMXUrbXZQSm95T2I4OXAvSDhtbmpzQmUybGZ0RzFLNzQxM0szWEhqRlB4cwpnY1hpcnU3VUhNTDIzNG95a0RuVTdBQURkOGpoeEFqNDczY1Era0UwWHNwMVBFbVRSVUlsYVNJcXNUOG1GenB1CkhqeE5BZ01CQUFHak1UQXZNQXdHQTFVZEV3RUIvd1FDTUFBd0h3WURWUjBqQkJnd0ZvQVVSRXRTUWFNeGhEbWoKb29CTUpScERUZkVXRXpzd0RRWUpLb1pJaHZjTkFRRUxCUUFEZ2dFQkFDMHZYZnFEK2NyRTlCSit6amhQYW1oaQphcWlNdzE4emo0ZzZaeFMxRkc2aDlIVi90aUJ3YUZMMm92K0M4MzhmY2FJSis1Tm5xVjRPWHVFeDFoY1lLSWlPCnpPQUhNMjYrSjViUlpYYnVnWHEwdytldXQwQ2IzUTRHS0dGR2JFTVcwR1Q4RjgzR0kyZFcwRWU0Ujc2Z29ObnkKeVFLOFJZbmR0M2NveTBLTE52blBTKzJXWlpTM1lEQUR3UTlVTXdwRDV6TkJxVWpHWFd3N2RkOHE0MlN5d1lpdwp6ZkRlNmNrZjVQSE5aOXhFT091OFFKaGhEM3VPL0xRU1pwVlFIak53YmFUMEZwU3IvOFFXU3Jnbjd1blBPV2JpCmVlMkxmeU1UUXd4N0Y5S25lRWhyNzBwclhuK2lnenkzWXpBaFB4WTRYS0RlZ1MwTldHNWJMS0pUODFJMEV3Yz0KLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQo=", + "client_certificate_config": [ + { + "issue_client_certificate": true + } + ], + "client_key": "LS0tLS1CRUdJTiBSU0EgUFJJVkFURSBLRVktLS0tLQpNSUlFcEFJQkFBS0NBUUVBMktnT1B4UEZ3bGdQMFdmWnV6QlNGV1VFMC8wZU4yMTYxdmVhdEp2ZElnNk1BdURLCjFEY29LanVLWVoxZDhCUGRTUmllM1MxS3pXSXBhY0pCeWlDVkNoWGFRc3djc3hEaG1MbDJKblhFUWplWGtLVU0KTEZzSzU3ZGtPUlBOWnRBYzJ6OWhlVXFtMVkyay91UFFmeDJFdFhTcjYyTWxRS0FrdGxRWkFkMUorYmp0YkMvRwpiWHZYRlZnSnQwTnpOVy9zVVBHck85ZGxCSXlDTmNIbGllVGM0RktrYlJFRlJPaVhPVUo2REN0YnZwcnp5YU1qCm0vUGFmeC9KcDQ3QVh0cFg3UnRTdStOZHl0MXg0eFQ4YklIRjRxN3UxQnpDOXQrS01wQTUxT3dBQTNmSTRjUUkKK085M0VQcEJORjdLZFR4SmswVkNKV2tpS3JFL0poYzZiaDQ4VFFJREFRQUJBb0lCQUFlS29BWlRrSjV4ZE1tQQpBU3o2STExUnlSOTg3OVNUbDhOTVZxTURTdWtBMHlCVmhWSHFRcGhudnFzanNHMm5MMXg0UWkxbVFuU1FQbXRMClF3Ri9iVml1eG94dE1QR052S0NWa2hhSUltY0FxdUt5MEEvcU1tQzYrajdmWU5hN2wwbU5kUDNsR3BZVDZtS2gKK1BPM3loTUw1dUVZY0NkRis4a3A5NzNnSDA5VkwyUFpvczhQN0NiSU95RiswdFBRek8rZGFHcnVZYnBiZ1lXaQpMNnJ1S1ZZMkZUN21nV1hZc1NtVDZ6K1NmVjFYbmdsV2tLaTRCKzZaMzcwU2xGbURaRm1hRk9MQUQ5QjEvQXhtCm5MYllMSzd5NjBnMExzN3ZPWmh5SFhsdW1uT2J3N1dlZnl3Qi9mQnduUlMvWkNUOTZPOVEzMFd6MlJYQWdneTMKZGFWZWpNa0NnWUVBL1lDQVhMc0c4Q3FkR3grQXBmbWhuMzVONmhJSUpHcW9VM1g1bU9mVUFnaE01L2lqdEJueQowQk9KUDRxTW1WR2NZVnRJLzlEcVE5SllRbVhCa3J4c1BXb1pJeGRzT1dCSS9WVUxaZE5FRUlhajNkOUlnNnh1Cm1JTjVnS1QxQksrcWlzWUdHQStyVWxwZURzcjJySFNCSFk0TmpxMFNRMTZzM3BYaWRSVTQvQ2tDZ1lFQTJzcWIKRGlqOWdVQmQyeUFjdytkZjUzK1dRYXdlV1ZpLytqY0ZIY3ZxS2xaY3RmbmJBWUpCcWtiWTNhVmRBWkZpTGh5egpoZEFRNU5sTHkvRHduc1RoMzN3eTZ5MzN4Q2hrcGh6S1Q5STdtZWg1V2cycFdaNytuZys5OEYyb1JlYTZmcEF6CnkyM3liUDE0ZXhiWU5VMHNvajc1MjcrVnc5TTNmTHV3cGZId3c0VUNnWUIzMHovWmxVWW9TOXhMTDg3ZHBXdXkKT2orVi9zUCtnclBpRDRmVnNPOVRycHk3b1ptdnpmd3FRckhEYVRnZ1dLVTBsN09meUI2VHhGK1hzd1dXMkozSgpRZGR6OE9SbEVwQXR2djlPT0ZpWi95cUIrOE1KQ242VWRNRC8vL2taSi9mUzlOdDRrQitKSTlJRjZBWkZhaVNGCjFkbXVzVHhLdi91eWt1S2lPVS9nVVFLQmdRQzl2bC9pVStJbUtiQTd6UW1sVEE5OE1NWWFoaTU3eGVBWUc0Y3cKWkJ2Y1E3RjdrQWhDc3JoSDk5RXp4NmwxSnFSQzRWay9mMFpuY1p1dWJuSCsvemYwSFQzN2Y0NFViQU45bkJKSQpUMGFwSDFlK3BZSnMydHB1TWJERHVEV3JDWUpMS0x3Q2ZJTjF5Z3lta3hWR2hIdGs2Y0MrdHRRblZCSVc5cDhvCkN6NkdFUUtCZ1FEY3NVNHQrKzAvM3JQRm1peSt3czRPdVU4VEZRc3N2UnpIL0pFbGlhV2h0ZDFKNGxPRXhIZ3IKQ3h4eTg2YUFwRTVqeG1ndUpDYUNwNk9EMFl4ME5JTC9haVAvamRxRDZHdUxRMmVUUFN4T3BpTlRMS2UyRm8xUAphcVdES1BGZmFTaG9yYk1rSmt6ZUdzdUJWS1A1U0dsaHBzM0ZVcllVK2JiTUFxd2ZLc3JtVFE9PQotLS0tLUVORCBSU0EgUFJJVkFURSBLRVktLS0tLQo=", + "cluster_ca_certificate": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSURLakNDQWhLZ0F3SUJBZ0lRTUFaY0xPUnNhSmpCYzdENjRhRXlhVEFOQmdrcWhraUc5dzBCQVFzRkFEQXYKTVMwd0t3WURWUVFERXlSbFltTTRNRFEwWkMxak1HVXpMVFJqTmpjdE9UQTBOeTFoWlRsaU56SXdaVEJsWldVdwpIaGNOTWpFd05UQXpNRGcwTnpRMVdoY05Nall3TlRBeU1EazBOelExV2pBdk1TMHdLd1lEVlFRREV5UmxZbU00Ck1EUTBaQzFqTUdVekxUUmpOamN0T1RBME55MWhaVGxpTnpJd1pUQmxaV1V3Z2dFaU1BMEdDU3FHU0liM0RRRUIKQVFVQUE0SUJEd0F3Z2dFS0FvSUJBUUM3RTE3VE85ZmRPYitTQXZzZ21HcHNYd2htb3R2dm9IMEYvWGlVMFZPYgo1Slo3MGJtMk40WnBiaTJVMTNEWXJ4clg3WHh3VzRIcStIaC9qN1J1c3c0NVJ2SUVremk1ZXpHd09TaTJ0cms4CjYwM2F5bVhRT2d6NFJjQmtMeHVOWW9wd0xKY29qWk9zMktjUnFIeUhwMEZvSkJlMWdVVVdzSWJGdFZLQVM4RFEKM0VvMzJhbnpqcU5jdUhVVnExaEZtRDY1ZG9XNGJIeDNERHIxN2VYVi9leUJjY1BxQmNqUkJET0grV1dwR25zMApMRmdCZkZaWm82TkFsdlZMUk85MDlsMUVvL1l4WmpRMmE1cjlWMklyQktvK0gwSTd6N1hpYWY3b3R1UHVJaWE3Ck01S3JlZFZwNUVlZkFhbmtNS1h2T05RazJFYnlzeFlhbEhlQitkZ0Y2SXBuQWdNQkFBR2pRakJBTUE0R0ExVWQKRHdFQi93UUVBd0lDQkRBUEJnTlZIUk1CQWY4RUJUQURBUUgvTUIwR0ExVWREZ1FXQkJSRVMxSkJvekdFT2FPaQpnRXdsR2tOTjhSWVRPekFOQmdrcWhraUc5dzBCQVFzRkFBT0NBUUVBQ2I2NUdYR2lhSXpZQnlObkhQUHRJWVJPCnJmWUk0WHphaVNFNnkvNUYvUTRYajJHM0R4UzhFSWFJQzlaU202UFYyWkYwK1FDUUI0UDdWV3VNTFFVdElrL1UKSTNJWFdmQ05pU2ozc2tqZ3k2cDZwdUhkd3hIL0MrWkRuUDlERW16OXVSTjdsUmc0VXRzeHVBb3E3UkFCRktwZQpmRjRoTXVud2JINFZsN1NEN2YrWkVWd3hjZ3FuNHdLRERVYXMvc0hqQXAxVVFBUUc5K3RtcjFUdHBoTEwyREY0CkYvSVArWTFLV2kwVmU1aFFzMHZiak9wYWJCZDl0SVg0VFBHUGI3TS84ZmN5ajJsM0Fya1VWdUVKQ3ZCUExlTkcKaFBmWG1wS25QeDF3NGYyTnovYi9ic21RZmpOZ0Q1NVhubmY0UzNOTG1QTHg5NUhCYmNnSzJKZ3VmUUhnNnc9PQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCg==", + "password": "", + "username": "" + } + ], + "master_authorized_networks_config": [], + "master_version": "1.16.15-gke.14800", + "min_master_version": "1.16", + "monitoring_service": "monitoring.googleapis.com/kubernetes", + "name": "gitpod", + "network": "projects/gpl-sh-090-3/global/networks/gitpod", + "network_policy": [ + { + "enabled": true, + "provider": "CALICO" + } + ], + "networking_mode": "VPC_NATIVE", + "node_config": [ + { + "disk_size_gb": 100, + "disk_type": "pd-ssd", + "guest_accelerator": [], + "image_type": "UBUNTU_CONTAINERD", + "labels": { + "gitpod.io/workload_meta": "true", + "gitpod.io/workload_workspace": "true" + }, + "local_ssd_count": 1, + "machine_type": "n2-standard-8", + "metadata": { + "disable-legacy-endpoints": "true" + }, + "min_cpu_platform": "", + "oauth_scopes": [ + "https://www.googleapis.com/auth/devstorage.read_write", + "https://www.googleapis.com/auth/logging.write", + "https://www.googleapis.com/auth/monitoring" + ], + "preemptible": false, + "service_account": "gitpod-nodes@gpl-sh-090-3.iam.gserviceaccount.com", + "shielded_instance_config": [ + { + "enable_integrity_monitoring": true, + "enable_secure_boot": false + } + ], + "tags": [], + "taint": [], + "workload_metadata_config": [ + { + "node_metadata": "SECURE" + } + ] + } + ], + "node_locations": [ + "europe-west3-a", + "europe-west3-b", + "europe-west3-c" + ], + "node_pool": [ + { + "autoscaling": [], + "initial_node_count": 1, + "instance_group_urls": [ + "https://www.googleapis.com/compute/v1/projects/gpl-sh-090-3/zones/europe-west3-a/instanceGroupManagers/gke-gitpod-nodepool-0-55cc245a-grp", + "https://www.googleapis.com/compute/v1/projects/gpl-sh-090-3/zones/europe-west3-b/instanceGroupManagers/gke-gitpod-nodepool-0-ab90e42d-grp", + "https://www.googleapis.com/compute/v1/projects/gpl-sh-090-3/zones/europe-west3-c/instanceGroupManagers/gke-gitpod-nodepool-0-bd520db7-grp" + ], + "management": [ + { + "auto_repair": true, + "auto_upgrade": true + } + ], + "max_pods_per_node": 110, + "name": "nodepool-0", + "name_prefix": "", + "node_config": [ + { + "disk_size_gb": 100, + "disk_type": "pd-ssd", + "guest_accelerator": [], + "image_type": "UBUNTU_CONTAINERD", + "labels": { + "gitpod.io/workload_meta": "true", + "gitpod.io/workload_workspace": "true" + }, + "local_ssd_count": 1, + "machine_type": "n2-standard-8", + "metadata": { + "disable-legacy-endpoints": "true" + }, + "min_cpu_platform": "", + "oauth_scopes": [ + "https://www.googleapis.com/auth/devstorage.read_write", + "https://www.googleapis.com/auth/logging.write", + "https://www.googleapis.com/auth/monitoring" + ], + "preemptible": false, + "service_account": "gitpod-nodes@gpl-sh-090-3.iam.gserviceaccount.com", + "shielded_instance_config": [ + { + "enable_integrity_monitoring": true, + "enable_secure_boot": false + } + ], + "tags": [], + "taint": [], + "workload_metadata_config": [ + { + "node_metadata": "SECURE" + } + ] + } + ], + "node_count": 1, + "node_locations": [ + "europe-west3-a", + "europe-west3-b", + "europe-west3-c" + ], + "upgrade_settings": [ + { + "max_surge": 1, + "max_unavailable": 0 + } + ], + "version": "1.16.15-gke.14800" + } + ], + "node_version": "1.16.15-gke.14800", + "operation": null, + "pod_security_policy_config": [ + { + "enabled": true + } + ], + "private_cluster_config": [], + "private_ipv6_google_access": "", + "project": "gpl-sh-090-3", + "release_channel": [ + { + "channel": "UNSPECIFIED" + } + ], + "remove_default_node_pool": true, + "resource_labels": {}, + "resource_usage_export_config": [], + "self_link": "https://container.googleapis.com/v1beta1/projects/gpl-sh-090-3/locations/europe-west3/clusters/gitpod", + "services_ipv4_cidr": "10.76.0.0/20", + "subnetwork": "projects/gpl-sh-090-3/regions/europe-west3/subnetworks/gitpod-subnet", + "timeouts": null, + "tpu_ipv4_cidr_block": "", + "vertical_pod_autoscaling": [], + "workload_identity_config": [] + }, + "sensitive_attributes": [], + "private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjoyNDAwMDAwMDAwMDAwLCJkZWxldGUiOjI0MDAwMDAwMDAwMDAsInJlYWQiOjI0MDAwMDAwMDAwMDAsInVwZGF0ZSI6MzYwMDAwMDAwMDAwMH0sInNjaGVtYV92ZXJzaW9uIjoiMSJ9", + "dependencies": [ + "google_compute_network.gitpod", + "module.kubernetes.google_compute_subnetwork.gitpod" + ] + } + ] + }, + { + "module": "module.kubernetes", + "mode": "managed", + "type": "google_container_node_pool", + "name": "gitpod", + "provider": "provider[\"registry.terraform.io/hashicorp/google\"]", + "instances": [ + { + "schema_version": 1, + "attributes": { + "autoscaling": [], + "cluster": "gitpod", + "id": "projects/gpl-sh-090-3/locations/europe-west3/clusters/gitpod/nodePools/nodepool-0", + "initial_node_count": 1, + "instance_group_urls": [ + "https://www.googleapis.com/compute/v1/projects/gpl-sh-090-3/zones/europe-west3-a/instanceGroupManagers/gke-gitpod-nodepool-0-55cc245a-grp", + "https://www.googleapis.com/compute/v1/projects/gpl-sh-090-3/zones/europe-west3-b/instanceGroupManagers/gke-gitpod-nodepool-0-ab90e42d-grp", + "https://www.googleapis.com/compute/v1/projects/gpl-sh-090-3/zones/europe-west3-c/instanceGroupManagers/gke-gitpod-nodepool-0-bd520db7-grp" + ], + "location": "europe-west3", + "management": [ + { + "auto_repair": true, + "auto_upgrade": true + } + ], + "max_pods_per_node": 110, + "name": "nodepool-0", + "name_prefix": "", + "node_config": [ + { + "disk_size_gb": 100, + "disk_type": "pd-ssd", + "guest_accelerator": [], + "image_type": "UBUNTU_CONTAINERD", + "labels": { + "gitpod.io/workload_meta": "true", + "gitpod.io/workload_workspace": "true" + }, + "local_ssd_count": 1, + "machine_type": "n2-standard-8", + "metadata": { + "disable-legacy-endpoints": "true" + }, + "min_cpu_platform": "", + "oauth_scopes": [ + "https://www.googleapis.com/auth/devstorage.read_write", + "https://www.googleapis.com/auth/logging.write", + "https://www.googleapis.com/auth/monitoring" + ], + "preemptible": false, + "service_account": "gitpod-nodes@gpl-sh-090-3.iam.gserviceaccount.com", + "shielded_instance_config": [ + { + "enable_integrity_monitoring": true, + "enable_secure_boot": false + } + ], + "tags": [], + "taint": [], + "workload_metadata_config": [ + { + "node_metadata": "SECURE" + } + ] + } + ], + "node_count": 1, + "node_locations": [ + "europe-west3-a", + "europe-west3-b", + "europe-west3-c" + ], + "operation": null, + "project": "gpl-sh-090-3", + "timeouts": null, + "upgrade_settings": [ + { + "max_surge": 1, + "max_unavailable": 0 + } + ], + "version": "1.16.15-gke.14800" + }, + "sensitive_attributes": [], + "private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjoxODAwMDAwMDAwMDAwLCJkZWxldGUiOjE4MDAwMDAwMDAwMDAsInVwZGF0ZSI6MTgwMDAwMDAwMDAwMH0sInNjaGVtYV92ZXJzaW9uIjoiMSJ9", + "dependencies": [ + "google_compute_network.gitpod", + "module.kubernetes.google_compute_subnetwork.gitpod", + "module.kubernetes.google_container_cluster.gitpod", + "module.kubernetes.google_service_account.gitpod" + ] + } + ] + }, + { + "module": "module.kubernetes", + "mode": "managed", + "type": "google_project_iam_member", + "name": "gitpod", + "provider": "provider[\"registry.terraform.io/hashicorp/google\"]", + "instances": [ + { + "index_key": 0, + "schema_version": 0, + "attributes": { + "condition": [], + "etag": "BwXBasRJJWc=", + "id": "gpl-sh-090-3/roles/clouddebugger.agent/serviceAccount:gitpod-nodes@gpl-sh-090-3.iam.gserviceaccount.com", + "member": "serviceAccount:gitpod-nodes@gpl-sh-090-3.iam.gserviceaccount.com", + "project": "gpl-sh-090-3", + "role": "roles/clouddebugger.agent" + }, + "sensitive_attributes": [], + "private": "bnVsbA==", + "dependencies": [ + "module.kubernetes.google_service_account.gitpod" + ] + }, + { + "index_key": 1, + "schema_version": 0, + "attributes": { + "condition": [], + "etag": "BwXBasRJJWc=", + "id": "gpl-sh-090-3/roles/cloudtrace.agent/serviceAccount:gitpod-nodes@gpl-sh-090-3.iam.gserviceaccount.com", + "member": "serviceAccount:gitpod-nodes@gpl-sh-090-3.iam.gserviceaccount.com", + "project": "gpl-sh-090-3", + "role": "roles/cloudtrace.agent" + }, + "sensitive_attributes": [], + "private": "bnVsbA==", + "dependencies": [ + "module.kubernetes.google_service_account.gitpod" + ] + }, + { + "index_key": 2, + "schema_version": 0, + "attributes": { + "condition": [], + "etag": "BwXBasRJJWc=", + "id": "gpl-sh-090-3/roles/errorreporting.writer/serviceAccount:gitpod-nodes@gpl-sh-090-3.iam.gserviceaccount.com", + "member": "serviceAccount:gitpod-nodes@gpl-sh-090-3.iam.gserviceaccount.com", + "project": "gpl-sh-090-3", + "role": "roles/errorreporting.writer" + }, + "sensitive_attributes": [], + "private": "bnVsbA==", + "dependencies": [ + "module.kubernetes.google_service_account.gitpod" + ] + }, + { + "index_key": 3, + "schema_version": 0, + "attributes": { + "condition": [], + "etag": "BwXBasRJJWc=", + "id": "gpl-sh-090-3/roles/logging.viewer/serviceAccount:gitpod-nodes@gpl-sh-090-3.iam.gserviceaccount.com", + "member": "serviceAccount:gitpod-nodes@gpl-sh-090-3.iam.gserviceaccount.com", + "project": "gpl-sh-090-3", + "role": "roles/logging.viewer" + }, + "sensitive_attributes": [], + "private": "bnVsbA==", + "dependencies": [ + "module.kubernetes.google_service_account.gitpod" + ] + }, + { + "index_key": 4, + "schema_version": 0, + "attributes": { + "condition": [], + "etag": "BwXBasRJJWc=", + "id": "gpl-sh-090-3/roles/logging.logWriter/serviceAccount:gitpod-nodes@gpl-sh-090-3.iam.gserviceaccount.com", + "member": "serviceAccount:gitpod-nodes@gpl-sh-090-3.iam.gserviceaccount.com", + "project": "gpl-sh-090-3", + "role": "roles/logging.logWriter" + }, + "sensitive_attributes": [], + "private": "bnVsbA==", + "dependencies": [ + "module.kubernetes.google_service_account.gitpod" + ] + }, + { + "index_key": 5, + "schema_version": 0, + "attributes": { + "condition": [], + "etag": "BwXBasRJJWc=", + "id": "gpl-sh-090-3/roles/monitoring.metricWriter/serviceAccount:gitpod-nodes@gpl-sh-090-3.iam.gserviceaccount.com", + "member": "serviceAccount:gitpod-nodes@gpl-sh-090-3.iam.gserviceaccount.com", + "project": "gpl-sh-090-3", + "role": "roles/monitoring.metricWriter" + }, + "sensitive_attributes": [], + "private": "bnVsbA==", + "dependencies": [ + "module.kubernetes.google_service_account.gitpod" + ] + }, + { + "index_key": 6, + "schema_version": 0, + "attributes": { + "condition": [], + "etag": "BwXBasRJJWc=", + "id": "gpl-sh-090-3/roles/monitoring.viewer/serviceAccount:gitpod-nodes@gpl-sh-090-3.iam.gserviceaccount.com", + "member": "serviceAccount:gitpod-nodes@gpl-sh-090-3.iam.gserviceaccount.com", + "project": "gpl-sh-090-3", + "role": "roles/monitoring.viewer" + }, + "sensitive_attributes": [], + "private": "bnVsbA==", + "dependencies": [ + "module.kubernetes.google_service_account.gitpod" + ] + }, + { + "index_key": 7, + "schema_version": 0, + "attributes": { + "condition": [], + "etag": "BwXBasRJJWc=", + "id": "gpl-sh-090-3/roles/storage.admin/serviceAccount:gitpod-nodes@gpl-sh-090-3.iam.gserviceaccount.com", + "member": "serviceAccount:gitpod-nodes@gpl-sh-090-3.iam.gserviceaccount.com", + "project": "gpl-sh-090-3", + "role": "roles/storage.admin" + }, + "sensitive_attributes": [], + "private": "bnVsbA==", + "dependencies": [ + "module.kubernetes.google_service_account.gitpod" + ] + }, + { + "index_key": 8, + "schema_version": 0, + "attributes": { + "condition": [], + "etag": "BwXBasRJJWc=", + "id": "gpl-sh-090-3/roles/storage.objectAdmin/serviceAccount:gitpod-nodes@gpl-sh-090-3.iam.gserviceaccount.com", + "member": "serviceAccount:gitpod-nodes@gpl-sh-090-3.iam.gserviceaccount.com", + "project": "gpl-sh-090-3", + "role": "roles/storage.objectAdmin" + }, + "sensitive_attributes": [], + "private": "bnVsbA==", + "dependencies": [ + "module.kubernetes.google_service_account.gitpod" + ] + } + ] + }, + { + "module": "module.kubernetes", + "mode": "managed", + "type": "google_project_service", + "name": "kubernetes", + "provider": "provider[\"registry.terraform.io/hashicorp/google\"]", + "instances": [ + { + "index_key": 0, + "schema_version": 0, + "attributes": { + "disable_dependent_services": false, + "disable_on_destroy": false, + "id": "gpl-sh-090-3/iam.googleapis.com", + "project": "gpl-sh-090-3", + "service": "iam.googleapis.com", + "timeouts": null + }, + "sensitive_attributes": [], + "private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjoxMjAwMDAwMDAwMDAwLCJkZWxldGUiOjEyMDAwMDAwMDAwMDAsInJlYWQiOjYwMDAwMDAwMDAwMCwidXBkYXRlIjoxMjAwMDAwMDAwMDAwfX0=" + }, + { + "index_key": 1, + "schema_version": 0, + "attributes": { + "disable_dependent_services": false, + "disable_on_destroy": false, + "id": "gpl-sh-090-3/compute.googleapis.com", + "project": "gpl-sh-090-3", + "service": "compute.googleapis.com", + "timeouts": null + }, + "sensitive_attributes": [], + "private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjoxMjAwMDAwMDAwMDAwLCJkZWxldGUiOjEyMDAwMDAwMDAwMDAsInJlYWQiOjYwMDAwMDAwMDAwMCwidXBkYXRlIjoxMjAwMDAwMDAwMDAwfX0=" + }, + { + "index_key": 2, + "schema_version": 0, + "attributes": { + "disable_dependent_services": false, + "disable_on_destroy": false, + "id": "gpl-sh-090-3/container.googleapis.com", + "project": "gpl-sh-090-3", + "service": "container.googleapis.com", + "timeouts": null + }, + "sensitive_attributes": [], + "private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjoxMjAwMDAwMDAwMDAwLCJkZWxldGUiOjEyMDAwMDAwMDAwMDAsInJlYWQiOjYwMDAwMDAwMDAwMCwidXBkYXRlIjoxMjAwMDAwMDAwMDAwfX0=" + }, + { + "index_key": 3, + "schema_version": 0, + "attributes": { + "disable_dependent_services": false, + "disable_on_destroy": false, + "id": "gpl-sh-090-3/logging.googleapis.com", + "project": "gpl-sh-090-3", + "service": "logging.googleapis.com", + "timeouts": null + }, + "sensitive_attributes": [], + "private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjoxMjAwMDAwMDAwMDAwLCJkZWxldGUiOjEyMDAwMDAwMDAwMDAsInJlYWQiOjYwMDAwMDAwMDAwMCwidXBkYXRlIjoxMjAwMDAwMDAwMDAwfX0=" + } + ] + }, + { + "module": "module.kubernetes", + "mode": "managed", + "type": "google_service_account", + "name": "gitpod", + "provider": "provider[\"registry.terraform.io/hashicorp/google\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "account_id": "gitpod-nodes", + "description": "Gitpod Nodes gitpod", + "display_name": "gitpod-nodes", + "email": "gitpod-nodes@gpl-sh-090-3.iam.gserviceaccount.com", + "id": "projects/gpl-sh-090-3/serviceAccounts/gitpod-nodes@gpl-sh-090-3.iam.gserviceaccount.com", + "name": "projects/gpl-sh-090-3/serviceAccounts/gitpod-nodes@gpl-sh-090-3.iam.gserviceaccount.com", + "project": "gpl-sh-090-3", + "timeouts": null, + "unique_id": "116547914369594240352" + }, + "sensitive_attributes": [], + "private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjozMDAwMDAwMDAwMDB9fQ==" + } + ] + }, + { + "module": "module.registry", + "mode": "data", + "type": "template_file", + "name": "registry", + "provider": "provider[\"registry.terraform.io/hashicorp/template\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "filename": null, + "id": "0dd07e6a868d098c25f3e464b7ad15ae956cfcd8d623a4c7fd87aa542731eea3", + "rendered": "{\n\t\"auths\": {\n\t\t\"gcr.io\": {\n\t\t\t\"auth\": \"X2pzb25fa2V5OiB7CiAgInR5cGUiOiAic2VydmljZV9hY2NvdW50IiwKICAicHJvamVjdF9pZCI6ICJncGwtc2gtMDkwLTMiLAogICJwcml2YXRlX2tleV9pZCI6ICJkMWVkN2E0ZWVmMmFiZTUwN2NjOTQzNWMxOTY0ZDllMWY4ZDA5NjA4IiwKICAicHJpdmF0ZV9rZXkiOiAiLS0tLS1CRUdJTiBQUklWQVRFIEtFWS0tLS0tXG5NSUlFdlFJQkFEQU5CZ2txaGtpRzl3MEJBUUVGQUFTQ0JLY3dnZ1NqQWdFQUFvSUJBUURQeVhUZXNLVWxnODhlXG5WRll3OElvQjRDbWMramxQOXZ5SWE4a2piY1oxS3lxd2p6N2ZoU1NhOU4vNVpVK2pWQnZlcW9YeHFqbE1XdW1uXG5Sdkw4V21OUHoySmovbEx0WDZKU1Z5TUJ5M3FkSUg5VEVlejRBck1TMDZpeEx3TW05TG5XU1RubkJlNjdEYnUyXG41UjRCdHBvd0hUZDIvSXdjYnc1dXJWRVVlckJUdGpSdjFIVG9OcFYva2ZjZDRGVWVyanZjL3llTzFmTEhYR21lXG5ZV3RYM2JNM2tmclZqb1o1RUloUVRPRmptSllwQ1hhMjBDbVZSRUtYZXpMTmdzOHkyczVPaTY0VjVBbW9iWGJ3XG5ML2Y2bVVKZm02NFM4QUhVWGdTc1VXbFFTM3dRb1l5SXhWV2htYUkvSnVzczFRZWFaS211OHV5QytJbmpMdVVKXG52S0hJWlpWQkFnTUJBQUVDZ2dFQUFZUDRwRDhwbFRKMjZrTzNOVGdyNllPWENod1JHdkkwT1ZKLzd4QTM2RmJlXG5RdGRvbi95Nm5aNjNtM3dQcnFOSWFNRlpwTCtYRjJWNldzdjdyYmVERGV2M1RiOW5IM0FaSVB5ZHRyK2pMMDR6XG5YNG03N3JzbVR6YlgvaUxYcFFzWDUrWTAwK2lKS3pnWWJHY1RadlBNQUJuV2M3bTMwK1ZEZDY4djdqUk80TzFwXG42WGtIU3NaRFpmaWVsdHAzNE1IUXJpM3NxU2VwS1hNRVJvMWtudkVIUmJxZlg1T0Q2bW9XMEJMZStPOTN6UDc2XG5wMWJVQXdwT01jV2JDSHFQNC9ET3lhMTJoelgxc2orTHpXMkg5bU5OQUkvdjRjZk8yU2F4MHpQNGpPQmJReFNIXG42UDVuRXFZeVlwVVVCTjlCYkVYSHdySEVqWjdEK2x2ekYvWFlxdFFSb1FLQmdRRDF3cGJ6L0pPb0dyVWdOZ29TXG4yQlNQYVhNV1FxY1pQZHZINGNGc3EveCtadFRlQVd4a21wTmd6UEI3TXRqRmplRXNwUTlkQVJIZ2tLQTVKTVlDXG54YzIyMmt0b3Fnbmhqek1PS21mMDJ0alpnbStsUVIrbTUwVmNTdDlONVhjS1BOa0pTVFRpZFBCdlBDU05YalJXXG5kcUhmSmRkWThCMWJ1aHNRaUVocTBZMWREUUtCZ1FEWWNkTU5XQThFMVZKZEZFSU5JbGlpMEdsWGFnQ2ZHZ0ppXG54VjhaUlQwMWV4cklHbG9hYUtsOEM1QlRBNGFtbFdKUlpaUW94RHBLYTZZUENWc2d4cWJ4dEdKdjU5ZUhVVlVwXG5EZWRteUZCRWhOWWJMaGphOHJKZ3EzYUdFNVVzZ1dyTFJNQ2RkTkZaSjdjUXRtRldXS3hIbW4rWUw1c2d0RnoxXG53a29hd09UVUJRS0JnUUNDd2I2NUgvaWI1MkhaT29kUGtXSVhENTdwQ0J1SjVZeXJJNlZiSVlLYzZpOTEwMElOXG5vT1NyQ3o4ai9XQ3ljNU9Md21LVE5EK0R3TTlPdUE4V2FKSFVLUDhZTitnNzk0bk5qcWh5OFlHUThNSmdKVzhtXG55VVB4SC9FQnJBWVREMTdXZnZuQlIwQ3BubEZBV2cvMHRQZlpGM1FsWU5QdCt1M3RkT1U2MkRXamZRS0JnRUlhXG5LUm1uTGhjTXl6V3dEU2dUdUR3cEtETFJKZFZ4VFE4N05mcnl3V25HNmZ2NHlGSE9hd3grUDVxS3RpSEQ5NTNpXG5SdWhZWFhFREJWa01RMjkwRytJdmMreTNRb1NLRzFjSmJ3VmQ0ZDI3TCtSbkpLSWhnc2F4TnVabHJxWkQ5QWlXXG5PN2theHlEU1Z6OWNZOGZLRnZ0YlBPS09qM0xpZ28xdnc4LzkzeVM5QW9HQU14RzcxVlM1cjFROHZQTWtrcGxPXG52cTEyK1U1L3pkU2FhSWkwTEYyMlZiNGE2UmJqY2YzSDM0V3NQS1J0Q2FtMG52TnNsbXFrY3RLc2RDRnp0Y0NMXG5SQTk5ZTNINTU1WkZCcU03TEhHNnFMMjRCbC9IcnJnSWVoNVFMaVdubEo5VDBkNEMrYlVsS3JwRHJnZDdzekJqXG51dG5ZVVpwakRXWjZQWWUyTjQvYVFuWT1cbi0tLS0tRU5EIFBSSVZBVEUgS0VZLS0tLS1cbiIsCiAgImNsaWVudF9lbWFpbCI6ICJnaXRwb2QtcmVnaXN0cnlAZ3BsLXNoLTA5MC0zLmlhbS5nc2VydmljZWFjY291bnQuY29tIiwKICAiY2xpZW50X2lkIjogIjExMjg0MjA4ODk2ODU1NDEzMTI5NSIsCiAgImF1dGhfdXJpIjogImh0dHBzOi8vYWNjb3VudHMuZ29vZ2xlLmNvbS9vL29hdXRoMi9hdXRoIiwKICAidG9rZW5fdXJpIjogImh0dHBzOi8vb2F1dGgyLmdvb2dsZWFwaXMuY29tL3Rva2VuIiwKICAiYXV0aF9wcm92aWRlcl94NTA5X2NlcnRfdXJsIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL29hdXRoMi92MS9jZXJ0cyIsCiAgImNsaWVudF94NTA5X2NlcnRfdXJsIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3JvYm90L3YxL21ldGFkYXRhL3g1MDkvZ2l0cG9kLXJlZ2lzdHJ5JTQwZ3BsLXNoLTA5MC0zLmlhbS5nc2VydmljZWFjY291bnQuY29tIgp9Cg==\"\n\t\t}\n\t}\n}", + "template": "{\n\t\"auths\": {\n\t\t\"gcr.io\": {\n\t\t\t\"auth\": \"${auth}\"\n\t\t}\n\t}\n}", + "vars": { + "auth": "X2pzb25fa2V5OiB7CiAgInR5cGUiOiAic2VydmljZV9hY2NvdW50IiwKICAicHJvamVjdF9pZCI6ICJncGwtc2gtMDkwLTMiLAogICJwcml2YXRlX2tleV9pZCI6ICJkMWVkN2E0ZWVmMmFiZTUwN2NjOTQzNWMxOTY0ZDllMWY4ZDA5NjA4IiwKICAicHJpdmF0ZV9rZXkiOiAiLS0tLS1CRUdJTiBQUklWQVRFIEtFWS0tLS0tXG5NSUlFdlFJQkFEQU5CZ2txaGtpRzl3MEJBUUVGQUFTQ0JLY3dnZ1NqQWdFQUFvSUJBUURQeVhUZXNLVWxnODhlXG5WRll3OElvQjRDbWMramxQOXZ5SWE4a2piY1oxS3lxd2p6N2ZoU1NhOU4vNVpVK2pWQnZlcW9YeHFqbE1XdW1uXG5Sdkw4V21OUHoySmovbEx0WDZKU1Z5TUJ5M3FkSUg5VEVlejRBck1TMDZpeEx3TW05TG5XU1RubkJlNjdEYnUyXG41UjRCdHBvd0hUZDIvSXdjYnc1dXJWRVVlckJUdGpSdjFIVG9OcFYva2ZjZDRGVWVyanZjL3llTzFmTEhYR21lXG5ZV3RYM2JNM2tmclZqb1o1RUloUVRPRmptSllwQ1hhMjBDbVZSRUtYZXpMTmdzOHkyczVPaTY0VjVBbW9iWGJ3XG5ML2Y2bVVKZm02NFM4QUhVWGdTc1VXbFFTM3dRb1l5SXhWV2htYUkvSnVzczFRZWFaS211OHV5QytJbmpMdVVKXG52S0hJWlpWQkFnTUJBQUVDZ2dFQUFZUDRwRDhwbFRKMjZrTzNOVGdyNllPWENod1JHdkkwT1ZKLzd4QTM2RmJlXG5RdGRvbi95Nm5aNjNtM3dQcnFOSWFNRlpwTCtYRjJWNldzdjdyYmVERGV2M1RiOW5IM0FaSVB5ZHRyK2pMMDR6XG5YNG03N3JzbVR6YlgvaUxYcFFzWDUrWTAwK2lKS3pnWWJHY1RadlBNQUJuV2M3bTMwK1ZEZDY4djdqUk80TzFwXG42WGtIU3NaRFpmaWVsdHAzNE1IUXJpM3NxU2VwS1hNRVJvMWtudkVIUmJxZlg1T0Q2bW9XMEJMZStPOTN6UDc2XG5wMWJVQXdwT01jV2JDSHFQNC9ET3lhMTJoelgxc2orTHpXMkg5bU5OQUkvdjRjZk8yU2F4MHpQNGpPQmJReFNIXG42UDVuRXFZeVlwVVVCTjlCYkVYSHdySEVqWjdEK2x2ekYvWFlxdFFSb1FLQmdRRDF3cGJ6L0pPb0dyVWdOZ29TXG4yQlNQYVhNV1FxY1pQZHZINGNGc3EveCtadFRlQVd4a21wTmd6UEI3TXRqRmplRXNwUTlkQVJIZ2tLQTVKTVlDXG54YzIyMmt0b3Fnbmhqek1PS21mMDJ0alpnbStsUVIrbTUwVmNTdDlONVhjS1BOa0pTVFRpZFBCdlBDU05YalJXXG5kcUhmSmRkWThCMWJ1aHNRaUVocTBZMWREUUtCZ1FEWWNkTU5XQThFMVZKZEZFSU5JbGlpMEdsWGFnQ2ZHZ0ppXG54VjhaUlQwMWV4cklHbG9hYUtsOEM1QlRBNGFtbFdKUlpaUW94RHBLYTZZUENWc2d4cWJ4dEdKdjU5ZUhVVlVwXG5EZWRteUZCRWhOWWJMaGphOHJKZ3EzYUdFNVVzZ1dyTFJNQ2RkTkZaSjdjUXRtRldXS3hIbW4rWUw1c2d0RnoxXG53a29hd09UVUJRS0JnUUNDd2I2NUgvaWI1MkhaT29kUGtXSVhENTdwQ0J1SjVZeXJJNlZiSVlLYzZpOTEwMElOXG5vT1NyQ3o4ai9XQ3ljNU9Md21LVE5EK0R3TTlPdUE4V2FKSFVLUDhZTitnNzk0bk5qcWh5OFlHUThNSmdKVzhtXG55VVB4SC9FQnJBWVREMTdXZnZuQlIwQ3BubEZBV2cvMHRQZlpGM1FsWU5QdCt1M3RkT1U2MkRXamZRS0JnRUlhXG5LUm1uTGhjTXl6V3dEU2dUdUR3cEtETFJKZFZ4VFE4N05mcnl3V25HNmZ2NHlGSE9hd3grUDVxS3RpSEQ5NTNpXG5SdWhZWFhFREJWa01RMjkwRytJdmMreTNRb1NLRzFjSmJ3VmQ0ZDI3TCtSbkpLSWhnc2F4TnVabHJxWkQ5QWlXXG5PN2theHlEU1Z6OWNZOGZLRnZ0YlBPS09qM0xpZ28xdnc4LzkzeVM5QW9HQU14RzcxVlM1cjFROHZQTWtrcGxPXG52cTEyK1U1L3pkU2FhSWkwTEYyMlZiNGE2UmJqY2YzSDM0V3NQS1J0Q2FtMG52TnNsbXFrY3RLc2RDRnp0Y0NMXG5SQTk5ZTNINTU1WkZCcU03TEhHNnFMMjRCbC9IcnJnSWVoNVFMaVdubEo5VDBkNEMrYlVsS3JwRHJnZDdzekJqXG51dG5ZVVpwakRXWjZQWWUyTjQvYVFuWT1cbi0tLS0tRU5EIFBSSVZBVEUgS0VZLS0tLS1cbiIsCiAgImNsaWVudF9lbWFpbCI6ICJnaXRwb2QtcmVnaXN0cnlAZ3BsLXNoLTA5MC0zLmlhbS5nc2VydmljZWFjY291bnQuY29tIiwKICAiY2xpZW50X2lkIjogIjExMjg0MjA4ODk2ODU1NDEzMTI5NSIsCiAgImF1dGhfdXJpIjogImh0dHBzOi8vYWNjb3VudHMuZ29vZ2xlLmNvbS9vL29hdXRoMi9hdXRoIiwKICAidG9rZW5fdXJpIjogImh0dHBzOi8vb2F1dGgyLmdvb2dsZWFwaXMuY29tL3Rva2VuIiwKICAiYXV0aF9wcm92aWRlcl94NTA5X2NlcnRfdXJsIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL29hdXRoMi92MS9jZXJ0cyIsCiAgImNsaWVudF94NTA5X2NlcnRfdXJsIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3JvYm90L3YxL21ldGFkYXRhL3g1MDkvZ2l0cG9kLXJlZ2lzdHJ5JTQwZ3BsLXNoLTA5MC0zLmlhbS5nc2VydmljZWFjY291bnQuY29tIgp9Cg==" + } + }, + "sensitive_attributes": [] + } + ] + }, + { + "module": "module.registry", + "mode": "data", + "type": "template_file", + "name": "values", + "provider": "provider[\"registry.terraform.io/hashicorp/template\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "filename": null, + "id": "a6789ed2a5dffa868e3e7c7faff1782038c9859ad9360a35eeda5ecf08ddf442", + "rendered": "# Copyright (c) 2020 Gitpod GmbH. All rights reserved.\n# Licensed under the MIT License. See License-MIT.txt in the project root for license information.\n\ncomponents:\n imageBuilder:\n registryCerts: []\n registry:\n name: \"gcr.io/gpl-sh-090-3\"\n secretName: gitpod-registry\n\n workspace:\n pullSecret:\n secretName: gitpod-registry\n\ndocker-registry:\n enabled: false\n", + "template": "# Copyright (c) 2020 Gitpod GmbH. All rights reserved.\n# Licensed under the MIT License. See License-MIT.txt in the project root for license information.\n\ncomponents:\n imageBuilder:\n registryCerts: []\n registry:\n name: \"gcr.io/${project}\"\n secretName: ${secretName}\n\n workspace:\n pullSecret:\n secretName: ${secretName}\n\ndocker-registry:\n enabled: false\n", + "vars": { + "project": "gpl-sh-090-3", + "secretName": "gitpod-registry" + } + }, + "sensitive_attributes": [] + } + ] + }, + { + "module": "module.registry", + "mode": "managed", + "type": "google_project_iam_member", + "name": "gitpod_registry", + "provider": "provider[\"registry.terraform.io/hashicorp/google\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "condition": [], + "etag": "BwXBasRJJWc=", + "id": "gpl-sh-090-3/roles/storage.admin/serviceAccount:gitpod-registry@gpl-sh-090-3.iam.gserviceaccount.com", + "member": "serviceAccount:gitpod-registry@gpl-sh-090-3.iam.gserviceaccount.com", + "project": "gpl-sh-090-3", + "role": "roles/storage.admin" + }, + "sensitive_attributes": [], + "private": "bnVsbA==", + "dependencies": [ + "module.registry.google_service_account.gitpod_registry" + ] + } + ] + }, + { + "module": "module.registry", + "mode": "managed", + "type": "google_project_service", + "name": "gitpod_registry", + "provider": "provider[\"registry.terraform.io/hashicorp/google\"]", + "instances": [ + { + "index_key": 0, + "schema_version": 0, + "attributes": { + "disable_dependent_services": false, + "disable_on_destroy": false, + "id": "gpl-sh-090-3/containerregistry.googleapis.com", + "project": "gpl-sh-090-3", + "service": "containerregistry.googleapis.com", + "timeouts": null + }, + "sensitive_attributes": [], + "private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjoxMjAwMDAwMDAwMDAwLCJkZWxldGUiOjEyMDAwMDAwMDAwMDAsInJlYWQiOjYwMDAwMDAwMDAwMCwidXBkYXRlIjoxMjAwMDAwMDAwMDAwfX0=" + } + ] + }, + { + "module": "module.registry", + "mode": "managed", + "type": "google_service_account", + "name": "gitpod_registry", + "provider": "provider[\"registry.terraform.io/hashicorp/google\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "account_id": "gitpod-registry", + "description": "Gitpod Registry ", + "display_name": "gitpod-registry", + "email": "gitpod-registry@gpl-sh-090-3.iam.gserviceaccount.com", + "id": "projects/gpl-sh-090-3/serviceAccounts/gitpod-registry@gpl-sh-090-3.iam.gserviceaccount.com", + "name": "projects/gpl-sh-090-3/serviceAccounts/gitpod-registry@gpl-sh-090-3.iam.gserviceaccount.com", + "project": "gpl-sh-090-3", + "timeouts": null, + "unique_id": "112842088968554131295" + }, + "sensitive_attributes": [], + "private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjozMDAwMDAwMDAwMDB9fQ==" + } + ] + }, + { + "module": "module.registry", + "mode": "managed", + "type": "google_service_account_key", + "name": "gitpod_registry", + "provider": "provider[\"registry.terraform.io/hashicorp/google\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "id": "projects/gpl-sh-090-3/serviceAccounts/gitpod-registry@gpl-sh-090-3.iam.gserviceaccount.com/keys/d1ed7a4eef2abe507cc9435c1964d9e1f8d09608", + "keepers": null, + "key_algorithm": "KEY_ALG_RSA_2048", + "name": "projects/gpl-sh-090-3/serviceAccounts/gitpod-registry@gpl-sh-090-3.iam.gserviceaccount.com/keys/d1ed7a4eef2abe507cc9435c1964d9e1f8d09608", + "private_key": "ewogICJ0eXBlIjogInNlcnZpY2VfYWNjb3VudCIsCiAgInByb2plY3RfaWQiOiAiZ3BsLXNoLTA5MC0zIiwKICAicHJpdmF0ZV9rZXlfaWQiOiAiZDFlZDdhNGVlZjJhYmU1MDdjYzk0MzVjMTk2NGQ5ZTFmOGQwOTYwOCIsCiAgInByaXZhdGVfa2V5IjogIi0tLS0tQkVHSU4gUFJJVkFURSBLRVktLS0tLVxuTUlJRXZRSUJBREFOQmdrcWhraUc5dzBCQVFFRkFBU0NCS2N3Z2dTakFnRUFBb0lCQVFEUHlYVGVzS1VsZzg4ZVxuVkZZdzhJb0I0Q21jK2psUDl2eUlhOGtqYmNaMUt5cXdqejdmaFNTYTlOLzVaVStqVkJ2ZXFvWHhxamxNV3VtblxuUnZMOFdtTlB6MkpqL2xMdFg2SlNWeU1CeTNxZElIOVRFZXo0QXJNUzA2aXhMd01tOUxuV1NUbm5CZTY3RGJ1MlxuNVI0QnRwb3dIVGQyL0l3Y2J3NXVyVkVVZXJCVHRqUnYxSFRvTnBWL2tmY2Q0RlVlcmp2Yy95ZU8xZkxIWEdtZVxuWVd0WDNiTTNrZnJWam9aNUVJaFFUT0ZqbUpZcENYYTIwQ21WUkVLWGV6TE5nczh5MnM1T2k2NFY1QW1vYlhid1xuTC9mNm1VSmZtNjRTOEFIVVhnU3NVV2xRUzN3UW9ZeUl4VldobWFJL0p1c3MxUWVhWkttdTh1eUMrSW5qTHVVSlxudktISVpaVkJBZ01CQUFFQ2dnRUFBWVA0cEQ4cGxUSjI2a08zTlRncjZZT1hDaHdSR3ZJME9WSi83eEEzNkZiZVxuUXRkb24veTZuWjYzbTN3UHJxTklhTUZacEwrWEYyVjZXc3Y3cmJlRERldjNUYjluSDNBWklQeWR0citqTDA0elxuWDRtNzdyc21UemJYL2lMWHBRc1g1K1kwMCtpSkt6Z1liR2NUWnZQTUFCbldjN20zMCtWRGQ2OHY3alJPNE8xcFxuNlhrSFNzWkRaZmllbHRwMzRNSFFyaTNzcVNlcEtYTUVSbzFrbnZFSFJicWZYNU9ENm1vVzBCTGUrTzkzelA3NlxucDFiVUF3cE9NY1diQ0hxUDQvRE95YTEyaHpYMXNqK0x6VzJIOW1OTkFJL3Y0Y2ZPMlNheDB6UDRqT0JiUXhTSFxuNlA1bkVxWXlZcFVVQk45QmJFWEh3ckhFalo3RCtsdnpGL1hZcXRRUm9RS0JnUUQxd3Biei9KT29HclVnTmdvU1xuMkJTUGFYTVdRcWNaUGR2SDRjRnNxL3grWnRUZUFXeGttcE5nelBCN010akZqZUVzcFE5ZEFSSGdrS0E1Sk1ZQ1xueGMyMjJrdG9xZ25oanpNT0ttZjAydGpaZ20rbFFSK201MFZjU3Q5TjVYY0tQTmtKU1RUaWRQQnZQQ1NOWGpSV1xuZHFIZkpkZFk4QjFidWhzUWlFaHEwWTFkRFFLQmdRRFljZE1OV0E4RTFWSmRGRUlOSWxpaTBHbFhhZ0NmR2dKaVxueFY4WlJUMDFleHJJR2xvYWFLbDhDNUJUQTRhbWxXSlJaWlFveERwS2E2WVBDVnNneHFieHRHSnY1OWVIVVZVcFxuRGVkbXlGQkVoTlliTGhqYThySmdxM2FHRTVVc2dXckxSTUNkZE5GWko3Y1F0bUZXV0t4SG1uK1lMNXNndEZ6MVxud2tvYXdPVFVCUUtCZ1FDQ3diNjVIL2liNTJIWk9vZFBrV0lYRDU3cENCdUo1WXlySTZWYklZS2M2aTkxMDBJTlxub09TckN6OGovV0N5YzVPTHdtS1RORCtEd005T3VBOFdhSkhVS1A4WU4rZzc5NG5OanFoeThZR1E4TUpnSlc4bVxueVVQeEgvRUJyQVlURDE3V2Z2bkJSMENwbmxGQVdnLzB0UGZaRjNRbFlOUHQrdTN0ZE9VNjJEV2pmUUtCZ0VJYVxuS1JtbkxoY015eld3RFNnVHVEd3BLRExSSmRWeFRRODdOZnJ5d1duRzZmdjR5RkhPYXd4K1A1cUt0aUhEOTUzaVxuUnVoWVhYRURCVmtNUTI5MEcrSXZjK3kzUW9TS0cxY0pid1ZkNGQyN0wrUm5KS0loZ3NheE51WmxycVpEOUFpV1xuTzdrYXh5RFNWejljWThmS0Z2dGJQT0tPajNMaWdvMXZ3OC85M3lTOUFvR0FNeEc3MVZTNXIxUTh2UE1ra3BsT1xudnExMitVNS96ZFNhYUlpMExGMjJWYjRhNlJiamNmM0gzNFdzUEtSdENhbTBudk5zbG1xa2N0S3NkQ0Z6dGNDTFxuUkE5OWUzSDU1NVpGQnFNN0xIRzZxTDI0QmwvSHJyZ0llaDVRTGlXbmxKOVQwZDRDK2JVbEtycERyZ2Q3c3pCalxudXRuWVVacGpEV1o2UFllMk40L2FRblk9XG4tLS0tLUVORCBQUklWQVRFIEtFWS0tLS0tXG4iLAogICJjbGllbnRfZW1haWwiOiAiZ2l0cG9kLXJlZ2lzdHJ5QGdwbC1zaC0wOTAtMy5pYW0uZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgImNsaWVudF9pZCI6ICIxMTI4NDIwODg5Njg1NTQxMzEyOTUiLAogICJhdXRoX3VyaSI6ICJodHRwczovL2FjY291bnRzLmdvb2dsZS5jb20vby9vYXV0aDIvYXV0aCIsCiAgInRva2VuX3VyaSI6ICJodHRwczovL29hdXRoMi5nb29nbGVhcGlzLmNvbS90b2tlbiIsCiAgImF1dGhfcHJvdmlkZXJfeDUwOV9jZXJ0X3VybCI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9vYXV0aDIvdjEvY2VydHMiLAogICJjbGllbnRfeDUwOV9jZXJ0X3VybCI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9yb2JvdC92MS9tZXRhZGF0YS94NTA5L2dpdHBvZC1yZWdpc3RyeSU0MGdwbC1zaC0wOTAtMy5pYW0uZ3NlcnZpY2VhY2NvdW50LmNvbSIKfQo=", + "private_key_type": "TYPE_GOOGLE_CREDENTIALS_FILE", + "public_key": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUMvRENDQWVTZ0F3SUJBZ0lJU3ZqNFF5RmlPVUl3RFFZSktvWklodmNOQVFFRkJRQXdJREVlTUJ3R0ExVUUKQXhNVk1URXlPRFF5TURnNE9UWTROVFUwTVRNeE1qazFNQ0FYRFRJeE1EVXdNekV3TkRBMU9Wb1lEems1T1RreApNak14TWpNMU9UVTVXakFnTVI0d0hBWURWUVFERXhVeE1USTROREl3T0RnNU5qZzFOVFF4TXpFeU9UVXdnZ0VpCk1BMEdDU3FHU0liM0RRRUJBUVVBQTRJQkR3QXdnZ0VLQW9JQkFRRFB5WFRlc0tVbGc4OGVWRll3OElvQjRDbWMKK2psUDl2eUlhOGtqYmNaMUt5cXdqejdmaFNTYTlOLzVaVStqVkJ2ZXFvWHhxamxNV3VtblJ2TDhXbU5QejJKagovbEx0WDZKU1Z5TUJ5M3FkSUg5VEVlejRBck1TMDZpeEx3TW05TG5XU1RubkJlNjdEYnUyNVI0QnRwb3dIVGQyCi9Jd2NidzV1clZFVWVyQlR0alJ2MUhUb05wVi9rZmNkNEZVZXJqdmMveWVPMWZMSFhHbWVZV3RYM2JNM2tmclYKam9aNUVJaFFUT0ZqbUpZcENYYTIwQ21WUkVLWGV6TE5nczh5MnM1T2k2NFY1QW1vYlhid0wvZjZtVUpmbTY0Uwo4QUhVWGdTc1VXbFFTM3dRb1l5SXhWV2htYUkvSnVzczFRZWFaS211OHV5QytJbmpMdVVKdktISVpaVkJBZ01CCkFBR2pPREEyTUF3R0ExVWRFd0VCL3dRQ01BQXdEZ1lEVlIwUEFRSC9CQVFEQWdlQU1CWUdBMVVkSlFFQi93UU0KTUFvR0NDc0dBUVVGQndNQ01BMEdDU3FHU0liM0RRRUJCUVVBQTRJQkFRQWo3QWxvVmtEMlJnMEVmYmpCYWgvcwpoQlB1ZlVUR0kyWWRvcFI1UzdMekJZOUtaR0RGVmlJaG52UVVNQTd5blBaL0lWK2dPMmZRUlpiWDJDSU5YTlB6CkhIY1ZQbjgvRDdTcFN0cisrUHVlRkxHRG5VNElSWjhQaWRJbnhsMStEdXZiNXMzUkJmV1NnMU9lc3paNndxNzcKKzMySWdNVEpFOGdiakhPc2RWemc0aUxzZk40RHI1QWVFQXhwSlo2N3BTY21rN3NFVWQ0NFVJRDFZUCtpSStBUApnSGtoLzU3YjlZbFYxaDhrNEJQdU5tZmhQRDR0N04xWjk1bGYrL0o4OWFkcnBzb0Q0NzAvdmVOdUZaODcyZ0x3CkFSaU1WOU9qZ1UxY2pLaG1qdFBJSEZuT01tb0JMbzZndEdPR3pJOFVhOVBBQnlWbWxsemFFcERjTXlXMWtGK0MKLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQo=", + "public_key_data": null, + "public_key_type": "TYPE_X509_PEM_FILE", + "service_account_id": "projects/gpl-sh-090-3/serviceAccounts/gitpod-registry@gpl-sh-090-3.iam.gserviceaccount.com", + "valid_after": "2021-05-03T10:40:59Z", + "valid_before": "9999-12-31T23:59:59Z" + }, + "sensitive_attributes": [], + "private": "bnVsbA==", + "dependencies": [ + "module.registry.google_service_account.gitpod_registry" + ] + } + ] + }, + { + "module": "module.registry", + "mode": "managed", + "type": "kubernetes_secret", + "name": "registry", + "provider": "provider[\"registry.terraform.io/hashicorp/kubernetes\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "data": { + ".dockerconfigjson": "{\n\t\"auths\": {\n\t\t\"gcr.io\": {\n\t\t\t\"auth\": \"X2pzb25fa2V5OiB7CiAgInR5cGUiOiAic2VydmljZV9hY2NvdW50IiwKICAicHJvamVjdF9pZCI6ICJncGwtc2gtMDkwLTMiLAogICJwcml2YXRlX2tleV9pZCI6ICJkMWVkN2E0ZWVmMmFiZTUwN2NjOTQzNWMxOTY0ZDllMWY4ZDA5NjA4IiwKICAicHJpdmF0ZV9rZXkiOiAiLS0tLS1CRUdJTiBQUklWQVRFIEtFWS0tLS0tXG5NSUlFdlFJQkFEQU5CZ2txaGtpRzl3MEJBUUVGQUFTQ0JLY3dnZ1NqQWdFQUFvSUJBUURQeVhUZXNLVWxnODhlXG5WRll3OElvQjRDbWMramxQOXZ5SWE4a2piY1oxS3lxd2p6N2ZoU1NhOU4vNVpVK2pWQnZlcW9YeHFqbE1XdW1uXG5Sdkw4V21OUHoySmovbEx0WDZKU1Z5TUJ5M3FkSUg5VEVlejRBck1TMDZpeEx3TW05TG5XU1RubkJlNjdEYnUyXG41UjRCdHBvd0hUZDIvSXdjYnc1dXJWRVVlckJUdGpSdjFIVG9OcFYva2ZjZDRGVWVyanZjL3llTzFmTEhYR21lXG5ZV3RYM2JNM2tmclZqb1o1RUloUVRPRmptSllwQ1hhMjBDbVZSRUtYZXpMTmdzOHkyczVPaTY0VjVBbW9iWGJ3XG5ML2Y2bVVKZm02NFM4QUhVWGdTc1VXbFFTM3dRb1l5SXhWV2htYUkvSnVzczFRZWFaS211OHV5QytJbmpMdVVKXG52S0hJWlpWQkFnTUJBQUVDZ2dFQUFZUDRwRDhwbFRKMjZrTzNOVGdyNllPWENod1JHdkkwT1ZKLzd4QTM2RmJlXG5RdGRvbi95Nm5aNjNtM3dQcnFOSWFNRlpwTCtYRjJWNldzdjdyYmVERGV2M1RiOW5IM0FaSVB5ZHRyK2pMMDR6XG5YNG03N3JzbVR6YlgvaUxYcFFzWDUrWTAwK2lKS3pnWWJHY1RadlBNQUJuV2M3bTMwK1ZEZDY4djdqUk80TzFwXG42WGtIU3NaRFpmaWVsdHAzNE1IUXJpM3NxU2VwS1hNRVJvMWtudkVIUmJxZlg1T0Q2bW9XMEJMZStPOTN6UDc2XG5wMWJVQXdwT01jV2JDSHFQNC9ET3lhMTJoelgxc2orTHpXMkg5bU5OQUkvdjRjZk8yU2F4MHpQNGpPQmJReFNIXG42UDVuRXFZeVlwVVVCTjlCYkVYSHdySEVqWjdEK2x2ekYvWFlxdFFSb1FLQmdRRDF3cGJ6L0pPb0dyVWdOZ29TXG4yQlNQYVhNV1FxY1pQZHZINGNGc3EveCtadFRlQVd4a21wTmd6UEI3TXRqRmplRXNwUTlkQVJIZ2tLQTVKTVlDXG54YzIyMmt0b3Fnbmhqek1PS21mMDJ0alpnbStsUVIrbTUwVmNTdDlONVhjS1BOa0pTVFRpZFBCdlBDU05YalJXXG5kcUhmSmRkWThCMWJ1aHNRaUVocTBZMWREUUtCZ1FEWWNkTU5XQThFMVZKZEZFSU5JbGlpMEdsWGFnQ2ZHZ0ppXG54VjhaUlQwMWV4cklHbG9hYUtsOEM1QlRBNGFtbFdKUlpaUW94RHBLYTZZUENWc2d4cWJ4dEdKdjU5ZUhVVlVwXG5EZWRteUZCRWhOWWJMaGphOHJKZ3EzYUdFNVVzZ1dyTFJNQ2RkTkZaSjdjUXRtRldXS3hIbW4rWUw1c2d0RnoxXG53a29hd09UVUJRS0JnUUNDd2I2NUgvaWI1MkhaT29kUGtXSVhENTdwQ0J1SjVZeXJJNlZiSVlLYzZpOTEwMElOXG5vT1NyQ3o4ai9XQ3ljNU9Md21LVE5EK0R3TTlPdUE4V2FKSFVLUDhZTitnNzk0bk5qcWh5OFlHUThNSmdKVzhtXG55VVB4SC9FQnJBWVREMTdXZnZuQlIwQ3BubEZBV2cvMHRQZlpGM1FsWU5QdCt1M3RkT1U2MkRXamZRS0JnRUlhXG5LUm1uTGhjTXl6V3dEU2dUdUR3cEtETFJKZFZ4VFE4N05mcnl3V25HNmZ2NHlGSE9hd3grUDVxS3RpSEQ5NTNpXG5SdWhZWFhFREJWa01RMjkwRytJdmMreTNRb1NLRzFjSmJ3VmQ0ZDI3TCtSbkpLSWhnc2F4TnVabHJxWkQ5QWlXXG5PN2theHlEU1Z6OWNZOGZLRnZ0YlBPS09qM0xpZ28xdnc4LzkzeVM5QW9HQU14RzcxVlM1cjFROHZQTWtrcGxPXG52cTEyK1U1L3pkU2FhSWkwTEYyMlZiNGE2UmJqY2YzSDM0V3NQS1J0Q2FtMG52TnNsbXFrY3RLc2RDRnp0Y0NMXG5SQTk5ZTNINTU1WkZCcU03TEhHNnFMMjRCbC9IcnJnSWVoNVFMaVdubEo5VDBkNEMrYlVsS3JwRHJnZDdzekJqXG51dG5ZVVpwakRXWjZQWWUyTjQvYVFuWT1cbi0tLS0tRU5EIFBSSVZBVEUgS0VZLS0tLS1cbiIsCiAgImNsaWVudF9lbWFpbCI6ICJnaXRwb2QtcmVnaXN0cnlAZ3BsLXNoLTA5MC0zLmlhbS5nc2VydmljZWFjY291bnQuY29tIiwKICAiY2xpZW50X2lkIjogIjExMjg0MjA4ODk2ODU1NDEzMTI5NSIsCiAgImF1dGhfdXJpIjogImh0dHBzOi8vYWNjb3VudHMuZ29vZ2xlLmNvbS9vL29hdXRoMi9hdXRoIiwKICAidG9rZW5fdXJpIjogImh0dHBzOi8vb2F1dGgyLmdvb2dsZWFwaXMuY29tL3Rva2VuIiwKICAiYXV0aF9wcm92aWRlcl94NTA5X2NlcnRfdXJsIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL29hdXRoMi92MS9jZXJ0cyIsCiAgImNsaWVudF94NTA5X2NlcnRfdXJsIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3JvYm90L3YxL21ldGFkYXRhL3g1MDkvZ2l0cG9kLXJlZ2lzdHJ5JTQwZ3BsLXNoLTA5MC0zLmlhbS5nc2VydmljZWFjY291bnQuY29tIgp9Cg==\"\n\t\t}\n\t}\n}" + }, + "id": "default/gitpod-registry", + "metadata": [ + { + "annotations": {}, + "generate_name": "", + "generation": 0, + "labels": {}, + "name": "gitpod-registry", + "namespace": "default", + "resource_version": "16569", + "self_link": "", + "uid": "6ba415b6-0515-4ecc-a4ea-fe8d086de2f8" + } + ], + "type": "kubernetes.io/dockerconfigjson" + }, + "sensitive_attributes": [], + "private": "bnVsbA==", + "dependencies": [ + "data.google_client_config.provider", + "google_compute_network.gitpod", + "module.kubernetes.google_compute_subnetwork.gitpod", + "module.kubernetes.google_container_cluster.gitpod", + "module.registry.data.template_file.registry", + "module.registry.google_service_account.gitpod_registry", + "module.registry.google_service_account_key.gitpod_registry" + ] + } + ] + }, + { + "module": "module.storage", + "mode": "data", + "type": "template_file", + "name": "values", + "provider": "provider[\"registry.terraform.io/hashicorp/template\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "filename": null, + "id": "b153ed4bdbcbe293c5284b8fac073b869023f99475d17539b511eee26941e262", + "rendered": "# Copyright (c) 2020 Gitpod GmbH. All rights reserved.\n# Licensed under the MIT License. See License-MIT.txt in the project root for license information.\n\ncomponents:\n\n contentService:\n remoteStorage:\n kind: gcloud\n # Not strictly necessary, but nice-to-have\n backupTrail:\n enabled: true\n maxLength: 3\n gcloud:\n parallelUpload: 6\n maximumBackupSize: 32212254720 # 30 GiB\n projectId: gpl-sh-090-3\n region: europe-west3\n credentialsFile: /credentials/key.json\n tmpdir: /mnt/sync-tmp\n\n wsDaemon:\n hostWorkspaceArea: /var/gitpod/workspaces\n containerRuntime:\n runtime: containerd\n containerd:\n socket: /run/containerd/containerd.sock\n nodeRoots:\n - /var/lib\n # we want to be as compatible as possible, so disable those\n userNamespaces:\n shiftfsModuleLoader:\n enabled: false\n # seccompProfileInstaller:\n # enabled: true\n volumes:\n - name: gcloud-creds\n secret:\n secretName: gcloud-creds\n - name: gcloud-tmp\n hostPath:\n path: /mnt/disks/ssd0/sync-tmp\n type: DirectoryOrCreate\n volumeMounts:\n - mountPath: /credentials\n name: gcloud-creds\n - mountPath: /mnt/sync-tmp\n name: gcloud-tmp\n\n wsManager:\n volumes:\n - name: gcloud-creds\n secret:\n secretName: gcloud-creds\n volumeMounts:\n - mountPath: /credentials\n name: gcloud-creds\n\nminio:\n enabled: false\n", + "template": "# Copyright (c) 2020 Gitpod GmbH. All rights reserved.\n# Licensed under the MIT License. See License-MIT.txt in the project root for license information.\n\ncomponents:\n\n contentService:\n remoteStorage:\n kind: gcloud\n # Not strictly necessary, but nice-to-have\n backupTrail:\n enabled: true\n maxLength: 3\n gcloud:\n parallelUpload: 6\n maximumBackupSize: 32212254720 # 30 GiB\n projectId: ${project}\n region: ${region}\n credentialsFile: /credentials/key.json\n tmpdir: /mnt/sync-tmp\n\n wsDaemon:\n hostWorkspaceArea: /var/gitpod/workspaces\n containerRuntime:\n runtime: containerd\n containerd:\n socket: /run/containerd/containerd.sock\n nodeRoots:\n - /var/lib\n # we want to be as compatible as possible, so disable those\n userNamespaces:\n shiftfsModuleLoader:\n enabled: false\n # seccompProfileInstaller:\n # enabled: true\n volumes:\n - name: gcloud-creds\n secret:\n secretName: ${secretName}\n - name: gcloud-tmp\n hostPath:\n path: /mnt/disks/ssd0/sync-tmp\n type: DirectoryOrCreate\n volumeMounts:\n - mountPath: /credentials\n name: gcloud-creds\n - mountPath: /mnt/sync-tmp\n name: gcloud-tmp\n\n wsManager:\n volumes:\n - name: gcloud-creds\n secret:\n secretName: ${secretName}\n volumeMounts:\n - mountPath: /credentials\n name: gcloud-creds\n\nminio:\n enabled: false\n", + "vars": { + "project": "gpl-sh-090-3", + "region": "europe-west3", + "secretName": "gcloud-creds" + } + }, + "sensitive_attributes": [] + } + ] + }, + { + "module": "module.storage", + "mode": "managed", + "type": "google_project_iam_member", + "name": "gitpod_storage", + "provider": "provider[\"registry.terraform.io/hashicorp/google\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "condition": [], + "etag": "BwXBasRJJWc=", + "id": "gpl-sh-090-3/roles/storage.admin/serviceAccount:gitpod-storage@gpl-sh-090-3.iam.gserviceaccount.com", + "member": "serviceAccount:gitpod-storage@gpl-sh-090-3.iam.gserviceaccount.com", + "project": "gpl-sh-090-3", + "role": "roles/storage.admin" + }, + "sensitive_attributes": [], + "private": "bnVsbA==", + "dependencies": [ + "module.storage.google_service_account.gitpod_storage" + ] + } + ] + }, + { + "module": "module.storage", + "mode": "managed", + "type": "google_project_service", + "name": "storage", + "provider": "provider[\"registry.terraform.io/hashicorp/google\"]", + "instances": [ + { + "index_key": 0, + "schema_version": 0, + "attributes": { + "disable_dependent_services": false, + "disable_on_destroy": false, + "id": "gpl-sh-090-3/storage-api.googleapis.com", + "project": "gpl-sh-090-3", + "service": "storage-api.googleapis.com", + "timeouts": null + }, + "sensitive_attributes": [], + "private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjoxMjAwMDAwMDAwMDAwLCJkZWxldGUiOjEyMDAwMDAwMDAwMDAsInJlYWQiOjYwMDAwMDAwMDAwMCwidXBkYXRlIjoxMjAwMDAwMDAwMDAwfX0=" + }, + { + "index_key": 1, + "schema_version": 0, + "attributes": { + "disable_dependent_services": false, + "disable_on_destroy": false, + "id": "gpl-sh-090-3/storage-component.googleapis.com", + "project": "gpl-sh-090-3", + "service": "storage-component.googleapis.com", + "timeouts": null + }, + "sensitive_attributes": [], + "private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjoxMjAwMDAwMDAwMDAwLCJkZWxldGUiOjEyMDAwMDAwMDAwMDAsInJlYWQiOjYwMDAwMDAwMDAwMCwidXBkYXRlIjoxMjAwMDAwMDAwMDAwfX0=" + } + ] + }, + { + "module": "module.storage", + "mode": "managed", + "type": "google_service_account", + "name": "gitpod_storage", + "provider": "provider[\"registry.terraform.io/hashicorp/google\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "account_id": "gitpod-storage", + "description": "gitpod-workspace-syncer", + "display_name": "gitpod-storage", + "email": "gitpod-storage@gpl-sh-090-3.iam.gserviceaccount.com", + "id": "projects/gpl-sh-090-3/serviceAccounts/gitpod-storage@gpl-sh-090-3.iam.gserviceaccount.com", + "name": "projects/gpl-sh-090-3/serviceAccounts/gitpod-storage@gpl-sh-090-3.iam.gserviceaccount.com", + "project": "gpl-sh-090-3", + "timeouts": null, + "unique_id": "114284941115824702053" + }, + "sensitive_attributes": [], + "private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjozMDAwMDAwMDAwMDB9fQ==" + } + ] + }, + { + "module": "module.storage", + "mode": "managed", + "type": "google_service_account_key", + "name": "gitpod_storage", + "provider": "provider[\"registry.terraform.io/hashicorp/google\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "id": "projects/gpl-sh-090-3/serviceAccounts/gitpod-storage@gpl-sh-090-3.iam.gserviceaccount.com/keys/428592efd55c9e5d7ffef6449b95d14250ad6272", + "keepers": null, + "key_algorithm": "KEY_ALG_RSA_2048", + "name": "projects/gpl-sh-090-3/serviceAccounts/gitpod-storage@gpl-sh-090-3.iam.gserviceaccount.com/keys/428592efd55c9e5d7ffef6449b95d14250ad6272", + "private_key": "ewogICJ0eXBlIjogInNlcnZpY2VfYWNjb3VudCIsCiAgInByb2plY3RfaWQiOiAiZ3BsLXNoLTA5MC0zIiwKICAicHJpdmF0ZV9rZXlfaWQiOiAiNDI4NTkyZWZkNTVjOWU1ZDdmZmVmNjQ0OWI5NWQxNDI1MGFkNjI3MiIsCiAgInByaXZhdGVfa2V5IjogIi0tLS0tQkVHSU4gUFJJVkFURSBLRVktLS0tLVxuTUlJRXZnSUJBREFOQmdrcWhraUc5dzBCQVFFRkFBU0NCS2d3Z2dTa0FnRUFBb0lCQVFEUXJJeW0xcnBMbWkrVlxuSFlXWFNLZnBxQ2V1UmNtSUtoQUlKRzYyWHlrb1FZUWp6NWM3OUI3ZGtZY3FqNWhmeVZsODdseVF0OWpWM0d4Mlxud0xsSnRpZWxrZ3oxY3JoUC9XWXlEMWo2aFJhOWN4WEhIWXRzckxHUVdMc014UXJVcDRGQjR1V0lQK1k5dGUxWFxuQVZmME5Ra2hMUTJoNHl2N09ncmRnc1BLeEhaVW5OUytJdThkcHFkd1p5VktGWW44K0diU29DMkxTS0NPV09VT1xuRWY2bzRhQlVLTGRSSlppS1B5d1BJVDBpSzlwb1U5S3k1bnBpc1pNYXE5K3NCQkNxNVNqdUVwNXpnRDZRNWxsN1xuYTFyWGVXN0U0V0htQkdlVndjUFVkVTBUejhacUE4TDZaS2t5S1o0ejdDa0V0RVV4L0RrMlNidXFTK2N4NjZ6MVxuU3JPWElnbG5BZ01CQUFFQ2dnRUFWZ3RvWGQwNTZUVzFQQi8xdDNsaW41TFNkZVpaNFBjek1DQlJ0SXFOcm9kQlxuWlFEUzVBcFg5ZFh0cmN1VE1hQVZjZEhad21URW1QNndqTkVRTmdoUjFkQmczbzdFMkZydEdtUkF0T0JQRGFSWVxuVFFmdU4wd0lWYlI0d0oyNVJ4R2cxMW1uZXVTYVhFVFpqbUJEODdNd3hnak5UNzBjSkJYOVovUmxKb1dYSTNEZVxuOTFIUWMwK0dLODZKYXMvMEI1K2FIeFFqVE00ODVINHVDOFVFczlGbUFXUFFZREFpaWRpcmxiemNFVm1nYU5YS1xuUUZqRHVHSnJiOEttbWI0Sk0yKzl3TUdJNzgvUzdYOHZvN0o4NnRjZFlwYzhodUllVXJhR05KWDZKZi85OVAweFxuVTZOaFd4UVJoZ0RmV3RteUVLazdWRGVXS2RPK2t5UzBaV2RvQ0FTc0dRS0JnUUR3aWtmYS9mUzA5N1kwTUVRRlxuMndLenhrWS8wRy9MY2w4bDl0Mk5FQWdIL2NBTnVIdjk0QjJIRFBGNmMxcGUxcjczNEtZQVAwUVEybUdFU0ZCeVxuRlA2R3NzSVdrVDJmMXpVeGN6eHhSU3FYUVU2bVd5TEYyVFZIMzFOQ2tDTUdHdFg3YWc0SzQ2Y3hnMU9IdUQyRFxualMzM1M1S0FSSUFqaFEwQkYwTmd6aSsxR1FLQmdRRGVGZlhYdWR1cHFES09wdFFxV0RkcTdBdUxJZ25pRENzMVxuNk1DU2RoWkVvUmo0bW1WaGFKUlN6MlYyRzlXZXVwem14blVnODRHT1RLU0o3WUMxK2FqTTFBQmdQQ3hJMjE1SVxuZ0tta1RnbnViKzhhNFVrUEFkVXRpRVkzbHBZNE1yRCt2Z2FiaEdkSExndnBSak9jWlhnMUd0T05xelVOQTIzSlxuczhVM0N4VUNmd0tCZ1FDck9nUkVnNXI2WjRzd1ExdG92NnFBeHBlalBZRVhWZWNkWTBuNjdIcUxGYnJ0Q1hKYVxuR250cWMzQkNObk1TSjlQeEo5MkRONFlBYVRRWnNsQnhwVGc2TW0ydkd0eS9ON2NKNkhvU042WkYzWnRiR0d6OFxuWWM1bnh6WEJvRkVPTzNRdmNDTm01UDlUWTZUR2JBUjk3TFhYMzlmOXJzVjRnM0hxWU9ENXZFeUJvUUtCZ0M0SlxuKzJiM1BwUlRLL2ZxbWIwVmdKZUh5M1RTWDU0ZXk2NW5TOVNRNmxqYjFLTmt6bk45REpLR01CQm1BTWpoQXJuTVxubG1kNFUzaytaalc1cUo4UTNHOXAyNUlYcDA2TE8yWm9WY0tiOHU4ZEFVSmZSWmY0MTBxVEg0dFNpbDJvRkkwYVxuczUvMXVMdEd6bTFUZ2t0L3RZVzh3L0p3ZFpUM0N3RnZaUWplSVVMZEFvR0JBSTVhYVdtU0FRdVQxKzBYS2kzV1xuZXZ4Mis3eFkxZDdHT0ZKYm41VDl4czk5RE85RGdlYnZ6OGh0c0tzZVB5ZjVzMkNaeTlERjJMWEQ1d3N1d2lGaFxuZkt0cDdxbytBUkZFOUE4SjVmUXNvMHd2ei9IUzFReGxwYW1RbjJVOEVOd3JIU1hkSFdGT3RLbzhsSTVDT0RFVFxueXpGN2pxak5ZY3FXU2lGZGZ0VmVwWUJ3XG4tLS0tLUVORCBQUklWQVRFIEtFWS0tLS0tXG4iLAogICJjbGllbnRfZW1haWwiOiAiZ2l0cG9kLXN0b3JhZ2VAZ3BsLXNoLTA5MC0zLmlhbS5nc2VydmljZWFjY291bnQuY29tIiwKICAiY2xpZW50X2lkIjogIjExNDI4NDk0MTExNTgyNDcwMjA1MyIsCiAgImF1dGhfdXJpIjogImh0dHBzOi8vYWNjb3VudHMuZ29vZ2xlLmNvbS9vL29hdXRoMi9hdXRoIiwKICAidG9rZW5fdXJpIjogImh0dHBzOi8vb2F1dGgyLmdvb2dsZWFwaXMuY29tL3Rva2VuIiwKICAiYXV0aF9wcm92aWRlcl94NTA5X2NlcnRfdXJsIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL29hdXRoMi92MS9jZXJ0cyIsCiAgImNsaWVudF94NTA5X2NlcnRfdXJsIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3JvYm90L3YxL21ldGFkYXRhL3g1MDkvZ2l0cG9kLXN0b3JhZ2UlNDBncGwtc2gtMDkwLTMuaWFtLmdzZXJ2aWNlYWNjb3VudC5jb20iCn0K", + "private_key_type": "TYPE_GOOGLE_CREDENTIALS_FILE", + "public_key": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUMvRENDQWVTZ0F3SUJBZ0lJUDJPWGtkaVNPcHN3RFFZSktvWklodmNOQVFFRkJRQXdJREVlTUJ3R0ExVUUKQXhNVk1URTBNamcwT1RReE1URTFPREkwTnpBeU1EVXpNQ0FYRFRJeE1EVXdNekV3TkRFME5sb1lEems1T1RreApNak14TWpNMU9UVTVXakFnTVI0d0hBWURWUVFERXhVeE1UUXlPRFE1TkRFeE1UVTRNalEzTURJd05UTXdnZ0VpCk1BMEdDU3FHU0liM0RRRUJBUVVBQTRJQkR3QXdnZ0VLQW9JQkFRRFFySXltMXJwTG1pK1ZIWVdYU0tmcHFDZXUKUmNtSUtoQUlKRzYyWHlrb1FZUWp6NWM3OUI3ZGtZY3FqNWhmeVZsODdseVF0OWpWM0d4MndMbEp0aWVsa2d6MQpjcmhQL1dZeUQxajZoUmE5Y3hYSEhZdHNyTEdRV0xzTXhRclVwNEZCNHVXSVArWTl0ZTFYQVZmME5Ra2hMUTJoCjR5djdPZ3JkZ3NQS3hIWlVuTlMrSXU4ZHBxZHdaeVZLRlluOCtHYlNvQzJMU0tDT1dPVU9FZjZvNGFCVUtMZFIKSlppS1B5d1BJVDBpSzlwb1U5S3k1bnBpc1pNYXE5K3NCQkNxNVNqdUVwNXpnRDZRNWxsN2ExclhlVzdFNFdIbQpCR2VWd2NQVWRVMFR6OFpxQThMNlpLa3lLWjR6N0NrRXRFVXgvRGsyU2J1cVMrY3g2NnoxU3JPWElnbG5BZ01CCkFBR2pPREEyTUF3R0ExVWRFd0VCL3dRQ01BQXdEZ1lEVlIwUEFRSC9CQVFEQWdlQU1CWUdBMVVkSlFFQi93UU0KTUFvR0NDc0dBUVVGQndNQ01BMEdDU3FHU0liM0RRRUJCUVVBQTRJQkFRQ3k1QVJGakhvU1JMQlpOU2E5djZSKwozVlNvMERGNE1mQzNYU2d0SG9QeVpQcUF1TGxrVjNQZFUxZzF3TlRpY002UXF6dVJ0VVdCeEk1MUp5cXo4VGc4ClJhQ2MvQ3o0NWt5T05mendvZGNzb3dhL3hQOXlDNG5EVmdsaEt4TzVYUDZITGplYmhtcHBrTE1DMzd5WjVVbjkKemF4c251RVZUMVVXZVhjSDYyYU1OeDFxVEVEWkJsRSt6dDdSUEhKR1ZBeHk4YzRhSXVVN21BTEZobjR6THBxWQpLMHVHYTlmUmRJbm5QNDMycWQvZWwva3lUbDlEYmlKdzNDUzRGSVZsZ3Z1ZitlUVdpTGxlZUhtcElYYzM1L2taCkFzNWtXM3M0WUlwWEhGNEtRbHAvTVgwK3QvN25Wc0R4WkQ5a21uR3hvdU0vMldEaVl0dkVUUW9xQVNONmVLaVYKLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQo=", + "public_key_data": null, + "public_key_type": "TYPE_X509_PEM_FILE", + "service_account_id": "projects/gpl-sh-090-3/serviceAccounts/gitpod-storage@gpl-sh-090-3.iam.gserviceaccount.com", + "valid_after": "2021-05-03T10:41:46Z", + "valid_before": "9999-12-31T23:59:59Z" + }, + "sensitive_attributes": [], + "private": "bnVsbA==", + "dependencies": [ + "module.storage.google_service_account.gitpod_storage" + ] + } + ] + }, + { + "module": "module.storage", + "mode": "managed", + "type": "kubernetes_secret", + "name": "storage", + "provider": "provider[\"registry.terraform.io/hashicorp/kubernetes\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "data": { + "key.json": "{\n \"type\": \"service_account\",\n \"project_id\": \"gpl-sh-090-3\",\n \"private_key_id\": \"428592efd55c9e5d7ffef6449b95d14250ad6272\",\n \"private_key\": \"-----BEGIN PRIVATE KEY-----\\nMIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDQrIym1rpLmi+V\\nHYWXSKfpqCeuRcmIKhAIJG62XykoQYQjz5c79B7dkYcqj5hfyVl87lyQt9jV3Gx2\\nwLlJtielkgz1crhP/WYyD1j6hRa9cxXHHYtsrLGQWLsMxQrUp4FB4uWIP+Y9te1X\\nAVf0NQkhLQ2h4yv7OgrdgsPKxHZUnNS+Iu8dpqdwZyVKFYn8+GbSoC2LSKCOWOUO\\nEf6o4aBUKLdRJZiKPywPIT0iK9poU9Ky5npisZMaq9+sBBCq5SjuEp5zgD6Q5ll7\\na1rXeW7E4WHmBGeVwcPUdU0Tz8ZqA8L6ZKkyKZ4z7CkEtEUx/Dk2SbuqS+cx66z1\\nSrOXIglnAgMBAAECggEAVgtoXd056TW1PB/1t3lin5LSdeZZ4PczMCBRtIqNrodB\\nZQDS5ApX9dXtrcuTMaAVcdHZwmTEmP6wjNEQNghR1dBg3o7E2FrtGmRAtOBPDaRY\\nTQfuN0wIVbR4wJ25RxGg11mneuSaXETZjmBD87MwxgjNT70cJBX9Z/RlJoWXI3De\\n91HQc0+GK86Jas/0B5+aHxQjTM485H4uC8UEs9FmAWPQYDAiidirlbzcEVmgaNXK\\nQFjDuGJrb8Kmmb4JM2+9wMGI78/S7X8vo7J86tcdYpc8huIeUraGNJX6Jf/99P0x\\nU6NhWxQRhgDfWtmyEKk7VDeWKdO+kyS0ZWdoCASsGQKBgQDwikfa/fS097Y0MEQF\\n2wKzxkY/0G/Lcl8l9t2NEAgH/cANuHv94B2HDPF6c1pe1r734KYAP0QQ2mGESFBy\\nFP6GssIWkT2f1zUxczxxRSqXQU6mWyLF2TVH31NCkCMGGtX7ag4K46cxg1OHuD2D\\njS33S5KARIAjhQ0BF0Ngzi+1GQKBgQDeFfXXudupqDKOptQqWDdq7AuLIgniDCs1\\n6MCSdhZEoRj4mmVhaJRSz2V2G9WeupzmxnUg84GOTKSJ7YC1+ajM1ABgPCxI215I\\ngKmkTgnub+8a4UkPAdUtiEY3lpY4MrD+vgabhGdHLgvpRjOcZXg1GtONqzUNA23J\\ns8U3CxUCfwKBgQCrOgREg5r6Z4swQ1tov6qAxpejPYEXVecdY0n67HqLFbrtCXJa\\nGntqc3BCNnMSJ9PxJ92DN4YAaTQZslBxpTg6Mm2vGty/N7cJ6HoSN6ZF3ZtbGGz8\\nYc5nxzXBoFEOO3QvcCNm5P9TY6TGbAR97LXX39f9rsV4g3HqYOD5vEyBoQKBgC4J\\n+2b3PpRTK/fqmb0VgJeHy3TSX54ey65nS9SQ6ljb1KNkznN9DJKGMBBmAMjhArnM\\nlmd4U3k+ZjW5qJ8Q3G9p25IXp06LO2ZoVcKb8u8dAUJfRZf410qTH4tSil2oFI0a\\ns5/1uLtGzm1Tgkt/tYW8w/JwdZT3CwFvZQjeIULdAoGBAI5aaWmSAQuT1+0XKi3W\\nevx2+7xY1d7GOFJbn5T9xs99DO9Dgebvz8htsKsePyf5s2CZy9DF2LXD5wsuwiFh\\nfKtp7qo+ARFE9A8J5fQso0wvz/HS1QxlpamQn2U8ENwrHSXdHWFOtKo8lI5CODET\\nyzF7jqjNYcqWSiFdftVepYBw\\n-----END PRIVATE KEY-----\\n\",\n \"client_email\": \"gitpod-storage@gpl-sh-090-3.iam.gserviceaccount.com\",\n \"client_id\": \"114284941115824702053\",\n \"auth_uri\": \"https://accounts.google.com/o/oauth2/auth\",\n \"token_uri\": \"https://oauth2.googleapis.com/token\",\n \"auth_provider_x509_cert_url\": \"https://www.googleapis.com/oauth2/v1/certs\",\n \"client_x509_cert_url\": \"https://www.googleapis.com/robot/v1/metadata/x509/gitpod-storage%40gpl-sh-090-3.iam.gserviceaccount.com\"\n}\n" + }, + "id": "default/gcloud-creds", + "metadata": [ + { + "annotations": {}, + "generate_name": "", + "generation": 0, + "labels": {}, + "name": "gcloud-creds", + "namespace": "default", + "resource_version": "16804", + "self_link": "", + "uid": "ac421325-dd62-4c3a-8e57-bc0d22cba8a9" + } + ], + "type": "Opaque" + }, + "sensitive_attributes": [], + "private": "bnVsbA==", + "dependencies": [ + "data.google_client_config.provider", + "google_compute_network.gitpod", + "module.kubernetes.google_compute_subnetwork.gitpod", + "module.kubernetes.google_container_cluster.gitpod", + "module.storage.google_service_account.gitpod_storage", + "module.storage.google_service_account_key.gitpod_storage" + ] + } + ] + } + ] +} diff --git a/install/gcp-terraform/environment/full/terraform.tfstate.backup b/install/gcp-terraform/environment/full/terraform.tfstate.backup new file mode 100644 index 00000000000000..940f8765b928e3 --- /dev/null +++ b/install/gcp-terraform/environment/full/terraform.tfstate.backup @@ -0,0 +1,2925 @@ +{ + "version": 4, + "terraform_version": "0.14.2", + "serial": 105, + "lineage": "3770200e-1304-048e-d7d4-5082923aa8c6", + "outputs": { + "values": { + "value": "\"branding\":\n \"homepage\": \"gpl.gitpod-self-hosted.com\"\n \"redirectUrlAfterLogout\": \"gpl.gitpod-self-hosted.com\"\n \"redirectUrlIfNotAuthenticated\": \"/workspaces/\"\n\"certificatesSecret\":\n \"chainName\": \"tls.crt\"\n \"fullChainName\": \"tls.crt\"\n \"keyName\": \"tls.key\"\n \"secretName\": \"gitpod-certificate\"\n\"components\":\n \"db\":\n \"autoMigrate\": true\n \"gcloudSqlProxy\":\n \"credentials\": \"gcloud-sql-token\"\n \"enabled\": true\n \"instance\": \"gpl-sh-090-3:europe-west3:gitpod-db-f68922fd\"\n \"serviceType\": \"ClusterIP\"\n\"db\":\n \"host\": \"10.194.0.3\"\n \"password\": \"kqbPzZLO29P%N_tq\"\n\"docker-registry\":\n \"enabled\": false\n\"hostname\": \"gpl.gitpod-self-hosted.com\"\n\"minio\":\n \"enabled\": false\n\"mysql\":\n \"enabled\": false\n", + "type": "string" + } + }, + "resources": [ + { + "mode": "data", + "type": "google_client_config", + "name": "provider", + "provider": "provider[\"registry.terraform.io/hashicorp/google\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "access_token": "ya29.a0AfH6SMC0vH5tdj5fcW-roUTlLh5FjGrhBPlcBy8nSqPo8N2He1coEWkq9PxuhpsZX3lL8Y5cir7n23x-o_XXi0COA6e2lc7OGI9WvJz05s_dbsxWfsZh41HYMkTJFW_Go51fOh4Ww58QtKq2a2K8iD-_A5tcrRo", + "id": "projects/gpl-sh-090-3/regions/europe-west3/zones/", + "project": "gpl-sh-090-3", + "region": "europe-west3", + "zone": "" + }, + "sensitive_attributes": [] + } + ] + }, + { + "mode": "managed", + "type": "google_compute_network", + "name": "gitpod", + "provider": "provider[\"registry.terraform.io/hashicorp/google\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "auto_create_subnetworks": false, + "delete_default_routes_on_create": false, + "description": "Gitpod Cluster Network", + "gateway_ipv4": "", + "id": "projects/gpl-sh-090-3/global/networks/gitpod", + "mtu": 0, + "name": "gitpod", + "project": "gpl-sh-090-3", + "routing_mode": "REGIONAL", + "self_link": "https://www.googleapis.com/compute/v1/projects/gpl-sh-090-3/global/networks/gitpod", + "timeouts": null + }, + "sensitive_attributes": [], + "private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjoyNDAwMDAwMDAwMDAsImRlbGV0ZSI6MjQwMDAwMDAwMDAwLCJ1cGRhdGUiOjI0MDAwMDAwMDAwMH19" + } + ] + }, + { + "mode": "managed", + "type": "local_file", + "name": "values", + "provider": "provider[\"registry.terraform.io/hashicorp/local\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "content": "\"branding\":\n \"homepage\": \"gpl.gitpod-self-hosted.com\"\n \"redirectUrlAfterLogout\": \"gpl.gitpod-self-hosted.com\"\n \"redirectUrlIfNotAuthenticated\": \"/workspaces/\"\n\"certificatesSecret\":\n \"chainName\": \"tls.crt\"\n \"fullChainName\": \"tls.crt\"\n \"keyName\": \"tls.key\"\n \"secretName\": \"gitpod-certificate\"\n\"components\":\n \"db\":\n \"autoMigrate\": true\n \"gcloudSqlProxy\":\n \"credentials\": \"gcloud-sql-token\"\n \"enabled\": true\n \"instance\": \"gpl-sh-090-3:europe-west3:gitpod-db-f68922fd\"\n \"serviceType\": \"ClusterIP\"\n\"db\":\n \"host\": \"10.194.0.3\"\n \"password\": \"kqbPzZLO29P%N_tq\"\n\"docker-registry\":\n \"enabled\": false\n\"hostname\": \"gpl.gitpod-self-hosted.com\"\n\"minio\":\n \"enabled\": false\n\"mysql\":\n \"enabled\": false\n", + "content_base64": null, + "directory_permission": "0777", + "file_permission": "0777", + "filename": "./values.terraform.yaml", + "id": "d07790567ac7e3fc5b634687d3029d3a36b90b69", + "sensitive_content": null, + "source": null + }, + "sensitive_attributes": [], + "private": "bnVsbA==", + "dependencies": [ + "module.certmanager.data.template_file.values", + "module.database.data.template_file.values", + "module.dns.data.template_file.values", + "module.registry.data.template_file.values", + "module.storage.data.template_file.values" + ] + } + ] + }, + { + "module": "module.certmanager", + "mode": "data", + "type": "template_file", + "name": "certificate", + "provider": "provider[\"registry.terraform.io/hashicorp/template\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "filename": null, + "id": "fbc26ce097e06edcb985a8bb3e79cf36acc2128c5610eeb6c265bfa8d40451c7", + "rendered": "# Copyright (c) 2020 Gitpod GmbH. All rights reserved.\n# Licensed under the MIT License. See License-MIT.txt in the project root for license information.\n\napiVersion: cert-manager.io/v1alpha2\nkind: Certificate\nmetadata:\n name: gitpod-certificate\n namespace: default\nspec:\n secretName: gitpod-certificate\n renewBefore: 24h\n dnsNames:\n - \"gpl.gitpod-self-hosted.com\"\n - \"*.gpl.gitpod-self-hosted.com\"\n - \"*.ws.gpl.gitpod-self-hosted.com\"\n issuerRef:\n name: letsencrypt-issuer\n kind: ClusterIssuer", + "template": "# Copyright (c) 2020 Gitpod GmbH. All rights reserved.\n# Licensed under the MIT License. See License-MIT.txt in the project root for license information.\n\napiVersion: cert-manager.io/v1alpha2\nkind: Certificate\nmetadata:\n name: ${name}\n namespace: ${namespace}\nspec:\n secretName: ${name}\n renewBefore: 24h\n dnsNames:\n - \"${domain}\"\n - \"*.${domain}\"\n - \"*.ws.${domain}\"\n issuerRef:\n name: letsencrypt-issuer\n kind: ClusterIssuer", + "vars": { + "domain": "gpl.gitpod-self-hosted.com", + "name": "gitpod-certificate", + "namespace": "default" + } + }, + "sensitive_attributes": [] + } + ] + }, + { + "module": "module.certmanager", + "mode": "data", + "type": "template_file", + "name": "cluster_issuer", + "provider": "provider[\"registry.terraform.io/hashicorp/template\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "filename": null, + "id": "c8fe99430abf9ee42d0d0a82d8b407fae11ecf649d50b6d9df87dc5029d7e7c7", + "rendered": "# Copyright (c) 2020 Gitpod GmbH. All rights reserved.\n# Licensed under the MIT License. See License-MIT.txt in the project root for license information.\n\napiVersion: cert-manager.io/v1\nkind: ClusterIssuer\nmetadata:\n name: letsencrypt-issuer\nspec:\n acme:\n server: https://acme-v02.api.letsencrypt.org/directory\n email: \"test@test.sh\"\n privateKeySecretRef:\n name: letsencrypt-private-key\n solvers:\n - dns01:\n cloudDNS:\n # The ID of the GCP project\n project: gpl-sh-090-3\n # This is the secret used to access the service account\n serviceAccountSecretRef:\n name: clouddns-dns01-solver-svc-acct\n key: credentials.json\n", + "template": "# Copyright (c) 2020 Gitpod GmbH. All rights reserved.\n# Licensed under the MIT License. See License-MIT.txt in the project root for license information.\n\napiVersion: cert-manager.io/v1\nkind: ClusterIssuer\nmetadata:\n name: ${name}\nspec:\n acme:\n server: https://acme-v02.api.letsencrypt.org/directory\n email: \"${email}\"\n privateKeySecretRef:\n name: ${key_name}\n solvers:\n - dns01:\n cloudDNS:\n # The ID of the GCP project\n project: ${project}\n # This is the secret used to access the service account\n serviceAccountSecretRef:\n name: ${secret_name}\n key: credentials.json\n", + "vars": { + "email": "test@test.sh", + "key_name": "letsencrypt-private-key", + "name": "letsencrypt-issuer", + "project": "gpl-sh-090-3", + "secret_name": "clouddns-dns01-solver-svc-acct" + } + }, + "sensitive_attributes": [] + } + ] + }, + { + "module": "module.certmanager", + "mode": "data", + "type": "template_file", + "name": "values", + "provider": "provider[\"registry.terraform.io/hashicorp/template\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "filename": null, + "id": "6b4f204faa748b2beb9d8071f10caaf063da0670a040a77acde4a672677e8725", + "rendered": "certificatesSecret:\n secretName: gitpod-certificate\n keyName: tls.key\n chainName: tls.crt\n fullChainName: tls.crt\n\ncomponents:\n restarter:\n enabled: true\n", + "template": "certificatesSecret:\n secretName: ${secret_name}\n keyName: ${key_name}\n chainName: ${chain_name}\n fullChainName: ${full_chain_name}\n\ncomponents:\n restarter:\n enabled: true\n", + "vars": { + "chain_name": "tls.crt", + "full_chain_name": "tls.crt", + "key_name": "tls.key", + "secret_name": "gitpod-certificate" + } + }, + "sensitive_attributes": [] + } + ] + }, + { + "module": "module.certmanager", + "mode": "managed", + "type": "google_project_iam_member", + "name": "project", + "provider": "provider[\"registry.terraform.io/hashicorp/google\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "condition": [], + "etag": "BwXBasRJJWc=", + "id": "gpl-sh-090-3/roles/dns.admin/serviceAccount:certmanger@gpl-sh-090-3.iam.gserviceaccount.com", + "member": "serviceAccount:certmanger@gpl-sh-090-3.iam.gserviceaccount.com", + "project": "gpl-sh-090-3", + "role": "roles/dns.admin" + }, + "sensitive_attributes": [], + "private": "bnVsbA==", + "dependencies": [ + "module.certmanager.google_service_account.certmanager" + ] + } + ] + }, + { + "module": "module.certmanager", + "mode": "managed", + "type": "google_service_account", + "name": "certmanager", + "provider": "provider[\"registry.terraform.io/hashicorp/google\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "account_id": "certmanger", + "description": "Cert-Manager Account certmanger", + "display_name": "certmanger", + "email": "certmanger@gpl-sh-090-3.iam.gserviceaccount.com", + "id": "projects/gpl-sh-090-3/serviceAccounts/certmanger@gpl-sh-090-3.iam.gserviceaccount.com", + "name": "projects/gpl-sh-090-3/serviceAccounts/certmanger@gpl-sh-090-3.iam.gserviceaccount.com", + "project": "gpl-sh-090-3", + "timeouts": null, + "unique_id": "101723156074465487158" + }, + "sensitive_attributes": [], + "private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjozMDAwMDAwMDAwMDB9fQ==" + } + ] + }, + { + "module": "module.certmanager", + "mode": "managed", + "type": "google_service_account_key", + "name": "certmanager", + "provider": "provider[\"registry.terraform.io/hashicorp/google\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "id": "projects/gpl-sh-090-3/serviceAccounts/certmanger@gpl-sh-090-3.iam.gserviceaccount.com/keys/949f9b6877653a4854560c995052d1c60a05ae80", + "keepers": null, + "key_algorithm": "KEY_ALG_RSA_2048", + "name": "projects/gpl-sh-090-3/serviceAccounts/certmanger@gpl-sh-090-3.iam.gserviceaccount.com/keys/949f9b6877653a4854560c995052d1c60a05ae80", + "private_key": "ewogICJ0eXBlIjogInNlcnZpY2VfYWNjb3VudCIsCiAgInByb2plY3RfaWQiOiAiZ3BsLXNoLTA5MC0zIiwKICAicHJpdmF0ZV9rZXlfaWQiOiAiOTQ5ZjliNjg3NzY1M2E0ODU0NTYwYzk5NTA1MmQxYzYwYTA1YWU4MCIsCiAgInByaXZhdGVfa2V5IjogIi0tLS0tQkVHSU4gUFJJVkFURSBLRVktLS0tLVxuTUlJRXZnSUJBREFOQmdrcWhraUc5dzBCQVFFRkFBU0NCS2d3Z2dTa0FnRUFBb0lCQVFETGZkQVVIaXQrdlh1c1xuTWVKY2c3WlVUbzh4MFcwT2xKTXcyYjV2MFVsMFJTUHBUZzJYRmVCRTQ0WVNicUJORHhIQjFYa1JnVVJNOFBTNFxuRmY5eG5ONmZOMnVEVy9qZ2Z1dVVBeGR3M1MrQVpKWWVxUmdWV3RzQWw2bXZ5WDFiTmhYamdjaS9LTGtqU2xmRlxuMW56Y2xRZ3kwbS9MSWJzTk51MHZGUVB4M0h3UmtSTjNidDN4SjhuY1cxVFZlVDNLMlk3bmlUQlRNaXo4dXMydFxuQ05tNnJMMDdCeDVMaFJIYjZpTlB1RU9PTm9zaWpXZlI2RE41OVFhdUJGbytNaUFFbnF0UlpETjYyYlpxY2lsTFxuMjM3ZFEyeTZhSXdndmF1RmE1SXk4VmFhSjdjQllybFZoNEN6cFJKNW44VVpCOVdXa3h4akJoaW1OQ3Z5TjdieFxuaExtRjI3MjNBZ01CQUFFQ2dnRUFKZ09yNG9ZOFUrSHIvNkFXREhoaWtGOVlxdExYejdoN3dzMTZvUUwwK082TlxucGVENTh2YVlQZVpQUHBSQ0NBTS9xdmxKTTdiMVhuWkpFVGF5MExPZ2R4ZndVc3JVdElPaFdMWTNJOU4rTXpzWFxuUEVVVWhiRENadHJ1VFRPVDRuMDVHNVk4UFZITFBFZUFIQ3BVaXhTZ1FuWkRnaXdiK0gwQlZDRlY2bEhwTDVLWVxuSWdweDhLZjN5VGswZGZ1clk2SVZTUUFpeHZvRkU1Vk15bG9PVEVBbGhUZytCdWU5OWc5ZjBEYnBvUHZVN2FVUFxuLytBeDRQS0l3S043NEsrRmpQUkxWdDVOWHRaQWZ4K2hnN2N0SFp0NDNldS9nRkNaMWUwL1BiczRGNXlOL1NFQ1xucDBiZzlwUGlyWWlQZUVNc1NLYUdtTGQ1TU4xdVZLT3VGSTVEdG56Z1NRS0JnUUR5N2NDbGZMNFNkSFB3R2pKalxuUkpmSnhtNG5jZW5Lell5a2hNRW1PcS90MjV4NVQyNWVRN3NmTDVvZDc1U0twZWxDK0RFUC8vdW5ManBaZXZYcVxueUREYnpDdHAyVSt5QTBlMUdEZGJyVU1XalBFdDJyZmV4Nnd0bTkwN3loNGo4NTU4SVJ6dXlCY2lRTnBDekJETFxuMTYzRlVCSEtNNml0ZTFyQUpnQTZLd2ZDTFFLQmdRRFdjTlBXZlYxRUNyckI1dlJ3bkFPbC9pS3I1Q3dzeWVmZlxuOENrK0phc1pVc3E5d29kTjN6VWxOcW9VVHZUWlNyQUhPTzllMWpMM0Y2Y2RUUlg2emNibXo0V3djOXZmWFJzQ1xuVWJIMllkRTgwNXFDVE11YXRyTUN3TTRhSUV3STB6S3JPZ2VwUHZ6MjhpeTRZSnRiakljaXhmWnJscm9aSE0zUFxuYXEwMEZaVkI4d0tCZ1FDc1BxK05wdmtPRk12dnZtTmp4MHJvb20yUVFsREdueC9OdHVOTXUrZnArd0RqY3RLS1xudS9OOWxUN3RZdVlydUovQUFFS3BXWk9SWWxHMUNGNDlibHhXUEZtNzMzMkdkcFR0YnBJeHlwUDY5VXc4ZXd4TVxuUmI5clIweUNERGw2dkUzdkxYdGFRejFENkQvWmhOK1Q2UVVwRmpERzhnSHpuN2NrN3N6U2NaZzZzUUtCZ1FDZVxudm1salYreXFDUk5WcFdZQTBzMjBuTndIeVdLV1NXVTRscTNCVHR0SlpNdW5EQkZqcVQvTGE1c2VhNURBSnBVR1xuMDdRSHphTnUzWGlkclVuL0gwUUY2MHY1WXRzNmo4OEZ1WHAzZk5RTEprNHo5U3VvUFdWcFBWZVZhYUUveXpDd1xuSnNZekdPamsya1FXdlpWa2dUUXNuc1did2JuRUMxbWtHVUZjMURsbzF3S0JnR2tHUlVIYmhHdGFaejlzWHB3SVxuOURyM0NhT0U0ZHJTUmM1bWJmZW9ibFJIOEhpdDFMQS8yWUppTXRXRUdsS3p5eitzUkhVTzNuVTZCa0hDL3V1RFxuZUd0RXBsMVBBSFh4T0UwQWU0S3JnT09NZGswZVdwc1BvVmNHQkpYN1dDbmlsaHYwb0xuY3MyL09TMXNuWmZSNFxuSzRkWGZIMlVocHM1WlVXUDVyN2xLdkRCXG4tLS0tLUVORCBQUklWQVRFIEtFWS0tLS0tXG4iLAogICJjbGllbnRfZW1haWwiOiAiY2VydG1hbmdlckBncGwtc2gtMDkwLTMuaWFtLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICJjbGllbnRfaWQiOiAiMTAxNzIzMTU2MDc0NDY1NDg3MTU4IiwKICAiYXV0aF91cmkiOiAiaHR0cHM6Ly9hY2NvdW50cy5nb29nbGUuY29tL28vb2F1dGgyL2F1dGgiLAogICJ0b2tlbl91cmkiOiAiaHR0cHM6Ly9vYXV0aDIuZ29vZ2xlYXBpcy5jb20vdG9rZW4iLAogICJhdXRoX3Byb3ZpZGVyX3g1MDlfY2VydF91cmwiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vb2F1dGgyL3YxL2NlcnRzIiwKICAiY2xpZW50X3g1MDlfY2VydF91cmwiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vcm9ib3QvdjEvbWV0YWRhdGEveDUwOS9jZXJ0bWFuZ2VyJTQwZ3BsLXNoLTA5MC0zLmlhbS5nc2VydmljZWFjY291bnQuY29tIgp9Cg==", + "private_key_type": "TYPE_GOOGLE_CREDENTIALS_FILE", + "public_key": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUMvRENDQWVTZ0F3SUJBZ0lJZFBSTk9Qc3IyYUV3RFFZSktvWklodmNOQVFFRkJRQXdJREVlTUJ3R0ExVUUKQXhNVk1UQXhOekl6TVRVMk1EYzBORFkxTkRnM01UVTRNQ0FYRFRJeE1EVXdNekV3TlRNd01sb1lEems1T1RreApNak14TWpNMU9UVTVXakFnTVI0d0hBWURWUVFERXhVeE1ERTNNak14TlRZd056UTBOalUwT0RjeE5UZ3dnZ0VpCk1BMEdDU3FHU0liM0RRRUJBUVVBQTRJQkR3QXdnZ0VLQW9JQkFRRExmZEFVSGl0K3ZYdXNNZUpjZzdaVVRvOHgKMFcwT2xKTXcyYjV2MFVsMFJTUHBUZzJYRmVCRTQ0WVNicUJORHhIQjFYa1JnVVJNOFBTNEZmOXhuTjZmTjJ1RApXL2pnZnV1VUF4ZHczUytBWkpZZXFSZ1ZXdHNBbDZtdnlYMWJOaFhqZ2NpL0tMa2pTbGZGMW56Y2xRZ3kwbS9MCklic05OdTB2RlFQeDNId1JrUk4zYnQzeEo4bmNXMVRWZVQzSzJZN25pVEJUTWl6OHVzMnRDTm02ckwwN0J4NUwKaFJIYjZpTlB1RU9PTm9zaWpXZlI2RE41OVFhdUJGbytNaUFFbnF0UlpETjYyYlpxY2lsTDIzN2RRMnk2YUl3Zwp2YXVGYTVJeThWYWFKN2NCWXJsVmg0Q3pwUko1bjhVWkI5V1dreHhqQmhpbU5DdnlON2J4aExtRjI3MjNBZ01CCkFBR2pPREEyTUF3R0ExVWRFd0VCL3dRQ01BQXdEZ1lEVlIwUEFRSC9CQVFEQWdlQU1CWUdBMVVkSlFFQi93UU0KTUFvR0NDc0dBUVVGQndNQ01BMEdDU3FHU0liM0RRRUJCUVVBQTRJQkFRQkhlR2I3NVRzakVaTGttMDJTcnA0SApWcHI3dXN1L1RpTnZlSHMwRHoxelhsMG52K085bmpEV21rMmhjbHpoRHFPME5OdjBsYldrVWpzdTQ1NlYxUkZaClVTd3ZEMXI0cDl3c05JZ3RiNDkwZlVibUdtcHdROVByQnJwc3NwdExnY2hwSTU0UTRhTWwxTkRvWFZDWmlwQWoKbGJxcWhhdU45dXltZmlpdFBzVERkT1Z4Ni9tODNFaUtRamlqeVd4ZW01VzhNOEhuOUJIbUkvNWsyNk9jS21sRAoySTJvb0UxV2tYeE1palRHamlBVmlRc21BbDgzMUw0UUNSS1J0SnVYWUJ6S3F0dWx4Snh2dExUR0RSSlk2aFZlCjVhSUtMdTF4V3ViazA1dEFWRldOdmUwMm1DUmpNWVY1ckxLcGxFZ1p5Z3NLSk11ZHBTK296eHh3TVZsaGFMMFcKLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQo=", + "public_key_data": null, + "public_key_type": "TYPE_X509_PEM_FILE", + "service_account_id": "projects/gpl-sh-090-3/serviceAccounts/certmanger@gpl-sh-090-3.iam.gserviceaccount.com", + "valid_after": "2021-05-03T10:53:02Z", + "valid_before": "9999-12-31T23:59:59Z" + }, + "sensitive_attributes": [], + "private": "bnVsbA==", + "dependencies": [ + "module.certmanager.google_service_account.certmanager" + ] + } + ] + }, + { + "module": "module.certmanager", + "mode": "managed", + "type": "helm_release", + "name": "certmanager", + "provider": "provider[\"registry.terraform.io/hashicorp/helm\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "atomic": false, + "chart": "cert-manager", + "cleanup_on_fail": false, + "create_namespace": false, + "dependency_update": false, + "description": null, + "devel": null, + "disable_crd_hooks": false, + "disable_openapi_validation": false, + "disable_webhooks": false, + "force_update": false, + "id": "certmanger", + "keyring": null, + "lint": false, + "manifest": null, + "max_history": 0, + "metadata": [ + { + "app_version": "v1.3.1", + "chart": "cert-manager", + "name": "certmanger", + "namespace": "certmanager", + "revision": 1, + "values": "{\"installCRDs\":true}", + "version": "v1.3.1" + } + ], + "name": "certmanger", + "namespace": "certmanager", + "postrender": [], + "recreate_pods": false, + "render_subchart_notes": true, + "replace": false, + "repository": "https://charts.jetstack.io", + "repository_ca_file": null, + "repository_cert_file": null, + "repository_key_file": null, + "repository_password": null, + "repository_username": null, + "reset_values": false, + "reuse_values": false, + "set": [ + { + "name": "installCRDs", + "type": "", + "value": "true" + } + ], + "set_sensitive": [], + "skip_crds": false, + "status": "deployed", + "timeout": 300, + "values": null, + "verify": false, + "version": "v1.3.1", + "wait": true + }, + "sensitive_attributes": [], + "private": "bnVsbA==", + "dependencies": [ + "data.google_client_config.provider", + "google_compute_network.gitpod", + "module.certmanager.kubernetes_namespace.certmanager", + "module.kubernetes.google_compute_subnetwork.gitpod", + "module.kubernetes.google_container_cluster.gitpod" + ] + } + ] + }, + { + "module": "module.certmanager", + "mode": "managed", + "type": "kubectl_manifest", + "name": "certificate", + "provider": "provider[\"registry.terraform.io/gavinbunney/kubectl\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "api_version": "cert-manager.io/v1alpha2", + "force_new": false, + "id": "/apis/cert-manager.io/v1alpha2/namespaces/default/certificates/gitpod-certificate", + "ignore_fields": null, + "kind": "Certificate", + "live_manifest_incluster": "apiVersion=cert-manager.io/v1alpha2,kind=Certificate,metadata.name=gitpod-certificate,metadata.namespace=default,spec.dnsNames.#=3,spec.dnsNames.0=gpl.gitpod-self-hosted.com,spec.dnsNames.1=*.gpl.gitpod-self-hosted.com,spec.dnsNames.2=*.ws.gpl.gitpod-self-hosted.com,spec.issuerRef.kind=ClusterIssuer,spec.issuerRef.name=letsencrypt-issuer,spec.renewBefore=24h0m0s,spec.secretName=gitpod-certificate", + "live_resource_version": "20380", + "live_uid": "d276bb89-af3b-4b36-b454-f435af039ea3", + "name": "gitpod-certificate", + "namespace": "default", + "override_namespace": null, + "resource_version": "20375", + "sensitive_fields": null, + "timeouts": null, + "uid": "d276bb89-af3b-4b36-b454-f435af039ea3", + "validate_schema": true, + "wait": null, + "wait_for_rollout": true, + "yaml_body": "# Copyright (c) 2020 Gitpod GmbH. All rights reserved.\n# Licensed under the MIT License. See License-MIT.txt in the project root for license information.\n\napiVersion: cert-manager.io/v1alpha2\nkind: Certificate\nmetadata:\n name: gitpod-certificate\n namespace: default\nspec:\n secretName: gitpod-certificate\n renewBefore: 24h\n dnsNames:\n - \"gpl.gitpod-self-hosted.com\"\n - \"*.gpl.gitpod-self-hosted.com\"\n - \"*.ws.gpl.gitpod-self-hosted.com\"\n issuerRef:\n name: letsencrypt-issuer\n kind: ClusterIssuer", + "yaml_body_parsed": "apiVersion: cert-manager.io/v1alpha2\nkind: Certificate\nmetadata:\n name: gitpod-certificate\n namespace: default\nspec:\n dnsNames:\n - gpl.gitpod-self-hosted.com\n - '*.gpl.gitpod-self-hosted.com'\n - '*.ws.gpl.gitpod-self-hosted.com'\n issuerRef:\n kind: ClusterIssuer\n name: letsencrypt-issuer\n renewBefore: 24h\n secretName: gitpod-certificate\n", + "yaml_incluster": "apiVersion=cert-manager.io/v1alpha2,kind=Certificate,metadata.name=gitpod-certificate,metadata.namespace=default,spec.dnsNames.#=3,spec.dnsNames.0=gpl.gitpod-self-hosted.com,spec.dnsNames.1=*.gpl.gitpod-self-hosted.com,spec.dnsNames.2=*.ws.gpl.gitpod-self-hosted.com,spec.issuerRef.kind=ClusterIssuer,spec.issuerRef.name=letsencrypt-issuer,spec.renewBefore=24h0m0s,spec.secretName=gitpod-certificate" + }, + "sensitive_attributes": [], + "private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjo2MDAwMDAwMDAwMDB9fQ==", + "dependencies": [ + "data.google_client_config.provider", + "google_compute_network.gitpod", + "module.certmanager.data.template_file.certificate", + "module.kubernetes.google_compute_subnetwork.gitpod", + "module.kubernetes.google_container_cluster.gitpod" + ] + } + ] + }, + { + "module": "module.certmanager", + "mode": "managed", + "type": "kubectl_manifest", + "name": "clusterissuer", + "provider": "provider[\"registry.terraform.io/gavinbunney/kubectl\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "api_version": "cert-manager.io/v1", + "force_new": false, + "id": "/apis/cert-manager.io/v1/clusterissuers/letsencrypt-issuer", + "ignore_fields": null, + "kind": "ClusterIssuer", + "live_manifest_incluster": "apiVersion=cert-manager.io/v1,kind=ClusterIssuer,metadata.name=letsencrypt-issuer,spec.acme.email=test@test.sh,spec.acme.privateKeySecretRef.name=letsencrypt-private-key,spec.acme.server=https://acme-v02.api.letsencrypt.org/directory,spec.acme.solvers.#=1,spec.acme.solvers.0.dns01.cloudDNS.project=gpl-sh-090-3,spec.acme.solvers.0.dns01.cloudDNS.serviceAccountSecretRef.key=credentials.json,spec.acme.solvers.0.dns01.cloudDNS.serviceAccountSecretRef.name=clouddns-dns01-solver-svc-acct", + "live_resource_version": "20404", + "live_uid": "a8c9e0bf-f2fa-4d63-8f24-19bd32a439b9", + "name": "letsencrypt-issuer", + "namespace": null, + "override_namespace": null, + "resource_version": "20393", + "sensitive_fields": null, + "timeouts": null, + "uid": "a8c9e0bf-f2fa-4d63-8f24-19bd32a439b9", + "validate_schema": true, + "wait": null, + "wait_for_rollout": true, + "yaml_body": "# Copyright (c) 2020 Gitpod GmbH. All rights reserved.\n# Licensed under the MIT License. See License-MIT.txt in the project root for license information.\n\napiVersion: cert-manager.io/v1\nkind: ClusterIssuer\nmetadata:\n name: letsencrypt-issuer\nspec:\n acme:\n server: https://acme-v02.api.letsencrypt.org/directory\n email: \"test@test.sh\"\n privateKeySecretRef:\n name: letsencrypt-private-key\n solvers:\n - dns01:\n cloudDNS:\n # The ID of the GCP project\n project: gpl-sh-090-3\n # This is the secret used to access the service account\n serviceAccountSecretRef:\n name: clouddns-dns01-solver-svc-acct\n key: credentials.json\n", + "yaml_body_parsed": "apiVersion: cert-manager.io/v1\nkind: ClusterIssuer\nmetadata:\n name: letsencrypt-issuer\nspec:\n acme:\n email: test@test.sh\n privateKeySecretRef:\n name: letsencrypt-private-key\n server: https://acme-v02.api.letsencrypt.org/directory\n solvers:\n - dns01:\n cloudDNS:\n project: gpl-sh-090-3\n serviceAccountSecretRef:\n key: credentials.json\n name: clouddns-dns01-solver-svc-acct\n", + "yaml_incluster": "apiVersion=cert-manager.io/v1,kind=ClusterIssuer,metadata.name=letsencrypt-issuer,spec.acme.email=test@test.sh,spec.acme.privateKeySecretRef.name=letsencrypt-private-key,spec.acme.server=https://acme-v02.api.letsencrypt.org/directory,spec.acme.solvers.#=1,spec.acme.solvers.0.dns01.cloudDNS.project=gpl-sh-090-3,spec.acme.solvers.0.dns01.cloudDNS.serviceAccountSecretRef.key=credentials.json,spec.acme.solvers.0.dns01.cloudDNS.serviceAccountSecretRef.name=clouddns-dns01-solver-svc-acct" + }, + "sensitive_attributes": [], + "private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjo2MDAwMDAwMDAwMDB9fQ==", + "dependencies": [ + "data.google_client_config.provider", + "google_compute_network.gitpod", + "module.certmanager.data.template_file.cluster_issuer", + "module.certmanager.google_service_account.certmanager", + "module.certmanager.google_service_account_key.certmanager", + "module.certmanager.kubernetes_namespace.certmanager", + "module.certmanager.kubernetes_secret.certmanager", + "module.kubernetes.google_compute_subnetwork.gitpod", + "module.kubernetes.google_container_cluster.gitpod" + ] + } + ] + }, + { + "module": "module.certmanager", + "mode": "managed", + "type": "kubernetes_namespace", + "name": "certmanager", + "provider": "provider[\"registry.terraform.io/hashicorp/kubernetes\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "id": "certmanager", + "metadata": [ + { + "annotations": {}, + "generate_name": "", + "generation": 0, + "labels": {}, + "name": "certmanager", + "resource_version": "18945", + "self_link": "", + "uid": "eca243a0-507d-4c88-b853-0544269fceaa" + } + ], + "timeouts": null + }, + "sensitive_attributes": [], + "private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiZGVsZXRlIjozMDAwMDAwMDAwMDB9fQ==", + "dependencies": [ + "data.google_client_config.provider", + "google_compute_network.gitpod", + "module.kubernetes.google_compute_subnetwork.gitpod", + "module.kubernetes.google_container_cluster.gitpod" + ] + } + ] + }, + { + "module": "module.certmanager", + "mode": "managed", + "type": "kubernetes_secret", + "name": "certmanager", + "provider": "provider[\"registry.terraform.io/hashicorp/kubernetes\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "data": { + "credentials.json": "{\n \"type\": \"service_account\",\n \"project_id\": \"gpl-sh-090-3\",\n \"private_key_id\": \"949f9b6877653a4854560c995052d1c60a05ae80\",\n \"private_key\": \"-----BEGIN PRIVATE KEY-----\\nMIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDLfdAUHit+vXus\\nMeJcg7ZUTo8x0W0OlJMw2b5v0Ul0RSPpTg2XFeBE44YSbqBNDxHB1XkRgURM8PS4\\nFf9xnN6fN2uDW/jgfuuUAxdw3S+AZJYeqRgVWtsAl6mvyX1bNhXjgci/KLkjSlfF\\n1nzclQgy0m/LIbsNNu0vFQPx3HwRkRN3bt3xJ8ncW1TVeT3K2Y7niTBTMiz8us2t\\nCNm6rL07Bx5LhRHb6iNPuEOONosijWfR6DN59QauBFo+MiAEnqtRZDN62bZqcilL\\n237dQ2y6aIwgvauFa5Iy8VaaJ7cBYrlVh4CzpRJ5n8UZB9WWkxxjBhimNCvyN7bx\\nhLmF2723AgMBAAECggEAJgOr4oY8U+Hr/6AWDHhikF9YqtLXz7h7ws16oQL0+O6N\\npeD58vaYPeZPPpRCCAM/qvlJM7b1XnZJETay0LOgdxfwUsrUtIOhWLY3I9N+MzsX\\nPEUUhbDCZtruTTOT4n05G5Y8PVHLPEeAHCpUixSgQnZDgiwb+H0BVCFV6lHpL5KY\\nIgpx8Kf3yTk0dfurY6IVSQAixvoFE5VMyloOTEAlhTg+Bue99g9f0DbpoPvU7aUP\\n/+Ax4PKIwKN74K+FjPRLVt5NXtZAfx+hg7ctHZt43eu/gFCZ1e0/Pbs4F5yN/SEC\\np0bg9pPirYiPeEMsSKaGmLd5MN1uVKOuFI5DtnzgSQKBgQDy7cClfL4SdHPwGjJj\\nRJfJxm4ncenKzYykhMEmOq/t25x5T25eQ7sfL5od75SKpelC+DEP//unLjpZevXq\\nyDDbzCtp2U+yA0e1GDdbrUMWjPEt2rfex6wtm907yh4j8558IRzuyBciQNpCzBDL\\n163FUBHKM6ite1rAJgA6KwfCLQKBgQDWcNPWfV1ECrrB5vRwnAOl/iKr5Cwsyeff\\n8Ck+JasZUsq9wodN3zUlNqoUTvTZSrAHOO9e1jL3F6cdTRX6zcbmz4Wwc9vfXRsC\\nUbH2YdE805qCTMuatrMCwM4aIEwI0zKrOgepPvz28iy4YJtbjIcixfZrlroZHM3P\\naq00FZVB8wKBgQCsPq+NpvkOFMvvvmNjx0room2QQlDGnx/NtuNMu+fp+wDjctKK\\nu/N9lT7tYuYruJ/AAEKpWZORYlG1CF49blxWPFm7332GdpTtbpIxypP69Uw8ewxM\\nRb9rR0yCDDl6vE3vLXtaQz1D6D/ZhN+T6QUpFjDG8gHzn7ck7szScZg6sQKBgQCe\\nvmljV+yqCRNVpWYA0s20nNwHyWKWSWU4lq3BTttJZMunDBFjqT/La5sea5DAJpUG\\n07QHzaNu3XidrUn/H0QF60v5Yts6j88FuXp3fNQLJk4z9SuoPWVpPVeVaaE/yzCw\\nJsYzGOjk2kQWvZVkgTQsnsWbwbnEC1mkGUFc1Dlo1wKBgGkGRUHbhGtaZz9sXpwI\\n9Dr3CaOE4drSRc5mbfeoblRH8Hit1LA/2YJiMtWEGlKzyz+sRHUO3nU6BkHC/uuD\\neGtEpl1PAHXxOE0Ae4KrgOOMdk0eWpsPoVcGBJX7WCnilhv0oLncs2/OS1snZfR4\\nK4dXfH2Uhps5ZUWP5r7lKvDB\\n-----END PRIVATE KEY-----\\n\",\n \"client_email\": \"certmanger@gpl-sh-090-3.iam.gserviceaccount.com\",\n \"client_id\": \"101723156074465487158\",\n \"auth_uri\": \"https://accounts.google.com/o/oauth2/auth\",\n \"token_uri\": \"https://oauth2.googleapis.com/token\",\n \"auth_provider_x509_cert_url\": \"https://www.googleapis.com/oauth2/v1/certs\",\n \"client_x509_cert_url\": \"https://www.googleapis.com/robot/v1/metadata/x509/certmanger%40gpl-sh-090-3.iam.gserviceaccount.com\"\n}\n" + }, + "id": "certmanager/clouddns-dns01-solver-svc-acct", + "metadata": [ + { + "annotations": {}, + "generate_name": "", + "generation": 0, + "labels": {}, + "name": "clouddns-dns01-solver-svc-acct", + "namespace": "certmanager", + "resource_version": "20391", + "self_link": "", + "uid": "c09f988c-3a4c-4569-86e0-f82891669f43" + } + ], + "type": "Opaque" + }, + "sensitive_attributes": [], + "private": "bnVsbA==", + "dependencies": [ + "data.google_client_config.provider", + "google_compute_network.gitpod", + "module.certmanager.google_service_account.certmanager", + "module.certmanager.google_service_account_key.certmanager", + "module.certmanager.kubernetes_namespace.certmanager", + "module.kubernetes.google_compute_subnetwork.gitpod", + "module.kubernetes.google_container_cluster.gitpod" + ] + } + ] + }, + { + "module": "module.database", + "mode": "data", + "type": "template_file", + "name": "values", + "provider": "provider[\"registry.terraform.io/hashicorp/template\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "filename": null, + "id": "2feda1d1f8ce20cd45b19089f26646ab5c42487b81a842d712e3c5c9132446c4", + "rendered": "# Copyright (c) 2020 Gitpod GmbH. All rights reserved.\n# Licensed under the MIT License. See License-MIT.txt in the project root for license information.\n\ndb:\n host: \"10.194.0.3\"\n password: \"kqbPzZLO29P%N_tq\"\n\ncomponents:\n db:\n autoMigrate: true\n gcloudSqlProxy:\n enabled: true\n instance: gpl-sh-090-3:europe-west3:gitpod-db-f68922fd\n credentials: gcloud-sql-token\n serviceType: ClusterIP\n\nmysql:\n enabled: false\n", + "template": "# Copyright (c) 2020 Gitpod GmbH. All rights reserved.\n# Licensed under the MIT License. See License-MIT.txt in the project root for license information.\n\ndb:\n host: \"${host}\"\n password: \"${password}\"\n\ncomponents:\n db:\n autoMigrate: true\n gcloudSqlProxy:\n enabled: true\n instance: ${instance}\n credentials: ${credentials}\n serviceType: ClusterIP\n\nmysql:\n enabled: false\n", + "vars": { + "credentials": "gcloud-sql-token", + "host": "10.194.0.3", + "instance": "gpl-sh-090-3:europe-west3:gitpod-db-f68922fd", + "password": "kqbPzZLO29P%N_tq" + } + }, + "sensitive_attributes": [] + } + ] + }, + { + "module": "module.database", + "mode": "managed", + "type": "google_compute_global_address", + "name": "gitpod", + "provider": "provider[\"registry.terraform.io/hashicorp/google\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "address": "10.194.0.0", + "address_type": "INTERNAL", + "creation_timestamp": "2021-05-03T03:07:47.685-07:00", + "description": "", + "id": "projects/gpl-sh-090-3/global/addresses/gitpod-db", + "ip_version": "", + "name": "gitpod-db", + "network": "https://www.googleapis.com/compute/v1/projects/gpl-sh-090-3/global/networks/gitpod", + "prefix_length": 16, + "project": "gpl-sh-090-3", + "purpose": "VPC_PEERING", + "self_link": "https://www.googleapis.com/compute/v1/projects/gpl-sh-090-3/global/addresses/gitpod-db", + "timeouts": null + }, + "sensitive_attributes": [], + "private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjoyNDAwMDAwMDAwMDAsImRlbGV0ZSI6MjQwMDAwMDAwMDAwfX0=", + "dependencies": [ + "google_compute_network.gitpod" + ] + } + ] + }, + { + "module": "module.database", + "mode": "managed", + "type": "google_compute_network_peering_routes_config", + "name": "servicenetwork", + "provider": "provider[\"registry.terraform.io/hashicorp/google\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "export_custom_routes": true, + "id": "projects/gpl-sh-090-3/global/networks/gitpod/networkPeerings/servicenetworking-googleapis-com", + "import_custom_routes": true, + "network": "gitpod", + "peering": "servicenetworking-googleapis-com", + "project": "gpl-sh-090-3", + "timeouts": null + }, + "sensitive_attributes": [], + "private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjozNjAwMDAwMDAwMDAsImRlbGV0ZSI6MzYwMDAwMDAwMDAwLCJ1cGRhdGUiOjM2MDAwMDAwMDAwMH19", + "dependencies": [ + "google_compute_network.gitpod", + "module.database.google_compute_global_address.gitpod", + "module.database.google_service_networking_connection.gitpod", + "module.database.google_sql_database_instance.gitpod", + "module.database.random_id.database" + ] + } + ] + }, + { + "module": "module.database", + "mode": "managed", + "type": "google_project_iam_binding", + "name": "gitpod_database", + "provider": "provider[\"registry.terraform.io/hashicorp/google\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "condition": [], + "etag": "BwXBasRJJWc=", + "id": "gpl-sh-090-3/roles/cloudsql.client", + "members": [ + "serviceAccount:gitpod-db@gpl-sh-090-3.iam.gserviceaccount.com" + ], + "project": "gpl-sh-090-3", + "role": "roles/cloudsql.client" + }, + "sensitive_attributes": [], + "private": "bnVsbA==", + "dependencies": [ + "module.database.google_service_account.gitpod_database" + ] + } + ] + }, + { + "module": "module.database", + "mode": "managed", + "type": "google_project_service", + "name": "database", + "provider": "provider[\"registry.terraform.io/hashicorp/google\"]", + "instances": [ + { + "index_key": 0, + "schema_version": 0, + "attributes": { + "disable_dependent_services": false, + "disable_on_destroy": false, + "id": "gpl-sh-090-3/sql-component.googleapis.com", + "project": "gpl-sh-090-3", + "service": "sql-component.googleapis.com", + "timeouts": null + }, + "sensitive_attributes": [], + "private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjoxMjAwMDAwMDAwMDAwLCJkZWxldGUiOjEyMDAwMDAwMDAwMDAsInJlYWQiOjYwMDAwMDAwMDAwMCwidXBkYXRlIjoxMjAwMDAwMDAwMDAwfX0=" + }, + { + "index_key": 1, + "schema_version": 0, + "attributes": { + "disable_dependent_services": false, + "disable_on_destroy": false, + "id": "gpl-sh-090-3/sqladmin.googleapis.com", + "project": "gpl-sh-090-3", + "service": "sqladmin.googleapis.com", + "timeouts": null + }, + "sensitive_attributes": [], + "private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjoxMjAwMDAwMDAwMDAwLCJkZWxldGUiOjEyMDAwMDAwMDAwMDAsInJlYWQiOjYwMDAwMDAwMDAwMCwidXBkYXRlIjoxMjAwMDAwMDAwMDAwfX0=" + }, + { + "index_key": 2, + "schema_version": 0, + "attributes": { + "disable_dependent_services": false, + "disable_on_destroy": false, + "id": "gpl-sh-090-3/servicenetworking.googleapis.com", + "project": "gpl-sh-090-3", + "service": "servicenetworking.googleapis.com", + "timeouts": null + }, + "sensitive_attributes": [], + "private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjoxMjAwMDAwMDAwMDAwLCJkZWxldGUiOjEyMDAwMDAwMDAwMDAsInJlYWQiOjYwMDAwMDAwMDAwMCwidXBkYXRlIjoxMjAwMDAwMDAwMDAwfX0=" + } + ] + }, + { + "module": "module.database", + "mode": "managed", + "type": "google_service_account", + "name": "gitpod_database", + "provider": "provider[\"registry.terraform.io/hashicorp/google\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "account_id": "gitpod-db", + "description": "Gitpod Database Account gitpod-db", + "display_name": "gitpod-db", + "email": "gitpod-db@gpl-sh-090-3.iam.gserviceaccount.com", + "id": "projects/gpl-sh-090-3/serviceAccounts/gitpod-db@gpl-sh-090-3.iam.gserviceaccount.com", + "name": "projects/gpl-sh-090-3/serviceAccounts/gitpod-db@gpl-sh-090-3.iam.gserviceaccount.com", + "project": "gpl-sh-090-3", + "timeouts": null, + "unique_id": "114026934685529940940" + }, + "sensitive_attributes": [], + "private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjozMDAwMDAwMDAwMDB9fQ==" + } + ] + }, + { + "module": "module.database", + "mode": "managed", + "type": "google_service_account_key", + "name": "gitpod_database", + "provider": "provider[\"registry.terraform.io/hashicorp/google\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "id": "projects/gpl-sh-090-3/serviceAccounts/gitpod-db@gpl-sh-090-3.iam.gserviceaccount.com/keys/f249e3f3120dd5453d3939cf2cfa4c086731bccc", + "keepers": null, + "key_algorithm": "KEY_ALG_RSA_2048", + "name": "projects/gpl-sh-090-3/serviceAccounts/gitpod-db@gpl-sh-090-3.iam.gserviceaccount.com/keys/f249e3f3120dd5453d3939cf2cfa4c086731bccc", + "private_key": "ewogICJ0eXBlIjogInNlcnZpY2VfYWNjb3VudCIsCiAgInByb2plY3RfaWQiOiAiZ3BsLXNoLTA5MC0zIiwKICAicHJpdmF0ZV9rZXlfaWQiOiAiZjI0OWUzZjMxMjBkZDU0NTNkMzkzOWNmMmNmYTRjMDg2NzMxYmNjYyIsCiAgInByaXZhdGVfa2V5IjogIi0tLS0tQkVHSU4gUFJJVkFURSBLRVktLS0tLVxuTUlJRXZBSUJBREFOQmdrcWhraUc5dzBCQVFFRkFBU0NCS1l3Z2dTaUFnRUFBb0lCQVFDNStiOU9tNmNBeW9pTlxud0hVaXFjYVBVKzhWWDdpWnpMVXl1eDlZS3IydzNBQnlzR2p2RGNqMjZ4SjBtb1ZTcnlxVHJ2bG9WSmZlbHlGUlxuWnFFTTJtSkxoNXFaL2IxZ2ZCUU1XU2JqVTJwdWtvRVdmbEsrN1cvOHVPRWIzRnpwWEQwQlFGQUUxbmkrRGlUK1xuVjZVNUx0aUF3NkJoRjFqWXRwR0xzOFVWUlplOUhoQ0VKYzNQU3ZzQ3J4VzBkT1ZRYlI3L0IxaDBzQnp4MFRpelxub3dYc3d6dmFrUFZ6WW5rR2NhUm5lT1lSV1prRGt6cFBZcXZPZi9rR3hzaUcwYTJzRy9nZkFGQnJYdy9NNXlUK1xub1ptSDVVTUFHK2RjbUR5ZmQzcUJmOXg5WkNUUjRVMmVnZUVuMGtDQTczdkRqVGlQeGRsdHFTVFl0S25DSGMzVVxuRUxLeGpKczFBZ01CQUFFQ2dnRUFBTVU3bVNoRTYxaHJjMmJpTlZnTnRnZExmTU91UUpqY0FVOU1KSEhjNGxBdlxuQWtxZnpLbTZkT2RwWnFsRE55SDVvNjM4WTRYQ01VNWYrWFhhNGZJL3FQOXhVUVQvbFZnK1B3VFpoK1NQRXRFeFxuanJYTVF2VTUyd3FyQ0JJRUlvVmF6VmdHWE5iRW5ranh0MG9HcWJON2V5RVVWNEtnd0JrVmhrWWk0V0V0N1Q4aVxuVWtzcWlDZ0s1T0QxeS9NaUJ3ZDJHcUpCWGV0aHdwNGRTalhWRUJSNm9Nei9ORzE4WitHUjFNVHhMZ2xlcG90ZVxuS0cyajFyclJWeXlwSUZ1andLMUVrL1pkZW9OYloyU2VpVjU4N1VBanNpanJPWXlRbkh6TXJLY0NSRFduVG1pSFxuSC9aQlRMVUJlSEkzQUhUb3IyN1VnNVhQNHNVWUZJeFBwd2tLLzQwL3V3S0JnUUR3NjZVcUs3cEk1UHpmOG9XalxuOElnVGtINjk2aUR2ZWZEZ2Q0YlZ0RTYzUTlBUjFYMjVJZGFtZ1lWVGxVUEFvc0FxNG5VTnl4WmtCZ0U4RHQrdFxuRDhKdjE4Ty80VERHNytzV2IzL2R0UFRUSzR1ODI5VGNKaXkyUDdCZncvRUxOWmI2MXM3bFZNWkRUcFdrYlRPcVxuelltZFFYZUwxMlFRYWhISlFBWjVEY3Jpc3dLQmdRREZuYk0vMjVraVpYNm43MEs1Y1ZsZVVXK2RyVFpmNmhZdFxuZjJtNGpiL0JKSXNqVlpUQ1lDWlhvR1BUa01oWm8waERBYUNFclhYR0Nxdk9kR1R1M2xXRk80RDdOQTgvTXNSOVxuMVZyNDQyQ3hqVVBtTEJtQWU3dkRYQW9HTHVyVnFhWEJIRFBxYXBFK1RZVkRuRFdXM1pDczdpQXVZUW9GcFA4WlxuZDVHQVJNTGVkd0tCZ0hTOTZ6bmxHSTZzRDNGQlpzckxDbFZZcG1IR3F4RUFLTjNNYlpUdW0xb296UkZuUDFYUFxuZE9FWVVBL3hlM1JFS1JSZXlkUFdQbEpYcW85OHNaeDl6MzA4czRrdVNPR05ib0JmcFRrOHI0b0lSdDFNTlBnOFxuczF2WXZ0R1k5QnUzYXlLL3BsL3dWV1pXRlNNcEcyay8wZGhXMmVQMGluTjl3b0tmdU1NK0VMc0xBb0dBU2ZLMVxuUE5Rai9hY1ZPaXBpUVpxVTRxSityZlkvUHEwT0Y0QnlRMGxuMUJLa3JsZzhEbkNFYUkzd1RSOEVtZVpzQ0FiM1xuMWk1Q3dCVUdMWCtJdFlvbFhuSGgxaDZwQmZFdGJoa0VyZFlJUE9pcjI5bnN3Uk9NTTVLaGZhYlk0Wk5XSDJrNlxuVkNJRXI5ZTZZbzUxenpxaUJOUW0zclFaVi90aUtsbC83UXZPRUFrQ2dZQm9adm82bWp5d0tkUzdwV0Q4Uk9tN1xuVWx0TmFmVkhwQzNzYzBXVGxyUnBaTXBnT3hmTG5HcjhCTnhsOWZGSVorSUFTNGRFcFp4V1FnUTVRejE4S0V6WVxuNFpOQUtPQi9vdDM5cmo5UFh2akQzZFZnYS94MTFlOGxJU2ZEMis4eG1iMWVyUExETXBma091UjB0c29tTTVIL1xubVh1dW1ZLzNIK2xGYWdNNm80Rk93Zz09XG4tLS0tLUVORCBQUklWQVRFIEtFWS0tLS0tXG4iLAogICJjbGllbnRfZW1haWwiOiAiZ2l0cG9kLWRiQGdwbC1zaC0wOTAtMy5pYW0uZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgImNsaWVudF9pZCI6ICIxMTQwMjY5MzQ2ODU1Mjk5NDA5NDAiLAogICJhdXRoX3VyaSI6ICJodHRwczovL2FjY291bnRzLmdvb2dsZS5jb20vby9vYXV0aDIvYXV0aCIsCiAgInRva2VuX3VyaSI6ICJodHRwczovL29hdXRoMi5nb29nbGVhcGlzLmNvbS90b2tlbiIsCiAgImF1dGhfcHJvdmlkZXJfeDUwOV9jZXJ0X3VybCI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9vYXV0aDIvdjEvY2VydHMiLAogICJjbGllbnRfeDUwOV9jZXJ0X3VybCI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9yb2JvdC92MS9tZXRhZGF0YS94NTA5L2dpdHBvZC1kYiU0MGdwbC1zaC0wOTAtMy5pYW0uZ3NlcnZpY2VhY2NvdW50LmNvbSIKfQo=", + "private_key_type": "TYPE_GOOGLE_CREDENTIALS_FILE", + "public_key": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUMvRENDQWVTZ0F3SUJBZ0lJZnNSU2YxcWROaTh3RFFZSktvWklodmNOQVFFRkJRQXdJREVlTUJ3R0ExVUUKQXhNVk1URTBNREkyT1RNME5qZzFOVEk1T1RRd09UUXdNQ0FYRFRJeE1EVXdNekV3TXpBME9Gb1lEems1T1RreApNak14TWpNMU9UVTVXakFnTVI0d0hBWURWUVFERXhVeE1UUXdNalk1TXpRMk9EVTFNams1TkRBNU5EQXdnZ0VpCk1BMEdDU3FHU0liM0RRRUJBUVVBQTRJQkR3QXdnZ0VLQW9JQkFRQzUrYjlPbTZjQXlvaU53SFVpcWNhUFUrOFYKWDdpWnpMVXl1eDlZS3IydzNBQnlzR2p2RGNqMjZ4SjBtb1ZTcnlxVHJ2bG9WSmZlbHlGUlpxRU0ybUpMaDVxWgovYjFnZkJRTVdTYmpVMnB1a29FV2ZsSys3Vy84dU9FYjNGenBYRDBCUUZBRTFuaStEaVQrVjZVNUx0aUF3NkJoCkYxall0cEdMczhVVlJaZTlIaENFSmMzUFN2c0NyeFcwZE9WUWJSNy9CMWgwc0J6eDBUaXpvd1hzd3p2YWtQVnoKWW5rR2NhUm5lT1lSV1prRGt6cFBZcXZPZi9rR3hzaUcwYTJzRy9nZkFGQnJYdy9NNXlUK29abUg1VU1BRytkYwptRHlmZDNxQmY5eDlaQ1RSNFUyZWdlRW4wa0NBNzN2RGpUaVB4ZGx0cVNUWXRLbkNIYzNVRUxLeGpKczFBZ01CCkFBR2pPREEyTUF3R0ExVWRFd0VCL3dRQ01BQXdEZ1lEVlIwUEFRSC9CQVFEQWdlQU1CWUdBMVVkSlFFQi93UU0KTUFvR0NDc0dBUVVGQndNQ01BMEdDU3FHU0liM0RRRUJCUVVBQTRJQkFRQVBFdnljNnhva3htdVUyTDB1Y0QyaQpLM3AxMStyeUdCUTZvc0hqMGFYTlJKYjM0eHE1cGhOc3grTTkwK0pxUFRGRWFaQ1Vad2Q5Q1FPbWNZZHdqNDNZCkgyU3NBYy9kbjJkZnNOcWx2ejZoTFBubSsrdU5qcmg5MERHYlpGckxuZGhjcFdpVEErKzJpY0FvY0xIaHBvemMKS09GSjJZaWNTOUZlV1dYbTV3TGs4aGFDQVFYYllLTlg0WWhJdllUaHJZWlhvbUJiUWs1bVNidSt5MWNqSVA2UwpreFVyR3p3b1JNOGdkbWswbWJlRGUvS2hVcjNZbG5JSVRCWGZKMEFJUEtHLzVJVFoxTGd6WndOM3FhOTA1SDRFCmp0anl1VUJpK29weWZMZGd4K0MwNWFEWDk1dU9vTXhpQ1djMFFyWEx1TitEYVNmSWhDUDBNOUhmeEljdWw1T0wKLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQo=", + "public_key_data": null, + "public_key_type": "TYPE_X509_PEM_FILE", + "service_account_id": "projects/gpl-sh-090-3/serviceAccounts/gitpod-db@gpl-sh-090-3.iam.gserviceaccount.com", + "valid_after": "2021-05-03T10:30:48Z", + "valid_before": "9999-12-31T23:59:59Z" + }, + "sensitive_attributes": [], + "private": "bnVsbA==", + "dependencies": [ + "module.database.google_service_account.gitpod_database" + ] + } + ] + }, + { + "module": "module.database", + "mode": "managed", + "type": "google_service_networking_connection", + "name": "gitpod", + "provider": "provider[\"registry.terraform.io/hashicorp/google\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "id": "projects%2Fgpl-sh-090-3%2Fglobal%2Fnetworks%2Fgitpod:servicenetworking.googleapis.com", + "network": "projects/gpl-sh-090-3/global/networks/gitpod", + "peering": "servicenetworking-googleapis-com", + "reserved_peering_ranges": [ + "gitpod-db" + ], + "service": "servicenetworking.googleapis.com", + "timeouts": null + }, + "sensitive_attributes": [], + "private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjo2MDAwMDAwMDAwMDAsImRlbGV0ZSI6NjAwMDAwMDAwMDAwLCJ1cGRhdGUiOjYwMDAwMDAwMDAwMH19", + "dependencies": [ + "google_compute_network.gitpod", + "module.database.google_compute_global_address.gitpod" + ] + } + ] + }, + { + "module": "module.database", + "mode": "managed", + "type": "google_sql_database", + "name": "gitpod", + "provider": "provider[\"registry.terraform.io/hashicorp/google\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "charset": "utf8mb4", + "collation": "utf8mb4_bin", + "id": "projects/gpl-sh-090-3/instances/gitpod-db-f68922fd/databases/gitpod", + "instance": "gitpod-db-f68922fd", + "name": "gitpod", + "project": "gpl-sh-090-3", + "self_link": "https://sqladmin.googleapis.com/sql/v1beta4/projects/gpl-sh-090-3/instances/gitpod-db-f68922fd/databases/gitpod", + "timeouts": null + }, + "sensitive_attributes": [], + "private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjo5MDAwMDAwMDAwMDAsImRlbGV0ZSI6NjAwMDAwMDAwMDAwLCJ1cGRhdGUiOjYwMDAwMDAwMDAwMH19", + "dependencies": [ + "google_compute_network.gitpod", + "module.database.google_compute_global_address.gitpod", + "module.database.google_service_networking_connection.gitpod", + "module.database.google_sql_database_instance.gitpod", + "module.database.random_id.database" + ] + } + ] + }, + { + "module": "module.database", + "mode": "managed", + "type": "google_sql_database", + "name": "gitpod_sessions", + "provider": "provider[\"registry.terraform.io/hashicorp/google\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "charset": "utf8mb4", + "collation": "utf8mb4_bin", + "id": "projects/gpl-sh-090-3/instances/gitpod-db-f68922fd/databases/gitpod-sessions", + "instance": "gitpod-db-f68922fd", + "name": "gitpod-sessions", + "project": "gpl-sh-090-3", + "self_link": "https://sqladmin.googleapis.com/sql/v1beta4/projects/gpl-sh-090-3/instances/gitpod-db-f68922fd/databases/gitpod-sessions", + "timeouts": null + }, + "sensitive_attributes": [], + "private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjo5MDAwMDAwMDAwMDAsImRlbGV0ZSI6NjAwMDAwMDAwMDAwLCJ1cGRhdGUiOjYwMDAwMDAwMDAwMH19", + "dependencies": [ + "google_compute_network.gitpod", + "module.database.google_compute_global_address.gitpod", + "module.database.google_service_networking_connection.gitpod", + "module.database.google_sql_database_instance.gitpod", + "module.database.random_id.database" + ] + } + ] + }, + { + "module": "module.database", + "mode": "managed", + "type": "google_sql_database_instance", + "name": "gitpod", + "provider": "provider[\"registry.terraform.io/hashicorp/google\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "clone": [], + "connection_name": "gpl-sh-090-3:europe-west3:gitpod-db-f68922fd", + "database_version": "MYSQL_5_7", + "deletion_protection": true, + "first_ip_address": "10.194.0.3", + "id": "gitpod-db-f68922fd", + "ip_address": [ + { + "ip_address": "10.194.0.3", + "time_to_retire": "", + "type": "PRIVATE" + } + ], + "master_instance_name": "", + "name": "gitpod-db-f68922fd", + "private_ip_address": "10.194.0.3", + "project": "gpl-sh-090-3", + "public_ip_address": "", + "region": "europe-west3", + "replica_configuration": [], + "restore_backup_context": [], + "root_password": null, + "self_link": "https://sqladmin.googleapis.com/sql/v1beta4/projects/gpl-sh-090-3/instances/gitpod-db-f68922fd", + "server_ca_cert": [ + { + "cert": "-----BEGIN CERTIFICATE-----\nMIIDfzCCAmegAwIBAgIBADANBgkqhkiG9w0BAQsFADB3MS0wKwYDVQQuEyRhN2Vh\nZGUwOS1mYzU5LTQ5NzQtOWIyNS1iOGIwODUxN2VmZmIxIzAhBgNVBAMTGkdvb2ds\nZSBDbG91ZCBTUUwgU2VydmVyIENBMRQwEgYDVQQKEwtHb29nbGUsIEluYzELMAkG\nA1UEBhMCVVMwHhcNMjEwNTAzMTAxMjA5WhcNMzEwNTAxMTAxMzA5WjB3MS0wKwYD\nVQQuEyRhN2VhZGUwOS1mYzU5LTQ5NzQtOWIyNS1iOGIwODUxN2VmZmIxIzAhBgNV\nBAMTGkdvb2dsZSBDbG91ZCBTUUwgU2VydmVyIENBMRQwEgYDVQQKEwtHb29nbGUs\nIEluYzELMAkGA1UEBhMCVVMwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIB\nAQDtV0orqDAe67zdZmszzvQFfnuohY7D0f9BG4XZJ/GXqticIwJlHoSf5aPShC4W\nY71IDnlKx/Dowypi6OoU6bJAglE7a04QbXkCdHTQhdQM2UDFp4E+FaCM3Vg2SuBK\nN+xe+zu06W/iOBeBLzuoZZD4Ni9UhaPWmIlDK8zGoYXOVC36nsYTbZww6hpGy/n3\n2aPZbomdOEOrzpRPvButPNfzpsbNLU3uRSCN0KjhUPW3adzJuj20eY8k7FcAsuIO\n+KR8KW3Jf5BIum/5XIHWZnBHyejfSLNV/CrbYTnuyyzp8JTyyfSW1ePJHlqa/O3w\npvSDCaTiYwonCdY+QOL19sRvAgMBAAGjFjAUMBIGA1UdEwEB/wQIMAYBAf8CAQAw\nDQYJKoZIhvcNAQELBQADggEBAETiPFxgc8L6MiAYQSgWwXxD85RRGGKYTc56WWPB\nwxGxZhF1NeQqsqMfBjya6Em1jv26pY1gjYCdSwPGKcSzGvN34ezpUA+Z794K/L8c\nPthvj4QqvaODXq6K3a/+d9MFEm0GVdHMumlqfhHu1n2ixk6IBRjEiEt5wRklheXL\nGxXi55dAj+yFQV9fOlbGPc5qaSajhw+28RuYow9QZzhsQEcXlrvlK46XWccC9QMi\nVAb1uS28cbhEjT3DlYqZqWMXYE1ZRrxIbaswnKZE7elAzeYp4bbzMvF7Mll6p4gc\nM7F63EMuGcdt9WMCw/Xzuw1OVgdwYbBWpfmEd+A6htGZvfM=\n-----END CERTIFICATE-----", + "common_name": "C=US,O=Google\\, Inc,CN=Google Cloud SQL Server CA,dnQualifier=a7eade09-fc59-4974-9b25-b8b08517effb", + "create_time": "2021-05-03T10:12:09.521Z", + "expiration_time": "2031-05-01T10:13:09.521Z", + "sha1_fingerprint": "2a5c815a3fc2206a7c9576a60becd33162c9a8be" + } + ], + "service_account_email_address": "p681006032247-4ppdj2@gcp-sa-cloud-sql.iam.gserviceaccount.com", + "settings": [ + { + "activation_policy": "ALWAYS", + "authorized_gae_applications": [], + "availability_type": "ZONAL", + "backup_configuration": [ + { + "backup_retention_settings": [ + { + "retained_backups": 7, + "retention_unit": "COUNT" + } + ], + "binary_log_enabled": false, + "enabled": false, + "location": "", + "point_in_time_recovery_enabled": false, + "start_time": "12:00", + "transaction_log_retention_days": 7 + } + ], + "crash_safe_replication": false, + "database_flags": [], + "disk_autoresize": true, + "disk_size": 10, + "disk_type": "PD_SSD", + "insights_config": [], + "ip_configuration": [ + { + "authorized_networks": [], + "ipv4_enabled": false, + "private_network": "projects/gpl-sh-090-3/global/networks/gitpod", + "require_ssl": false + } + ], + "location_preference": [ + { + "follow_gae_application": "", + "zone": "europe-west3-a" + } + ], + "maintenance_window": [], + "pricing_plan": "PER_USE", + "replication_type": "SYNCHRONOUS", + "tier": "db-f1-micro", + "user_labels": {}, + "version": 1 + } + ], + "timeouts": null + }, + "sensitive_attributes": [], + "private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjoxODAwMDAwMDAwMDAwLCJkZWxldGUiOjE4MDAwMDAwMDAwMDAsInVwZGF0ZSI6MTgwMDAwMDAwMDAwMH19", + "dependencies": [ + "google_compute_network.gitpod", + "module.database.google_compute_global_address.gitpod", + "module.database.google_service_networking_connection.gitpod", + "module.database.random_id.database" + ] + } + ] + }, + { + "module": "module.database", + "mode": "managed", + "type": "google_sql_user", + "name": "gitpod", + "provider": "provider[\"registry.terraform.io/hashicorp/google\"]", + "instances": [ + { + "schema_version": 1, + "attributes": { + "deletion_policy": null, + "host": "10.%", + "id": "gitpod/10.%/gitpod-db-f68922fd", + "instance": "gitpod-db-f68922fd", + "name": "gitpod", + "password": "kqbPzZLO29P%N_tq", + "project": "gpl-sh-090-3", + "timeouts": null, + "type": "" + }, + "sensitive_attributes": [], + "private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjo2MDAwMDAwMDAwMDAsImRlbGV0ZSI6NjAwMDAwMDAwMDAwLCJ1cGRhdGUiOjYwMDAwMDAwMDAwMH0sInNjaGVtYV92ZXJzaW9uIjoiMSJ9", + "dependencies": [ + "google_compute_network.gitpod", + "module.database.google_compute_global_address.gitpod", + "module.database.google_service_networking_connection.gitpod", + "module.database.google_sql_database_instance.gitpod", + "module.database.random_id.database", + "module.database.random_password.gitpod_db_user" + ] + } + ] + }, + { + "module": "module.database", + "mode": "managed", + "type": "kubernetes_job", + "name": "mysql_initializer", + "provider": "provider[\"registry.terraform.io/hashicorp/kubernetes\"]", + "instances": [ + { + "schema_version": 1, + "attributes": { + "id": "default/gitpod-db-initialization", + "metadata": [ + { + "annotations": {}, + "generate_name": "", + "generation": 0, + "labels": {}, + "name": "gitpod-db-initialization", + "namespace": "default", + "resource_version": "15615", + "self_link": "", + "uid": "42c0f374-55a0-4bb5-b903-b7b3c35974e3" + } + ], + "spec": [ + { + "active_deadline_seconds": 0, + "backoff_limit": 4, + "completions": 1, + "manual_selector": false, + "parallelism": 1, + "selector": [ + { + "match_expressions": null, + "match_labels": null + } + ], + "template": [ + { + "metadata": [ + { + "annotations": {}, + "generate_name": "", + "generation": 0, + "labels": {}, + "name": "", + "resource_version": "", + "self_link": "", + "uid": "" + } + ], + "spec": [ + { + "active_deadline_seconds": 0, + "affinity": [], + "automount_service_account_token": true, + "container": [ + { + "args": [], + "command": [ + "/init.sh", + "\u0026\u0026", + "echo", + "finished" + ], + "env": [ + { + "name": "MYSQL_HOST", + "value": "", + "value_from": [ + { + "config_map_key_ref": [], + "field_ref": [], + "resource_field_ref": [], + "secret_key_ref": [ + { + "key": "host", + "name": "gitpod-database", + "optional": false + } + ] + } + ] + }, + { + "name": "MYSQL_USER", + "value": "gitpod", + "value_from": [] + }, + { + "name": "MYSQL_PORT", + "value": "3306", + "value_from": [] + }, + { + "name": "MYSQL_ROOT_PASSWORD", + "value": "", + "value_from": [ + { + "config_map_key_ref": [], + "field_ref": [], + "resource_field_ref": [], + "secret_key_ref": [ + { + "key": "password", + "name": "gitpod-database", + "optional": false + } + ] + } + ] + } + ], + "env_from": [], + "image": "gcr.io/gitpod-io/db-migrations:v0.4.0-dev-selfhosted-gitpod-db-init.15", + "image_pull_policy": "IfNotPresent", + "lifecycle": [], + "liveness_probe": [], + "name": "db-initialization", + "port": [], + "readiness_probe": [], + "resources": [ + { + "limits": null, + "requests": null + } + ], + "security_context": [], + "startup_probe": [], + "stdin": false, + "stdin_once": false, + "termination_message_path": "/dev/termination-log", + "termination_message_policy": "File", + "tty": false, + "volume_mount": [], + "working_dir": "" + } + ], + "dns_config": [], + "dns_policy": "ClusterFirst", + "enable_service_links": true, + "host_aliases": [], + "host_ipc": false, + "host_network": false, + "host_pid": false, + "hostname": "", + "image_pull_secrets": [], + "init_container": [], + "node_name": "", + "node_selector": {}, + "priority_class_name": "", + "readiness_gate": [], + "restart_policy": "Never", + "security_context": [], + "service_account_name": "", + "share_process_namespace": false, + "subdomain": "", + "termination_grace_period_seconds": 30, + "toleration": [], + "topology_spread_constraint": [], + "volume": [] + } + ] + } + ], + "ttl_seconds_after_finished": "" + } + ], + "timeouts": null, + "wait_for_completion": true + }, + "sensitive_attributes": [], + "private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjo2MDAwMDAwMDAwMCwiZGVsZXRlIjo2MDAwMDAwMDAwMCwidXBkYXRlIjo2MDAwMDAwMDAwMH0sInNjaGVtYV92ZXJzaW9uIjoiMSJ9", + "dependencies": [ + "data.google_client_config.provider", + "google_compute_network.gitpod", + "module.kubernetes.google_compute_subnetwork.gitpod", + "module.kubernetes.google_container_cluster.gitpod" + ] + } + ] + }, + { + "module": "module.database", + "mode": "managed", + "type": "kubernetes_secret", + "name": "database", + "provider": "provider[\"registry.terraform.io/hashicorp/kubernetes\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "data": { + "credentials.json": "{\n \"type\": \"service_account\",\n \"project_id\": \"gpl-sh-090-3\",\n \"private_key_id\": \"f249e3f3120dd5453d3939cf2cfa4c086731bccc\",\n \"private_key\": \"-----BEGIN PRIVATE KEY-----\\nMIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQC5+b9Om6cAyoiN\\nwHUiqcaPU+8VX7iZzLUyux9YKr2w3ABysGjvDcj26xJ0moVSryqTrvloVJfelyFR\\nZqEM2mJLh5qZ/b1gfBQMWSbjU2pukoEWflK+7W/8uOEb3FzpXD0BQFAE1ni+DiT+\\nV6U5LtiAw6BhF1jYtpGLs8UVRZe9HhCEJc3PSvsCrxW0dOVQbR7/B1h0sBzx0Tiz\\nowXswzvakPVzYnkGcaRneOYRWZkDkzpPYqvOf/kGxsiG0a2sG/gfAFBrXw/M5yT+\\noZmH5UMAG+dcmDyfd3qBf9x9ZCTR4U2egeEn0kCA73vDjTiPxdltqSTYtKnCHc3U\\nELKxjJs1AgMBAAECggEAAMU7mShE61hrc2biNVgNtgdLfMOuQJjcAU9MJHHc4lAv\\nAkqfzKm6dOdpZqlDNyH5o638Y4XCMU5f+XXa4fI/qP9xUQT/lVg+PwTZh+SPEtEx\\njrXMQvU52wqrCBIEIoVazVgGXNbEnkjxt0oGqbN7eyEUV4KgwBkVhkYi4WEt7T8i\\nUksqiCgK5OD1y/MiBwd2GqJBXethwp4dSjXVEBR6oMz/NG18Z+GR1MTxLglepote\\nKG2j1rrRVyypIFujwK1Ek/ZdeoNbZ2SeiV587UAjsijrOYyQnHzMrKcCRDWnTmiH\\nH/ZBTLUBeHI3AHTor27Ug5XP4sUYFIxPpwkK/40/uwKBgQDw66UqK7pI5Pzf8oWj\\n8IgTkH696iDvefDgd4bVtE63Q9AR1X25IdamgYVTlUPAosAq4nUNyxZkBgE8Dt+t\\nD8Jv18O/4TDG7+sWb3/dtPTTK4u829TcJiy2P7Bfw/ELNZb61s7lVMZDTpWkbTOq\\nzYmdQXeL12QQahHJQAZ5DcriswKBgQDFnbM/25kiZX6n70K5cVleUW+drTZf6hYt\\nf2m4jb/BJIsjVZTCYCZXoGPTkMhZo0hDAaCErXXGCqvOdGTu3lWFO4D7NA8/MsR9\\n1Vr442CxjUPmLBmAe7vDXAoGLurVqaXBHDPqapE+TYVDnDWW3ZCs7iAuYQoFpP8Z\\nd5GARMLedwKBgHS96znlGI6sD3FBZsrLClVYpmHGqxEAKN3MbZTum1oozRFnP1XP\\ndOEYUA/xe3REKRReydPWPlJXqo98sZx9z308s4kuSOGNboBfpTk8r4oIRt1MNPg8\\ns1vYvtGY9Bu3ayK/pl/wVWZWFSMpG2k/0dhW2eP0inN9woKfuMM+ELsLAoGASfK1\\nPNQj/acVOipiQZqU4qJ+rfY/Pq0OF4ByQ0ln1BKkrlg8DnCEaI3wTR8EmeZsCAb3\\n1i5CwBUGLX+ItYolXnHh1h6pBfEtbhkErdYIPOir29nswROMM5KhfabY4ZNWH2k6\\nVCIEr9e6Yo51zzqiBNQm3rQZV/tiKll/7QvOEAkCgYBoZvo6mjywKdS7pWD8ROm7\\nUltNafVHpC3sc0WTlrRpZMpgOxfLnGr8BNxl9fFIZ+IAS4dEpZxWQgQ5Qz18KEzY\\n4ZNAKOB/ot39rj9PXvjD3dVga/x11e8lISfD2+8xmb1erPLDMpfkOuR0tsomM5H/\\nmXuumY/3H+lFagM6o4FOwg==\\n-----END PRIVATE KEY-----\\n\",\n \"client_email\": \"gitpod-db@gpl-sh-090-3.iam.gserviceaccount.com\",\n \"client_id\": \"114026934685529940940\",\n \"auth_uri\": \"https://accounts.google.com/o/oauth2/auth\",\n \"token_uri\": \"https://oauth2.googleapis.com/token\",\n \"auth_provider_x509_cert_url\": \"https://www.googleapis.com/oauth2/v1/certs\",\n \"client_x509_cert_url\": \"https://www.googleapis.com/robot/v1/metadata/x509/gitpod-db%40gpl-sh-090-3.iam.gserviceaccount.com\"\n}\n" + }, + "id": "default/gcloud-sql-token", + "metadata": [ + { + "annotations": {}, + "generate_name": "", + "generation": 0, + "labels": {}, + "name": "gcloud-sql-token", + "namespace": "default", + "resource_version": "13498", + "self_link": "", + "uid": "e0e84d80-0155-41df-8b3a-8a91cdcca53a" + } + ], + "type": "Opaque" + }, + "sensitive_attributes": [], + "private": "bnVsbA==", + "dependencies": [ + "data.google_client_config.provider", + "google_compute_network.gitpod", + "module.database.google_service_account.gitpod_database", + "module.database.google_service_account_key.gitpod_database", + "module.kubernetes.google_compute_subnetwork.gitpod", + "module.kubernetes.google_container_cluster.gitpod" + ] + } + ] + }, + { + "module": "module.database", + "mode": "managed", + "type": "kubernetes_secret", + "name": "gitpod_database", + "provider": "provider[\"registry.terraform.io/hashicorp/kubernetes\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "data": { + "host": "10.194.0.3", + "password": "kqbPzZLO29P%N_tq", + "user": "gitpod" + }, + "id": "default/gitpod-database", + "metadata": [ + { + "annotations": {}, + "generate_name": "", + "generation": 0, + "labels": {}, + "name": "gitpod-database", + "namespace": "default", + "resource_version": "10294", + "self_link": "", + "uid": "0968b070-098a-4c35-a12f-22eb4786c064" + } + ], + "type": "Opaque" + }, + "sensitive_attributes": [], + "private": "bnVsbA==", + "dependencies": [ + "data.google_client_config.provider", + "google_compute_network.gitpod", + "module.database.google_compute_global_address.gitpod", + "module.database.google_service_networking_connection.gitpod", + "module.database.google_sql_database_instance.gitpod", + "module.database.google_sql_user.gitpod", + "module.database.random_id.database", + "module.database.random_password.gitpod_db_user", + "module.kubernetes.google_compute_subnetwork.gitpod", + "module.kubernetes.google_container_cluster.gitpod" + ] + } + ] + }, + { + "module": "module.database", + "mode": "managed", + "type": "random_id", + "name": "database", + "provider": "provider[\"registry.terraform.io/hashicorp/random\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "b64_std": "9oki/Q==", + "b64_url": "9oki_Q", + "byte_length": 4, + "dec": "4136182525", + "hex": "f68922fd", + "id": "9oki_Q", + "keepers": null, + "prefix": null + }, + "sensitive_attributes": [], + "private": "bnVsbA==" + } + ] + }, + { + "module": "module.database", + "mode": "managed", + "type": "random_password", + "name": "gitpod_db_user", + "provider": "provider[\"registry.terraform.io/hashicorp/random\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "id": "none", + "keepers": null, + "length": 16, + "lower": true, + "min_lower": 0, + "min_numeric": 0, + "min_special": 0, + "min_upper": 0, + "number": true, + "override_special": "_%@", + "result": "kqbPzZLO29P%N_tq", + "special": true, + "upper": true + }, + "sensitive_attributes": [], + "private": "bnVsbA==" + } + ] + }, + { + "module": "module.dns", + "mode": "data", + "type": "template_file", + "name": "values", + "provider": "provider[\"registry.terraform.io/hashicorp/template\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "filename": null, + "id": "ce2b088886435098847ab6a3e962d4da983869be4db01c79a2562ef56ecc7ce9", + "rendered": "# Copyright (c) 2020 Gitpod GmbH. All rights reserved.\n# Licensed under the MIT License. See License-MIT.txt in the project root for license information.\n\nhostname: gpl.gitpod-self-hosted.com\ncomponents:\n proxy:\n loadBalancerIP: 35.242.237.190\n\nbranding:\n homepage: gpl.gitpod-self-hosted.com\n redirectUrlIfNotAuthenticated: /workspaces/\n redirectUrlAfterLogout: gpl.gitpod-self-hosted.com\n", + "template": "# Copyright (c) 2020 Gitpod GmbH. All rights reserved.\n# Licensed under the MIT License. See License-MIT.txt in the project root for license information.\n\nhostname: ${hostname}\ncomponents:\n proxy:\n loadBalancerIP: ${loadBalancerIP}\n\nbranding:\n homepage: ${hostname}\n redirectUrlIfNotAuthenticated: /workspaces/\n redirectUrlAfterLogout: ${hostname}\n", + "vars": { + "hostname": "gpl.gitpod-self-hosted.com", + "loadBalancerIP": "35.242.237.190" + } + }, + "sensitive_attributes": [] + } + ] + }, + { + "module": "module.dns", + "mode": "managed", + "type": "google_compute_address", + "name": "gitpod", + "provider": "provider[\"registry.terraform.io/hashicorp/google\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "address": "35.242.237.190", + "address_type": "EXTERNAL", + "creation_timestamp": "2021-05-03T03:42:08.267-07:00", + "description": "", + "id": "projects/gpl-sh-090-3/regions/europe-west3/addresses/gitpod-dns", + "name": "gitpod-dns", + "network_tier": "PREMIUM", + "project": "gpl-sh-090-3", + "purpose": "", + "region": "europe-west3", + "self_link": "https://www.googleapis.com/compute/v1/projects/gpl-sh-090-3/regions/europe-west3/addresses/gitpod-dns", + "subnetwork": "", + "timeouts": null, + "users": [] + }, + "sensitive_attributes": [], + "private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjoyNDAwMDAwMDAwMDAsImRlbGV0ZSI6MjQwMDAwMDAwMDAwfX0=" + } + ] + }, + { + "module": "module.dns", + "mode": "managed", + "type": "google_dns_managed_zone", + "name": "gitpod", + "provider": "provider[\"registry.terraform.io/hashicorp/google\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "description": "Gitpod DNS zone", + "dns_name": "gpl.gitpod-self-hosted.com.", + "dnssec_config": [], + "force_destroy": false, + "forwarding_config": [], + "id": "projects/gpl-sh-090-3/managedZones/gpl-gitpod-self-hosted-com", + "labels": {}, + "name": "gpl-gitpod-self-hosted-com", + "name_servers": [ + "ns-cloud-d1.googledomains.com.", + "ns-cloud-d2.googledomains.com.", + "ns-cloud-d3.googledomains.com.", + "ns-cloud-d4.googledomains.com." + ], + "peering_config": [], + "private_visibility_config": [], + "project": "gpl-sh-090-3", + "timeouts": null, + "visibility": "public" + }, + "sensitive_attributes": [], + "private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjoyNDAwMDAwMDAwMDAsImRlbGV0ZSI6MjQwMDAwMDAwMDAwLCJ1cGRhdGUiOjI0MDAwMDAwMDAwMH19" + } + ] + }, + { + "module": "module.dns", + "mode": "managed", + "type": "google_dns_record_set", + "name": "gitpod", + "provider": "provider[\"registry.terraform.io/hashicorp/google\"]", + "instances": [ + { + "index_key": 0, + "schema_version": 0, + "attributes": { + "id": "projects/gpl-sh-090-3/managedZones/gpl-gitpod-self-hosted-com/rrsets/gpl.gitpod-self-hosted.com./A", + "managed_zone": "gpl-gitpod-self-hosted-com", + "name": "gpl.gitpod-self-hosted.com.", + "project": "gpl-sh-090-3", + "rrdatas": [ + "35.242.237.190" + ], + "timeouts": null, + "ttl": 300, + "type": "A" + }, + "sensitive_attributes": [], + "private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjoyNDAwMDAwMDAwMDAsImRlbGV0ZSI6MjQwMDAwMDAwMDAwLCJ1cGRhdGUiOjI0MDAwMDAwMDAwMH19", + "dependencies": [ + "module.dns.google_compute_address.gitpod", + "module.dns.google_dns_managed_zone.gitpod" + ] + }, + { + "index_key": 1, + "schema_version": 0, + "attributes": { + "id": "projects/gpl-sh-090-3/managedZones/gpl-gitpod-self-hosted-com/rrsets/*.gpl.gitpod-self-hosted.com./A", + "managed_zone": "gpl-gitpod-self-hosted-com", + "name": "*.gpl.gitpod-self-hosted.com.", + "project": "gpl-sh-090-3", + "rrdatas": [ + "35.242.237.190" + ], + "timeouts": null, + "ttl": 300, + "type": "A" + }, + "sensitive_attributes": [], + "private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjoyNDAwMDAwMDAwMDAsImRlbGV0ZSI6MjQwMDAwMDAwMDAwLCJ1cGRhdGUiOjI0MDAwMDAwMDAwMH19", + "dependencies": [ + "module.dns.google_compute_address.gitpod", + "module.dns.google_dns_managed_zone.gitpod" + ] + }, + { + "index_key": 2, + "schema_version": 0, + "attributes": { + "id": "projects/gpl-sh-090-3/managedZones/gpl-gitpod-self-hosted-com/rrsets/*.ws.gpl.gitpod-self-hosted.com./A", + "managed_zone": "gpl-gitpod-self-hosted-com", + "name": "*.ws.gpl.gitpod-self-hosted.com.", + "project": "gpl-sh-090-3", + "rrdatas": [ + "35.242.237.190" + ], + "timeouts": null, + "ttl": 300, + "type": "A" + }, + "sensitive_attributes": [], + "private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjoyNDAwMDAwMDAwMDAsImRlbGV0ZSI6MjQwMDAwMDAwMDAwLCJ1cGRhdGUiOjI0MDAwMDAwMDAwMH19", + "dependencies": [ + "module.dns.google_compute_address.gitpod", + "module.dns.google_dns_managed_zone.gitpod" + ] + } + ] + }, + { + "module": "module.dns", + "mode": "managed", + "type": "google_project_iam_member", + "name": "dns", + "provider": "provider[\"registry.terraform.io/hashicorp/google\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "condition": [], + "etag": "BwXBasRJJWc=", + "id": "gpl-sh-090-3/roles/dns.admin/serviceAccount:gitpod-dns@gpl-sh-090-3.iam.gserviceaccount.com", + "member": "serviceAccount:gitpod-dns@gpl-sh-090-3.iam.gserviceaccount.com", + "project": "gpl-sh-090-3", + "role": "roles/dns.admin" + }, + "sensitive_attributes": [], + "private": "bnVsbA==", + "dependencies": [ + "module.dns.google_service_account.dns" + ] + } + ] + }, + { + "module": "module.dns", + "mode": "managed", + "type": "google_project_service", + "name": "dns", + "provider": "provider[\"registry.terraform.io/hashicorp/google\"]", + "instances": [ + { + "index_key": 0, + "schema_version": 0, + "attributes": { + "disable_dependent_services": false, + "disable_on_destroy": false, + "id": "gpl-sh-090-3/dns.googleapis.com", + "project": "gpl-sh-090-3", + "service": "dns.googleapis.com", + "timeouts": null + }, + "sensitive_attributes": [], + "private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjoxMjAwMDAwMDAwMDAwLCJkZWxldGUiOjEyMDAwMDAwMDAwMDAsInJlYWQiOjYwMDAwMDAwMDAwMCwidXBkYXRlIjoxMjAwMDAwMDAwMDAwfX0=" + }, + { + "index_key": 1, + "schema_version": 0, + "attributes": { + "disable_dependent_services": false, + "disable_on_destroy": false, + "id": "gpl-sh-090-3/compute.googleapis.com", + "project": "gpl-sh-090-3", + "service": "compute.googleapis.com", + "timeouts": null + }, + "sensitive_attributes": [], + "private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjoxMjAwMDAwMDAwMDAwLCJkZWxldGUiOjEyMDAwMDAwMDAwMDAsInJlYWQiOjYwMDAwMDAwMDAwMCwidXBkYXRlIjoxMjAwMDAwMDAwMDAwfX0=" + } + ] + }, + { + "module": "module.dns", + "mode": "managed", + "type": "google_service_account", + "name": "dns", + "provider": "provider[\"registry.terraform.io/hashicorp/google\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "account_id": "gitpod-dns", + "description": "Gitpod DNS Admin gitpod-dns", + "display_name": "gitpod-dns", + "email": "gitpod-dns@gpl-sh-090-3.iam.gserviceaccount.com", + "id": "projects/gpl-sh-090-3/serviceAccounts/gitpod-dns@gpl-sh-090-3.iam.gserviceaccount.com", + "name": "projects/gpl-sh-090-3/serviceAccounts/gitpod-dns@gpl-sh-090-3.iam.gserviceaccount.com", + "project": "gpl-sh-090-3", + "timeouts": null, + "unique_id": "101308488843856540721" + }, + "sensitive_attributes": [], + "private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjozMDAwMDAwMDAwMDB9fQ==" + } + ] + }, + { + "module": "module.dns", + "mode": "managed", + "type": "google_service_account_key", + "name": "dns", + "provider": "provider[\"registry.terraform.io/hashicorp/google\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "id": "projects/gpl-sh-090-3/serviceAccounts/gitpod-dns@gpl-sh-090-3.iam.gserviceaccount.com/keys/cb427556940495766c68b34d6ee05955bd50161e", + "keepers": null, + "key_algorithm": "KEY_ALG_RSA_2048", + "name": "projects/gpl-sh-090-3/serviceAccounts/gitpod-dns@gpl-sh-090-3.iam.gserviceaccount.com/keys/cb427556940495766c68b34d6ee05955bd50161e", + "private_key": "ewogICJ0eXBlIjogInNlcnZpY2VfYWNjb3VudCIsCiAgInByb2plY3RfaWQiOiAiZ3BsLXNoLTA5MC0zIiwKICAicHJpdmF0ZV9rZXlfaWQiOiAiY2I0Mjc1NTY5NDA0OTU3NjZjNjhiMzRkNmVlMDU5NTViZDUwMTYxZSIsCiAgInByaXZhdGVfa2V5IjogIi0tLS0tQkVHSU4gUFJJVkFURSBLRVktLS0tLVxuTUlJRXZ3SUJBREFOQmdrcWhraUc5dzBCQVFFRkFBU0NCS2t3Z2dTbEFnRUFBb0lCQVFDd3lGb01iQ2ZLc3JOTlxuM3dSWWt5bjZDV1EwN1Bad290SFdLbTlmZEpaSWhydjRHbFJyNkVaQzFDZWhHbjkzVEROekdBaTh0Y2VXeFpOdVxuQVpGWjRNLzJHM1JpdWRwa0xyRTBLMTU1c2Y1VzhndkVPVmZHSEVMS2gydUlmNkFNRnNSMUVYMXZ2YitBcHdVY1xud1pQK1B3b0RZRk52c3ZvbDNCaG1wSWxkS1Z2bTkrVUlkaU85RHFzbFd0VlgxRFRYUE5FY2pqbmtwblh3OHo4K1xuQUtJUjhEQ29RSmN6K2hCaGZ6d2RwNW1xTHpJaG9MS0hRQzdJNjBTTUJPMXJYeUtqSUFDbjhzUWVyL3lrNm1yYlxuTXU5THVCYUdCRmdDNE9zenFldkplVW4xRzRFSWs3VTVSSXdpWWFmb01QYzY5ZWhuT2huQ0gyZ2JGUUpKVW9rN1xublRCQjZoelhBZ01CQUFFQ2dnRUFGbzdQbVhEZVRhblZOMi9vYzJUK29PazhpdG14N2dMWXc5Q21aWWZRVUJ1TFxuNE1kN1U1NzZyWXhrMTM4MHhLNzBqR1hhRE9VbFBXMU9EV1lsMEtlSjRkMmUvRTlsanJobWp1eFBJZUxwNXRqN1xuL0xpcHovTWdrcmRmckF0SHRrTXhlUlFYbUNxZVJTRzFoVXN1UWUzSldVK2NBS1RWOFZRa2M1ODE2QUswWWhtMFxuS0JibVhNNmFhbXNZUjJFRnA3MGFLSnZveFcxTkR2L3JJTWFOS1g4Z24vblNETWFlZHFnZG5JS0N1NEJ5dHgwelxuaDNTdVBrNVJOc240RjZMb214VmRCaVpUaGFFSWR5aGZYQ1hyWnM0VjhYL05RdytIZE01a2szay81anc3a0RlV1xubHBCcXZaODJKRUp2UVhhUzV6UTRkNzVYZ1Z3QmJhcEp2QVp4S1BoZ0FRS0JnUURZM211OFlFeGZoNFFaS2hmVVxuOVJXcFZpMkNFMGllZ1l2VDFrNmxQS0Z0aHUvcUovbFJ0RXVneVdBRFVTbmdLU2NiTXpoZDZud0xZRWxIRkdzcVxuUmV1eXpFd1V4U0p1S0syWDF2akxBUStRUnhVZ2lOMFdYQ3cydHhlaUlVcFl3dmg3djFWNlV2TDZlNnliSmpwUlxuU2NCVFpGazRyQ2RtY3djeFFxSHRtcDl5T1FLQmdRRFFya1lMQVFQZXhOcVNKTXhOVkZxd2FwbW54dVVjeGQwbVxuZkdEb2JIRVFpNXVOZjM0ZGRDOFJaRWFoZ3JnbWVVczVlSzFiRUN3aXozam9rNE9pMytEME13OEt2U3NxZXI0WVxuR2tVRFA4Rnd0U0E3OWQ1STlEVy9JeG5nL0d6YmU0ejVzaldQYTl6RUxMNkpyUXRMR2Y0SG9mbFBjVVVJbWk0NFxuR3hrNVhZZkhqd0tCZ1FEQ0RKc1lEbzZuOStreVh5Qzk4Nkt6UjZJbXZyeCszK25PM2ZhM0VYNWNNNTVleGUvblxudE16ckRPVTFjcDFtcjB3SG9aZ3hLTXhmbllOVDc2aElSaEkxaFdvYU41NnNOUWZIVXBxQmd1eDdLNjl5MGlRSlxuaXVZZyswbFJVRHBuRytZZFRFSGUxM1FFdno3ZUFLR3o5S3I3czFIR1RQeGdSbExNT0JRT09BbXR1UUtCZ1FDSlxuV1ZzU25RMXVEMFVKRVoxQ2ZIWGdUWmxxdTFkTE05UVdJNkVvK1U4Rm84MnpPU25KdXhITHNhTm5aSUZPR1dGd1xucDBQNmZzOTk3ZTVYcmRmaldOVllCVTh1TTBuNUFLYWplSTdaejVuRFZBT3VVMnFGdSs2d0tpczdVUWxaQUozT1xuTHdSZnJJKzJzdmlKNTFKYWtQWUpFZ3ZreE5tNkNyakhCdGI0VWQ0dmN3S0JnUURIbGZhSUpsZ0VoQlYxeWR5R1xudWx3dVhxaGx1R2dBaUNodjRRMXZQZnJjTXNSTTFVb1BQZmFXeVdrWG5CYjl0NTByREFqQ0ozRlpNVk91Nnk0Q1xuME1Lc0RwSFNPeGNPbjcvU3pBTnlJZUlaK1U1dC9DNnNBemp6RWd5ekMxdmU3R3lTNmxLRHgzdDhmZWJRNEhlTlxuUnJrdzBZKzdEbE9IR0N4TDFpK01CNmV2RWc9PVxuLS0tLS1FTkQgUFJJVkFURSBLRVktLS0tLVxuIiwKICAiY2xpZW50X2VtYWlsIjogImdpdHBvZC1kbnNAZ3BsLXNoLTA5MC0zLmlhbS5nc2VydmljZWFjY291bnQuY29tIiwKICAiY2xpZW50X2lkIjogIjEwMTMwODQ4ODg0Mzg1NjU0MDcyMSIsCiAgImF1dGhfdXJpIjogImh0dHBzOi8vYWNjb3VudHMuZ29vZ2xlLmNvbS9vL29hdXRoMi9hdXRoIiwKICAidG9rZW5fdXJpIjogImh0dHBzOi8vb2F1dGgyLmdvb2dsZWFwaXMuY29tL3Rva2VuIiwKICAiYXV0aF9wcm92aWRlcl94NTA5X2NlcnRfdXJsIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL29hdXRoMi92MS9jZXJ0cyIsCiAgImNsaWVudF94NTA5X2NlcnRfdXJsIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3JvYm90L3YxL21ldGFkYXRhL3g1MDkvZ2l0cG9kLWRucyU0MGdwbC1zaC0wOTAtMy5pYW0uZ3NlcnZpY2VhY2NvdW50LmNvbSIKfQo=", + "private_key_type": "TYPE_GOOGLE_CREDENTIALS_FILE", + "public_key": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUMvRENDQWVTZ0F3SUJBZ0lJQmNTSm5xS2UwOTB3RFFZSktvWklodmNOQVFFRkJRQXdJREVlTUJ3R0ExVUUKQXhNVk1UQXhNekE0TkRnNE9EUXpPRFUyTlRRd056SXhNQ0FYRFRJeE1EVXdNekV3TkRneU5sb1lEems1T1RreApNak14TWpNMU9UVTVXakFnTVI0d0hBWURWUVFERXhVeE1ERXpNRGcwT0RnNE5ETTROVFkxTkRBM01qRXdnZ0VpCk1BMEdDU3FHU0liM0RRRUJBUVVBQTRJQkR3QXdnZ0VLQW9JQkFRQ3d5Rm9NYkNmS3NyTk4zd1JZa3luNkNXUTAKN1Bad290SFdLbTlmZEpaSWhydjRHbFJyNkVaQzFDZWhHbjkzVEROekdBaTh0Y2VXeFpOdUFaRlo0TS8yRzNSaQp1ZHBrTHJFMEsxNTVzZjVXOGd2RU9WZkdIRUxLaDJ1SWY2QU1Gc1IxRVgxdnZiK0Fwd1Vjd1pQK1B3b0RZRk52CnN2b2wzQmhtcElsZEtWdm05K1VJZGlPOURxc2xXdFZYMURUWFBORWNqam5rcG5Ydzh6OCtBS0lSOERDb1FKY3oKK2hCaGZ6d2RwNW1xTHpJaG9MS0hRQzdJNjBTTUJPMXJYeUtqSUFDbjhzUWVyL3lrNm1yYk11OUx1QmFHQkZnQwo0T3N6cWV2SmVVbjFHNEVJazdVNVJJd2lZYWZvTVBjNjllaG5PaG5DSDJnYkZRSkpVb2s3blRCQjZoelhBZ01CCkFBR2pPREEyTUF3R0ExVWRFd0VCL3dRQ01BQXdEZ1lEVlIwUEFRSC9CQVFEQWdlQU1CWUdBMVVkSlFFQi93UU0KTUFvR0NDc0dBUVVGQndNQ01BMEdDU3FHU0liM0RRRUJCUVVBQTRJQkFRQVV2Tk9CKzJ3THBxY2RjdmszUkw0ZwpLZ3R3dTdYM0hZY2xkRFA3NGs0VWpGZW1yNWpPU2RSNDNRTEFXOUhSdkptcWk2U3gydUFIeXJHRFlwdEdyMEFpCi9Ob0ZPVFRZRDlyUFRQb1dwYkpTT3EyRFYxWkNnZkpCMEt1NjNwdWRIZTJuL0ZqNmhIK2tONnZlT0p1SDZhc0oKbmRRUFIxWnl0cnhjTXd4UWZ1N1NGUzYrRlE5WU0yeFIyUjhSS0s4aThoSlBnSmZCZDV1UVI1dlVoSGpJSDZ3eApCR3o5RDlUb0sycFN2VHNEamM2cU5hbmw1eEdlUWFiQUNYTUsxUzZEWk9jTXlSK2MyNERKTTdCSzZWK28zUEZGCmZxWEV6M3Q4bHQxbHd1WkJETWlBS0d3OG83VmlZQUJLUlpINlZRWWt4ZWFLTFdIdmJYRnFZY0haU1Z1eGZHQ1YKLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQo=", + "public_key_data": null, + "public_key_type": "TYPE_X509_PEM_FILE", + "service_account_id": "projects/gpl-sh-090-3/serviceAccounts/gitpod-dns@gpl-sh-090-3.iam.gserviceaccount.com", + "valid_after": "2021-05-03T10:48:26Z", + "valid_before": "9999-12-31T23:59:59Z" + }, + "sensitive_attributes": [], + "private": "bnVsbA==", + "dependencies": [ + "module.dns.google_service_account.dns" + ] + } + ] + }, + { + "module": "module.dns", + "mode": "managed", + "type": "kubernetes_secret", + "name": "dns", + "provider": "provider[\"registry.terraform.io/hashicorp/kubernetes\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "data": { + "key.json": "{\n \"type\": \"service_account\",\n \"project_id\": \"gpl-sh-090-3\",\n \"private_key_id\": \"cb427556940495766c68b34d6ee05955bd50161e\",\n \"private_key\": \"-----BEGIN PRIVATE KEY-----\\nMIIEvwIBADANBgkqhkiG9w0BAQEFAASCBKkwggSlAgEAAoIBAQCwyFoMbCfKsrNN\\n3wRYkyn6CWQ07PZwotHWKm9fdJZIhrv4GlRr6EZC1CehGn93TDNzGAi8tceWxZNu\\nAZFZ4M/2G3RiudpkLrE0K155sf5W8gvEOVfGHELKh2uIf6AMFsR1EX1vvb+ApwUc\\nwZP+PwoDYFNvsvol3BhmpIldKVvm9+UIdiO9DqslWtVX1DTXPNEcjjnkpnXw8z8+\\nAKIR8DCoQJcz+hBhfzwdp5mqLzIhoLKHQC7I60SMBO1rXyKjIACn8sQer/yk6mrb\\nMu9LuBaGBFgC4OszqevJeUn1G4EIk7U5RIwiYafoMPc69ehnOhnCH2gbFQJJUok7\\nnTBB6hzXAgMBAAECggEAFo7PmXDeTanVN2/oc2T+oOk8itmx7gLYw9CmZYfQUBuL\\n4Md7U576rYxk1380xK70jGXaDOUlPW1ODWYl0KeJ4d2e/E9ljrhmjuxPIeLp5tj7\\n/Lipz/MgkrdfrAtHtkMxeRQXmCqeRSG1hUsuQe3JWU+cAKTV8VQkc5816AK0Yhm0\\nKBbmXM6aamsYR2EFp70aKJvoxW1NDv/rIMaNKX8gn/nSDMaedqgdnIKCu4Bytx0z\\nh3SuPk5RNsn4F6LomxVdBiZThaEIdyhfXCXrZs4V8X/NQw+HdM5kk3k/5jw7kDeW\\nlpBqvZ82JEJvQXaS5zQ4d75XgVwBbapJvAZxKPhgAQKBgQDY3mu8YExfh4QZKhfU\\n9RWpVi2CE0iegYvT1k6lPKFthu/qJ/lRtEugyWADUSngKScbMzhd6nwLYElHFGsq\\nReuyzEwUxSJuKK2X1vjLAQ+QRxUgiN0WXCw2txeiIUpYwvh7v1V6UvL6e6ybJjpR\\nScBTZFk4rCdmcwcxQqHtmp9yOQKBgQDQrkYLAQPexNqSJMxNVFqwapmnxuUcxd0m\\nfGDobHEQi5uNf34ddC8RZEahgrgmeUs5eK1bECwiz3jok4Oi3+D0Mw8KvSsqer4Y\\nGkUDP8FwtSA79d5I9DW/Ixng/Gzbe4z5sjWPa9zELL6JrQtLGf4HoflPcUUImi44\\nGxk5XYfHjwKBgQDCDJsYDo6n9+kyXyC986KzR6Imvrx+3+nO3fa3EX5cM55exe/n\\ntMzrDOU1cp1mr0wHoZgxKMxfnYNT76hIRhI1hWoaN56sNQfHUpqBgux7K69y0iQJ\\niuYg+0lRUDpnG+YdTEHe13QEvz7eAKGz9Kr7s1HGTPxgRlLMOBQOOAmtuQKBgQCJ\\nWVsSnQ1uD0UJEZ1CfHXgTZlqu1dLM9QWI6Eo+U8Fo82zOSnJuxHLsaNnZIFOGWFw\\np0P6fs997e5XrdfjWNVYBU8uM0n5AKajeI7Zz5nDVAOuU2qFu+6wKis7UQlZAJ3O\\nLwRfrI+2sviJ51JakPYJEgvkxNm6CrjHBtb4Ud4vcwKBgQDHlfaIJlgEhBV1ydyG\\nulwuXqhluGgAiChv4Q1vPfrcMsRM1UoPPfaWyWkXnBb9t50rDAjCJ3FZMVOu6y4C\\n0MKsDpHSOxcOn7/SzANyIeIZ+U5t/C6sAzjzEgyzC1ve7GyS6lKDx3t8febQ4HeN\\nRrkw0Y+7DlOHGCxL1i+MB6evEg==\\n-----END PRIVATE KEY-----\\n\",\n \"client_email\": \"gitpod-dns@gpl-sh-090-3.iam.gserviceaccount.com\",\n \"client_id\": \"101308488843856540721\",\n \"auth_uri\": \"https://accounts.google.com/o/oauth2/auth\",\n \"token_uri\": \"https://oauth2.googleapis.com/token\",\n \"auth_provider_x509_cert_url\": \"https://www.googleapis.com/oauth2/v1/certs\",\n \"client_x509_cert_url\": \"https://www.googleapis.com/robot/v1/metadata/x509/gitpod-dns%40gpl-sh-090-3.iam.gserviceaccount.com\"\n}\n" + }, + "id": "default/gitpod-dns", + "metadata": [ + { + "annotations": {}, + "generate_name": "", + "generation": 0, + "labels": {}, + "name": "gitpod-dns", + "namespace": "default", + "resource_version": "18799", + "self_link": "", + "uid": "8b374c9d-d5fa-4b68-bb55-b83a066f6997" + } + ], + "type": "Opaque" + }, + "sensitive_attributes": [], + "private": "bnVsbA==", + "dependencies": [ + "data.google_client_config.provider", + "google_compute_network.gitpod", + "module.dns.google_service_account.dns", + "module.dns.google_service_account_key.dns", + "module.kubernetes.google_compute_subnetwork.gitpod", + "module.kubernetes.google_container_cluster.gitpod" + ] + } + ] + }, + { + "module": "module.kubeconfig", + "mode": "data", + "type": "google_client_config", + "name": "provider", + "provider": "provider[\"registry.terraform.io/hashicorp/google\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "access_token": "ya29.a0AfH6SMC0vH5tdj5fcW-roUTlLh5FjGrhBPlcBy8nSqPo8N2He1coEWkq9PxuhpsZX3lL8Y5cir7n23x-o_XXi0COA6e2lc7OGI9WvJz05s_dbsxWfsZh41HYMkTJFW_Go51fOh4Ww58QtKq2a2K8iD-_A5tcrRo", + "id": "projects/gpl-sh-090-3/regions/europe-west3/zones/", + "project": "gpl-sh-090-3", + "region": "europe-west3", + "zone": "" + }, + "sensitive_attributes": [] + } + ] + }, + { + "module": "module.kubeconfig", + "mode": "data", + "type": "google_container_cluster", + "name": "kubernetes", + "provider": "provider[\"registry.terraform.io/hashicorp/google\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "addons_config": [ + { + "cloudrun_config": [], + "horizontal_pod_autoscaling": [], + "http_load_balancing": [], + "network_policy_config": [ + { + "disabled": false + } + ] + } + ], + "authenticator_groups_config": [], + "cluster_autoscaling": [ + { + "auto_provisioning_defaults": [], + "enabled": false, + "resource_limits": [] + } + ], + "cluster_ipv4_cidr": "10.72.0.0/14", + "database_encryption": [ + { + "key_name": "", + "state": "DECRYPTED" + } + ], + "datapath_provider": "", + "default_max_pods_per_node": 110, + "default_snat_status": [ + { + "disabled": false + } + ], + "description": "", + "enable_autopilot": false, + "enable_binary_authorization": false, + "enable_intranode_visibility": false, + "enable_kubernetes_alpha": false, + "enable_legacy_abac": false, + "enable_shielded_nodes": false, + "enable_tpu": false, + "endpoint": "35.246.188.98", + "id": "projects/gpl-sh-090-3/locations/europe-west3/clusters/gitpod", + "initial_node_count": 1, + "instance_group_urls": [ + "https://www.googleapis.com/compute/v1/projects/gpl-sh-090-3/zones/europe-west3-a/instanceGroups/gke-gitpod-nodepool-0-55cc245a-grp", + "https://www.googleapis.com/compute/v1/projects/gpl-sh-090-3/zones/europe-west3-b/instanceGroups/gke-gitpod-nodepool-0-ab90e42d-grp", + "https://www.googleapis.com/compute/v1/projects/gpl-sh-090-3/zones/europe-west3-c/instanceGroups/gke-gitpod-nodepool-0-bd520db7-grp" + ], + "ip_allocation_policy": [ + { + "cluster_ipv4_cidr_block": "10.72.0.0/14", + "cluster_secondary_range_name": "gke-gitpod-pods-124423b3", + "services_ipv4_cidr_block": "10.76.0.0/20", + "services_secondary_range_name": "gke-gitpod-services-124423b3" + } + ], + "label_fingerprint": "a9dc16a7", + "location": "europe-west3", + "logging_service": "logging.googleapis.com/kubernetes", + "maintenance_policy": [], + "master_auth": [ + { + "client_certificate": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUMrekNDQWVPZ0F3SUJBZ0lRUHlqL1RIZE1XdmRtNnRsd3ZvK1EyakFOQmdrcWhraUc5dzBCQVFzRkFEQXYKTVMwd0t3WURWUVFERXlSbFltTTRNRFEwWkMxak1HVXpMVFJqTmpjdE9UQTBOeTFoWlRsaU56SXdaVEJsWldVdwpIaGNOTWpFd05UQXpNRGswTnpRMVdoY05Nall3TlRBeU1EazBOelExV2pBUk1ROHdEUVlEVlFRREV3WmpiR2xsCmJuUXdnZ0VpTUEwR0NTcUdTSWIzRFFFQkFRVUFBNElCRHdBd2dnRUtBb0lCQVFEWXFBNC9FOFhDV0EvUlo5bTcKTUZJVlpRVFQvUjQzYlhyVzk1cTBtOTBpRG93QzRNclVOeWdxTzRwaG5WM3dFOTFKR0o3ZExVck5ZaWxwd2tISwpJSlVLRmRwQ3pCeXpFT0dZdVhZbWRjUkNONWVRcFF3c1d3cm50MlE1RTgxbTBCemJQMkY1U3FiVmphVCs0OUIvCkhZUzFkS3ZyWXlWQW9DUzJWQmtCM1VuNXVPMXNMOFp0ZTljVldBbTNRM00xYit4UThhczcxMlVFaklJMXdlV0oKNU56Z1VxUnRFUVZFNkpjNVFub01LMXUrbXZQSm95T2I4OXAvSDhtbmpzQmUybGZ0RzFLNzQxM0szWEhqRlB4cwpnY1hpcnU3VUhNTDIzNG95a0RuVTdBQURkOGpoeEFqNDczY1Era0UwWHNwMVBFbVRSVUlsYVNJcXNUOG1GenB1CkhqeE5BZ01CQUFHak1UQXZNQXdHQTFVZEV3RUIvd1FDTUFBd0h3WURWUjBqQkJnd0ZvQVVSRXRTUWFNeGhEbWoKb29CTUpScERUZkVXRXpzd0RRWUpLb1pJaHZjTkFRRUxCUUFEZ2dFQkFDMHZYZnFEK2NyRTlCSit6amhQYW1oaQphcWlNdzE4emo0ZzZaeFMxRkc2aDlIVi90aUJ3YUZMMm92K0M4MzhmY2FJSis1Tm5xVjRPWHVFeDFoY1lLSWlPCnpPQUhNMjYrSjViUlpYYnVnWHEwdytldXQwQ2IzUTRHS0dGR2JFTVcwR1Q4RjgzR0kyZFcwRWU0Ujc2Z29ObnkKeVFLOFJZbmR0M2NveTBLTE52blBTKzJXWlpTM1lEQUR3UTlVTXdwRDV6TkJxVWpHWFd3N2RkOHE0MlN5d1lpdwp6ZkRlNmNrZjVQSE5aOXhFT091OFFKaGhEM3VPL0xRU1pwVlFIak53YmFUMEZwU3IvOFFXU3Jnbjd1blBPV2JpCmVlMkxmeU1UUXd4N0Y5S25lRWhyNzBwclhuK2lnenkzWXpBaFB4WTRYS0RlZ1MwTldHNWJMS0pUODFJMEV3Yz0KLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQo=", + "client_certificate_config": [ + { + "issue_client_certificate": true + } + ], + "client_key": "LS0tLS1CRUdJTiBSU0EgUFJJVkFURSBLRVktLS0tLQpNSUlFcEFJQkFBS0NBUUVBMktnT1B4UEZ3bGdQMFdmWnV6QlNGV1VFMC8wZU4yMTYxdmVhdEp2ZElnNk1BdURLCjFEY29LanVLWVoxZDhCUGRTUmllM1MxS3pXSXBhY0pCeWlDVkNoWGFRc3djc3hEaG1MbDJKblhFUWplWGtLVU0KTEZzSzU3ZGtPUlBOWnRBYzJ6OWhlVXFtMVkyay91UFFmeDJFdFhTcjYyTWxRS0FrdGxRWkFkMUorYmp0YkMvRwpiWHZYRlZnSnQwTnpOVy9zVVBHck85ZGxCSXlDTmNIbGllVGM0RktrYlJFRlJPaVhPVUo2REN0YnZwcnp5YU1qCm0vUGFmeC9KcDQ3QVh0cFg3UnRTdStOZHl0MXg0eFQ4YklIRjRxN3UxQnpDOXQrS01wQTUxT3dBQTNmSTRjUUkKK085M0VQcEJORjdLZFR4SmswVkNKV2tpS3JFL0poYzZiaDQ4VFFJREFRQUJBb0lCQUFlS29BWlRrSjV4ZE1tQQpBU3o2STExUnlSOTg3OVNUbDhOTVZxTURTdWtBMHlCVmhWSHFRcGhudnFzanNHMm5MMXg0UWkxbVFuU1FQbXRMClF3Ri9iVml1eG94dE1QR052S0NWa2hhSUltY0FxdUt5MEEvcU1tQzYrajdmWU5hN2wwbU5kUDNsR3BZVDZtS2gKK1BPM3loTUw1dUVZY0NkRis4a3A5NzNnSDA5VkwyUFpvczhQN0NiSU95RiswdFBRek8rZGFHcnVZYnBiZ1lXaQpMNnJ1S1ZZMkZUN21nV1hZc1NtVDZ6K1NmVjFYbmdsV2tLaTRCKzZaMzcwU2xGbURaRm1hRk9MQUQ5QjEvQXhtCm5MYllMSzd5NjBnMExzN3ZPWmh5SFhsdW1uT2J3N1dlZnl3Qi9mQnduUlMvWkNUOTZPOVEzMFd6MlJYQWdneTMKZGFWZWpNa0NnWUVBL1lDQVhMc0c4Q3FkR3grQXBmbWhuMzVONmhJSUpHcW9VM1g1bU9mVUFnaE01L2lqdEJueQowQk9KUDRxTW1WR2NZVnRJLzlEcVE5SllRbVhCa3J4c1BXb1pJeGRzT1dCSS9WVUxaZE5FRUlhajNkOUlnNnh1Cm1JTjVnS1QxQksrcWlzWUdHQStyVWxwZURzcjJySFNCSFk0TmpxMFNRMTZzM3BYaWRSVTQvQ2tDZ1lFQTJzcWIKRGlqOWdVQmQyeUFjdytkZjUzK1dRYXdlV1ZpLytqY0ZIY3ZxS2xaY3RmbmJBWUpCcWtiWTNhVmRBWkZpTGh5egpoZEFRNU5sTHkvRHduc1RoMzN3eTZ5MzN4Q2hrcGh6S1Q5STdtZWg1V2cycFdaNytuZys5OEYyb1JlYTZmcEF6CnkyM3liUDE0ZXhiWU5VMHNvajc1MjcrVnc5TTNmTHV3cGZId3c0VUNnWUIzMHovWmxVWW9TOXhMTDg3ZHBXdXkKT2orVi9zUCtnclBpRDRmVnNPOVRycHk3b1ptdnpmd3FRckhEYVRnZ1dLVTBsN09meUI2VHhGK1hzd1dXMkozSgpRZGR6OE9SbEVwQXR2djlPT0ZpWi95cUIrOE1KQ242VWRNRC8vL2taSi9mUzlOdDRrQitKSTlJRjZBWkZhaVNGCjFkbXVzVHhLdi91eWt1S2lPVS9nVVFLQmdRQzl2bC9pVStJbUtiQTd6UW1sVEE5OE1NWWFoaTU3eGVBWUc0Y3cKWkJ2Y1E3RjdrQWhDc3JoSDk5RXp4NmwxSnFSQzRWay9mMFpuY1p1dWJuSCsvemYwSFQzN2Y0NFViQU45bkJKSQpUMGFwSDFlK3BZSnMydHB1TWJERHVEV3JDWUpMS0x3Q2ZJTjF5Z3lta3hWR2hIdGs2Y0MrdHRRblZCSVc5cDhvCkN6NkdFUUtCZ1FEY3NVNHQrKzAvM3JQRm1peSt3czRPdVU4VEZRc3N2UnpIL0pFbGlhV2h0ZDFKNGxPRXhIZ3IKQ3h4eTg2YUFwRTVqeG1ndUpDYUNwNk9EMFl4ME5JTC9haVAvamRxRDZHdUxRMmVUUFN4T3BpTlRMS2UyRm8xUAphcVdES1BGZmFTaG9yYk1rSmt6ZUdzdUJWS1A1U0dsaHBzM0ZVcllVK2JiTUFxd2ZLc3JtVFE9PQotLS0tLUVORCBSU0EgUFJJVkFURSBLRVktLS0tLQo=", + "cluster_ca_certificate": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSURLakNDQWhLZ0F3SUJBZ0lRTUFaY0xPUnNhSmpCYzdENjRhRXlhVEFOQmdrcWhraUc5dzBCQVFzRkFEQXYKTVMwd0t3WURWUVFERXlSbFltTTRNRFEwWkMxak1HVXpMVFJqTmpjdE9UQTBOeTFoWlRsaU56SXdaVEJsWldVdwpIaGNOTWpFd05UQXpNRGcwTnpRMVdoY05Nall3TlRBeU1EazBOelExV2pBdk1TMHdLd1lEVlFRREV5UmxZbU00Ck1EUTBaQzFqTUdVekxUUmpOamN0T1RBME55MWhaVGxpTnpJd1pUQmxaV1V3Z2dFaU1BMEdDU3FHU0liM0RRRUIKQVFVQUE0SUJEd0F3Z2dFS0FvSUJBUUM3RTE3VE85ZmRPYitTQXZzZ21HcHNYd2htb3R2dm9IMEYvWGlVMFZPYgo1Slo3MGJtMk40WnBiaTJVMTNEWXJ4clg3WHh3VzRIcStIaC9qN1J1c3c0NVJ2SUVremk1ZXpHd09TaTJ0cms4CjYwM2F5bVhRT2d6NFJjQmtMeHVOWW9wd0xKY29qWk9zMktjUnFIeUhwMEZvSkJlMWdVVVdzSWJGdFZLQVM4RFEKM0VvMzJhbnpqcU5jdUhVVnExaEZtRDY1ZG9XNGJIeDNERHIxN2VYVi9leUJjY1BxQmNqUkJET0grV1dwR25zMApMRmdCZkZaWm82TkFsdlZMUk85MDlsMUVvL1l4WmpRMmE1cjlWMklyQktvK0gwSTd6N1hpYWY3b3R1UHVJaWE3Ck01S3JlZFZwNUVlZkFhbmtNS1h2T05RazJFYnlzeFlhbEhlQitkZ0Y2SXBuQWdNQkFBR2pRakJBTUE0R0ExVWQKRHdFQi93UUVBd0lDQkRBUEJnTlZIUk1CQWY4RUJUQURBUUgvTUIwR0ExVWREZ1FXQkJSRVMxSkJvekdFT2FPaQpnRXdsR2tOTjhSWVRPekFOQmdrcWhraUc5dzBCQVFzRkFBT0NBUUVBQ2I2NUdYR2lhSXpZQnlObkhQUHRJWVJPCnJmWUk0WHphaVNFNnkvNUYvUTRYajJHM0R4UzhFSWFJQzlaU202UFYyWkYwK1FDUUI0UDdWV3VNTFFVdElrL1UKSTNJWFdmQ05pU2ozc2tqZ3k2cDZwdUhkd3hIL0MrWkRuUDlERW16OXVSTjdsUmc0VXRzeHVBb3E3UkFCRktwZQpmRjRoTXVud2JINFZsN1NEN2YrWkVWd3hjZ3FuNHdLRERVYXMvc0hqQXAxVVFBUUc5K3RtcjFUdHBoTEwyREY0CkYvSVArWTFLV2kwVmU1aFFzMHZiak9wYWJCZDl0SVg0VFBHUGI3TS84ZmN5ajJsM0Fya1VWdUVKQ3ZCUExlTkcKaFBmWG1wS25QeDF3NGYyTnovYi9ic21RZmpOZ0Q1NVhubmY0UzNOTG1QTHg5NUhCYmNnSzJKZ3VmUUhnNnc9PQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCg==", + "password": "", + "username": "" + } + ], + "master_authorized_networks_config": [], + "master_version": "1.16.15-gke.14800", + "min_master_version": null, + "monitoring_service": "monitoring.googleapis.com/kubernetes", + "name": "gitpod", + "network": "projects/gpl-sh-090-3/global/networks/gitpod", + "network_policy": [ + { + "enabled": true, + "provider": "CALICO" + } + ], + "networking_mode": "VPC_NATIVE", + "node_config": [ + { + "disk_size_gb": 100, + "disk_type": "pd-ssd", + "guest_accelerator": [], + "image_type": "UBUNTU_CONTAINERD", + "labels": { + "gitpod.io/workload_meta": "true", + "gitpod.io/workload_workspace": "true" + }, + "local_ssd_count": 1, + "machine_type": "n2-standard-8", + "metadata": { + "disable-legacy-endpoints": "true" + }, + "min_cpu_platform": "", + "oauth_scopes": [ + "https://www.googleapis.com/auth/devstorage.read_write", + "https://www.googleapis.com/auth/logging.write", + "https://www.googleapis.com/auth/monitoring" + ], + "preemptible": false, + "service_account": "gitpod-nodes@gpl-sh-090-3.iam.gserviceaccount.com", + "shielded_instance_config": [ + { + "enable_integrity_monitoring": true, + "enable_secure_boot": false + } + ], + "tags": [], + "taint": [], + "workload_metadata_config": [ + { + "node_metadata": "SECURE" + } + ] + } + ], + "node_locations": [ + "europe-west3-a", + "europe-west3-b", + "europe-west3-c" + ], + "node_pool": [ + { + "autoscaling": [], + "initial_node_count": 1, + "instance_group_urls": [ + "https://www.googleapis.com/compute/v1/projects/gpl-sh-090-3/zones/europe-west3-a/instanceGroupManagers/gke-gitpod-nodepool-0-55cc245a-grp", + "https://www.googleapis.com/compute/v1/projects/gpl-sh-090-3/zones/europe-west3-b/instanceGroupManagers/gke-gitpod-nodepool-0-ab90e42d-grp", + "https://www.googleapis.com/compute/v1/projects/gpl-sh-090-3/zones/europe-west3-c/instanceGroupManagers/gke-gitpod-nodepool-0-bd520db7-grp" + ], + "management": [ + { + "auto_repair": true, + "auto_upgrade": true + } + ], + "max_pods_per_node": 110, + "name": "nodepool-0", + "name_prefix": "", + "node_config": [ + { + "disk_size_gb": 100, + "disk_type": "pd-ssd", + "guest_accelerator": [], + "image_type": "UBUNTU_CONTAINERD", + "labels": { + "gitpod.io/workload_meta": "true", + "gitpod.io/workload_workspace": "true" + }, + "local_ssd_count": 1, + "machine_type": "n2-standard-8", + "metadata": { + "disable-legacy-endpoints": "true" + }, + "min_cpu_platform": "", + "oauth_scopes": [ + "https://www.googleapis.com/auth/devstorage.read_write", + "https://www.googleapis.com/auth/logging.write", + "https://www.googleapis.com/auth/monitoring" + ], + "preemptible": false, + "service_account": "gitpod-nodes@gpl-sh-090-3.iam.gserviceaccount.com", + "shielded_instance_config": [ + { + "enable_integrity_monitoring": true, + "enable_secure_boot": false + } + ], + "tags": [], + "taint": [], + "workload_metadata_config": [ + { + "node_metadata": "SECURE" + } + ] + } + ], + "node_count": 1, + "node_locations": [ + "europe-west3-a", + "europe-west3-b", + "europe-west3-c" + ], + "upgrade_settings": [ + { + "max_surge": 1, + "max_unavailable": 0 + } + ], + "version": "1.16.15-gke.14800" + } + ], + "node_version": "1.16.15-gke.14800", + "operation": null, + "pod_security_policy_config": null, + "private_cluster_config": [], + "private_ipv6_google_access": "", + "project": "gpl-sh-090-3", + "release_channel": [ + { + "channel": "UNSPECIFIED" + } + ], + "remove_default_node_pool": null, + "resource_labels": {}, + "resource_usage_export_config": [], + "self_link": "https://container.googleapis.com/v1beta1/projects/gpl-sh-090-3/locations/europe-west3/clusters/gitpod", + "services_ipv4_cidr": "10.76.0.0/20", + "subnetwork": "projects/gpl-sh-090-3/regions/europe-west3/subnetworks/gitpod-subnet", + "tpu_ipv4_cidr_block": "", + "vertical_pod_autoscaling": [], + "workload_identity_config": [] + }, + "sensitive_attributes": [] + } + ] + }, + { + "module": "module.kubeconfig", + "mode": "data", + "type": "template_file", + "name": "kubeconfig", + "provider": "provider[\"registry.terraform.io/hashicorp/template\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "filename": null, + "id": "1e83cfda47d43fdc52f72e268473655338317b9c2f590ed1aa6688f71fa380f1", + "rendered": "# Copyright (c) 2020 Gitpod GmbH. All rights reserved.\n# Licensed under the MIT License. See License-MIT.txt in the project root for license information.\n\n\napiVersion: v1\nclusters:\n- cluster:\n certificate-authority-data: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSURLakNDQWhLZ0F3SUJBZ0lRTUFaY0xPUnNhSmpCYzdENjRhRXlhVEFOQmdrcWhraUc5dzBCQVFzRkFEQXYKTVMwd0t3WURWUVFERXlSbFltTTRNRFEwWkMxak1HVXpMVFJqTmpjdE9UQTBOeTFoWlRsaU56SXdaVEJsWldVdwpIaGNOTWpFd05UQXpNRGcwTnpRMVdoY05Nall3TlRBeU1EazBOelExV2pBdk1TMHdLd1lEVlFRREV5UmxZbU00Ck1EUTBaQzFqTUdVekxUUmpOamN0T1RBME55MWhaVGxpTnpJd1pUQmxaV1V3Z2dFaU1BMEdDU3FHU0liM0RRRUIKQVFVQUE0SUJEd0F3Z2dFS0FvSUJBUUM3RTE3VE85ZmRPYitTQXZzZ21HcHNYd2htb3R2dm9IMEYvWGlVMFZPYgo1Slo3MGJtMk40WnBiaTJVMTNEWXJ4clg3WHh3VzRIcStIaC9qN1J1c3c0NVJ2SUVremk1ZXpHd09TaTJ0cms4CjYwM2F5bVhRT2d6NFJjQmtMeHVOWW9wd0xKY29qWk9zMktjUnFIeUhwMEZvSkJlMWdVVVdzSWJGdFZLQVM4RFEKM0VvMzJhbnpqcU5jdUhVVnExaEZtRDY1ZG9XNGJIeDNERHIxN2VYVi9leUJjY1BxQmNqUkJET0grV1dwR25zMApMRmdCZkZaWm82TkFsdlZMUk85MDlsMUVvL1l4WmpRMmE1cjlWMklyQktvK0gwSTd6N1hpYWY3b3R1UHVJaWE3Ck01S3JlZFZwNUVlZkFhbmtNS1h2T05RazJFYnlzeFlhbEhlQitkZ0Y2SXBuQWdNQkFBR2pRakJBTUE0R0ExVWQKRHdFQi93UUVBd0lDQkRBUEJnTlZIUk1CQWY4RUJUQURBUUgvTUIwR0ExVWREZ1FXQkJSRVMxSkJvekdFT2FPaQpnRXdsR2tOTjhSWVRPekFOQmdrcWhraUc5dzBCQVFzRkFBT0NBUUVBQ2I2NUdYR2lhSXpZQnlObkhQUHRJWVJPCnJmWUk0WHphaVNFNnkvNUYvUTRYajJHM0R4UzhFSWFJQzlaU202UFYyWkYwK1FDUUI0UDdWV3VNTFFVdElrL1UKSTNJWFdmQ05pU2ozc2tqZ3k2cDZwdUhkd3hIL0MrWkRuUDlERW16OXVSTjdsUmc0VXRzeHVBb3E3UkFCRktwZQpmRjRoTXVud2JINFZsN1NEN2YrWkVWd3hjZ3FuNHdLRERVYXMvc0hqQXAxVVFBUUc5K3RtcjFUdHBoTEwyREY0CkYvSVArWTFLV2kwVmU1aFFzMHZiak9wYWJCZDl0SVg0VFBHUGI3TS84ZmN5ajJsM0Fya1VWdUVKQ3ZCUExlTkcKaFBmWG1wS25QeDF3NGYyTnovYi9ic21RZmpOZ0Q1NVhubmY0UzNOTG1QTHg5NUhCYmNnSzJKZ3VmUUhnNnc9PQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCg==\n server: https://35.246.188.98\n name: gitpod-cluster\ncontexts:\n- context:\n cluster: gitpod-cluster\n namespace: default\n user: gitpod-user\n name: gitpod\ncurrent-context: gitpod\nkind: Config\npreferences: {}\nusers:\n- name: gitpod-user\n user:\n auth-provider:\n name: gcp\n access-token: ya29.a0AfH6SMC0vH5tdj5fcW-roUTlLh5FjGrhBPlcBy8nSqPo8N2He1coEWkq9PxuhpsZX3lL8Y5cir7n23x-o_XXi0COA6e2lc7OGI9WvJz05s_dbsxWfsZh41HYMkTJFW_Go51fOh4Ww58QtKq2a2K8iD-_A5tcrRo\n", + "template": "# Copyright (c) 2020 Gitpod GmbH. All rights reserved.\n# Licensed under the MIT License. See License-MIT.txt in the project root for license information.\n\n\napiVersion: v1\nclusters:\n- cluster:\n certificate-authority-data: ${cluster_ca_certificate}\n server: https://${host}\n name: ${name}-cluster\ncontexts:\n- context:\n cluster: ${name}-cluster\n namespace: ${namespace}\n user: ${name}-user\n name: ${name}\ncurrent-context: ${name}\nkind: Config\npreferences: {}\nusers:\n- name: ${name}-user\n user:\n auth-provider:\n name: gcp\n access-token: ${token}\n", + "vars": { + "cluster_ca_certificate": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSURLakNDQWhLZ0F3SUJBZ0lRTUFaY0xPUnNhSmpCYzdENjRhRXlhVEFOQmdrcWhraUc5dzBCQVFzRkFEQXYKTVMwd0t3WURWUVFERXlSbFltTTRNRFEwWkMxak1HVXpMVFJqTmpjdE9UQTBOeTFoWlRsaU56SXdaVEJsWldVdwpIaGNOTWpFd05UQXpNRGcwTnpRMVdoY05Nall3TlRBeU1EazBOelExV2pBdk1TMHdLd1lEVlFRREV5UmxZbU00Ck1EUTBaQzFqTUdVekxUUmpOamN0T1RBME55MWhaVGxpTnpJd1pUQmxaV1V3Z2dFaU1BMEdDU3FHU0liM0RRRUIKQVFVQUE0SUJEd0F3Z2dFS0FvSUJBUUM3RTE3VE85ZmRPYitTQXZzZ21HcHNYd2htb3R2dm9IMEYvWGlVMFZPYgo1Slo3MGJtMk40WnBiaTJVMTNEWXJ4clg3WHh3VzRIcStIaC9qN1J1c3c0NVJ2SUVremk1ZXpHd09TaTJ0cms4CjYwM2F5bVhRT2d6NFJjQmtMeHVOWW9wd0xKY29qWk9zMktjUnFIeUhwMEZvSkJlMWdVVVdzSWJGdFZLQVM4RFEKM0VvMzJhbnpqcU5jdUhVVnExaEZtRDY1ZG9XNGJIeDNERHIxN2VYVi9leUJjY1BxQmNqUkJET0grV1dwR25zMApMRmdCZkZaWm82TkFsdlZMUk85MDlsMUVvL1l4WmpRMmE1cjlWMklyQktvK0gwSTd6N1hpYWY3b3R1UHVJaWE3Ck01S3JlZFZwNUVlZkFhbmtNS1h2T05RazJFYnlzeFlhbEhlQitkZ0Y2SXBuQWdNQkFBR2pRakJBTUE0R0ExVWQKRHdFQi93UUVBd0lDQkRBUEJnTlZIUk1CQWY4RUJUQURBUUgvTUIwR0ExVWREZ1FXQkJSRVMxSkJvekdFT2FPaQpnRXdsR2tOTjhSWVRPekFOQmdrcWhraUc5dzBCQVFzRkFBT0NBUUVBQ2I2NUdYR2lhSXpZQnlObkhQUHRJWVJPCnJmWUk0WHphaVNFNnkvNUYvUTRYajJHM0R4UzhFSWFJQzlaU202UFYyWkYwK1FDUUI0UDdWV3VNTFFVdElrL1UKSTNJWFdmQ05pU2ozc2tqZ3k2cDZwdUhkd3hIL0MrWkRuUDlERW16OXVSTjdsUmc0VXRzeHVBb3E3UkFCRktwZQpmRjRoTXVud2JINFZsN1NEN2YrWkVWd3hjZ3FuNHdLRERVYXMvc0hqQXAxVVFBUUc5K3RtcjFUdHBoTEwyREY0CkYvSVArWTFLV2kwVmU1aFFzMHZiak9wYWJCZDl0SVg0VFBHUGI3TS84ZmN5ajJsM0Fya1VWdUVKQ3ZCUExlTkcKaFBmWG1wS25QeDF3NGYyTnovYi9ic21RZmpOZ0Q1NVhubmY0UzNOTG1QTHg5NUhCYmNnSzJKZ3VmUUhnNnc9PQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCg==", + "host": "35.246.188.98", + "name": "gitpod", + "namespace": "default", + "token": "ya29.a0AfH6SMC0vH5tdj5fcW-roUTlLh5FjGrhBPlcBy8nSqPo8N2He1coEWkq9PxuhpsZX3lL8Y5cir7n23x-o_XXi0COA6e2lc7OGI9WvJz05s_dbsxWfsZh41HYMkTJFW_Go51fOh4Ww58QtKq2a2K8iD-_A5tcrRo" + } + }, + "sensitive_attributes": [] + } + ] + }, + { + "module": "module.kubeconfig", + "mode": "managed", + "type": "local_file", + "name": "kubeconfig", + "provider": "provider[\"registry.terraform.io/hashicorp/local\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "content": "# Copyright (c) 2020 Gitpod GmbH. All rights reserved.\n# Licensed under the MIT License. See License-MIT.txt in the project root for license information.\n\n\napiVersion: v1\nclusters:\n- cluster:\n certificate-authority-data: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSURLakNDQWhLZ0F3SUJBZ0lRTUFaY0xPUnNhSmpCYzdENjRhRXlhVEFOQmdrcWhraUc5dzBCQVFzRkFEQXYKTVMwd0t3WURWUVFERXlSbFltTTRNRFEwWkMxak1HVXpMVFJqTmpjdE9UQTBOeTFoWlRsaU56SXdaVEJsWldVdwpIaGNOTWpFd05UQXpNRGcwTnpRMVdoY05Nall3TlRBeU1EazBOelExV2pBdk1TMHdLd1lEVlFRREV5UmxZbU00Ck1EUTBaQzFqTUdVekxUUmpOamN0T1RBME55MWhaVGxpTnpJd1pUQmxaV1V3Z2dFaU1BMEdDU3FHU0liM0RRRUIKQVFVQUE0SUJEd0F3Z2dFS0FvSUJBUUM3RTE3VE85ZmRPYitTQXZzZ21HcHNYd2htb3R2dm9IMEYvWGlVMFZPYgo1Slo3MGJtMk40WnBiaTJVMTNEWXJ4clg3WHh3VzRIcStIaC9qN1J1c3c0NVJ2SUVremk1ZXpHd09TaTJ0cms4CjYwM2F5bVhRT2d6NFJjQmtMeHVOWW9wd0xKY29qWk9zMktjUnFIeUhwMEZvSkJlMWdVVVdzSWJGdFZLQVM4RFEKM0VvMzJhbnpqcU5jdUhVVnExaEZtRDY1ZG9XNGJIeDNERHIxN2VYVi9leUJjY1BxQmNqUkJET0grV1dwR25zMApMRmdCZkZaWm82TkFsdlZMUk85MDlsMUVvL1l4WmpRMmE1cjlWMklyQktvK0gwSTd6N1hpYWY3b3R1UHVJaWE3Ck01S3JlZFZwNUVlZkFhbmtNS1h2T05RazJFYnlzeFlhbEhlQitkZ0Y2SXBuQWdNQkFBR2pRakJBTUE0R0ExVWQKRHdFQi93UUVBd0lDQkRBUEJnTlZIUk1CQWY4RUJUQURBUUgvTUIwR0ExVWREZ1FXQkJSRVMxSkJvekdFT2FPaQpnRXdsR2tOTjhSWVRPekFOQmdrcWhraUc5dzBCQVFzRkFBT0NBUUVBQ2I2NUdYR2lhSXpZQnlObkhQUHRJWVJPCnJmWUk0WHphaVNFNnkvNUYvUTRYajJHM0R4UzhFSWFJQzlaU202UFYyWkYwK1FDUUI0UDdWV3VNTFFVdElrL1UKSTNJWFdmQ05pU2ozc2tqZ3k2cDZwdUhkd3hIL0MrWkRuUDlERW16OXVSTjdsUmc0VXRzeHVBb3E3UkFCRktwZQpmRjRoTXVud2JINFZsN1NEN2YrWkVWd3hjZ3FuNHdLRERVYXMvc0hqQXAxVVFBUUc5K3RtcjFUdHBoTEwyREY0CkYvSVArWTFLV2kwVmU1aFFzMHZiak9wYWJCZDl0SVg0VFBHUGI3TS84ZmN5ajJsM0Fya1VWdUVKQ3ZCUExlTkcKaFBmWG1wS25QeDF3NGYyTnovYi9ic21RZmpOZ0Q1NVhubmY0UzNOTG1QTHg5NUhCYmNnSzJKZ3VmUUhnNnc9PQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCg==\n server: https://35.246.188.98\n name: gitpod-cluster\ncontexts:\n- context:\n cluster: gitpod-cluster\n namespace: default\n user: gitpod-user\n name: gitpod\ncurrent-context: gitpod\nkind: Config\npreferences: {}\nusers:\n- name: gitpod-user\n user:\n auth-provider:\n name: gcp\n access-token: ya29.a0AfH6SMC0vH5tdj5fcW-roUTlLh5FjGrhBPlcBy8nSqPo8N2He1coEWkq9PxuhpsZX3lL8Y5cir7n23x-o_XXi0COA6e2lc7OGI9WvJz05s_dbsxWfsZh41HYMkTJFW_Go51fOh4Ww58QtKq2a2K8iD-_A5tcrRo\n", + "content_base64": null, + "directory_permission": "0777", + "file_permission": "400", + "filename": "./secrets/kubeconfig", + "id": "f7a21d5360ae5816c5dec839381eb7ce2f102f6f", + "sensitive_content": null, + "source": null + }, + "sensitive_attributes": [], + "private": "bnVsbA==", + "dependencies": [ + "google_compute_network.gitpod", + "module.kubeconfig.data.template_file.kubeconfig", + "module.kubernetes.google_compute_subnetwork.gitpod", + "module.kubernetes.google_container_cluster.gitpod", + "module.kubernetes.google_container_node_pool.gitpod", + "module.kubernetes.google_project_iam_member.gitpod", + "module.kubernetes.google_project_service.kubernetes", + "module.kubernetes.google_service_account.gitpod" + ] + } + ] + }, + { + "module": "module.kubernetes", + "mode": "managed", + "type": "google_compute_subnetwork", + "name": "gitpod", + "provider": "provider[\"registry.terraform.io/hashicorp/google\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "creation_timestamp": "2021-05-03T02:47:23.520-07:00", + "description": "", + "fingerprint": null, + "gateway_address": "10.23.0.1", + "id": "projects/gpl-sh-090-3/regions/europe-west3/subnetworks/gitpod-subnet", + "ip_cidr_range": "10.23.0.0/16", + "log_config": [], + "name": "gitpod-subnet", + "network": "https://www.googleapis.com/compute/v1/projects/gpl-sh-090-3/global/networks/gitpod", + "private_ip_google_access": true, + "private_ipv6_google_access": "DISABLE_GOOGLE_ACCESS", + "project": "gpl-sh-090-3", + "region": "europe-west3", + "secondary_ip_range": [ + { + "ip_cidr_range": "10.72.0.0/14", + "range_name": "gke-gitpod-pods-124423b3" + }, + { + "ip_cidr_range": "10.76.0.0/20", + "range_name": "gke-gitpod-services-124423b3" + } + ], + "self_link": "https://www.googleapis.com/compute/v1/projects/gpl-sh-090-3/regions/europe-west3/subnetworks/gitpod-subnet", + "timeouts": null + }, + "sensitive_attributes": [], + "private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjozNjAwMDAwMDAwMDAsImRlbGV0ZSI6MzYwMDAwMDAwMDAwLCJ1cGRhdGUiOjM2MDAwMDAwMDAwMH19", + "dependencies": [ + "google_compute_network.gitpod" + ] + } + ] + }, + { + "module": "module.kubernetes", + "mode": "managed", + "type": "google_container_cluster", + "name": "gitpod", + "provider": "provider[\"registry.terraform.io/hashicorp/google\"]", + "instances": [ + { + "schema_version": 1, + "attributes": { + "addons_config": [ + { + "cloudrun_config": [], + "horizontal_pod_autoscaling": [], + "http_load_balancing": [], + "network_policy_config": [ + { + "disabled": false + } + ] + } + ], + "authenticator_groups_config": [], + "cluster_autoscaling": [ + { + "auto_provisioning_defaults": [], + "enabled": false, + "resource_limits": [] + } + ], + "cluster_ipv4_cidr": "10.72.0.0/14", + "database_encryption": [ + { + "key_name": "", + "state": "DECRYPTED" + } + ], + "datapath_provider": "", + "default_max_pods_per_node": 110, + "default_snat_status": [ + { + "disabled": false + } + ], + "description": "", + "enable_autopilot": false, + "enable_binary_authorization": false, + "enable_intranode_visibility": false, + "enable_kubernetes_alpha": false, + "enable_legacy_abac": false, + "enable_shielded_nodes": false, + "enable_tpu": false, + "endpoint": "35.246.188.98", + "id": "projects/gpl-sh-090-3/locations/europe-west3/clusters/gitpod", + "initial_node_count": 1, + "instance_group_urls": [ + "https://www.googleapis.com/compute/v1/projects/gpl-sh-090-3/zones/europe-west3-a/instanceGroups/gke-gitpod-nodepool-0-55cc245a-grp", + "https://www.googleapis.com/compute/v1/projects/gpl-sh-090-3/zones/europe-west3-b/instanceGroups/gke-gitpod-nodepool-0-ab90e42d-grp", + "https://www.googleapis.com/compute/v1/projects/gpl-sh-090-3/zones/europe-west3-c/instanceGroups/gke-gitpod-nodepool-0-bd520db7-grp" + ], + "ip_allocation_policy": [ + { + "cluster_ipv4_cidr_block": "10.72.0.0/14", + "cluster_secondary_range_name": "gke-gitpod-pods-124423b3", + "services_ipv4_cidr_block": "10.76.0.0/20", + "services_secondary_range_name": "gke-gitpod-services-124423b3" + } + ], + "label_fingerprint": "a9dc16a7", + "location": "europe-west3", + "logging_service": "logging.googleapis.com/kubernetes", + "maintenance_policy": [], + "master_auth": [ + { + "client_certificate": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUMrekNDQWVPZ0F3SUJBZ0lRUHlqL1RIZE1XdmRtNnRsd3ZvK1EyakFOQmdrcWhraUc5dzBCQVFzRkFEQXYKTVMwd0t3WURWUVFERXlSbFltTTRNRFEwWkMxak1HVXpMVFJqTmpjdE9UQTBOeTFoWlRsaU56SXdaVEJsWldVdwpIaGNOTWpFd05UQXpNRGswTnpRMVdoY05Nall3TlRBeU1EazBOelExV2pBUk1ROHdEUVlEVlFRREV3WmpiR2xsCmJuUXdnZ0VpTUEwR0NTcUdTSWIzRFFFQkFRVUFBNElCRHdBd2dnRUtBb0lCQVFEWXFBNC9FOFhDV0EvUlo5bTcKTUZJVlpRVFQvUjQzYlhyVzk1cTBtOTBpRG93QzRNclVOeWdxTzRwaG5WM3dFOTFKR0o3ZExVck5ZaWxwd2tISwpJSlVLRmRwQ3pCeXpFT0dZdVhZbWRjUkNONWVRcFF3c1d3cm50MlE1RTgxbTBCemJQMkY1U3FiVmphVCs0OUIvCkhZUzFkS3ZyWXlWQW9DUzJWQmtCM1VuNXVPMXNMOFp0ZTljVldBbTNRM00xYit4UThhczcxMlVFaklJMXdlV0oKNU56Z1VxUnRFUVZFNkpjNVFub01LMXUrbXZQSm95T2I4OXAvSDhtbmpzQmUybGZ0RzFLNzQxM0szWEhqRlB4cwpnY1hpcnU3VUhNTDIzNG95a0RuVTdBQURkOGpoeEFqNDczY1Era0UwWHNwMVBFbVRSVUlsYVNJcXNUOG1GenB1CkhqeE5BZ01CQUFHak1UQXZNQXdHQTFVZEV3RUIvd1FDTUFBd0h3WURWUjBqQkJnd0ZvQVVSRXRTUWFNeGhEbWoKb29CTUpScERUZkVXRXpzd0RRWUpLb1pJaHZjTkFRRUxCUUFEZ2dFQkFDMHZYZnFEK2NyRTlCSit6amhQYW1oaQphcWlNdzE4emo0ZzZaeFMxRkc2aDlIVi90aUJ3YUZMMm92K0M4MzhmY2FJSis1Tm5xVjRPWHVFeDFoY1lLSWlPCnpPQUhNMjYrSjViUlpYYnVnWHEwdytldXQwQ2IzUTRHS0dGR2JFTVcwR1Q4RjgzR0kyZFcwRWU0Ujc2Z29ObnkKeVFLOFJZbmR0M2NveTBLTE52blBTKzJXWlpTM1lEQUR3UTlVTXdwRDV6TkJxVWpHWFd3N2RkOHE0MlN5d1lpdwp6ZkRlNmNrZjVQSE5aOXhFT091OFFKaGhEM3VPL0xRU1pwVlFIak53YmFUMEZwU3IvOFFXU3Jnbjd1blBPV2JpCmVlMkxmeU1UUXd4N0Y5S25lRWhyNzBwclhuK2lnenkzWXpBaFB4WTRYS0RlZ1MwTldHNWJMS0pUODFJMEV3Yz0KLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQo=", + "client_certificate_config": [ + { + "issue_client_certificate": true + } + ], + "client_key": "LS0tLS1CRUdJTiBSU0EgUFJJVkFURSBLRVktLS0tLQpNSUlFcEFJQkFBS0NBUUVBMktnT1B4UEZ3bGdQMFdmWnV6QlNGV1VFMC8wZU4yMTYxdmVhdEp2ZElnNk1BdURLCjFEY29LanVLWVoxZDhCUGRTUmllM1MxS3pXSXBhY0pCeWlDVkNoWGFRc3djc3hEaG1MbDJKblhFUWplWGtLVU0KTEZzSzU3ZGtPUlBOWnRBYzJ6OWhlVXFtMVkyay91UFFmeDJFdFhTcjYyTWxRS0FrdGxRWkFkMUorYmp0YkMvRwpiWHZYRlZnSnQwTnpOVy9zVVBHck85ZGxCSXlDTmNIbGllVGM0RktrYlJFRlJPaVhPVUo2REN0YnZwcnp5YU1qCm0vUGFmeC9KcDQ3QVh0cFg3UnRTdStOZHl0MXg0eFQ4YklIRjRxN3UxQnpDOXQrS01wQTUxT3dBQTNmSTRjUUkKK085M0VQcEJORjdLZFR4SmswVkNKV2tpS3JFL0poYzZiaDQ4VFFJREFRQUJBb0lCQUFlS29BWlRrSjV4ZE1tQQpBU3o2STExUnlSOTg3OVNUbDhOTVZxTURTdWtBMHlCVmhWSHFRcGhudnFzanNHMm5MMXg0UWkxbVFuU1FQbXRMClF3Ri9iVml1eG94dE1QR052S0NWa2hhSUltY0FxdUt5MEEvcU1tQzYrajdmWU5hN2wwbU5kUDNsR3BZVDZtS2gKK1BPM3loTUw1dUVZY0NkRis4a3A5NzNnSDA5VkwyUFpvczhQN0NiSU95RiswdFBRek8rZGFHcnVZYnBiZ1lXaQpMNnJ1S1ZZMkZUN21nV1hZc1NtVDZ6K1NmVjFYbmdsV2tLaTRCKzZaMzcwU2xGbURaRm1hRk9MQUQ5QjEvQXhtCm5MYllMSzd5NjBnMExzN3ZPWmh5SFhsdW1uT2J3N1dlZnl3Qi9mQnduUlMvWkNUOTZPOVEzMFd6MlJYQWdneTMKZGFWZWpNa0NnWUVBL1lDQVhMc0c4Q3FkR3grQXBmbWhuMzVONmhJSUpHcW9VM1g1bU9mVUFnaE01L2lqdEJueQowQk9KUDRxTW1WR2NZVnRJLzlEcVE5SllRbVhCa3J4c1BXb1pJeGRzT1dCSS9WVUxaZE5FRUlhajNkOUlnNnh1Cm1JTjVnS1QxQksrcWlzWUdHQStyVWxwZURzcjJySFNCSFk0TmpxMFNRMTZzM3BYaWRSVTQvQ2tDZ1lFQTJzcWIKRGlqOWdVQmQyeUFjdytkZjUzK1dRYXdlV1ZpLytqY0ZIY3ZxS2xaY3RmbmJBWUpCcWtiWTNhVmRBWkZpTGh5egpoZEFRNU5sTHkvRHduc1RoMzN3eTZ5MzN4Q2hrcGh6S1Q5STdtZWg1V2cycFdaNytuZys5OEYyb1JlYTZmcEF6CnkyM3liUDE0ZXhiWU5VMHNvajc1MjcrVnc5TTNmTHV3cGZId3c0VUNnWUIzMHovWmxVWW9TOXhMTDg3ZHBXdXkKT2orVi9zUCtnclBpRDRmVnNPOVRycHk3b1ptdnpmd3FRckhEYVRnZ1dLVTBsN09meUI2VHhGK1hzd1dXMkozSgpRZGR6OE9SbEVwQXR2djlPT0ZpWi95cUIrOE1KQ242VWRNRC8vL2taSi9mUzlOdDRrQitKSTlJRjZBWkZhaVNGCjFkbXVzVHhLdi91eWt1S2lPVS9nVVFLQmdRQzl2bC9pVStJbUtiQTd6UW1sVEE5OE1NWWFoaTU3eGVBWUc0Y3cKWkJ2Y1E3RjdrQWhDc3JoSDk5RXp4NmwxSnFSQzRWay9mMFpuY1p1dWJuSCsvemYwSFQzN2Y0NFViQU45bkJKSQpUMGFwSDFlK3BZSnMydHB1TWJERHVEV3JDWUpMS0x3Q2ZJTjF5Z3lta3hWR2hIdGs2Y0MrdHRRblZCSVc5cDhvCkN6NkdFUUtCZ1FEY3NVNHQrKzAvM3JQRm1peSt3czRPdVU4VEZRc3N2UnpIL0pFbGlhV2h0ZDFKNGxPRXhIZ3IKQ3h4eTg2YUFwRTVqeG1ndUpDYUNwNk9EMFl4ME5JTC9haVAvamRxRDZHdUxRMmVUUFN4T3BpTlRMS2UyRm8xUAphcVdES1BGZmFTaG9yYk1rSmt6ZUdzdUJWS1A1U0dsaHBzM0ZVcllVK2JiTUFxd2ZLc3JtVFE9PQotLS0tLUVORCBSU0EgUFJJVkFURSBLRVktLS0tLQo=", + "cluster_ca_certificate": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSURLakNDQWhLZ0F3SUJBZ0lRTUFaY0xPUnNhSmpCYzdENjRhRXlhVEFOQmdrcWhraUc5dzBCQVFzRkFEQXYKTVMwd0t3WURWUVFERXlSbFltTTRNRFEwWkMxak1HVXpMVFJqTmpjdE9UQTBOeTFoWlRsaU56SXdaVEJsWldVdwpIaGNOTWpFd05UQXpNRGcwTnpRMVdoY05Nall3TlRBeU1EazBOelExV2pBdk1TMHdLd1lEVlFRREV5UmxZbU00Ck1EUTBaQzFqTUdVekxUUmpOamN0T1RBME55MWhaVGxpTnpJd1pUQmxaV1V3Z2dFaU1BMEdDU3FHU0liM0RRRUIKQVFVQUE0SUJEd0F3Z2dFS0FvSUJBUUM3RTE3VE85ZmRPYitTQXZzZ21HcHNYd2htb3R2dm9IMEYvWGlVMFZPYgo1Slo3MGJtMk40WnBiaTJVMTNEWXJ4clg3WHh3VzRIcStIaC9qN1J1c3c0NVJ2SUVremk1ZXpHd09TaTJ0cms4CjYwM2F5bVhRT2d6NFJjQmtMeHVOWW9wd0xKY29qWk9zMktjUnFIeUhwMEZvSkJlMWdVVVdzSWJGdFZLQVM4RFEKM0VvMzJhbnpqcU5jdUhVVnExaEZtRDY1ZG9XNGJIeDNERHIxN2VYVi9leUJjY1BxQmNqUkJET0grV1dwR25zMApMRmdCZkZaWm82TkFsdlZMUk85MDlsMUVvL1l4WmpRMmE1cjlWMklyQktvK0gwSTd6N1hpYWY3b3R1UHVJaWE3Ck01S3JlZFZwNUVlZkFhbmtNS1h2T05RazJFYnlzeFlhbEhlQitkZ0Y2SXBuQWdNQkFBR2pRakJBTUE0R0ExVWQKRHdFQi93UUVBd0lDQkRBUEJnTlZIUk1CQWY4RUJUQURBUUgvTUIwR0ExVWREZ1FXQkJSRVMxSkJvekdFT2FPaQpnRXdsR2tOTjhSWVRPekFOQmdrcWhraUc5dzBCQVFzRkFBT0NBUUVBQ2I2NUdYR2lhSXpZQnlObkhQUHRJWVJPCnJmWUk0WHphaVNFNnkvNUYvUTRYajJHM0R4UzhFSWFJQzlaU202UFYyWkYwK1FDUUI0UDdWV3VNTFFVdElrL1UKSTNJWFdmQ05pU2ozc2tqZ3k2cDZwdUhkd3hIL0MrWkRuUDlERW16OXVSTjdsUmc0VXRzeHVBb3E3UkFCRktwZQpmRjRoTXVud2JINFZsN1NEN2YrWkVWd3hjZ3FuNHdLRERVYXMvc0hqQXAxVVFBUUc5K3RtcjFUdHBoTEwyREY0CkYvSVArWTFLV2kwVmU1aFFzMHZiak9wYWJCZDl0SVg0VFBHUGI3TS84ZmN5ajJsM0Fya1VWdUVKQ3ZCUExlTkcKaFBmWG1wS25QeDF3NGYyTnovYi9ic21RZmpOZ0Q1NVhubmY0UzNOTG1QTHg5NUhCYmNnSzJKZ3VmUUhnNnc9PQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCg==", + "password": "", + "username": "" + } + ], + "master_authorized_networks_config": [], + "master_version": "1.16.15-gke.14800", + "min_master_version": "1.16", + "monitoring_service": "monitoring.googleapis.com/kubernetes", + "name": "gitpod", + "network": "projects/gpl-sh-090-3/global/networks/gitpod", + "network_policy": [ + { + "enabled": true, + "provider": "CALICO" + } + ], + "networking_mode": "VPC_NATIVE", + "node_config": [ + { + "disk_size_gb": 100, + "disk_type": "pd-ssd", + "guest_accelerator": [], + "image_type": "UBUNTU_CONTAINERD", + "labels": { + "gitpod.io/workload_meta": "true", + "gitpod.io/workload_workspace": "true" + }, + "local_ssd_count": 1, + "machine_type": "n2-standard-8", + "metadata": { + "disable-legacy-endpoints": "true" + }, + "min_cpu_platform": "", + "oauth_scopes": [ + "https://www.googleapis.com/auth/devstorage.read_write", + "https://www.googleapis.com/auth/logging.write", + "https://www.googleapis.com/auth/monitoring" + ], + "preemptible": false, + "service_account": "gitpod-nodes@gpl-sh-090-3.iam.gserviceaccount.com", + "shielded_instance_config": [ + { + "enable_integrity_monitoring": true, + "enable_secure_boot": false + } + ], + "tags": [], + "taint": [], + "workload_metadata_config": [ + { + "node_metadata": "SECURE" + } + ] + } + ], + "node_locations": [ + "europe-west3-a", + "europe-west3-b", + "europe-west3-c" + ], + "node_pool": [ + { + "autoscaling": [], + "initial_node_count": 1, + "instance_group_urls": [ + "https://www.googleapis.com/compute/v1/projects/gpl-sh-090-3/zones/europe-west3-a/instanceGroupManagers/gke-gitpod-nodepool-0-55cc245a-grp", + "https://www.googleapis.com/compute/v1/projects/gpl-sh-090-3/zones/europe-west3-b/instanceGroupManagers/gke-gitpod-nodepool-0-ab90e42d-grp", + "https://www.googleapis.com/compute/v1/projects/gpl-sh-090-3/zones/europe-west3-c/instanceGroupManagers/gke-gitpod-nodepool-0-bd520db7-grp" + ], + "management": [ + { + "auto_repair": true, + "auto_upgrade": true + } + ], + "max_pods_per_node": 110, + "name": "nodepool-0", + "name_prefix": "", + "node_config": [ + { + "disk_size_gb": 100, + "disk_type": "pd-ssd", + "guest_accelerator": [], + "image_type": "UBUNTU_CONTAINERD", + "labels": { + "gitpod.io/workload_meta": "true", + "gitpod.io/workload_workspace": "true" + }, + "local_ssd_count": 1, + "machine_type": "n2-standard-8", + "metadata": { + "disable-legacy-endpoints": "true" + }, + "min_cpu_platform": "", + "oauth_scopes": [ + "https://www.googleapis.com/auth/devstorage.read_write", + "https://www.googleapis.com/auth/logging.write", + "https://www.googleapis.com/auth/monitoring" + ], + "preemptible": false, + "service_account": "gitpod-nodes@gpl-sh-090-3.iam.gserviceaccount.com", + "shielded_instance_config": [ + { + "enable_integrity_monitoring": true, + "enable_secure_boot": false + } + ], + "tags": [], + "taint": [], + "workload_metadata_config": [ + { + "node_metadata": "SECURE" + } + ] + } + ], + "node_count": 1, + "node_locations": [ + "europe-west3-a", + "europe-west3-b", + "europe-west3-c" + ], + "upgrade_settings": [ + { + "max_surge": 1, + "max_unavailable": 0 + } + ], + "version": "1.16.15-gke.14800" + } + ], + "node_version": "1.16.15-gke.14800", + "operation": null, + "pod_security_policy_config": [ + { + "enabled": true + } + ], + "private_cluster_config": [], + "private_ipv6_google_access": "", + "project": "gpl-sh-090-3", + "release_channel": [ + { + "channel": "UNSPECIFIED" + } + ], + "remove_default_node_pool": true, + "resource_labels": {}, + "resource_usage_export_config": [], + "self_link": "https://container.googleapis.com/v1beta1/projects/gpl-sh-090-3/locations/europe-west3/clusters/gitpod", + "services_ipv4_cidr": "10.76.0.0/20", + "subnetwork": "projects/gpl-sh-090-3/regions/europe-west3/subnetworks/gitpod-subnet", + "timeouts": null, + "tpu_ipv4_cidr_block": "", + "vertical_pod_autoscaling": [], + "workload_identity_config": [] + }, + "sensitive_attributes": [], + "private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjoyNDAwMDAwMDAwMDAwLCJkZWxldGUiOjI0MDAwMDAwMDAwMDAsInJlYWQiOjI0MDAwMDAwMDAwMDAsInVwZGF0ZSI6MzYwMDAwMDAwMDAwMH0sInNjaGVtYV92ZXJzaW9uIjoiMSJ9", + "dependencies": [ + "google_compute_network.gitpod", + "module.kubernetes.google_compute_subnetwork.gitpod" + ] + } + ] + }, + { + "module": "module.kubernetes", + "mode": "managed", + "type": "google_container_node_pool", + "name": "gitpod", + "provider": "provider[\"registry.terraform.io/hashicorp/google\"]", + "instances": [ + { + "schema_version": 1, + "attributes": { + "autoscaling": [], + "cluster": "gitpod", + "id": "projects/gpl-sh-090-3/locations/europe-west3/clusters/gitpod/nodePools/nodepool-0", + "initial_node_count": 1, + "instance_group_urls": [ + "https://www.googleapis.com/compute/v1/projects/gpl-sh-090-3/zones/europe-west3-a/instanceGroupManagers/gke-gitpod-nodepool-0-55cc245a-grp", + "https://www.googleapis.com/compute/v1/projects/gpl-sh-090-3/zones/europe-west3-b/instanceGroupManagers/gke-gitpod-nodepool-0-ab90e42d-grp", + "https://www.googleapis.com/compute/v1/projects/gpl-sh-090-3/zones/europe-west3-c/instanceGroupManagers/gke-gitpod-nodepool-0-bd520db7-grp" + ], + "location": "europe-west3", + "management": [ + { + "auto_repair": true, + "auto_upgrade": true + } + ], + "max_pods_per_node": 110, + "name": "nodepool-0", + "name_prefix": "", + "node_config": [ + { + "disk_size_gb": 100, + "disk_type": "pd-ssd", + "guest_accelerator": [], + "image_type": "UBUNTU_CONTAINERD", + "labels": { + "gitpod.io/workload_meta": "true", + "gitpod.io/workload_workspace": "true" + }, + "local_ssd_count": 1, + "machine_type": "n2-standard-8", + "metadata": { + "disable-legacy-endpoints": "true" + }, + "min_cpu_platform": "", + "oauth_scopes": [ + "https://www.googleapis.com/auth/devstorage.read_write", + "https://www.googleapis.com/auth/logging.write", + "https://www.googleapis.com/auth/monitoring" + ], + "preemptible": false, + "service_account": "gitpod-nodes@gpl-sh-090-3.iam.gserviceaccount.com", + "shielded_instance_config": [ + { + "enable_integrity_monitoring": true, + "enable_secure_boot": false + } + ], + "tags": [], + "taint": [], + "workload_metadata_config": [ + { + "node_metadata": "SECURE" + } + ] + } + ], + "node_count": 1, + "node_locations": [ + "europe-west3-a", + "europe-west3-b", + "europe-west3-c" + ], + "operation": null, + "project": "gpl-sh-090-3", + "timeouts": null, + "upgrade_settings": [ + { + "max_surge": 1, + "max_unavailable": 0 + } + ], + "version": "1.16.15-gke.14800" + }, + "sensitive_attributes": [], + "private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjoxODAwMDAwMDAwMDAwLCJkZWxldGUiOjE4MDAwMDAwMDAwMDAsInVwZGF0ZSI6MTgwMDAwMDAwMDAwMH0sInNjaGVtYV92ZXJzaW9uIjoiMSJ9", + "dependencies": [ + "google_compute_network.gitpod", + "module.kubernetes.google_compute_subnetwork.gitpod", + "module.kubernetes.google_container_cluster.gitpod", + "module.kubernetes.google_service_account.gitpod" + ] + } + ] + }, + { + "module": "module.kubernetes", + "mode": "managed", + "type": "google_project_iam_member", + "name": "gitpod", + "provider": "provider[\"registry.terraform.io/hashicorp/google\"]", + "instances": [ + { + "index_key": 0, + "schema_version": 0, + "attributes": { + "condition": [], + "etag": "BwXBasRJJWc=", + "id": "gpl-sh-090-3/roles/clouddebugger.agent/serviceAccount:gitpod-nodes@gpl-sh-090-3.iam.gserviceaccount.com", + "member": "serviceAccount:gitpod-nodes@gpl-sh-090-3.iam.gserviceaccount.com", + "project": "gpl-sh-090-3", + "role": "roles/clouddebugger.agent" + }, + "sensitive_attributes": [], + "private": "bnVsbA==", + "dependencies": [ + "module.kubernetes.google_service_account.gitpod" + ] + }, + { + "index_key": 1, + "schema_version": 0, + "attributes": { + "condition": [], + "etag": "BwXBasRJJWc=", + "id": "gpl-sh-090-3/roles/cloudtrace.agent/serviceAccount:gitpod-nodes@gpl-sh-090-3.iam.gserviceaccount.com", + "member": "serviceAccount:gitpod-nodes@gpl-sh-090-3.iam.gserviceaccount.com", + "project": "gpl-sh-090-3", + "role": "roles/cloudtrace.agent" + }, + "sensitive_attributes": [], + "private": "bnVsbA==", + "dependencies": [ + "module.kubernetes.google_service_account.gitpod" + ] + }, + { + "index_key": 2, + "schema_version": 0, + "attributes": { + "condition": [], + "etag": "BwXBasRJJWc=", + "id": "gpl-sh-090-3/roles/errorreporting.writer/serviceAccount:gitpod-nodes@gpl-sh-090-3.iam.gserviceaccount.com", + "member": "serviceAccount:gitpod-nodes@gpl-sh-090-3.iam.gserviceaccount.com", + "project": "gpl-sh-090-3", + "role": "roles/errorreporting.writer" + }, + "sensitive_attributes": [], + "private": "bnVsbA==", + "dependencies": [ + "module.kubernetes.google_service_account.gitpod" + ] + }, + { + "index_key": 3, + "schema_version": 0, + "attributes": { + "condition": [], + "etag": "BwXBasRJJWc=", + "id": "gpl-sh-090-3/roles/logging.viewer/serviceAccount:gitpod-nodes@gpl-sh-090-3.iam.gserviceaccount.com", + "member": "serviceAccount:gitpod-nodes@gpl-sh-090-3.iam.gserviceaccount.com", + "project": "gpl-sh-090-3", + "role": "roles/logging.viewer" + }, + "sensitive_attributes": [], + "private": "bnVsbA==", + "dependencies": [ + "module.kubernetes.google_service_account.gitpod" + ] + }, + { + "index_key": 4, + "schema_version": 0, + "attributes": { + "condition": [], + "etag": "BwXBasRJJWc=", + "id": "gpl-sh-090-3/roles/logging.logWriter/serviceAccount:gitpod-nodes@gpl-sh-090-3.iam.gserviceaccount.com", + "member": "serviceAccount:gitpod-nodes@gpl-sh-090-3.iam.gserviceaccount.com", + "project": "gpl-sh-090-3", + "role": "roles/logging.logWriter" + }, + "sensitive_attributes": [], + "private": "bnVsbA==", + "dependencies": [ + "module.kubernetes.google_service_account.gitpod" + ] + }, + { + "index_key": 5, + "schema_version": 0, + "attributes": { + "condition": [], + "etag": "BwXBasRJJWc=", + "id": "gpl-sh-090-3/roles/monitoring.metricWriter/serviceAccount:gitpod-nodes@gpl-sh-090-3.iam.gserviceaccount.com", + "member": "serviceAccount:gitpod-nodes@gpl-sh-090-3.iam.gserviceaccount.com", + "project": "gpl-sh-090-3", + "role": "roles/monitoring.metricWriter" + }, + "sensitive_attributes": [], + "private": "bnVsbA==", + "dependencies": [ + "module.kubernetes.google_service_account.gitpod" + ] + }, + { + "index_key": 6, + "schema_version": 0, + "attributes": { + "condition": [], + "etag": "BwXBasRJJWc=", + "id": "gpl-sh-090-3/roles/monitoring.viewer/serviceAccount:gitpod-nodes@gpl-sh-090-3.iam.gserviceaccount.com", + "member": "serviceAccount:gitpod-nodes@gpl-sh-090-3.iam.gserviceaccount.com", + "project": "gpl-sh-090-3", + "role": "roles/monitoring.viewer" + }, + "sensitive_attributes": [], + "private": "bnVsbA==", + "dependencies": [ + "module.kubernetes.google_service_account.gitpod" + ] + }, + { + "index_key": 7, + "schema_version": 0, + "attributes": { + "condition": [], + "etag": "BwXBasRJJWc=", + "id": "gpl-sh-090-3/roles/storage.admin/serviceAccount:gitpod-nodes@gpl-sh-090-3.iam.gserviceaccount.com", + "member": "serviceAccount:gitpod-nodes@gpl-sh-090-3.iam.gserviceaccount.com", + "project": "gpl-sh-090-3", + "role": "roles/storage.admin" + }, + "sensitive_attributes": [], + "private": "bnVsbA==", + "dependencies": [ + "module.kubernetes.google_service_account.gitpod" + ] + }, + { + "index_key": 8, + "schema_version": 0, + "attributes": { + "condition": [], + "etag": "BwXBasRJJWc=", + "id": "gpl-sh-090-3/roles/storage.objectAdmin/serviceAccount:gitpod-nodes@gpl-sh-090-3.iam.gserviceaccount.com", + "member": "serviceAccount:gitpod-nodes@gpl-sh-090-3.iam.gserviceaccount.com", + "project": "gpl-sh-090-3", + "role": "roles/storage.objectAdmin" + }, + "sensitive_attributes": [], + "private": "bnVsbA==", + "dependencies": [ + "module.kubernetes.google_service_account.gitpod" + ] + } + ] + }, + { + "module": "module.kubernetes", + "mode": "managed", + "type": "google_project_service", + "name": "kubernetes", + "provider": "provider[\"registry.terraform.io/hashicorp/google\"]", + "instances": [ + { + "index_key": 0, + "schema_version": 0, + "attributes": { + "disable_dependent_services": false, + "disable_on_destroy": false, + "id": "gpl-sh-090-3/iam.googleapis.com", + "project": "gpl-sh-090-3", + "service": "iam.googleapis.com", + "timeouts": null + }, + "sensitive_attributes": [], + "private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjoxMjAwMDAwMDAwMDAwLCJkZWxldGUiOjEyMDAwMDAwMDAwMDAsInJlYWQiOjYwMDAwMDAwMDAwMCwidXBkYXRlIjoxMjAwMDAwMDAwMDAwfX0=" + }, + { + "index_key": 1, + "schema_version": 0, + "attributes": { + "disable_dependent_services": false, + "disable_on_destroy": false, + "id": "gpl-sh-090-3/compute.googleapis.com", + "project": "gpl-sh-090-3", + "service": "compute.googleapis.com", + "timeouts": null + }, + "sensitive_attributes": [], + "private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjoxMjAwMDAwMDAwMDAwLCJkZWxldGUiOjEyMDAwMDAwMDAwMDAsInJlYWQiOjYwMDAwMDAwMDAwMCwidXBkYXRlIjoxMjAwMDAwMDAwMDAwfX0=" + }, + { + "index_key": 2, + "schema_version": 0, + "attributes": { + "disable_dependent_services": false, + "disable_on_destroy": false, + "id": "gpl-sh-090-3/container.googleapis.com", + "project": "gpl-sh-090-3", + "service": "container.googleapis.com", + "timeouts": null + }, + "sensitive_attributes": [], + "private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjoxMjAwMDAwMDAwMDAwLCJkZWxldGUiOjEyMDAwMDAwMDAwMDAsInJlYWQiOjYwMDAwMDAwMDAwMCwidXBkYXRlIjoxMjAwMDAwMDAwMDAwfX0=" + }, + { + "index_key": 3, + "schema_version": 0, + "attributes": { + "disable_dependent_services": false, + "disable_on_destroy": false, + "id": "gpl-sh-090-3/logging.googleapis.com", + "project": "gpl-sh-090-3", + "service": "logging.googleapis.com", + "timeouts": null + }, + "sensitive_attributes": [], + "private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjoxMjAwMDAwMDAwMDAwLCJkZWxldGUiOjEyMDAwMDAwMDAwMDAsInJlYWQiOjYwMDAwMDAwMDAwMCwidXBkYXRlIjoxMjAwMDAwMDAwMDAwfX0=" + } + ] + }, + { + "module": "module.kubernetes", + "mode": "managed", + "type": "google_service_account", + "name": "gitpod", + "provider": "provider[\"registry.terraform.io/hashicorp/google\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "account_id": "gitpod-nodes", + "description": "Gitpod Nodes gitpod", + "display_name": "gitpod-nodes", + "email": "gitpod-nodes@gpl-sh-090-3.iam.gserviceaccount.com", + "id": "projects/gpl-sh-090-3/serviceAccounts/gitpod-nodes@gpl-sh-090-3.iam.gserviceaccount.com", + "name": "projects/gpl-sh-090-3/serviceAccounts/gitpod-nodes@gpl-sh-090-3.iam.gserviceaccount.com", + "project": "gpl-sh-090-3", + "timeouts": null, + "unique_id": "116547914369594240352" + }, + "sensitive_attributes": [], + "private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjozMDAwMDAwMDAwMDB9fQ==" + } + ] + }, + { + "module": "module.registry", + "mode": "data", + "type": "template_file", + "name": "registry", + "provider": "provider[\"registry.terraform.io/hashicorp/template\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "filename": null, + "id": "0dd07e6a868d098c25f3e464b7ad15ae956cfcd8d623a4c7fd87aa542731eea3", + "rendered": "{\n\t\"auths\": {\n\t\t\"gcr.io\": {\n\t\t\t\"auth\": \"X2pzb25fa2V5OiB7CiAgInR5cGUiOiAic2VydmljZV9hY2NvdW50IiwKICAicHJvamVjdF9pZCI6ICJncGwtc2gtMDkwLTMiLAogICJwcml2YXRlX2tleV9pZCI6ICJkMWVkN2E0ZWVmMmFiZTUwN2NjOTQzNWMxOTY0ZDllMWY4ZDA5NjA4IiwKICAicHJpdmF0ZV9rZXkiOiAiLS0tLS1CRUdJTiBQUklWQVRFIEtFWS0tLS0tXG5NSUlFdlFJQkFEQU5CZ2txaGtpRzl3MEJBUUVGQUFTQ0JLY3dnZ1NqQWdFQUFvSUJBUURQeVhUZXNLVWxnODhlXG5WRll3OElvQjRDbWMramxQOXZ5SWE4a2piY1oxS3lxd2p6N2ZoU1NhOU4vNVpVK2pWQnZlcW9YeHFqbE1XdW1uXG5Sdkw4V21OUHoySmovbEx0WDZKU1Z5TUJ5M3FkSUg5VEVlejRBck1TMDZpeEx3TW05TG5XU1RubkJlNjdEYnUyXG41UjRCdHBvd0hUZDIvSXdjYnc1dXJWRVVlckJUdGpSdjFIVG9OcFYva2ZjZDRGVWVyanZjL3llTzFmTEhYR21lXG5ZV3RYM2JNM2tmclZqb1o1RUloUVRPRmptSllwQ1hhMjBDbVZSRUtYZXpMTmdzOHkyczVPaTY0VjVBbW9iWGJ3XG5ML2Y2bVVKZm02NFM4QUhVWGdTc1VXbFFTM3dRb1l5SXhWV2htYUkvSnVzczFRZWFaS211OHV5QytJbmpMdVVKXG52S0hJWlpWQkFnTUJBQUVDZ2dFQUFZUDRwRDhwbFRKMjZrTzNOVGdyNllPWENod1JHdkkwT1ZKLzd4QTM2RmJlXG5RdGRvbi95Nm5aNjNtM3dQcnFOSWFNRlpwTCtYRjJWNldzdjdyYmVERGV2M1RiOW5IM0FaSVB5ZHRyK2pMMDR6XG5YNG03N3JzbVR6YlgvaUxYcFFzWDUrWTAwK2lKS3pnWWJHY1RadlBNQUJuV2M3bTMwK1ZEZDY4djdqUk80TzFwXG42WGtIU3NaRFpmaWVsdHAzNE1IUXJpM3NxU2VwS1hNRVJvMWtudkVIUmJxZlg1T0Q2bW9XMEJMZStPOTN6UDc2XG5wMWJVQXdwT01jV2JDSHFQNC9ET3lhMTJoelgxc2orTHpXMkg5bU5OQUkvdjRjZk8yU2F4MHpQNGpPQmJReFNIXG42UDVuRXFZeVlwVVVCTjlCYkVYSHdySEVqWjdEK2x2ekYvWFlxdFFSb1FLQmdRRDF3cGJ6L0pPb0dyVWdOZ29TXG4yQlNQYVhNV1FxY1pQZHZINGNGc3EveCtadFRlQVd4a21wTmd6UEI3TXRqRmplRXNwUTlkQVJIZ2tLQTVKTVlDXG54YzIyMmt0b3Fnbmhqek1PS21mMDJ0alpnbStsUVIrbTUwVmNTdDlONVhjS1BOa0pTVFRpZFBCdlBDU05YalJXXG5kcUhmSmRkWThCMWJ1aHNRaUVocTBZMWREUUtCZ1FEWWNkTU5XQThFMVZKZEZFSU5JbGlpMEdsWGFnQ2ZHZ0ppXG54VjhaUlQwMWV4cklHbG9hYUtsOEM1QlRBNGFtbFdKUlpaUW94RHBLYTZZUENWc2d4cWJ4dEdKdjU5ZUhVVlVwXG5EZWRteUZCRWhOWWJMaGphOHJKZ3EzYUdFNVVzZ1dyTFJNQ2RkTkZaSjdjUXRtRldXS3hIbW4rWUw1c2d0RnoxXG53a29hd09UVUJRS0JnUUNDd2I2NUgvaWI1MkhaT29kUGtXSVhENTdwQ0J1SjVZeXJJNlZiSVlLYzZpOTEwMElOXG5vT1NyQ3o4ai9XQ3ljNU9Md21LVE5EK0R3TTlPdUE4V2FKSFVLUDhZTitnNzk0bk5qcWh5OFlHUThNSmdKVzhtXG55VVB4SC9FQnJBWVREMTdXZnZuQlIwQ3BubEZBV2cvMHRQZlpGM1FsWU5QdCt1M3RkT1U2MkRXamZRS0JnRUlhXG5LUm1uTGhjTXl6V3dEU2dUdUR3cEtETFJKZFZ4VFE4N05mcnl3V25HNmZ2NHlGSE9hd3grUDVxS3RpSEQ5NTNpXG5SdWhZWFhFREJWa01RMjkwRytJdmMreTNRb1NLRzFjSmJ3VmQ0ZDI3TCtSbkpLSWhnc2F4TnVabHJxWkQ5QWlXXG5PN2theHlEU1Z6OWNZOGZLRnZ0YlBPS09qM0xpZ28xdnc4LzkzeVM5QW9HQU14RzcxVlM1cjFROHZQTWtrcGxPXG52cTEyK1U1L3pkU2FhSWkwTEYyMlZiNGE2UmJqY2YzSDM0V3NQS1J0Q2FtMG52TnNsbXFrY3RLc2RDRnp0Y0NMXG5SQTk5ZTNINTU1WkZCcU03TEhHNnFMMjRCbC9IcnJnSWVoNVFMaVdubEo5VDBkNEMrYlVsS3JwRHJnZDdzekJqXG51dG5ZVVpwakRXWjZQWWUyTjQvYVFuWT1cbi0tLS0tRU5EIFBSSVZBVEUgS0VZLS0tLS1cbiIsCiAgImNsaWVudF9lbWFpbCI6ICJnaXRwb2QtcmVnaXN0cnlAZ3BsLXNoLTA5MC0zLmlhbS5nc2VydmljZWFjY291bnQuY29tIiwKICAiY2xpZW50X2lkIjogIjExMjg0MjA4ODk2ODU1NDEzMTI5NSIsCiAgImF1dGhfdXJpIjogImh0dHBzOi8vYWNjb3VudHMuZ29vZ2xlLmNvbS9vL29hdXRoMi9hdXRoIiwKICAidG9rZW5fdXJpIjogImh0dHBzOi8vb2F1dGgyLmdvb2dsZWFwaXMuY29tL3Rva2VuIiwKICAiYXV0aF9wcm92aWRlcl94NTA5X2NlcnRfdXJsIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL29hdXRoMi92MS9jZXJ0cyIsCiAgImNsaWVudF94NTA5X2NlcnRfdXJsIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3JvYm90L3YxL21ldGFkYXRhL3g1MDkvZ2l0cG9kLXJlZ2lzdHJ5JTQwZ3BsLXNoLTA5MC0zLmlhbS5nc2VydmljZWFjY291bnQuY29tIgp9Cg==\"\n\t\t}\n\t}\n}", + "template": "{\n\t\"auths\": {\n\t\t\"gcr.io\": {\n\t\t\t\"auth\": \"${auth}\"\n\t\t}\n\t}\n}", + "vars": { + "auth": "X2pzb25fa2V5OiB7CiAgInR5cGUiOiAic2VydmljZV9hY2NvdW50IiwKICAicHJvamVjdF9pZCI6ICJncGwtc2gtMDkwLTMiLAogICJwcml2YXRlX2tleV9pZCI6ICJkMWVkN2E0ZWVmMmFiZTUwN2NjOTQzNWMxOTY0ZDllMWY4ZDA5NjA4IiwKICAicHJpdmF0ZV9rZXkiOiAiLS0tLS1CRUdJTiBQUklWQVRFIEtFWS0tLS0tXG5NSUlFdlFJQkFEQU5CZ2txaGtpRzl3MEJBUUVGQUFTQ0JLY3dnZ1NqQWdFQUFvSUJBUURQeVhUZXNLVWxnODhlXG5WRll3OElvQjRDbWMramxQOXZ5SWE4a2piY1oxS3lxd2p6N2ZoU1NhOU4vNVpVK2pWQnZlcW9YeHFqbE1XdW1uXG5Sdkw4V21OUHoySmovbEx0WDZKU1Z5TUJ5M3FkSUg5VEVlejRBck1TMDZpeEx3TW05TG5XU1RubkJlNjdEYnUyXG41UjRCdHBvd0hUZDIvSXdjYnc1dXJWRVVlckJUdGpSdjFIVG9OcFYva2ZjZDRGVWVyanZjL3llTzFmTEhYR21lXG5ZV3RYM2JNM2tmclZqb1o1RUloUVRPRmptSllwQ1hhMjBDbVZSRUtYZXpMTmdzOHkyczVPaTY0VjVBbW9iWGJ3XG5ML2Y2bVVKZm02NFM4QUhVWGdTc1VXbFFTM3dRb1l5SXhWV2htYUkvSnVzczFRZWFaS211OHV5QytJbmpMdVVKXG52S0hJWlpWQkFnTUJBQUVDZ2dFQUFZUDRwRDhwbFRKMjZrTzNOVGdyNllPWENod1JHdkkwT1ZKLzd4QTM2RmJlXG5RdGRvbi95Nm5aNjNtM3dQcnFOSWFNRlpwTCtYRjJWNldzdjdyYmVERGV2M1RiOW5IM0FaSVB5ZHRyK2pMMDR6XG5YNG03N3JzbVR6YlgvaUxYcFFzWDUrWTAwK2lKS3pnWWJHY1RadlBNQUJuV2M3bTMwK1ZEZDY4djdqUk80TzFwXG42WGtIU3NaRFpmaWVsdHAzNE1IUXJpM3NxU2VwS1hNRVJvMWtudkVIUmJxZlg1T0Q2bW9XMEJMZStPOTN6UDc2XG5wMWJVQXdwT01jV2JDSHFQNC9ET3lhMTJoelgxc2orTHpXMkg5bU5OQUkvdjRjZk8yU2F4MHpQNGpPQmJReFNIXG42UDVuRXFZeVlwVVVCTjlCYkVYSHdySEVqWjdEK2x2ekYvWFlxdFFSb1FLQmdRRDF3cGJ6L0pPb0dyVWdOZ29TXG4yQlNQYVhNV1FxY1pQZHZINGNGc3EveCtadFRlQVd4a21wTmd6UEI3TXRqRmplRXNwUTlkQVJIZ2tLQTVKTVlDXG54YzIyMmt0b3Fnbmhqek1PS21mMDJ0alpnbStsUVIrbTUwVmNTdDlONVhjS1BOa0pTVFRpZFBCdlBDU05YalJXXG5kcUhmSmRkWThCMWJ1aHNRaUVocTBZMWREUUtCZ1FEWWNkTU5XQThFMVZKZEZFSU5JbGlpMEdsWGFnQ2ZHZ0ppXG54VjhaUlQwMWV4cklHbG9hYUtsOEM1QlRBNGFtbFdKUlpaUW94RHBLYTZZUENWc2d4cWJ4dEdKdjU5ZUhVVlVwXG5EZWRteUZCRWhOWWJMaGphOHJKZ3EzYUdFNVVzZ1dyTFJNQ2RkTkZaSjdjUXRtRldXS3hIbW4rWUw1c2d0RnoxXG53a29hd09UVUJRS0JnUUNDd2I2NUgvaWI1MkhaT29kUGtXSVhENTdwQ0J1SjVZeXJJNlZiSVlLYzZpOTEwMElOXG5vT1NyQ3o4ai9XQ3ljNU9Md21LVE5EK0R3TTlPdUE4V2FKSFVLUDhZTitnNzk0bk5qcWh5OFlHUThNSmdKVzhtXG55VVB4SC9FQnJBWVREMTdXZnZuQlIwQ3BubEZBV2cvMHRQZlpGM1FsWU5QdCt1M3RkT1U2MkRXamZRS0JnRUlhXG5LUm1uTGhjTXl6V3dEU2dUdUR3cEtETFJKZFZ4VFE4N05mcnl3V25HNmZ2NHlGSE9hd3grUDVxS3RpSEQ5NTNpXG5SdWhZWFhFREJWa01RMjkwRytJdmMreTNRb1NLRzFjSmJ3VmQ0ZDI3TCtSbkpLSWhnc2F4TnVabHJxWkQ5QWlXXG5PN2theHlEU1Z6OWNZOGZLRnZ0YlBPS09qM0xpZ28xdnc4LzkzeVM5QW9HQU14RzcxVlM1cjFROHZQTWtrcGxPXG52cTEyK1U1L3pkU2FhSWkwTEYyMlZiNGE2UmJqY2YzSDM0V3NQS1J0Q2FtMG52TnNsbXFrY3RLc2RDRnp0Y0NMXG5SQTk5ZTNINTU1WkZCcU03TEhHNnFMMjRCbC9IcnJnSWVoNVFMaVdubEo5VDBkNEMrYlVsS3JwRHJnZDdzekJqXG51dG5ZVVpwakRXWjZQWWUyTjQvYVFuWT1cbi0tLS0tRU5EIFBSSVZBVEUgS0VZLS0tLS1cbiIsCiAgImNsaWVudF9lbWFpbCI6ICJnaXRwb2QtcmVnaXN0cnlAZ3BsLXNoLTA5MC0zLmlhbS5nc2VydmljZWFjY291bnQuY29tIiwKICAiY2xpZW50X2lkIjogIjExMjg0MjA4ODk2ODU1NDEzMTI5NSIsCiAgImF1dGhfdXJpIjogImh0dHBzOi8vYWNjb3VudHMuZ29vZ2xlLmNvbS9vL29hdXRoMi9hdXRoIiwKICAidG9rZW5fdXJpIjogImh0dHBzOi8vb2F1dGgyLmdvb2dsZWFwaXMuY29tL3Rva2VuIiwKICAiYXV0aF9wcm92aWRlcl94NTA5X2NlcnRfdXJsIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL29hdXRoMi92MS9jZXJ0cyIsCiAgImNsaWVudF94NTA5X2NlcnRfdXJsIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3JvYm90L3YxL21ldGFkYXRhL3g1MDkvZ2l0cG9kLXJlZ2lzdHJ5JTQwZ3BsLXNoLTA5MC0zLmlhbS5nc2VydmljZWFjY291bnQuY29tIgp9Cg==" + } + }, + "sensitive_attributes": [] + } + ] + }, + { + "module": "module.registry", + "mode": "data", + "type": "template_file", + "name": "values", + "provider": "provider[\"registry.terraform.io/hashicorp/template\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "filename": null, + "id": "a6789ed2a5dffa868e3e7c7faff1782038c9859ad9360a35eeda5ecf08ddf442", + "rendered": "# Copyright (c) 2020 Gitpod GmbH. All rights reserved.\n# Licensed under the MIT License. See License-MIT.txt in the project root for license information.\n\ncomponents:\n imageBuilder:\n registryCerts: []\n registry:\n name: \"gcr.io/gpl-sh-090-3\"\n secretName: gitpod-registry\n\n workspace:\n pullSecret:\n secretName: gitpod-registry\n\ndocker-registry:\n enabled: false\n", + "template": "# Copyright (c) 2020 Gitpod GmbH. All rights reserved.\n# Licensed under the MIT License. See License-MIT.txt in the project root for license information.\n\ncomponents:\n imageBuilder:\n registryCerts: []\n registry:\n name: \"gcr.io/${project}\"\n secretName: ${secretName}\n\n workspace:\n pullSecret:\n secretName: ${secretName}\n\ndocker-registry:\n enabled: false\n", + "vars": { + "project": "gpl-sh-090-3", + "secretName": "gitpod-registry" + } + }, + "sensitive_attributes": [] + } + ] + }, + { + "module": "module.registry", + "mode": "managed", + "type": "google_project_iam_member", + "name": "gitpod_registry", + "provider": "provider[\"registry.terraform.io/hashicorp/google\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "condition": [], + "etag": "BwXBasRJJWc=", + "id": "gpl-sh-090-3/roles/storage.admin/serviceAccount:gitpod-registry@gpl-sh-090-3.iam.gserviceaccount.com", + "member": "serviceAccount:gitpod-registry@gpl-sh-090-3.iam.gserviceaccount.com", + "project": "gpl-sh-090-3", + "role": "roles/storage.admin" + }, + "sensitive_attributes": [], + "private": "bnVsbA==", + "dependencies": [ + "module.registry.google_service_account.gitpod_registry" + ] + } + ] + }, + { + "module": "module.registry", + "mode": "managed", + "type": "google_project_service", + "name": "gitpod_registry", + "provider": "provider[\"registry.terraform.io/hashicorp/google\"]", + "instances": [ + { + "index_key": 0, + "schema_version": 0, + "attributes": { + "disable_dependent_services": false, + "disable_on_destroy": false, + "id": "gpl-sh-090-3/containerregistry.googleapis.com", + "project": "gpl-sh-090-3", + "service": "containerregistry.googleapis.com", + "timeouts": null + }, + "sensitive_attributes": [], + "private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjoxMjAwMDAwMDAwMDAwLCJkZWxldGUiOjEyMDAwMDAwMDAwMDAsInJlYWQiOjYwMDAwMDAwMDAwMCwidXBkYXRlIjoxMjAwMDAwMDAwMDAwfX0=" + } + ] + }, + { + "module": "module.registry", + "mode": "managed", + "type": "google_service_account", + "name": "gitpod_registry", + "provider": "provider[\"registry.terraform.io/hashicorp/google\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "account_id": "gitpod-registry", + "description": "Gitpod Registry ", + "display_name": "gitpod-registry", + "email": "gitpod-registry@gpl-sh-090-3.iam.gserviceaccount.com", + "id": "projects/gpl-sh-090-3/serviceAccounts/gitpod-registry@gpl-sh-090-3.iam.gserviceaccount.com", + "name": "projects/gpl-sh-090-3/serviceAccounts/gitpod-registry@gpl-sh-090-3.iam.gserviceaccount.com", + "project": "gpl-sh-090-3", + "timeouts": null, + "unique_id": "112842088968554131295" + }, + "sensitive_attributes": [], + "private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjozMDAwMDAwMDAwMDB9fQ==" + } + ] + }, + { + "module": "module.registry", + "mode": "managed", + "type": "google_service_account_key", + "name": "gitpod_registry", + "provider": "provider[\"registry.terraform.io/hashicorp/google\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "id": "projects/gpl-sh-090-3/serviceAccounts/gitpod-registry@gpl-sh-090-3.iam.gserviceaccount.com/keys/d1ed7a4eef2abe507cc9435c1964d9e1f8d09608", + "keepers": null, + "key_algorithm": "KEY_ALG_RSA_2048", + "name": "projects/gpl-sh-090-3/serviceAccounts/gitpod-registry@gpl-sh-090-3.iam.gserviceaccount.com/keys/d1ed7a4eef2abe507cc9435c1964d9e1f8d09608", + "private_key": "ewogICJ0eXBlIjogInNlcnZpY2VfYWNjb3VudCIsCiAgInByb2plY3RfaWQiOiAiZ3BsLXNoLTA5MC0zIiwKICAicHJpdmF0ZV9rZXlfaWQiOiAiZDFlZDdhNGVlZjJhYmU1MDdjYzk0MzVjMTk2NGQ5ZTFmOGQwOTYwOCIsCiAgInByaXZhdGVfa2V5IjogIi0tLS0tQkVHSU4gUFJJVkFURSBLRVktLS0tLVxuTUlJRXZRSUJBREFOQmdrcWhraUc5dzBCQVFFRkFBU0NCS2N3Z2dTakFnRUFBb0lCQVFEUHlYVGVzS1VsZzg4ZVxuVkZZdzhJb0I0Q21jK2psUDl2eUlhOGtqYmNaMUt5cXdqejdmaFNTYTlOLzVaVStqVkJ2ZXFvWHhxamxNV3VtblxuUnZMOFdtTlB6MkpqL2xMdFg2SlNWeU1CeTNxZElIOVRFZXo0QXJNUzA2aXhMd01tOUxuV1NUbm5CZTY3RGJ1MlxuNVI0QnRwb3dIVGQyL0l3Y2J3NXVyVkVVZXJCVHRqUnYxSFRvTnBWL2tmY2Q0RlVlcmp2Yy95ZU8xZkxIWEdtZVxuWVd0WDNiTTNrZnJWam9aNUVJaFFUT0ZqbUpZcENYYTIwQ21WUkVLWGV6TE5nczh5MnM1T2k2NFY1QW1vYlhid1xuTC9mNm1VSmZtNjRTOEFIVVhnU3NVV2xRUzN3UW9ZeUl4VldobWFJL0p1c3MxUWVhWkttdTh1eUMrSW5qTHVVSlxudktISVpaVkJBZ01CQUFFQ2dnRUFBWVA0cEQ4cGxUSjI2a08zTlRncjZZT1hDaHdSR3ZJME9WSi83eEEzNkZiZVxuUXRkb24veTZuWjYzbTN3UHJxTklhTUZacEwrWEYyVjZXc3Y3cmJlRERldjNUYjluSDNBWklQeWR0citqTDA0elxuWDRtNzdyc21UemJYL2lMWHBRc1g1K1kwMCtpSkt6Z1liR2NUWnZQTUFCbldjN20zMCtWRGQ2OHY3alJPNE8xcFxuNlhrSFNzWkRaZmllbHRwMzRNSFFyaTNzcVNlcEtYTUVSbzFrbnZFSFJicWZYNU9ENm1vVzBCTGUrTzkzelA3NlxucDFiVUF3cE9NY1diQ0hxUDQvRE95YTEyaHpYMXNqK0x6VzJIOW1OTkFJL3Y0Y2ZPMlNheDB6UDRqT0JiUXhTSFxuNlA1bkVxWXlZcFVVQk45QmJFWEh3ckhFalo3RCtsdnpGL1hZcXRRUm9RS0JnUUQxd3Biei9KT29HclVnTmdvU1xuMkJTUGFYTVdRcWNaUGR2SDRjRnNxL3grWnRUZUFXeGttcE5nelBCN010akZqZUVzcFE5ZEFSSGdrS0E1Sk1ZQ1xueGMyMjJrdG9xZ25oanpNT0ttZjAydGpaZ20rbFFSK201MFZjU3Q5TjVYY0tQTmtKU1RUaWRQQnZQQ1NOWGpSV1xuZHFIZkpkZFk4QjFidWhzUWlFaHEwWTFkRFFLQmdRRFljZE1OV0E4RTFWSmRGRUlOSWxpaTBHbFhhZ0NmR2dKaVxueFY4WlJUMDFleHJJR2xvYWFLbDhDNUJUQTRhbWxXSlJaWlFveERwS2E2WVBDVnNneHFieHRHSnY1OWVIVVZVcFxuRGVkbXlGQkVoTlliTGhqYThySmdxM2FHRTVVc2dXckxSTUNkZE5GWko3Y1F0bUZXV0t4SG1uK1lMNXNndEZ6MVxud2tvYXdPVFVCUUtCZ1FDQ3diNjVIL2liNTJIWk9vZFBrV0lYRDU3cENCdUo1WXlySTZWYklZS2M2aTkxMDBJTlxub09TckN6OGovV0N5YzVPTHdtS1RORCtEd005T3VBOFdhSkhVS1A4WU4rZzc5NG5OanFoeThZR1E4TUpnSlc4bVxueVVQeEgvRUJyQVlURDE3V2Z2bkJSMENwbmxGQVdnLzB0UGZaRjNRbFlOUHQrdTN0ZE9VNjJEV2pmUUtCZ0VJYVxuS1JtbkxoY015eld3RFNnVHVEd3BLRExSSmRWeFRRODdOZnJ5d1duRzZmdjR5RkhPYXd4K1A1cUt0aUhEOTUzaVxuUnVoWVhYRURCVmtNUTI5MEcrSXZjK3kzUW9TS0cxY0pid1ZkNGQyN0wrUm5KS0loZ3NheE51WmxycVpEOUFpV1xuTzdrYXh5RFNWejljWThmS0Z2dGJQT0tPajNMaWdvMXZ3OC85M3lTOUFvR0FNeEc3MVZTNXIxUTh2UE1ra3BsT1xudnExMitVNS96ZFNhYUlpMExGMjJWYjRhNlJiamNmM0gzNFdzUEtSdENhbTBudk5zbG1xa2N0S3NkQ0Z6dGNDTFxuUkE5OWUzSDU1NVpGQnFNN0xIRzZxTDI0QmwvSHJyZ0llaDVRTGlXbmxKOVQwZDRDK2JVbEtycERyZ2Q3c3pCalxudXRuWVVacGpEV1o2UFllMk40L2FRblk9XG4tLS0tLUVORCBQUklWQVRFIEtFWS0tLS0tXG4iLAogICJjbGllbnRfZW1haWwiOiAiZ2l0cG9kLXJlZ2lzdHJ5QGdwbC1zaC0wOTAtMy5pYW0uZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgImNsaWVudF9pZCI6ICIxMTI4NDIwODg5Njg1NTQxMzEyOTUiLAogICJhdXRoX3VyaSI6ICJodHRwczovL2FjY291bnRzLmdvb2dsZS5jb20vby9vYXV0aDIvYXV0aCIsCiAgInRva2VuX3VyaSI6ICJodHRwczovL29hdXRoMi5nb29nbGVhcGlzLmNvbS90b2tlbiIsCiAgImF1dGhfcHJvdmlkZXJfeDUwOV9jZXJ0X3VybCI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9vYXV0aDIvdjEvY2VydHMiLAogICJjbGllbnRfeDUwOV9jZXJ0X3VybCI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9yb2JvdC92MS9tZXRhZGF0YS94NTA5L2dpdHBvZC1yZWdpc3RyeSU0MGdwbC1zaC0wOTAtMy5pYW0uZ3NlcnZpY2VhY2NvdW50LmNvbSIKfQo=", + "private_key_type": "TYPE_GOOGLE_CREDENTIALS_FILE", + "public_key": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUMvRENDQWVTZ0F3SUJBZ0lJU3ZqNFF5RmlPVUl3RFFZSktvWklodmNOQVFFRkJRQXdJREVlTUJ3R0ExVUUKQXhNVk1URXlPRFF5TURnNE9UWTROVFUwTVRNeE1qazFNQ0FYRFRJeE1EVXdNekV3TkRBMU9Wb1lEems1T1RreApNak14TWpNMU9UVTVXakFnTVI0d0hBWURWUVFERXhVeE1USTROREl3T0RnNU5qZzFOVFF4TXpFeU9UVXdnZ0VpCk1BMEdDU3FHU0liM0RRRUJBUVVBQTRJQkR3QXdnZ0VLQW9JQkFRRFB5WFRlc0tVbGc4OGVWRll3OElvQjRDbWMKK2psUDl2eUlhOGtqYmNaMUt5cXdqejdmaFNTYTlOLzVaVStqVkJ2ZXFvWHhxamxNV3VtblJ2TDhXbU5QejJKagovbEx0WDZKU1Z5TUJ5M3FkSUg5VEVlejRBck1TMDZpeEx3TW05TG5XU1RubkJlNjdEYnUyNVI0QnRwb3dIVGQyCi9Jd2NidzV1clZFVWVyQlR0alJ2MUhUb05wVi9rZmNkNEZVZXJqdmMveWVPMWZMSFhHbWVZV3RYM2JNM2tmclYKam9aNUVJaFFUT0ZqbUpZcENYYTIwQ21WUkVLWGV6TE5nczh5MnM1T2k2NFY1QW1vYlhid0wvZjZtVUpmbTY0Uwo4QUhVWGdTc1VXbFFTM3dRb1l5SXhWV2htYUkvSnVzczFRZWFaS211OHV5QytJbmpMdVVKdktISVpaVkJBZ01CCkFBR2pPREEyTUF3R0ExVWRFd0VCL3dRQ01BQXdEZ1lEVlIwUEFRSC9CQVFEQWdlQU1CWUdBMVVkSlFFQi93UU0KTUFvR0NDc0dBUVVGQndNQ01BMEdDU3FHU0liM0RRRUJCUVVBQTRJQkFRQWo3QWxvVmtEMlJnMEVmYmpCYWgvcwpoQlB1ZlVUR0kyWWRvcFI1UzdMekJZOUtaR0RGVmlJaG52UVVNQTd5blBaL0lWK2dPMmZRUlpiWDJDSU5YTlB6CkhIY1ZQbjgvRDdTcFN0cisrUHVlRkxHRG5VNElSWjhQaWRJbnhsMStEdXZiNXMzUkJmV1NnMU9lc3paNndxNzcKKzMySWdNVEpFOGdiakhPc2RWemc0aUxzZk40RHI1QWVFQXhwSlo2N3BTY21rN3NFVWQ0NFVJRDFZUCtpSStBUApnSGtoLzU3YjlZbFYxaDhrNEJQdU5tZmhQRDR0N04xWjk1bGYrL0o4OWFkcnBzb0Q0NzAvdmVOdUZaODcyZ0x3CkFSaU1WOU9qZ1UxY2pLaG1qdFBJSEZuT01tb0JMbzZndEdPR3pJOFVhOVBBQnlWbWxsemFFcERjTXlXMWtGK0MKLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQo=", + "public_key_data": null, + "public_key_type": "TYPE_X509_PEM_FILE", + "service_account_id": "projects/gpl-sh-090-3/serviceAccounts/gitpod-registry@gpl-sh-090-3.iam.gserviceaccount.com", + "valid_after": "2021-05-03T10:40:59Z", + "valid_before": "9999-12-31T23:59:59Z" + }, + "sensitive_attributes": [], + "private": "bnVsbA==", + "dependencies": [ + "module.registry.google_service_account.gitpod_registry" + ] + } + ] + }, + { + "module": "module.registry", + "mode": "managed", + "type": "kubernetes_secret", + "name": "registry", + "provider": "provider[\"registry.terraform.io/hashicorp/kubernetes\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "data": { + ".dockerconfigjson": "{\n\t\"auths\": {\n\t\t\"gcr.io\": {\n\t\t\t\"auth\": \"X2pzb25fa2V5OiB7CiAgInR5cGUiOiAic2VydmljZV9hY2NvdW50IiwKICAicHJvamVjdF9pZCI6ICJncGwtc2gtMDkwLTMiLAogICJwcml2YXRlX2tleV9pZCI6ICJkMWVkN2E0ZWVmMmFiZTUwN2NjOTQzNWMxOTY0ZDllMWY4ZDA5NjA4IiwKICAicHJpdmF0ZV9rZXkiOiAiLS0tLS1CRUdJTiBQUklWQVRFIEtFWS0tLS0tXG5NSUlFdlFJQkFEQU5CZ2txaGtpRzl3MEJBUUVGQUFTQ0JLY3dnZ1NqQWdFQUFvSUJBUURQeVhUZXNLVWxnODhlXG5WRll3OElvQjRDbWMramxQOXZ5SWE4a2piY1oxS3lxd2p6N2ZoU1NhOU4vNVpVK2pWQnZlcW9YeHFqbE1XdW1uXG5Sdkw4V21OUHoySmovbEx0WDZKU1Z5TUJ5M3FkSUg5VEVlejRBck1TMDZpeEx3TW05TG5XU1RubkJlNjdEYnUyXG41UjRCdHBvd0hUZDIvSXdjYnc1dXJWRVVlckJUdGpSdjFIVG9OcFYva2ZjZDRGVWVyanZjL3llTzFmTEhYR21lXG5ZV3RYM2JNM2tmclZqb1o1RUloUVRPRmptSllwQ1hhMjBDbVZSRUtYZXpMTmdzOHkyczVPaTY0VjVBbW9iWGJ3XG5ML2Y2bVVKZm02NFM4QUhVWGdTc1VXbFFTM3dRb1l5SXhWV2htYUkvSnVzczFRZWFaS211OHV5QytJbmpMdVVKXG52S0hJWlpWQkFnTUJBQUVDZ2dFQUFZUDRwRDhwbFRKMjZrTzNOVGdyNllPWENod1JHdkkwT1ZKLzd4QTM2RmJlXG5RdGRvbi95Nm5aNjNtM3dQcnFOSWFNRlpwTCtYRjJWNldzdjdyYmVERGV2M1RiOW5IM0FaSVB5ZHRyK2pMMDR6XG5YNG03N3JzbVR6YlgvaUxYcFFzWDUrWTAwK2lKS3pnWWJHY1RadlBNQUJuV2M3bTMwK1ZEZDY4djdqUk80TzFwXG42WGtIU3NaRFpmaWVsdHAzNE1IUXJpM3NxU2VwS1hNRVJvMWtudkVIUmJxZlg1T0Q2bW9XMEJMZStPOTN6UDc2XG5wMWJVQXdwT01jV2JDSHFQNC9ET3lhMTJoelgxc2orTHpXMkg5bU5OQUkvdjRjZk8yU2F4MHpQNGpPQmJReFNIXG42UDVuRXFZeVlwVVVCTjlCYkVYSHdySEVqWjdEK2x2ekYvWFlxdFFSb1FLQmdRRDF3cGJ6L0pPb0dyVWdOZ29TXG4yQlNQYVhNV1FxY1pQZHZINGNGc3EveCtadFRlQVd4a21wTmd6UEI3TXRqRmplRXNwUTlkQVJIZ2tLQTVKTVlDXG54YzIyMmt0b3Fnbmhqek1PS21mMDJ0alpnbStsUVIrbTUwVmNTdDlONVhjS1BOa0pTVFRpZFBCdlBDU05YalJXXG5kcUhmSmRkWThCMWJ1aHNRaUVocTBZMWREUUtCZ1FEWWNkTU5XQThFMVZKZEZFSU5JbGlpMEdsWGFnQ2ZHZ0ppXG54VjhaUlQwMWV4cklHbG9hYUtsOEM1QlRBNGFtbFdKUlpaUW94RHBLYTZZUENWc2d4cWJ4dEdKdjU5ZUhVVlVwXG5EZWRteUZCRWhOWWJMaGphOHJKZ3EzYUdFNVVzZ1dyTFJNQ2RkTkZaSjdjUXRtRldXS3hIbW4rWUw1c2d0RnoxXG53a29hd09UVUJRS0JnUUNDd2I2NUgvaWI1MkhaT29kUGtXSVhENTdwQ0J1SjVZeXJJNlZiSVlLYzZpOTEwMElOXG5vT1NyQ3o4ai9XQ3ljNU9Md21LVE5EK0R3TTlPdUE4V2FKSFVLUDhZTitnNzk0bk5qcWh5OFlHUThNSmdKVzhtXG55VVB4SC9FQnJBWVREMTdXZnZuQlIwQ3BubEZBV2cvMHRQZlpGM1FsWU5QdCt1M3RkT1U2MkRXamZRS0JnRUlhXG5LUm1uTGhjTXl6V3dEU2dUdUR3cEtETFJKZFZ4VFE4N05mcnl3V25HNmZ2NHlGSE9hd3grUDVxS3RpSEQ5NTNpXG5SdWhZWFhFREJWa01RMjkwRytJdmMreTNRb1NLRzFjSmJ3VmQ0ZDI3TCtSbkpLSWhnc2F4TnVabHJxWkQ5QWlXXG5PN2theHlEU1Z6OWNZOGZLRnZ0YlBPS09qM0xpZ28xdnc4LzkzeVM5QW9HQU14RzcxVlM1cjFROHZQTWtrcGxPXG52cTEyK1U1L3pkU2FhSWkwTEYyMlZiNGE2UmJqY2YzSDM0V3NQS1J0Q2FtMG52TnNsbXFrY3RLc2RDRnp0Y0NMXG5SQTk5ZTNINTU1WkZCcU03TEhHNnFMMjRCbC9IcnJnSWVoNVFMaVdubEo5VDBkNEMrYlVsS3JwRHJnZDdzekJqXG51dG5ZVVpwakRXWjZQWWUyTjQvYVFuWT1cbi0tLS0tRU5EIFBSSVZBVEUgS0VZLS0tLS1cbiIsCiAgImNsaWVudF9lbWFpbCI6ICJnaXRwb2QtcmVnaXN0cnlAZ3BsLXNoLTA5MC0zLmlhbS5nc2VydmljZWFjY291bnQuY29tIiwKICAiY2xpZW50X2lkIjogIjExMjg0MjA4ODk2ODU1NDEzMTI5NSIsCiAgImF1dGhfdXJpIjogImh0dHBzOi8vYWNjb3VudHMuZ29vZ2xlLmNvbS9vL29hdXRoMi9hdXRoIiwKICAidG9rZW5fdXJpIjogImh0dHBzOi8vb2F1dGgyLmdvb2dsZWFwaXMuY29tL3Rva2VuIiwKICAiYXV0aF9wcm92aWRlcl94NTA5X2NlcnRfdXJsIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL29hdXRoMi92MS9jZXJ0cyIsCiAgImNsaWVudF94NTA5X2NlcnRfdXJsIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3JvYm90L3YxL21ldGFkYXRhL3g1MDkvZ2l0cG9kLXJlZ2lzdHJ5JTQwZ3BsLXNoLTA5MC0zLmlhbS5nc2VydmljZWFjY291bnQuY29tIgp9Cg==\"\n\t\t}\n\t}\n}" + }, + "id": "default/gitpod-registry", + "metadata": [ + { + "annotations": {}, + "generate_name": "", + "generation": 0, + "labels": {}, + "name": "gitpod-registry", + "namespace": "default", + "resource_version": "16569", + "self_link": "", + "uid": "6ba415b6-0515-4ecc-a4ea-fe8d086de2f8" + } + ], + "type": "kubernetes.io/dockerconfigjson" + }, + "sensitive_attributes": [], + "private": "bnVsbA==", + "dependencies": [ + "data.google_client_config.provider", + "google_compute_network.gitpod", + "module.kubernetes.google_compute_subnetwork.gitpod", + "module.kubernetes.google_container_cluster.gitpod", + "module.registry.data.template_file.registry", + "module.registry.google_service_account.gitpod_registry", + "module.registry.google_service_account_key.gitpod_registry" + ] + } + ] + }, + { + "module": "module.storage", + "mode": "data", + "type": "template_file", + "name": "values", + "provider": "provider[\"registry.terraform.io/hashicorp/template\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "filename": null, + "id": "b153ed4bdbcbe293c5284b8fac073b869023f99475d17539b511eee26941e262", + "rendered": "# Copyright (c) 2020 Gitpod GmbH. All rights reserved.\n# Licensed under the MIT License. See License-MIT.txt in the project root for license information.\n\ncomponents:\n\n contentService:\n remoteStorage:\n kind: gcloud\n # Not strictly necessary, but nice-to-have\n backupTrail:\n enabled: true\n maxLength: 3\n gcloud:\n parallelUpload: 6\n maximumBackupSize: 32212254720 # 30 GiB\n projectId: gpl-sh-090-3\n region: europe-west3\n credentialsFile: /credentials/key.json\n tmpdir: /mnt/sync-tmp\n\n wsDaemon:\n hostWorkspaceArea: /var/gitpod/workspaces\n containerRuntime:\n runtime: containerd\n containerd:\n socket: /run/containerd/containerd.sock\n nodeRoots:\n - /var/lib\n # we want to be as compatible as possible, so disable those\n userNamespaces:\n shiftfsModuleLoader:\n enabled: false\n # seccompProfileInstaller:\n # enabled: true\n volumes:\n - name: gcloud-creds\n secret:\n secretName: gcloud-creds\n - name: gcloud-tmp\n hostPath:\n path: /mnt/disks/ssd0/sync-tmp\n type: DirectoryOrCreate\n volumeMounts:\n - mountPath: /credentials\n name: gcloud-creds\n - mountPath: /mnt/sync-tmp\n name: gcloud-tmp\n\n wsManager:\n volumes:\n - name: gcloud-creds\n secret:\n secretName: gcloud-creds\n volumeMounts:\n - mountPath: /credentials\n name: gcloud-creds\n\nminio:\n enabled: false\n", + "template": "# Copyright (c) 2020 Gitpod GmbH. All rights reserved.\n# Licensed under the MIT License. See License-MIT.txt in the project root for license information.\n\ncomponents:\n\n contentService:\n remoteStorage:\n kind: gcloud\n # Not strictly necessary, but nice-to-have\n backupTrail:\n enabled: true\n maxLength: 3\n gcloud:\n parallelUpload: 6\n maximumBackupSize: 32212254720 # 30 GiB\n projectId: ${project}\n region: ${region}\n credentialsFile: /credentials/key.json\n tmpdir: /mnt/sync-tmp\n\n wsDaemon:\n hostWorkspaceArea: /var/gitpod/workspaces\n containerRuntime:\n runtime: containerd\n containerd:\n socket: /run/containerd/containerd.sock\n nodeRoots:\n - /var/lib\n # we want to be as compatible as possible, so disable those\n userNamespaces:\n shiftfsModuleLoader:\n enabled: false\n # seccompProfileInstaller:\n # enabled: true\n volumes:\n - name: gcloud-creds\n secret:\n secretName: ${secretName}\n - name: gcloud-tmp\n hostPath:\n path: /mnt/disks/ssd0/sync-tmp\n type: DirectoryOrCreate\n volumeMounts:\n - mountPath: /credentials\n name: gcloud-creds\n - mountPath: /mnt/sync-tmp\n name: gcloud-tmp\n\n wsManager:\n volumes:\n - name: gcloud-creds\n secret:\n secretName: ${secretName}\n volumeMounts:\n - mountPath: /credentials\n name: gcloud-creds\n\nminio:\n enabled: false\n", + "vars": { + "project": "gpl-sh-090-3", + "region": "europe-west3", + "secretName": "gcloud-creds" + } + }, + "sensitive_attributes": [] + } + ] + }, + { + "module": "module.storage", + "mode": "managed", + "type": "google_project_iam_member", + "name": "gitpod_storage", + "provider": "provider[\"registry.terraform.io/hashicorp/google\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "condition": [], + "etag": "BwXBasRJJWc=", + "id": "gpl-sh-090-3/roles/storage.admin/serviceAccount:gitpod-storage@gpl-sh-090-3.iam.gserviceaccount.com", + "member": "serviceAccount:gitpod-storage@gpl-sh-090-3.iam.gserviceaccount.com", + "project": "gpl-sh-090-3", + "role": "roles/storage.admin" + }, + "sensitive_attributes": [], + "private": "bnVsbA==", + "dependencies": [ + "module.storage.google_service_account.gitpod_storage" + ] + } + ] + }, + { + "module": "module.storage", + "mode": "managed", + "type": "google_project_service", + "name": "storage", + "provider": "provider[\"registry.terraform.io/hashicorp/google\"]", + "instances": [ + { + "index_key": 0, + "schema_version": 0, + "attributes": { + "disable_dependent_services": false, + "disable_on_destroy": false, + "id": "gpl-sh-090-3/storage-api.googleapis.com", + "project": "gpl-sh-090-3", + "service": "storage-api.googleapis.com", + "timeouts": null + }, + "sensitive_attributes": [], + "private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjoxMjAwMDAwMDAwMDAwLCJkZWxldGUiOjEyMDAwMDAwMDAwMDAsInJlYWQiOjYwMDAwMDAwMDAwMCwidXBkYXRlIjoxMjAwMDAwMDAwMDAwfX0=" + }, + { + "index_key": 1, + "schema_version": 0, + "attributes": { + "disable_dependent_services": false, + "disable_on_destroy": false, + "id": "gpl-sh-090-3/storage-component.googleapis.com", + "project": "gpl-sh-090-3", + "service": "storage-component.googleapis.com", + "timeouts": null + }, + "sensitive_attributes": [], + "private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjoxMjAwMDAwMDAwMDAwLCJkZWxldGUiOjEyMDAwMDAwMDAwMDAsInJlYWQiOjYwMDAwMDAwMDAwMCwidXBkYXRlIjoxMjAwMDAwMDAwMDAwfX0=" + } + ] + }, + { + "module": "module.storage", + "mode": "managed", + "type": "google_service_account", + "name": "gitpod_storage", + "provider": "provider[\"registry.terraform.io/hashicorp/google\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "account_id": "gitpod-storage", + "description": "gitpod-workspace-syncer", + "display_name": "gitpod-storage", + "email": "gitpod-storage@gpl-sh-090-3.iam.gserviceaccount.com", + "id": "projects/gpl-sh-090-3/serviceAccounts/gitpod-storage@gpl-sh-090-3.iam.gserviceaccount.com", + "name": "projects/gpl-sh-090-3/serviceAccounts/gitpod-storage@gpl-sh-090-3.iam.gserviceaccount.com", + "project": "gpl-sh-090-3", + "timeouts": null, + "unique_id": "114284941115824702053" + }, + "sensitive_attributes": [], + "private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjozMDAwMDAwMDAwMDB9fQ==" + } + ] + }, + { + "module": "module.storage", + "mode": "managed", + "type": "google_service_account_key", + "name": "gitpod_storage", + "provider": "provider[\"registry.terraform.io/hashicorp/google\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "id": "projects/gpl-sh-090-3/serviceAccounts/gitpod-storage@gpl-sh-090-3.iam.gserviceaccount.com/keys/428592efd55c9e5d7ffef6449b95d14250ad6272", + "keepers": null, + "key_algorithm": "KEY_ALG_RSA_2048", + "name": "projects/gpl-sh-090-3/serviceAccounts/gitpod-storage@gpl-sh-090-3.iam.gserviceaccount.com/keys/428592efd55c9e5d7ffef6449b95d14250ad6272", + "private_key": "ewogICJ0eXBlIjogInNlcnZpY2VfYWNjb3VudCIsCiAgInByb2plY3RfaWQiOiAiZ3BsLXNoLTA5MC0zIiwKICAicHJpdmF0ZV9rZXlfaWQiOiAiNDI4NTkyZWZkNTVjOWU1ZDdmZmVmNjQ0OWI5NWQxNDI1MGFkNjI3MiIsCiAgInByaXZhdGVfa2V5IjogIi0tLS0tQkVHSU4gUFJJVkFURSBLRVktLS0tLVxuTUlJRXZnSUJBREFOQmdrcWhraUc5dzBCQVFFRkFBU0NCS2d3Z2dTa0FnRUFBb0lCQVFEUXJJeW0xcnBMbWkrVlxuSFlXWFNLZnBxQ2V1UmNtSUtoQUlKRzYyWHlrb1FZUWp6NWM3OUI3ZGtZY3FqNWhmeVZsODdseVF0OWpWM0d4Mlxud0xsSnRpZWxrZ3oxY3JoUC9XWXlEMWo2aFJhOWN4WEhIWXRzckxHUVdMc014UXJVcDRGQjR1V0lQK1k5dGUxWFxuQVZmME5Ra2hMUTJoNHl2N09ncmRnc1BLeEhaVW5OUytJdThkcHFkd1p5VktGWW44K0diU29DMkxTS0NPV09VT1xuRWY2bzRhQlVLTGRSSlppS1B5d1BJVDBpSzlwb1U5S3k1bnBpc1pNYXE5K3NCQkNxNVNqdUVwNXpnRDZRNWxsN1xuYTFyWGVXN0U0V0htQkdlVndjUFVkVTBUejhacUE4TDZaS2t5S1o0ejdDa0V0RVV4L0RrMlNidXFTK2N4NjZ6MVxuU3JPWElnbG5BZ01CQUFFQ2dnRUFWZ3RvWGQwNTZUVzFQQi8xdDNsaW41TFNkZVpaNFBjek1DQlJ0SXFOcm9kQlxuWlFEUzVBcFg5ZFh0cmN1VE1hQVZjZEhad21URW1QNndqTkVRTmdoUjFkQmczbzdFMkZydEdtUkF0T0JQRGFSWVxuVFFmdU4wd0lWYlI0d0oyNVJ4R2cxMW1uZXVTYVhFVFpqbUJEODdNd3hnak5UNzBjSkJYOVovUmxKb1dYSTNEZVxuOTFIUWMwK0dLODZKYXMvMEI1K2FIeFFqVE00ODVINHVDOFVFczlGbUFXUFFZREFpaWRpcmxiemNFVm1nYU5YS1xuUUZqRHVHSnJiOEttbWI0Sk0yKzl3TUdJNzgvUzdYOHZvN0o4NnRjZFlwYzhodUllVXJhR05KWDZKZi85OVAweFxuVTZOaFd4UVJoZ0RmV3RteUVLazdWRGVXS2RPK2t5UzBaV2RvQ0FTc0dRS0JnUUR3aWtmYS9mUzA5N1kwTUVRRlxuMndLenhrWS8wRy9MY2w4bDl0Mk5FQWdIL2NBTnVIdjk0QjJIRFBGNmMxcGUxcjczNEtZQVAwUVEybUdFU0ZCeVxuRlA2R3NzSVdrVDJmMXpVeGN6eHhSU3FYUVU2bVd5TEYyVFZIMzFOQ2tDTUdHdFg3YWc0SzQ2Y3hnMU9IdUQyRFxualMzM1M1S0FSSUFqaFEwQkYwTmd6aSsxR1FLQmdRRGVGZlhYdWR1cHFES09wdFFxV0RkcTdBdUxJZ25pRENzMVxuNk1DU2RoWkVvUmo0bW1WaGFKUlN6MlYyRzlXZXVwem14blVnODRHT1RLU0o3WUMxK2FqTTFBQmdQQ3hJMjE1SVxuZ0tta1RnbnViKzhhNFVrUEFkVXRpRVkzbHBZNE1yRCt2Z2FiaEdkSExndnBSak9jWlhnMUd0T05xelVOQTIzSlxuczhVM0N4VUNmd0tCZ1FDck9nUkVnNXI2WjRzd1ExdG92NnFBeHBlalBZRVhWZWNkWTBuNjdIcUxGYnJ0Q1hKYVxuR250cWMzQkNObk1TSjlQeEo5MkRONFlBYVRRWnNsQnhwVGc2TW0ydkd0eS9ON2NKNkhvU042WkYzWnRiR0d6OFxuWWM1bnh6WEJvRkVPTzNRdmNDTm01UDlUWTZUR2JBUjk3TFhYMzlmOXJzVjRnM0hxWU9ENXZFeUJvUUtCZ0M0SlxuKzJiM1BwUlRLL2ZxbWIwVmdKZUh5M1RTWDU0ZXk2NW5TOVNRNmxqYjFLTmt6bk45REpLR01CQm1BTWpoQXJuTVxubG1kNFUzaytaalc1cUo4UTNHOXAyNUlYcDA2TE8yWm9WY0tiOHU4ZEFVSmZSWmY0MTBxVEg0dFNpbDJvRkkwYVxuczUvMXVMdEd6bTFUZ2t0L3RZVzh3L0p3ZFpUM0N3RnZaUWplSVVMZEFvR0JBSTVhYVdtU0FRdVQxKzBYS2kzV1xuZXZ4Mis3eFkxZDdHT0ZKYm41VDl4czk5RE85RGdlYnZ6OGh0c0tzZVB5ZjVzMkNaeTlERjJMWEQ1d3N1d2lGaFxuZkt0cDdxbytBUkZFOUE4SjVmUXNvMHd2ei9IUzFReGxwYW1RbjJVOEVOd3JIU1hkSFdGT3RLbzhsSTVDT0RFVFxueXpGN2pxak5ZY3FXU2lGZGZ0VmVwWUJ3XG4tLS0tLUVORCBQUklWQVRFIEtFWS0tLS0tXG4iLAogICJjbGllbnRfZW1haWwiOiAiZ2l0cG9kLXN0b3JhZ2VAZ3BsLXNoLTA5MC0zLmlhbS5nc2VydmljZWFjY291bnQuY29tIiwKICAiY2xpZW50X2lkIjogIjExNDI4NDk0MTExNTgyNDcwMjA1MyIsCiAgImF1dGhfdXJpIjogImh0dHBzOi8vYWNjb3VudHMuZ29vZ2xlLmNvbS9vL29hdXRoMi9hdXRoIiwKICAidG9rZW5fdXJpIjogImh0dHBzOi8vb2F1dGgyLmdvb2dsZWFwaXMuY29tL3Rva2VuIiwKICAiYXV0aF9wcm92aWRlcl94NTA5X2NlcnRfdXJsIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL29hdXRoMi92MS9jZXJ0cyIsCiAgImNsaWVudF94NTA5X2NlcnRfdXJsIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3JvYm90L3YxL21ldGFkYXRhL3g1MDkvZ2l0cG9kLXN0b3JhZ2UlNDBncGwtc2gtMDkwLTMuaWFtLmdzZXJ2aWNlYWNjb3VudC5jb20iCn0K", + "private_key_type": "TYPE_GOOGLE_CREDENTIALS_FILE", + "public_key": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUMvRENDQWVTZ0F3SUJBZ0lJUDJPWGtkaVNPcHN3RFFZSktvWklodmNOQVFFRkJRQXdJREVlTUJ3R0ExVUUKQXhNVk1URTBNamcwT1RReE1URTFPREkwTnpBeU1EVXpNQ0FYRFRJeE1EVXdNekV3TkRFME5sb1lEems1T1RreApNak14TWpNMU9UVTVXakFnTVI0d0hBWURWUVFERXhVeE1UUXlPRFE1TkRFeE1UVTRNalEzTURJd05UTXdnZ0VpCk1BMEdDU3FHU0liM0RRRUJBUVVBQTRJQkR3QXdnZ0VLQW9JQkFRRFFySXltMXJwTG1pK1ZIWVdYU0tmcHFDZXUKUmNtSUtoQUlKRzYyWHlrb1FZUWp6NWM3OUI3ZGtZY3FqNWhmeVZsODdseVF0OWpWM0d4MndMbEp0aWVsa2d6MQpjcmhQL1dZeUQxajZoUmE5Y3hYSEhZdHNyTEdRV0xzTXhRclVwNEZCNHVXSVArWTl0ZTFYQVZmME5Ra2hMUTJoCjR5djdPZ3JkZ3NQS3hIWlVuTlMrSXU4ZHBxZHdaeVZLRlluOCtHYlNvQzJMU0tDT1dPVU9FZjZvNGFCVUtMZFIKSlppS1B5d1BJVDBpSzlwb1U5S3k1bnBpc1pNYXE5K3NCQkNxNVNqdUVwNXpnRDZRNWxsN2ExclhlVzdFNFdIbQpCR2VWd2NQVWRVMFR6OFpxQThMNlpLa3lLWjR6N0NrRXRFVXgvRGsyU2J1cVMrY3g2NnoxU3JPWElnbG5BZ01CCkFBR2pPREEyTUF3R0ExVWRFd0VCL3dRQ01BQXdEZ1lEVlIwUEFRSC9CQVFEQWdlQU1CWUdBMVVkSlFFQi93UU0KTUFvR0NDc0dBUVVGQndNQ01BMEdDU3FHU0liM0RRRUJCUVVBQTRJQkFRQ3k1QVJGakhvU1JMQlpOU2E5djZSKwozVlNvMERGNE1mQzNYU2d0SG9QeVpQcUF1TGxrVjNQZFUxZzF3TlRpY002UXF6dVJ0VVdCeEk1MUp5cXo4VGc4ClJhQ2MvQ3o0NWt5T05mendvZGNzb3dhL3hQOXlDNG5EVmdsaEt4TzVYUDZITGplYmhtcHBrTE1DMzd5WjVVbjkKemF4c251RVZUMVVXZVhjSDYyYU1OeDFxVEVEWkJsRSt6dDdSUEhKR1ZBeHk4YzRhSXVVN21BTEZobjR6THBxWQpLMHVHYTlmUmRJbm5QNDMycWQvZWwva3lUbDlEYmlKdzNDUzRGSVZsZ3Z1ZitlUVdpTGxlZUhtcElYYzM1L2taCkFzNWtXM3M0WUlwWEhGNEtRbHAvTVgwK3QvN25Wc0R4WkQ5a21uR3hvdU0vMldEaVl0dkVUUW9xQVNONmVLaVYKLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQo=", + "public_key_data": null, + "public_key_type": "TYPE_X509_PEM_FILE", + "service_account_id": "projects/gpl-sh-090-3/serviceAccounts/gitpod-storage@gpl-sh-090-3.iam.gserviceaccount.com", + "valid_after": "2021-05-03T10:41:46Z", + "valid_before": "9999-12-31T23:59:59Z" + }, + "sensitive_attributes": [], + "private": "bnVsbA==", + "dependencies": [ + "module.storage.google_service_account.gitpod_storage" + ] + } + ] + }, + { + "module": "module.storage", + "mode": "managed", + "type": "kubernetes_secret", + "name": "storage", + "provider": "provider[\"registry.terraform.io/hashicorp/kubernetes\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "data": { + "key.json": "{\n \"type\": \"service_account\",\n \"project_id\": \"gpl-sh-090-3\",\n \"private_key_id\": \"428592efd55c9e5d7ffef6449b95d14250ad6272\",\n \"private_key\": \"-----BEGIN PRIVATE KEY-----\\nMIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDQrIym1rpLmi+V\\nHYWXSKfpqCeuRcmIKhAIJG62XykoQYQjz5c79B7dkYcqj5hfyVl87lyQt9jV3Gx2\\nwLlJtielkgz1crhP/WYyD1j6hRa9cxXHHYtsrLGQWLsMxQrUp4FB4uWIP+Y9te1X\\nAVf0NQkhLQ2h4yv7OgrdgsPKxHZUnNS+Iu8dpqdwZyVKFYn8+GbSoC2LSKCOWOUO\\nEf6o4aBUKLdRJZiKPywPIT0iK9poU9Ky5npisZMaq9+sBBCq5SjuEp5zgD6Q5ll7\\na1rXeW7E4WHmBGeVwcPUdU0Tz8ZqA8L6ZKkyKZ4z7CkEtEUx/Dk2SbuqS+cx66z1\\nSrOXIglnAgMBAAECggEAVgtoXd056TW1PB/1t3lin5LSdeZZ4PczMCBRtIqNrodB\\nZQDS5ApX9dXtrcuTMaAVcdHZwmTEmP6wjNEQNghR1dBg3o7E2FrtGmRAtOBPDaRY\\nTQfuN0wIVbR4wJ25RxGg11mneuSaXETZjmBD87MwxgjNT70cJBX9Z/RlJoWXI3De\\n91HQc0+GK86Jas/0B5+aHxQjTM485H4uC8UEs9FmAWPQYDAiidirlbzcEVmgaNXK\\nQFjDuGJrb8Kmmb4JM2+9wMGI78/S7X8vo7J86tcdYpc8huIeUraGNJX6Jf/99P0x\\nU6NhWxQRhgDfWtmyEKk7VDeWKdO+kyS0ZWdoCASsGQKBgQDwikfa/fS097Y0MEQF\\n2wKzxkY/0G/Lcl8l9t2NEAgH/cANuHv94B2HDPF6c1pe1r734KYAP0QQ2mGESFBy\\nFP6GssIWkT2f1zUxczxxRSqXQU6mWyLF2TVH31NCkCMGGtX7ag4K46cxg1OHuD2D\\njS33S5KARIAjhQ0BF0Ngzi+1GQKBgQDeFfXXudupqDKOptQqWDdq7AuLIgniDCs1\\n6MCSdhZEoRj4mmVhaJRSz2V2G9WeupzmxnUg84GOTKSJ7YC1+ajM1ABgPCxI215I\\ngKmkTgnub+8a4UkPAdUtiEY3lpY4MrD+vgabhGdHLgvpRjOcZXg1GtONqzUNA23J\\ns8U3CxUCfwKBgQCrOgREg5r6Z4swQ1tov6qAxpejPYEXVecdY0n67HqLFbrtCXJa\\nGntqc3BCNnMSJ9PxJ92DN4YAaTQZslBxpTg6Mm2vGty/N7cJ6HoSN6ZF3ZtbGGz8\\nYc5nxzXBoFEOO3QvcCNm5P9TY6TGbAR97LXX39f9rsV4g3HqYOD5vEyBoQKBgC4J\\n+2b3PpRTK/fqmb0VgJeHy3TSX54ey65nS9SQ6ljb1KNkznN9DJKGMBBmAMjhArnM\\nlmd4U3k+ZjW5qJ8Q3G9p25IXp06LO2ZoVcKb8u8dAUJfRZf410qTH4tSil2oFI0a\\ns5/1uLtGzm1Tgkt/tYW8w/JwdZT3CwFvZQjeIULdAoGBAI5aaWmSAQuT1+0XKi3W\\nevx2+7xY1d7GOFJbn5T9xs99DO9Dgebvz8htsKsePyf5s2CZy9DF2LXD5wsuwiFh\\nfKtp7qo+ARFE9A8J5fQso0wvz/HS1QxlpamQn2U8ENwrHSXdHWFOtKo8lI5CODET\\nyzF7jqjNYcqWSiFdftVepYBw\\n-----END PRIVATE KEY-----\\n\",\n \"client_email\": \"gitpod-storage@gpl-sh-090-3.iam.gserviceaccount.com\",\n \"client_id\": \"114284941115824702053\",\n \"auth_uri\": \"https://accounts.google.com/o/oauth2/auth\",\n \"token_uri\": \"https://oauth2.googleapis.com/token\",\n \"auth_provider_x509_cert_url\": \"https://www.googleapis.com/oauth2/v1/certs\",\n \"client_x509_cert_url\": \"https://www.googleapis.com/robot/v1/metadata/x509/gitpod-storage%40gpl-sh-090-3.iam.gserviceaccount.com\"\n}\n" + }, + "id": "default/gcloud-creds", + "metadata": [ + { + "annotations": {}, + "generate_name": "", + "generation": 0, + "labels": {}, + "name": "gcloud-creds", + "namespace": "default", + "resource_version": "16804", + "self_link": "", + "uid": "ac421325-dd62-4c3a-8e57-bc0d22cba8a9" + } + ], + "type": "Opaque" + }, + "sensitive_attributes": [], + "private": "bnVsbA==", + "dependencies": [ + "data.google_client_config.provider", + "google_compute_network.gitpod", + "module.kubernetes.google_compute_subnetwork.gitpod", + "module.kubernetes.google_container_cluster.gitpod", + "module.storage.google_service_account.gitpod_storage", + "module.storage.google_service_account_key.gitpod_storage" + ] + } + ] + } + ] +} diff --git a/install/gcp-terraform/modules/gitpod/templates/values.node-layout.tpl b/install/gcp-terraform/environment/full/values.static.yaml similarity index 92% rename from install/gcp-terraform/modules/gitpod/templates/values.node-layout.tpl rename to install/gcp-terraform/environment/full/values.static.yaml index 83cd3eee5ab966..9009bab84cc0b2 100644 --- a/install/gcp-terraform/modules/gitpod/templates/values.node-layout.tpl +++ b/install/gcp-terraform/environment/full/values.static.yaml @@ -1,6 +1,7 @@ # Copyright (c) 2020 Gitpod GmbH. All rights reserved. # Licensed under the MIT License. See License-MIT.txt in the project root for license information. +# Node Layout components: imageBuilder: # The image builder deploys a Docker-in-Docker-daemon. By default that Docker daemon works in an empty-dir on the node. @@ -10,4 +11,4 @@ components: wsSync: # Workspace data is stored on the nodes. This setting configures where on the ndoe the workspace data lives. # The faster this location is (in terms of IO) the faster workspaces will initialize. - hostWorkspaceArea: /mnt/disks/ssd0/workspaces + hostWorkspaceArea: /mnt/disks/ssd0/workspaces \ No newline at end of file diff --git a/install/gcp-terraform/environment/full/values.terraform.yaml b/install/gcp-terraform/environment/full/values.terraform.yaml new file mode 100755 index 00000000000000..85033fffab962c --- /dev/null +++ b/install/gcp-terraform/environment/full/values.terraform.yaml @@ -0,0 +1,30 @@ +# Copyright (c) 2021 Gitpod GmbH. All rights reserved. +# Licensed under the MIT License. See License-MIT.txt in the project root for license information. + +"branding": + "homepage": "gpl.gitpod-self-hosted.com" + "redirectUrlAfterLogout": "gpl.gitpod-self-hosted.com" + "redirectUrlIfNotAuthenticated": "/workspaces/" +"certificatesSecret": + "chainName": "tls.crt" + "fullChainName": "tls.crt" + "keyName": "tls.key" + "secretName": "gitpod-certificate" +"components": + "db": + "autoMigrate": true + "gcloudSqlProxy": + "credentials": "gcloud-sql-token" + "enabled": true + "instance": "gpl-sh-090-3:europe-west3:gitpod-db-f68922fd" + "serviceType": "ClusterIP" +"db": + "host": "10.194.0.3" + "password": "kqbPzZLO29P%N_tq" +"docker-registry": + "enabled": false +"hostname": "gpl.gitpod-self-hosted.com" +"minio": + "enabled": false +"mysql": + "enabled": false diff --git a/install/gcp-terraform/environment/full/values.yaml b/install/gcp-terraform/environment/full/values.yaml deleted file mode 100644 index e0f7dd8afc1184..00000000000000 --- a/install/gcp-terraform/environment/full/values.yaml +++ /dev/null @@ -1,13 +0,0 @@ -# Copyright (c) 2021 Gitpod GmbH. All rights reserved. -# Licensed under the MIT License. See License-MIT.txt in the project root for license information. - -certificatesSecret: {} - -components: - wsProxy: - ingress: - portRange: - start: 10000 - end: 11000 - -authProviders: [] \ No newline at end of file diff --git a/install/gcp-terraform/environment/full/variables.tf b/install/gcp-terraform/environment/full/variables.tf index 16dd7519d2484a..0efe4472416fcb 100644 --- a/install/gcp-terraform/environment/full/variables.tf +++ b/install/gcp-terraform/environment/full/variables.tf @@ -12,13 +12,7 @@ variable "region" { type = string } -variable "container_registry" { - type = object({ - location = string - }) -} - -variable "zone_name" { +variable "hostname" { type = string } @@ -30,22 +24,3 @@ variable "namespace" { variable "certificate_email" { type = string } - -variable "license" { - type = string - default = "" -} - -variable "database" { - type = object({ - name = string - }) - default = { - name = "db" - } -} - -variable "subdomain" { - type = string - default = "gitpod" -} diff --git a/install/gcp-terraform/environment/full/versions.tf b/install/gcp-terraform/environment/full/versions.tf index d8977b3b5586df..0f3e291930d736 100644 --- a/install/gcp-terraform/environment/full/versions.tf +++ b/install/gcp-terraform/environment/full/versions.tf @@ -16,8 +16,7 @@ terraform { source = "hashicorp/helm" } kubectl = { - source = "gavinbunney/kubectl" - version = "1.9.4" + source = "gavinbunney/kubectl" } } } diff --git a/install/gcp-terraform/environment/installer/.gitignore b/install/gcp-terraform/environment/installer/.gitignore deleted file mode 100644 index 6619ac8c1d6175..00000000000000 --- a/install/gcp-terraform/environment/installer/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -.terraform -debug.tfvars -secrets/ \ No newline at end of file diff --git a/install/gcp-terraform/environment/installer/BUILD.yaml b/install/gcp-terraform/environment/installer/BUILD.yaml deleted file mode 100644 index e22bb96da68aad..00000000000000 --- a/install/gcp-terraform/environment/installer/BUILD.yaml +++ /dev/null @@ -1,15 +0,0 @@ -# Copyright (c) 2020 Gitpod GmbH. All rights reserved. -# Licensed under the MIT License. See License-MIT.txt in the project root for license information. - -packages: - - name: lib - type: generic - srcs: - - "**/*.tf" - - "**/*.tfvars" - - "**/*.tpl" - - "**/*.yaml" - - "**/*.md" - config: - commands: - - ["echo"] diff --git a/install/gcp-terraform/environment/installer/main.auto.tfvars b/install/gcp-terraform/environment/installer/main.auto.tfvars deleted file mode 100644 index 4fa19f3f56a56f..00000000000000 --- a/install/gcp-terraform/environment/installer/main.auto.tfvars +++ /dev/null @@ -1 +0,0 @@ -certificate_email = "certificates@your-domain.com" diff --git a/install/gcp-terraform/environment/installer/main.tf b/install/gcp-terraform/environment/installer/main.tf deleted file mode 100644 index b3e7558e08c95c..00000000000000 --- a/install/gcp-terraform/environment/installer/main.tf +++ /dev/null @@ -1,88 +0,0 @@ -/** - * Copyright (c) 2020 Gitpod GmbH. All rights reserved. - * Licensed under the MIT License. See License-MIT.txt in the project root for license information. - */ - - -resource "google_compute_network" "gitpod" { - name = "gitpod" - description = "Gitpod Cluster Network" - auto_create_subnetworks = false - project = var.project -} - -module "kubernetes" { - source = "./modules/kubernetes" - - name = "gitpod" - network = google_compute_network.gitpod.name - project = var.project - region = var.region -} - -module "registry" { - source = "./modules/registry" - - name = "gitpod" - project = var.project - location = "EU" - - providers = { - google = google - kubernetes = kubernetes - } -} - -module "storage" { - source = "./modules/storage" - - name = "gitpod" - project = var.project - region = var.region - location = "EU" -} - -resource "google_compute_address" "gitpod" { - name = "gitpod-static-ip" - - project = var.project - region = var.region -} - -locals { - hostname = "${var.domain == "" ? local.mygitpod_domain : var.domain}" - mygitpod_prefix = replace(google_compute_address.gitpod.address,".","-") - mygitpod_domain = "${local.mygitpod_prefix}.ip.mygitpod.com" -} - -data "template_file" "values" { - template = file("${path.cwd}/templates/values.tpl") - vars = { - hostname = local.hostname - loadbalancer_ip = google_compute_address.gitpod.address - certbot_enabled = var.certbot_enabled - certbot_email = var.certificate_email - force_https = var.force_https - } -} -module "gitpod" { - source = "./modules/gitpod" - - project = var.project - region = var.region - namespace = var.kubernetes.namespace - gitpod = { - chart = var.chart_location - image_prefix = var.image_prefix - version = var.image_version - } - values = data.template_file.values.rendered - registry_values = module.registry.values - storage_values = module.storage.values - - providers = { - google = google - kubernetes = kubernetes - helm = helm - } -} diff --git a/install/gcp-terraform/environment/installer/modules b/install/gcp-terraform/environment/installer/modules deleted file mode 120000 index 8b0e8540076d9f..00000000000000 --- a/install/gcp-terraform/environment/installer/modules +++ /dev/null @@ -1 +0,0 @@ -../../modules \ No newline at end of file diff --git a/install/gcp-terraform/environment/installer/outputs.tf b/install/gcp-terraform/environment/installer/outputs.tf deleted file mode 100644 index aa08097c0c1760..00000000000000 --- a/install/gcp-terraform/environment/installer/outputs.tf +++ /dev/null @@ -1,13 +0,0 @@ -/** - * Copyright (c) 2020 Gitpod GmbH. All rights reserved. - * Licensed under the MIT License. See License-MIT.txt in the project root for license information. - */ - - -output "public_ip" { - value = google_compute_address.gitpod.address -} - -output "hostname" { - value = local.hostname -} diff --git a/install/gcp-terraform/environment/installer/providers.tf b/install/gcp-terraform/environment/installer/providers.tf deleted file mode 100644 index ce43f03fb294be..00000000000000 --- a/install/gcp-terraform/environment/installer/providers.tf +++ /dev/null @@ -1,26 +0,0 @@ -/** - * Copyright (c) 2020 Gitpod GmbH. All rights reserved. - * Licensed under the MIT License. See License-MIT.txt in the project root for license information. - */ -provider "google" { - project = var.project - region = var.region -} - -data "google_client_config" "provider" {} - -provider "kubernetes" { - load_config_file = "false" - - host = module.kubernetes.cluster.endpoint - token = data.google_client_config.provider.access_token - cluster_ca_certificate = base64decode(module.kubernetes.cluster.master_auth[0].cluster_ca_certificate) -} - -provider "helm" { - kubernetes { - host = module.kubernetes.cluster.endpoint - token = data.google_client_config.provider.access_token - cluster_ca_certificate = base64decode(module.kubernetes.cluster.master_auth[0].cluster_ca_certificate) - } -} diff --git a/install/gcp-terraform/environment/installer/templates/values.tpl b/install/gcp-terraform/environment/installer/templates/values.tpl deleted file mode 100644 index da3958d8ed54f2..00000000000000 --- a/install/gcp-terraform/environment/installer/templates/values.tpl +++ /dev/null @@ -1,17 +0,0 @@ -hostname: ${hostname} -components: - proxy: - loadBalancerIP: ${loadbalancer_ip} - certbot: - enabled: ${certbot_enabled} - email: ${certbot_email} - wsProxy: - disabled: false - ingress: - portRange: - start: 10000 - end: 11000 - -installPodSecurityPolicies: true -forceHTTPS: ${force_https} -authProviders: [] diff --git a/install/gcp-terraform/environment/installer/variables.tf b/install/gcp-terraform/environment/installer/variables.tf deleted file mode 100644 index be1e349d75e75d..00000000000000 --- a/install/gcp-terraform/environment/installer/variables.tf +++ /dev/null @@ -1,57 +0,0 @@ -/** - * Copyright (c) 2020 Gitpod GmbH. All rights reserved. - * Licensed under the MIT License. See License-MIT.txt in the project root for license information. - */ - -variable "project" { - type = string -} - -variable "region" { - type = string -} - -variable "domain" { - type = string - default = "ip.mygitpod.com" - description = "domain at which the installation will be available" -} - -variable "kubernetes" { - type = object({ - namespace = string - }) - default = { - namespace = "default" - } -} - - -variable "chart_location" { - type = string - default = "../../../../chart" -} - -variable "image_version" { - type = string -} - -variable "image_prefix" { - type = string - default = "eu.gcr.io/gitpod-core-dev/build/" -} - -variable "force_https" { - type = bool - default = false -} - -variable "certbot_enabled" { - type = bool - default = false -} - -variable "certificate_email" { - type = string - default = "someone@somewhere.com" -} diff --git a/install/gcp-terraform/modules/database/main.tf b/install/gcp-terraform/modules/database/main.tf index c791a4e7c92956..fa97805165c2fc 100644 --- a/install/gcp-terraform/modules/database/main.tf +++ b/install/gcp-terraform/modules/database/main.tf @@ -131,18 +131,6 @@ resource "google_compute_network_peering_routes_config" "servicenetwork" { ] } -resource "google_compute_network_peering_routes_config" "cloudsql" { - peering = "cloudsql-mysql-googleapis-com" - network = var.network.name - - import_custom_routes = true - export_custom_routes = true - - depends_on = [ - google_sql_database_instance.gitpod - ] -} - resource "kubernetes_secret" "database" { metadata { diff --git a/install/gcp-terraform/modules/database/templates/values.tpl b/install/gcp-terraform/modules/database/templates/values.tpl index 56182cb38f20d4..a03bf1ebfcad4e 100644 --- a/install/gcp-terraform/modules/database/templates/values.tpl +++ b/install/gcp-terraform/modules/database/templates/values.tpl @@ -4,11 +4,9 @@ db: host: "${host}" password: "${password}" - port: 3306 components: db: - name: db autoMigrate: true gcloudSqlProxy: enabled: true diff --git a/install/gcp-terraform/modules/dns/README.md b/install/gcp-terraform/modules/dns/README.md deleted file mode 100644 index e69de29bb2d1d6..00000000000000 diff --git a/install/gcp-terraform/modules/dns/locals.tf b/install/gcp-terraform/modules/dns/locals.tf deleted file mode 100644 index 054baee99afb7c..00000000000000 --- a/install/gcp-terraform/modules/dns/locals.tf +++ /dev/null @@ -1,8 +0,0 @@ -/** - * Copyright (c) 2021 Gitpod GmbH. All rights reserved. - * Licensed under the MIT License. See License-MIT.txt in the project root for license information. - */ - -locals { - hostname = trimsuffix("${var.subdomain}.${data.google_dns_managed_zone.gitpod.dns_name}", ".") -} \ No newline at end of file diff --git a/install/gcp-terraform/modules/dns/main.tf b/install/gcp-terraform/modules/dns/main.tf index b720356525b8f7..fc8aa4c27bc4b1 100644 --- a/install/gcp-terraform/modules/dns/main.tf +++ b/install/gcp-terraform/modules/dns/main.tf @@ -22,9 +22,12 @@ resource "google_project_service" "dns" { disable_on_destroy = false } -data "google_dns_managed_zone" "gitpod" { - name = var.zone_name +resource "google_dns_managed_zone" "gitpod" { + name = replace(var.hostname, ".", "-") project = var.project + + dns_name = "${var.hostname}." + description = "Gitpod DNS zone" } resource "google_compute_address" "gitpod" { @@ -35,10 +38,10 @@ resource "google_compute_address" "gitpod" { resource "google_dns_record_set" "gitpod" { count = length(local.dns_prefixes) - name = "${local.dns_prefixes[count.index]}${var.subdomain}.${data.google_dns_managed_zone.gitpod.dns_name}" + name = "${local.dns_prefixes[count.index]}${google_dns_managed_zone.gitpod.dns_name}" type = "A" ttl = 300 - managed_zone = data.google_dns_managed_zone.gitpod.name + managed_zone = google_dns_managed_zone.gitpod.name rrdatas = [google_compute_address.gitpod.address] project = var.project } @@ -82,7 +85,7 @@ resource "kubernetes_secret" "dns" { data "template_file" "values" { template = file("${path.module}/templates/values.tpl") vars = { - hostname = local.hostname + hostname = var.hostname loadBalancerIP = google_compute_address.gitpod.address } } diff --git a/install/gcp-terraform/modules/dns/outputs.tf b/install/gcp-terraform/modules/dns/outputs.tf index 04cb35cd639450..6d3859a8831969 100644 --- a/install/gcp-terraform/modules/dns/outputs.tf +++ b/install/gcp-terraform/modules/dns/outputs.tf @@ -11,10 +11,6 @@ output "values" { value = data.template_file.values.rendered } -output "hostname" { - value = local.hostname -} - output "address" { value = google_compute_address.gitpod.address } \ No newline at end of file diff --git a/install/gcp-terraform/modules/dns/templates/values.tpl b/install/gcp-terraform/modules/dns/templates/values.tpl index 81f50325d3f2c7..78d08b93afa0c9 100644 --- a/install/gcp-terraform/modules/dns/templates/values.tpl +++ b/install/gcp-terraform/modules/dns/templates/values.tpl @@ -1,6 +1,7 @@ # Copyright (c) 2020 Gitpod GmbH. All rights reserved. # Licensed under the MIT License. See License-MIT.txt in the project root for license information. +hostname: ${hostname} components: proxy: loadBalancerIP: ${loadBalancerIP} diff --git a/install/gcp-terraform/modules/dns/variables.tf b/install/gcp-terraform/modules/dns/variables.tf index c4463d8ddcae14..db584d847856bb 100644 --- a/install/gcp-terraform/modules/dns/variables.tf +++ b/install/gcp-terraform/modules/dns/variables.tf @@ -11,7 +11,7 @@ variable "region" { type = string } -variable "zone_name" { +variable "hostname" { type = string } @@ -19,11 +19,6 @@ variable "name" { type = string } -variable "subdomain" { - type = string - default = "gitpod" -} - variable "gitpod" { type = object({ namespace = string diff --git a/install/gcp-terraform/modules/gitpod/main.tf b/install/gcp-terraform/modules/gitpod/main.tf deleted file mode 100644 index ca2665192412f1..00000000000000 --- a/install/gcp-terraform/modules/gitpod/main.tf +++ /dev/null @@ -1,47 +0,0 @@ -/** - * Copyright (c) 2020 Gitpod GmbH. All rights reserved. - * Licensed under the MIT License. See License-MIT.txt in the project root for license information. - */ - - - - - -# -# Gitpod -# - -data "template_file" "node_layout_values" { - template = file("${path.module}/templates/values.node-layout.tpl") -} - -data "template_file" "values" { - template = file("${path.module}/templates/values.tpl") - vars = { - image_prefix = var.gitpod.image_prefix - version = var.gitpod.version - license = var.license - } -} - -resource "helm_release" "gitpod" { - name = "gitpod" - chart = "${path.root}/${var.gitpod.chart}" - - namespace = var.namespace - create_namespace = false - cleanup_on_fail = false - wait = false - dependency_update = true - - values = [ - var.values, - data.template_file.node_layout_values.rendered, - data.template_file.values.rendered, - var.dns_values, - var.certificate_values, - var.database_values, - var.registry_values, - var.storage_values, - ] -} diff --git a/install/gcp-terraform/modules/gitpod/templates/values.tpl b/install/gcp-terraform/modules/gitpod/templates/values.tpl deleted file mode 100644 index 90f839d4596e48..00000000000000 --- a/install/gcp-terraform/modules/gitpod/templates/values.tpl +++ /dev/null @@ -1,7 +0,0 @@ -# Copyright (c) 2020 Gitpod GmbH. All rights reserved. -# Licensed under the MIT License. See License-MIT.txt in the project root for license information. - -installPodSecurityPolicies: true -imagePrefix: ${image_prefix} -version: ${version} -license: ${license} diff --git a/install/gcp-terraform/modules/gitpod/variables.tf b/install/gcp-terraform/modules/gitpod/variables.tf deleted file mode 100644 index 9efb39804c0c92..00000000000000 --- a/install/gcp-terraform/modules/gitpod/variables.tf +++ /dev/null @@ -1,61 +0,0 @@ -/** - * Copyright (c) 2020 Gitpod GmbH. All rights reserved. - * Licensed under the MIT License. See License-MIT.txt in the project root for license information. - */ - - -variable "project" { - type = string -} - -variable "region" { - type = string -} - -variable "database_values" { - type = string - default = "" -} - -variable "storage_values" { - type = string - default = "" -} - -variable "registry_values" { - type = string - default = "" -} - -variable "dns_values" { - type = string - default = "" -} - -variable "certificate_values" { - type = string - default = "" -} - -variable "namespace" { - type = string - default = "default" -} - -variable "values" { - type = string - default = "" -} - -variable "gitpod" { - type = object({ - chart = string - version = string - image_prefix = string - }) -} - -variable "license" { - type = string - default = "" -} diff --git a/install/gcp-terraform/modules/kubernetes/README.md b/install/gcp-terraform/modules/kubernetes/README.md deleted file mode 100644 index 5d6b110cf6bfaf..00000000000000 --- a/install/gcp-terraform/modules/kubernetes/README.md +++ /dev/null @@ -1,18 +0,0 @@ -# Terraform Module: kubernetes - -This module installs the kubernetes cluster using the Google Kubernetes Engin (GKE). - - -## Input Variables - -- `project` -- `location`: either the region or zone for the cluster -- `name`: the name of the kubernetes cluster, default: gitpod-cluster -- `network`: the name of the network the cluster is created in, the value is taken from the `network` module -- `subnets`: a list of the subnets created in the `network` module - - - -## Output Variables - -- `cluster`: returns the cluster resource including the connection details used by the helm and kubernets modules \ No newline at end of file diff --git a/install/gcp-terraform/modules/kubernetes/main.tf b/install/gcp-terraform/modules/kubernetes/main.tf index 08693b7ba5a402..b43b1976ca72f5 100644 --- a/install/gcp-terraform/modules/kubernetes/main.tf +++ b/install/gcp-terraform/modules/kubernetes/main.tf @@ -105,7 +105,7 @@ resource "google_container_node_pool" "gitpod" { node_config { preemptible = false - machine_type = "n1-standard-8" + machine_type = "n2-standard-8" disk_size_gb = 100 disk_type = "pd-ssd" local_ssd_count = 1 diff --git a/install/gcp-terraform/modules/registry/README.md b/install/gcp-terraform/modules/registry/README.md deleted file mode 100644 index e69de29bb2d1d6..00000000000000 diff --git a/install/gcp-terraform/modules/registry/main.tf b/install/gcp-terraform/modules/registry/main.tf index 1087ff9d95f22e..ac71af05d0bbee 100644 --- a/install/gcp-terraform/modules/registry/main.tf +++ b/install/gcp-terraform/modules/registry/main.tf @@ -26,9 +26,9 @@ resource "google_project_service" "gitpod_registry" { # resource "google_service_account" "gitpod_registry" { - account_id = "gitpod-registry-${var.name}" - display_name = "gitpod-registry-${var.name}" - description = "Gitpod Registry ${var.name}" + account_id = "gitpod-registry" + display_name = "gitpod-registry" + description = "Gitpod Registry " project = var.project } diff --git a/install/gcp-terraform/modules/registry/templates/registry-auth.tpl b/install/gcp-terraform/modules/registry/templates/registry-auth.tpl index 433bd666087c34..f126810e3cf9c7 100644 --- a/install/gcp-terraform/modules/registry/templates/registry-auth.tpl +++ b/install/gcp-terraform/modules/registry/templates/registry-auth.tpl @@ -1,6 +1,6 @@ { "auths": { - "eu.gcr.io": { + "gcr.io": { "auth": "${auth}" } } diff --git a/install/gcp-terraform/modules/registry/templates/values.tpl b/install/gcp-terraform/modules/registry/templates/values.tpl index 9216ad02f4253f..a5cf0aed6a252e 100644 --- a/install/gcp-terraform/modules/registry/templates/values.tpl +++ b/install/gcp-terraform/modules/registry/templates/values.tpl @@ -5,9 +5,8 @@ components: imageBuilder: registryCerts: [] registry: - name: "eu.gcr.io/${project}" + name: "gcr.io/${project}" secretName: ${secretName} -# path: secrets/registry-auth.json workspace: pullSecret: @@ -15,7 +14,3 @@ components: docker-registry: enabled: false - -gitpod_selfhosted: - variants: - customRegistry: true diff --git a/install/gcp-terraform/modules/registry/variables.tf b/install/gcp-terraform/modules/registry/variables.tf index fab8ed1531225b..3e2469f063a0ae 100644 --- a/install/gcp-terraform/modules/registry/variables.tf +++ b/install/gcp-terraform/modules/registry/variables.tf @@ -8,15 +8,6 @@ variable "project" { type = string } -variable "location" { - type = string - default = "EU" -} - -variable "name" { - type = string -} - variable "gitpod" { type = object({ namespace = string diff --git a/install/gcp-terraform/modules/storage/README.md b/install/gcp-terraform/modules/storage/README.md deleted file mode 100644 index e69de29bb2d1d6..00000000000000 diff --git a/install/gcp-terraform/modules/storage/main.tf b/install/gcp-terraform/modules/storage/main.tf index 7defaf2d540a8f..93a438ba347723 100644 --- a/install/gcp-terraform/modules/storage/main.tf +++ b/install/gcp-terraform/modules/storage/main.tf @@ -28,9 +28,9 @@ resource "google_project_service" "storage" { # resource "google_service_account" "gitpod_storage" { - account_id = "gitpod-storage-${var.name}" - display_name = "gitpod-storage-${var.name}" - description = "gitpod-workspace-syncer ${var.name}" + account_id = "gitpod-storage" + display_name = "gitpod-storage" + description = "gitpod-workspace-syncer" project = var.project } diff --git a/install/gcp-terraform/modules/storage/templates/values.tpl b/install/gcp-terraform/modules/storage/templates/values.tpl index dca63c35ae12e4..df905ddb164688 100644 --- a/install/gcp-terraform/modules/storage/templates/values.tpl +++ b/install/gcp-terraform/modules/storage/templates/values.tpl @@ -6,6 +6,7 @@ components: contentService: remoteStorage: kind: gcloud + # Not strictly necessary, but nice-to-have backupTrail: enabled: true maxLength: 3 @@ -16,24 +17,21 @@ components: region: ${region} credentialsFile: /credentials/key.json tmpdir: /mnt/sync-tmp - parallelUpload: 6 wsDaemon: - name: "ws-daemon" hostWorkspaceArea: /var/gitpod/workspaces - servicePort: 8080 - workspaceSizeLimit: "" containerRuntime: runtime: containerd containerd: socket: /run/containerd/containerd.sock nodeRoots: - /var/lib + # we want to be as compatible as possible, so disable those userNamespaces: shiftfsModuleLoader: enabled: false - imageName: "shiftfs-module-loader" - registryProxyPort: 8081 + # seccompProfileInstaller: + # enabled: true volumes: - name: gcloud-creds secret: @@ -57,9 +55,5 @@ components: - mountPath: /credentials name: gcloud-creds - server: - storage: - secretName: ${secretName} - keyFilePath: key.json minio: enabled: false diff --git a/install/gcp-terraform/modules/storage/variables.tf b/install/gcp-terraform/modules/storage/variables.tf index aa217a04aaddb7..75c35708ee3749 100644 --- a/install/gcp-terraform/modules/storage/variables.tf +++ b/install/gcp-terraform/modules/storage/variables.tf @@ -8,19 +8,10 @@ variable "project" { type = string } -variable "location" { - type = string - default = "EU" -} - variable "region" { type = string } -variable "name" { - type = string -} - variable "gitpod" { type = object({ namespace = string diff --git a/install/installer/BUILD.yaml b/install/installer/BUILD.yaml deleted file mode 100644 index 6140914fa62c3c..00000000000000 --- a/install/installer/BUILD.yaml +++ /dev/null @@ -1,40 +0,0 @@ -packages: - - name: app - type: go - srcs: - - "go.mod" - - "go.sum" - - "**/*.go" - - "**/*.sum" - env: - - CGO_ENABLED=0 - - GOOS=linux - config: - packaging: app - - name: docker - type: docker - srcs: - - layout.yaml - - entrypoint.sh - deps: - - :app - - chart:helm - - install/gcp-terraform/modules:installer - - install/gcp-terraform/environment/installer:lib - - install/aws-terraform:lib - argdeps: - - version - config: - dockerfile: leeway.Dockerfile - image: - - ${imageRepoBase}/installer:${version} - buildArgs: - VERSION: ${version} - IMAGE_PREFIX: ${imageRepoBase} -scripts: - - name: publish-as-latest - deps: - - :docker - script: | - docker tag ${imageRepoBase}/installer:${version} ${imageRepoBase}/installer:latest - docker push ${imageRepoBase}/installer:latest diff --git a/install/installer/README.md b/install/installer/README.md deleted file mode 100644 index ec4a984d300de1..00000000000000 --- a/install/installer/README.md +++ /dev/null @@ -1,9 +0,0 @@ -## GCP - -``` -docker run --rm -it \ - -v $HOME/gitpod-gcp-installation:/workspace \ - -e PROJECT_ID=foobar \ - -e REGION=europe-west1 \ - eu.gcr.io/gitpod-core-dev/install/installer:dev scripts/gcp.sh -``` diff --git a/install/installer/cmd/aws.go b/install/installer/cmd/aws.go deleted file mode 100644 index 1d7db6ba56f9d8..00000000000000 --- a/install/installer/cmd/aws.go +++ /dev/null @@ -1,158 +0,0 @@ -// Copyright (c) 2020 Gitpod GmbH. All rights reserved. -// Licensed under the GNU Affero General Public License (AGPL). -// See License-AGPL.txt in the project root for license information. - -package cmd - -import ( - "fmt" - "os" - "path/filepath" - "strings" - "time" - - "github.com/gitpod-io/installer/pkg/aws" - "github.com/gitpod-io/installer/pkg/sources" - "github.com/gitpod-io/installer/pkg/terraform" - "github.com/gitpod-io/installer/pkg/ui" - "github.com/spf13/cobra" -) - -// awsCmd represents the gcp command -var awsCmd = &cobra.Command{ - Use: "aws", - Short: "Installs Gitpod in AWS", - Run: func(cmd *cobra.Command, args []string) { - ui.Infof("Making sure we have access to AWS") - if os.Getenv("AWS_ACCESS_KEY_ID") == "" || os.Getenv("AWS_SECRET_ACCESS_KEY") == "" { - // TODO(cw): when running this installer as Docker container we can provide a better message here, - // e.g. "... using `-e AWS_ACCESS_KEY_ID= -e AWS_SECRET_ACCESS_KEY=`" - msg := "Please ensure that the AWS_ACCESS_KEY_ID and AWS_SECRET_ACCESS_KEY environment variables are set" - if os.Getenv("GITPOD_INSTALLER_IN_DOCKER") != "" { - msg += " by passing\n\t-e AWS_ACCESS_KEY_ID= -e AWS_SECRET_ACCESS_KEY=\nto your docker run command." - } else { - msg += "." - } - ui.Fatalf(msg) - } - - ui.Infof("Copying installation scripts") - layout := getLayout() - err := sources.CloneAndOwn(layout, getCloneAndOwnOpts()) - if err != nil { - ui.Fatalf("cannot prepare the installation scripts.\n\t%q", err) - } - - ui.Infof("Gathering information") - basedir := layout.TerraformDestination("aws") - tfvarsfn := filepath.Join(basedir, "main.auto.tfvars") - err = terraform.PersistVariable(tfvarsfn, aws.RequiredTerraformVariables...) - if err != nil { - ui.Fatalf("cannot update the required terraform variables.\n\t%q", err) - } - - var ( - domain, _ = terraform.GetVariableValue(tfvarsfn, "domain") - ipDomain bool - ) - if domain == "" || domain == "ipDomain" { - ui.Infof("\nWe won't use a custom domain for this installation, but one based on ip.gitpod-self-hosted.com.\n" + - "To this end, terraform will run twice: once to set everything up, including the loadbalancer IP, then to apply the domain based on that IP.\n") - time.Sleep(5 * time.Second) - ipDomain = true - - err = terraform.PersistVariable(tfvarsfn, terraform.PersistVariableOpts{ - Name: "domain", - Sources: []terraform.VariableValueSource{ - func(name string, spec terraform.VariableSpec) (value string, ok bool) { return "ipDomain", true }, - }, - ForceOverwrite: true, - }) - if err != nil { - ui.Fatalf("cannot update the \"domain\" terraform variables.\n\t%q", err) - } - } else if !strings.Contains(domain, "ip.mygitpod.com") { - err = terraform.PersistVariable(tfvarsfn, - terraform.PersistVariableOpts{ - Name: "force_https", - Sources: []terraform.VariableValueSource{func(name string, spec terraform.VariableSpec) (value string, ok bool) { return "true", true }}, - }, - terraform.PersistVariableOpts{ - Name: "certbot_enabled", - Sources: []terraform.VariableValueSource{func(name string, spec terraform.VariableSpec) (value string, ok bool) { return "true", true }}, - }, - terraform.PersistVariableOpts{ - Name: "certificate_email", - Spec: terraform.VariableSpec{ - Description: "Gitpod will attempt to issue HTTPS certificates for you. Please provide an email that's used with Let's Encrypt to do so.", - Validate: func(val string) error { - if !strings.Contains(val, "@") { - return fmt.Errorf("not a valid email address") - } - return nil - }, - }, - }, - ) - if err != nil { - ui.Fatalf("cannot update the \"domain\" terraform variables:\n\t%q", err) - } - } - - terraform.Run([]string{"init"}, terraform.WithBasedir(basedir), terraform.WithFatalErrors) - err = terraform.Run([]string{"apply"}, terraform.WithBasedir(basedir), terraform.WithRetry(aws.TerraformErrorRetry( - func(name string) { - err := terraform.UnsetVariable(tfvarsfn, name) - if err != nil { - ui.Errorf("Cannot unset %v, please manually edit aws/%s and remove the line starting with %s", name, tfvarsfn, name) - } - }, - ), 0*time.Second)) - if err != nil { - ui.Fatalf("terraform failed:\n\t%q", err) - } - - // lookup the domain and ensure it matches the static ip from the terraform run - // if it doesn't, tell the user to modify their DNS records, wait for confirmation and try again - ingressHostname, err := terraform.GetOutputValue(basedir, "ingress_hostname") - if err != nil || ingressHostname == "" { - // TODO(cw): produce a more helpful message, e.g. manually setting the ip.mygitpod.com domain - ui.Fatalf("cannot get ingress hostname from terraform state.\n\t%q", err) - } else if ipDomain { - // now that we know that static IP we can update the terraform config and re-run - segs := strings.Split(ingressHostname, ".") - if len(segs) < 2 { - ui.Fatalf("unexpected ingress hostname: %s", ingressHostname) - } - - domain = fmt.Sprintf("%s--%s.ip.mygitpod.com", segs[0], segs[1]) - err = terraform.PersistVariable(tfvarsfn, terraform.PersistVariableOpts{ - Name: "domain", - Sources: []terraform.VariableValueSource{ - func(name string, spec terraform.VariableSpec) (value string, ok bool) { - return domain, true - }, - }, - ForceOverwrite: true, - }, terraform.PersistVariableOpts{Name: "force_https", ForceOverwrite: true, Sources: []terraform.VariableValueSource{ - func(name string, spec terraform.VariableSpec) (value string, ok bool) { - return "true", true - }, - }}) - if err != nil { - ui.Fatalf("cannot update the \"domain\" terraform variables - please re-run this installer.\n\t%q", err) - } - ui.Infof("re-running terraform to use the new domain %s", domain) - terraform.Run([]string{"apply", "-auto-approve"}, terraform.WithBasedir(basedir), terraform.WithFatalErrors) - } else { - ui.Infof("Please update your DNS records so that %s points to %s.", domain, ingressHostname) - } - - // TODO(cw): smoke-test the installation - ui.Infof("🎉 Your installation is ready at https://%s/workspaces/", domain) - }, -} - -func init() { - rootCmd.AddCommand(awsCmd) -} diff --git a/install/installer/cmd/bash.go b/install/installer/cmd/bash.go deleted file mode 100644 index 42e25dd688f4a2..00000000000000 --- a/install/installer/cmd/bash.go +++ /dev/null @@ -1,38 +0,0 @@ -// Copyright (c) 2020 Gitpod GmbH. All rights reserved. -// Licensed under the GNU Affero General Public License (AGPL). -// See License-AGPL.txt in the project root for license information. - -// +build linux - -package cmd - -import ( - "os" - "syscall" - - "github.com/gitpod-io/installer/pkg/sources" - log "github.com/sirupsen/logrus" - "github.com/spf13/cobra" -) - -// bashCmd represents the gcp command -var bashCmd = &cobra.Command{ - Use: "bash", - Short: "Starts bash after putting all the scripts in place", - Run: func(cmd *cobra.Command, args []string) { - log.Info("Copying installation scripts") - layout := getLayout() - err := sources.CloneAndOwn(layout, getCloneAndOwnOpts()) - if err != nil { - log.WithError(err).Fatal("cannot prepare the installation scripts") - } - - log.Info("Starting bash") - os.Chdir(layout.DestinationFolder()) - log.Fatal(syscall.Exec("/bin/bash", nil, os.Environ())) - }, -} - -func init() { - rootCmd.AddCommand(bashCmd) -} diff --git a/install/installer/cmd/gcp.go b/install/installer/cmd/gcp.go deleted file mode 100644 index 041e84e5e94c73..00000000000000 --- a/install/installer/cmd/gcp.go +++ /dev/null @@ -1,150 +0,0 @@ -// Copyright (c) 2020 Gitpod GmbH. All rights reserved. -// Licensed under the GNU Affero General Public License (AGPL). -// See License-AGPL.txt in the project root for license information. - -package cmd - -import ( - "fmt" - "path/filepath" - "strings" - "time" - - "github.com/gitpod-io/installer/pkg/gcp" - "github.com/gitpod-io/installer/pkg/sources" - "github.com/gitpod-io/installer/pkg/terraform" - "github.com/gitpod-io/installer/pkg/ui" - "github.com/spf13/cobra" -) - -// gcpCmd represents the gcp command -var gcpCmd = &cobra.Command{ - Use: "gcp", - Short: "Installs Gitpod in a GCP project", - Run: func(cmd *cobra.Command, args []string) { - ui.Infof("Copying installation scripts") - layout := getLayout() - err := sources.CloneAndOwn(layout, getCloneAndOwnOpts()) - if err != nil { - ui.Fatalf("cannot prepare the installation scripts:\n\t%q", err) - } - - if skip, _ := cmd.Flags().GetBool("assume-gcp-access"); skip { - ui.Warnf("Assuming we have access to GCP - not checking") - } else { - ui.Infof("Making sure we have access to GCP") - err = gcp.EnsureLoggedIn() - if err != nil { - ui.Fatalf("cannot login to GCP:\n\t%q", err) - } - } - - ui.Infof("Gathering information") - basedir := layout.TerraformDestination("gcp") - tfvarsfn := filepath.Join(basedir, "main.auto.tfvars") - err = terraform.PersistVariable(tfvarsfn, gcp.RequiredTerraformVariables...) - if err != nil { - ui.Fatalf("cannot update the required terraform variables:\n\t%q", err) - } - - var ( - projectID, _ = terraform.GetVariableValue(tfvarsfn, "project") - domain, _ = terraform.GetVariableValue(tfvarsfn, "domain") - ipDomain bool - ) - if domain == "" || domain == "ipDomain" { - ui.Infof("\nWe won't use a custom domain for this installation, but one based on ip.mygitpod.com.\n" + - "To this end, terraform will run twice: once to set everything up, including the loadbalancer IP, then to apply the domain based on that IP.\n") - time.Sleep(5 * time.Second) - ipDomain = true - - err = terraform.PersistVariable(tfvarsfn, terraform.PersistVariableOpts{ - Name: "domain", - Sources: []terraform.VariableValueSource{ - func(name string, spec terraform.VariableSpec) (value string, ok bool) { return "ipDomain", true }, - }, - }) - if err != nil { - ui.Fatalf("cannot update the \"domain\" terraform variables:\n\t%q", err) - } - } else if !strings.Contains(domain, "ip.mygitpod.com") { - err = terraform.PersistVariable(tfvarsfn, - terraform.PersistVariableOpts{ - Name: "force_https", - Sources: []terraform.VariableValueSource{func(name string, spec terraform.VariableSpec) (value string, ok bool) { return "true", true }}, - }, - terraform.PersistVariableOpts{ - Name: "certbot_enabled", - Sources: []terraform.VariableValueSource{func(name string, spec terraform.VariableSpec) (value string, ok bool) { return "true", true }}, - }, - terraform.PersistVariableOpts{ - Name: "certificate_email", - Spec: terraform.VariableSpec{ - Description: "Gitpod will attempt to issue HTTPS certificates for you. Please provide an email that's used with Let's Encrypt to do so.", - Validate: func(val string) error { - if !strings.Contains(val, "@") { - return fmt.Errorf("not a valid email address") - } - return nil - }, - }, - }, - ) - if err != nil { - ui.Fatalf("cannot update the \"domain\" terraform variables:\n\t%q", err) - } - } - - terraform.Run([]string{"init"}, terraform.WithBasedir(basedir), terraform.WithFatalErrors) - err = terraform.Run([]string{"apply"}, - terraform.WithBasedir(basedir), - terraform.WithRetry(gcp.BackendErrorRetry(projectID), 30*time.Second), - ) - if err != nil { - ui.Fatalf("terraform failed:\n\t%q", err) - } - - // lookup the domain and ensure it matches the static ip from the terraform run - // if it doesn't, tell the user to modify their DNS records, wait for confirmation and try again - publicIP, err := terraform.GetOutputValue(basedir, "public_ip") - if err != nil || publicIP == "" { - // TODO(cw): produce a more helpful message, e.g. manually setting the ip.gitpod-self-hosted.com domain - ui.Fatalf("cannot get public ip from terraform state:\n\t%q", err) - } else if ipDomain { - // now that we know that static IP we can update the terraform config and re-run - domain = fmt.Sprintf("%s.ip.mygitpod.com", strings.ReplaceAll(publicIP, ".", "-")) - err = terraform.PersistVariable(tfvarsfn, terraform.PersistVariableOpts{ - Name: "domain", - Sources: []terraform.VariableValueSource{ - func(name string, spec terraform.VariableSpec) (value string, ok bool) { - return domain, true - }, - }, - ForceOverwrite: true, - }, terraform.PersistVariableOpts{Name: "force_https", ForceOverwrite: true, Sources: []terraform.VariableValueSource{ - func(name string, spec terraform.VariableSpec) (value string, ok bool) { - return "true", true - }, - }}) - if err != nil { - ui.Fatalf("cannot update the \"domain\" terraform variables - please re-run this installer:\n\t%q", err) - } - ui.Infof("re-running terraform to use the new domain %s", domain) - terraform.Run([]string{"apply", "-auto-approve"}, terraform.WithBasedir(basedir), terraform.WithFatalErrors) - } else if !strings.Contains(domain, "ip.mygitpod.com") { - ui.Infof("Please update your DNS records so that %s points to %s.", domain, publicIP) - } - - // TODO(cw): wait for the installation to actually become available - - ui.Infof("🎉 Your installation is ready at https://%s/workspaces/", domain) - - // TODO(cw): smoke-test the installation - }, -} - -func init() { - rootCmd.AddCommand(gcpCmd) - - gcpCmd.Flags().Bool("assume-gcp-access", false, "don't check if we can GCP access or attempt to login to GCP") -} diff --git a/install/installer/cmd/root.go b/install/installer/cmd/root.go deleted file mode 100644 index bc6b2114df8316..00000000000000 --- a/install/installer/cmd/root.go +++ /dev/null @@ -1,86 +0,0 @@ -// Copyright (c) 2020 Gitpod GmbH. All rights reserved. -// Licensed under the GNU Affero General Public License (AGPL). -// See License-AGPL.txt in the project root for license information. - -package cmd - -import ( - "fmt" - "os" - "time" - - "github.com/gitpod-io/installer/pkg/sources" - "github.com/gitpod-io/installer/pkg/ui" - "github.com/spf13/cobra" - "gopkg.in/yaml.v3" -) - -var rootOpts struct { - debug bool - destination string -} - -// rootCmd represents the base command when called without any subcommands -var rootCmd = &cobra.Command{ - Use: "installer", - Short: "Simple CLI to aid installing Gitpod", -} - -// Execute adds all child commands to the root command and sets flags appropriately. -// This is called by main.main(). It only needs to happen once to the rootCmd. -func Execute() { - if err := rootCmd.Execute(); err != nil { - fmt.Println(err) - os.Exit(1) - } -} - -func getLayout() sources.Layout { - fn := os.Getenv("INSTALLER_LAYOUT_FILE") - if fn == "" { - if rootOpts.debug { - fn = "dev-layout.yaml" - } else { - fn = "layout.yaml" - } - } - - f, err := os.Open(fn) - if err != nil { - ui.Fatalf("cannot load installer layout:\n\t%q", err) - } - defer f.Close() - - var l sources.Layout - err = yaml.NewDecoder(f).Decode(&l) - if err != nil { - ui.Fatalf("cannot load installer layout:\n\t%q", err) - } - - if l.Destination == "" { - l.Destination = rootOpts.destination - } - if rootOpts.debug && l.Destination == "" { - loc, err := os.MkdirTemp("", "gitpod-installer-*") - if err != nil { - ui.Fatalf("cannot create tempdir:\n\t%q", err) - } - ui.Infof("created temp destination directory: %s", loc) - l.Destination = loc - } - - return l -} - -func getCloneAndOwnOpts() sources.CloneAndOwnOpts { - var res sources.CloneAndOwnOpts - if rootOpts.debug { - res.SourceVersion = fmt.Sprint(time.Now().Unix()) - } - return res -} - -func init() { - rootCmd.PersistentFlags().BoolVar(&rootOpts.debug, "debug", false, "enables the debug mode - just useful for development") - rootCmd.PersistentFlags().StringVar(&rootOpts.destination, "scripts-destination", "", "override the destination field of the layout") -} diff --git a/install/installer/dev-layout.yaml b/install/installer/dev-layout.yaml deleted file mode 100644 index 8747b30b48b9ff..00000000000000 --- a/install/installer/dev-layout.yaml +++ /dev/null @@ -1,4 +0,0 @@ -helm: "../../chart" -terraform: - gcp: "../gcp-terraform/environment/installer" - aws: "../aws-terraform" \ No newline at end of file diff --git a/install/installer/entrypoint.sh b/install/installer/entrypoint.sh deleted file mode 100755 index c129d96e9eca90..00000000000000 --- a/install/installer/entrypoint.sh +++ /dev/null @@ -1,9 +0,0 @@ -#!/bin/bash -# Copyright (c) 2020 Gitpod GmbH. All rights reserved. -# Licensed under the GNU Affero General Public License (AGPL). -# See License-AGPL.txt in the project root for license information. - - -source $HOME/google-cloud-sdk/path.bash.inc - -gp-install $* \ No newline at end of file diff --git a/install/installer/go.mod b/install/installer/go.mod deleted file mode 100644 index 9106e1b004501b..00000000000000 --- a/install/installer/go.mod +++ /dev/null @@ -1,13 +0,0 @@ -module github.com/gitpod-io/installer - -go 1.16 - -require ( - github.com/gookit/color v1.2.7 - github.com/hashicorp/hcl/v2 v2.6.0 - github.com/manifoldco/promptui v0.7.0 - github.com/sirupsen/logrus v1.7.0 - github.com/spf13/cobra v1.0.0 - github.com/zclconf/go-cty v1.2.0 - gopkg.in/yaml.v3 v3.0.0-20200615113413-eeeca48fe776 -) diff --git a/install/installer/go.sum b/install/installer/go.sum deleted file mode 100644 index 46fab714aa2048..00000000000000 --- a/install/installer/go.sum +++ /dev/null @@ -1,194 +0,0 @@ -cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= -github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= -github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= -github.com/agext/levenshtein v1.2.1 h1:QmvMAjj2aEICytGiWzmxoE0x2KZvE0fvmqMOfy2tjT8= -github.com/agext/levenshtein v1.2.1/go.mod h1:JEDfjyjHDjOF/1e4FlBE/PkbqA9OfWu2ki2W0IB5558= -github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= -github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= -github.com/apparentlymart/go-dump v0.0.0-20180507223929-23540a00eaa3/go.mod h1:oL81AME2rN47vu18xqj1S1jPIPuN7afo62yKTNn3XMM= -github.com/apparentlymart/go-textseg v1.0.0 h1:rRmlIsPEEhUTIKQb7T++Nz/A5Q6C9IuX2wFoYVvnCs0= -github.com/apparentlymart/go-textseg v1.0.0/go.mod h1:z96Txxhf3xSFMPmb5X/1W05FF/Nj9VFpLOpjS5yuumk= -github.com/apparentlymart/go-textseg/v12 v12.0.0 h1:bNEQyAGak9tojivJNkoqWErVCQbjdL7GzRt3F8NvfJ0= -github.com/apparentlymart/go-textseg/v12 v12.0.0/go.mod h1:S/4uRK2UtaQttw1GenVJEynmyUenKwP++x/+DdGV/Ec= -github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6/go.mod h1:grANhF5doyWs3UAsr3K4I6qtAmlQcZDesFNEHPZAzj8= -github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= -github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8= -github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc= -github.com/chzyer/logex v1.1.10 h1:Swpa1K6QvQznwJRcfTfQJmTE72DqScAa40E+fbHEXEE= -github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI= -github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e h1:fY5BOSpyZCqRo5OhCuC+XN+r/bBCmeuuJtjz+bCNIf8= -github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI= -github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1 h1:q763qf9huN11kDQavWsoZXJNW3xEE4JJyHa5Q25/sd8= -github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU= -github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= -github.com/coreos/bbolt v1.3.2/go.mod h1:iRUV2dpdMOn7Bo10OQBFzIJO9kkE559Wcmn+qkEiiKk= -github.com/coreos/etcd v3.3.10+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= -github.com/coreos/go-semver v0.2.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= -github.com/coreos/go-systemd v0.0.0-20190321100706-95778dfbb74e/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= -github.com/coreos/pkg v0.0.0-20180928190104-399ea9e2e55f/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA= -github.com/cpuguy83/go-md2man/v2 v2.0.0/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= -github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= -github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= -github.com/dgryski/go-sip13 v0.0.0-20181026042036-e10d5fee7954/go.mod h1:vAd38F8PWV+bWy6jNmig1y/TA+kYO4g3RSRF0IAv0no= -github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= -github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= -github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= -github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9GBnD5lWE= -github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk= -github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= -github.com/go-test/deep v1.0.3 h1:ZrJSEWsXzPOxaZnFteGEfooLba+ju3FYIbOrS+rQd68= -github.com/go-test/deep v1.0.3/go.mod h1:wGDj63lr65AM2AQyKZd/NYHGb0R+1RLqB8NKt3aSFNA= -github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= -github.com/gogo/protobuf v1.2.1/go.mod h1:hp+jE20tsWTFYpLwKvXlhS1hjn+gTNwPg2I6zVXpSg4= -github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= -github.com/golang/groupcache v0.0.0-20190129154638-5b532d6fd5ef/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= -github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= -github.com/golang/protobuf v1.1.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= -github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= -github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= -github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= -github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= -github.com/google/go-cmp v0.3.1 h1:Xye71clBPdm5HgqGwUkwhbynsUJZhDbS20FvLhQ2izg= -github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= -github.com/gookit/color v1.2.7 h1:4qePMNWZhrmbfYJDix+J4V2l0iVW+6jQGjicELlN14E= -github.com/gookit/color v1.2.7/go.mod h1:AhIE+pS6D4Ql0SQWbBeXPHw7gY0/sjHoA4s/n1KB7xg= -github.com/gorilla/websocket v1.4.0/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= -github.com/grpc-ecosystem/go-grpc-middleware v1.0.0/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs= -github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0/go.mod h1:8NvIoxWQoOIhqOTXgfV/d3M/q6VIi02HzZEHgUlZvzk= -github.com/grpc-ecosystem/grpc-gateway v1.9.0/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= -github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4= -github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= -github.com/hashicorp/hcl/v2 v2.6.0 h1:3krZOfGY6SziUXa6H9PJU6TyohHn7I+ARYnhbeNBz+o= -github.com/hashicorp/hcl/v2 v2.6.0/go.mod h1:bQTN5mpo+jewjJgh8jr0JUguIi7qPHUF6yIfAEN3jqY= -github.com/inconshreveable/mousetrap v1.0.0 h1:Z8tu5sraLXCXIcARxBp/8cbvlwVa7Z1NHg9XEKhtSvM= -github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= -github.com/jonboulle/clockwork v0.1.0/go.mod h1:Ii8DK3G1RaLaWxj9trq07+26W01tbo22gdxWY5EU2bo= -github.com/juju/ansiterm v0.0.0-20180109212912-720a0952cc2a h1:FaWFmfWdAUKbSCtOU2QjDaorUexogfaMgbipgYATUMU= -github.com/juju/ansiterm v0.0.0-20180109212912-720a0952cc2a/go.mod h1:UJSiEoRfvx3hP73CvoARgeLjaIOjybY9vj8PUPPFGeU= -github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= -github.com/kisielk/errcheck v1.1.0/go.mod h1:EZBBE59ingxPouuu3KfxchcWSUPOHkagtvWXihfKN4Q= -github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= -github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= -github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc= -github.com/kr/pretty v0.1.0 h1:L/CwN0zerZDmRFUapSPitk6f+Q3+0za1rQkzVuMiMFI= -github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= -github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= -github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE= -github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= -github.com/kylelemons/godebug v0.0.0-20170820004349-d65d576e9348 h1:MtvEpTB6LX3vkb4ax0b5D2DHbNAUsen0Gx5wZoq3lV4= -github.com/kylelemons/godebug v0.0.0-20170820004349-d65d576e9348/go.mod h1:B69LEHPfb2qLo0BaaOLcbitczOKLWTsrBG9LczfCD4k= -github.com/lunixbochs/vtclean v0.0.0-20180621232353-2d01aacdc34a h1:weJVJJRzAJBFRlAiJQROKQs8oC9vOxvm4rZmBBk0ONw= -github.com/lunixbochs/vtclean v0.0.0-20180621232353-2d01aacdc34a/go.mod h1:pHhQNgMf3btfWnGBVipUOjRYhoOsdGqdm/+2c2E2WMI= -github.com/magiconair/properties v1.8.0/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= -github.com/manifoldco/promptui v0.7.0 h1:3l11YT8tm9MnwGFQ4kETwkzpAwY2Jt9lCrumCUW4+z4= -github.com/manifoldco/promptui v0.7.0/go.mod h1:n4zTdgP0vr0S3w7/O/g98U+e0gwLScEXGwov2nIKuGQ= -github.com/mattn/go-colorable v0.0.9 h1:UVL0vNpWh04HeJXV0KLcaT7r06gOH2l4OW6ddYRUIY4= -github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU= -github.com/mattn/go-isatty v0.0.4 h1:bnP0vzxcAdeI1zdubAl5PjU6zsERjGZb7raWodagDYs= -github.com/mattn/go-isatty v0.0.4/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= -github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= -github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= -github.com/mitchellh/go-wordwrap v0.0.0-20150314170334-ad45545899c7 h1:DpOJ2HYzCv8LZP15IdmG+YdwD2luVPHITV96TkirNBM= -github.com/mitchellh/go-wordwrap v0.0.0-20150314170334-ad45545899c7/go.mod h1:ZXFpozHsX6DPmq2I0TCekCxypsnAUbP2oI0UX1GXzOo= -github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= -github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= -github.com/oklog/ulid v1.3.1/go.mod h1:CirwcVhetQ6Lv90oh/F+FBtV6XMibvdAFo93nm5qn4U= -github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic= -github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= -github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= -github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= -github.com/prometheus/client_golang v0.9.3/go.mod h1:/TN21ttK/J9q6uSwhBd54HahCDft0ttaMvbicHlPoso= -github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= -github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= -github.com/prometheus/common v0.0.0-20181113130724-41aa239b4cce/go.mod h1:daVV7qP5qjZbuso7PdcryaAu0sAZbrN9i7WWcTMWvro= -github.com/prometheus/common v0.4.0/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= -github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= -github.com/prometheus/procfs v0.0.0-20190507164030-5867b95ac084/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= -github.com/prometheus/tsdb v0.7.1/go.mod h1:qhTCs0VvXwvX/y3TZrWD7rabWM+ijKTux40TwIPHuXU= -github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6SoW27p1b0cqNHllgS5HIMJraePCO15w5zCzIWYg= -github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= -github.com/sergi/go-diff v1.0.0 h1:Kpca3qRNrduNnOQeazBd0ysaKrUJiIuISHxogkT9RPQ= -github.com/sergi/go-diff v1.0.0/go.mod h1:0CfEIISq7TuYL3j771MWULgwwjU+GofnZX9QAmXWZgo= -github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc= -github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= -github.com/sirupsen/logrus v1.7.0 h1:ShrD1U9pZB12TX0cVy0DtePoCH97K8EtX+mg7ZARUtM= -github.com/sirupsen/logrus v1.7.0/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0= -github.com/soheilhy/cmux v0.1.4/go.mod h1:IM3LyeVVIOuxMH7sFAkER9+bJ4dT7Ms6E4xg4kGIyLM= -github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= -github.com/spf13/afero v1.1.2/go.mod h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B0CQ= -github.com/spf13/cast v1.3.0/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= -github.com/spf13/cobra v1.0.0 h1:6m/oheQuQ13N9ks4hubMG6BnvwOeaJrqSPLahSnczz8= -github.com/spf13/cobra v1.0.0/go.mod h1:/6GTrnGXV9HjY+aR4k0oJ5tcvakLuG6EuKReYlHNrgE= -github.com/spf13/jwalterweatherman v1.0.0/go.mod h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb68N+wFjFa4jdeBTo= -github.com/spf13/pflag v1.0.2/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= -github.com/spf13/pflag v1.0.3 h1:zPAT6CGy6wXeQ7NtTnaTerfKOsV6V6F8agHXFiazDkg= -github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= -github.com/spf13/viper v1.4.0/go.mod h1:PTJ7Z/lr49W6bUbkmS1V3by4uWynFiR9p7+dSq/yZzE= -github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= -github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= -github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= -github.com/stretchr/testify v1.3.0 h1:TivCn/peBQ7UY8ooIcPgZFpTNSz0Q2U6UrFlUfqbe0Q= -github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= -github.com/tmc/grpc-websocket-proxy v0.0.0-20190109142713-0ad062ec5ee5/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= -github.com/ugorji/go v1.1.4/go.mod h1:uQMGLiO92mf5W77hV/PUCpI3pbzQx3CRekS0kk+RGrc= -github.com/vmihailenco/msgpack v3.3.3+incompatible/go.mod h1:fy3FlTQTDXWkZ7Bh6AcGMlsjHatGryHQYUTf1ShIgkk= -github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU= -github.com/xordataexchange/crypt v0.0.3-0.20170626215501-b2862e3d0a77/go.mod h1:aYKd//L2LvnjZzWKhF00oedf4jCCReLcmhLdhm1A27Q= -github.com/zclconf/go-cty v1.2.0 h1:sPHsy7ADcIZQP3vILvTjrh74ZA175TFP5vqiNK1UmlI= -github.com/zclconf/go-cty v1.2.0/go.mod h1:hOPWgoHbaTUnI5k4D2ld+GRpFJSCe6bCM7m1q/N4PQ8= -go.etcd.io/bbolt v1.3.2/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= -go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= -go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0= -go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= -golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= -golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= -golang.org/x/crypto v0.0.0-20190426145343-a29dc8fdc734/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= -golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= -golang.org/x/net v0.0.0-20180811021610-c39426892332/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20181220203305-927f97764cc3/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= -golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= -golang.org/x/net v0.0.0-20190522155817-f3200d17e092/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= -golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= -golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20181107165924-66b7b1311ac8/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20181122145206-62eef0e2fa9b/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190502175342-a43fa875dd82/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191026070338-33540a1f6037 h1:YyJpGZS1sBuBCzLAR1VEpK193GlqGZbnPFnPV/5Rsb4= -golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= -golang.org/x/text v0.3.2 h1:tW2bmiBqwgJj/UpqtC8EpXEZVYOwU0yG4iWbprSVAcs= -golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= -golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -golang.org/x/tools v0.0.0-20180221164845-07fd8470d635/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= -google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= -google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= -google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= -google.golang.org/grpc v1.21.0/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= -gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= -gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127 h1:qIbj1fsPNlZgppZ+VLlY7N33q108Sa+fhmuc+sWQYwY= -gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/resty.v1 v1.12.0/go.mod h1:mDo4pnntr5jdWRML875a/NmxYqAlA73dVijT2AXvQQo= -gopkg.in/yaml.v2 v2.0.0-20170812160011-eb3733d160e7/go.mod h1:JAlM8MvJe8wmxCU4Bli9HhUf9+ttbYbLASfIpnQbh74= -gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v3 v3.0.0-20200615113413-eeeca48fe776 h1:tQIYjPdBoyREyB9XMu+nnTclpTYkz2zFM+lzLJFO4gQ= -gopkg.in/yaml.v3 v3.0.0-20200615113413-eeeca48fe776/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= diff --git a/install/installer/layout.yaml b/install/installer/layout.yaml deleted file mode 100644 index 7b5aa465336016..00000000000000 --- a/install/installer/layout.yaml +++ /dev/null @@ -1,10 +0,0 @@ -# Copyright (c) 2020 Gitpod GmbH. All rights reserved. -# Licensed under the GNU Affero General Public License (AGPL). -# See License-AGPL.txt in the project root for license information. - -versionFile: "/dist/version" -destination: "/workspace" -helm: "/dist/helm" -terraform: - gcp: "/dist/terraform/gcp" - aws: "/dist/terraform/aws" \ No newline at end of file diff --git a/install/installer/leeway.Dockerfile b/install/installer/leeway.Dockerfile deleted file mode 100644 index 536558eda565d0..00000000000000 --- a/install/installer/leeway.Dockerfile +++ /dev/null @@ -1,68 +0,0 @@ -# Copyright (c) 2020 Gitpod GmbH. All rights reserved. -# Licensed under the GNU Affero General Public License (AGPL). -# See License-AGPL.txt in the project root for license information. - -FROM alpine AS prep -ARG VERSION -ARG IMAGE_PREFIX - -WORKDIR /dist -COPY chart--helm helm/ -RUN wget https://github.com/mikefarah/yq/releases/download/3.3.2/yq_linux_amd64 && \ - chmod +x yq_linux_amd64 && \ - mv yq_linux_amd64 yq && \ - ./yq w -i helm/gitpod/values.yaml version $VERSION && \ - ./yq w -i helm/gitpod/values.yaml imagePrefix $IMAGE_PREFIX/ && \ - echo ${VERSION} > version && \ - rm yq - -COPY install-gcp-terraform-environment-installer--lib terraform/gcp -COPY install-gcp-terraform-modules--installer terraform/gcp/modules -COPY install-aws-terraform--lib terraform/aws -RUN echo "chart_location = \"../helm/gitpod\"" >> installer.auto.tfvars && \ - echo "image_prefix = \"$IMAGE_PREFIX/\"" >> installer.auto.tfvars && \ - echo "image_version = \"$VERSION\"" >> installer.auto.tfvars && \ - cp installer.auto.tfvars terraform/gcp && \ - cp installer.auto.tfvars terraform/aws && \ - rm installer.auto.tfvars - -FROM alpine:3.13 - -# Ensure latest packages are present, like security updates. -RUN apk upgrade --no-cache - -RUN addgroup -g 1000 installer && \ - adduser -D -G installer -u 1000 installer && \ - mkdir /dist /workspace && \ - chown -R installer:installer /dist /workspace - -ENV GITPOD_INSTALLER_IN_DOCKER="true" -ENV KUBECONFIG="/workspace/kubectl" -RUN apk add --no-cache aws-cli python3 curl git bash ncurses \ - && rm -rf /var/cache/apk/* - -RUN curl -o terraform.zip -L https://releases.hashicorp.com/terraform/0.14.2/terraform_0.14.2_linux_amd64.zip && \ - unzip terraform.zip && \ - rm terraform.zip && \ - mv terraform /usr/bin - -RUN curl -L https://get.helm.sh/helm-v2.16.10-linux-amd64.tar.gz | tar xz && \ - mv linux-amd64/helm /usr/bin && \ - rm -r linux-amd64 - -USER installer -WORKDIR /home/installer -RUN curl -L https://dl.google.com/dl/cloudsdk/channels/rapid/downloads/google-cloud-sdk-305.0.0-linux-x86_64.tar.gz | tar xz && \ - ./google-cloud-sdk/install.sh && \ - echo source $PWD/google-cloud-sdk/completion.bash.inc >> ~/.bashrc && \ - echo source $PWD/google-cloud-sdk/path.bash.inc >> ~/.bashrc && \ - echo 'export PS1="[\t] \w\\$ "' >> ~/.bashrc - -WORKDIR /dist -COPY entrypoint.sh layout.yaml ./ -ENV INSTALLER_LAYOUT_FILE=/dist/layout.yaml - -COPY --from=prep /dist ./ -COPY install-installer--app/installer /usr/bin/gp-install - -ENTRYPOINT ["/dist/entrypoint.sh"] diff --git a/install/installer/main.go b/install/installer/main.go deleted file mode 100644 index bfda9da7a0f45f..00000000000000 --- a/install/installer/main.go +++ /dev/null @@ -1,16 +0,0 @@ -// Copyright (c) 2020 Gitpod GmbH. All rights reserved. -// Licensed under the GNU Affero General Public License (AGPL). -// See License-AGPL.txt in the project root for license information. - -package main - -import ( - "github.com/gitpod-io/installer/cmd" - "math/rand" - "time" -) - -func main() { - rand.Seed(time.Now().UnixNano()) - cmd.Execute() -} diff --git a/install/installer/pkg/aws/aws.go b/install/installer/pkg/aws/aws.go deleted file mode 100644 index 25f8c59b06bdea..00000000000000 --- a/install/installer/pkg/aws/aws.go +++ /dev/null @@ -1,115 +0,0 @@ -// Copyright (c) 2020 Gitpod GmbH. All rights reserved. -// Licensed under the GNU Affero General Public License (AGPL). -// See License-AGPL.txt in the project root for license information. - -package aws - -import ( - "bytes" - "fmt" - "math/rand" - "strings" - "time" - - "github.com/gitpod-io/installer/pkg/terraform" - "github.com/gitpod-io/installer/pkg/ui" -) - -var availableRegions = []string{ - "af-south-1", - "ap-east-1", - "ap-northeast-1", - "ap-northeast-2", - "ap-northeast-3", - "ap-south-1", - "ap-southeast-1", - "ap-southeast-2", - "ca-central-1", - "cn-north-1", - "cn-northwest-1", - "eu-central-1", - "eu-north-1", - "eu-south-1", - "eu-west-1", - "eu-west-2", - "eu-west-3", - "me-south-1", - "sa-east-1", - "us-east-1", - "us-east-2", - "us-gov-east-1", - "us-gov-west-1", - "us-west-1", - "us-west-2", -} - -// RequiredTerraformVariables are the variables required to execute the GCP terraform scripts -var RequiredTerraformVariables = []terraform.PersistVariableOpts{ - { - Name: "region", - Spec: terraform.VariableSpec{ - Description: "Your target AWS region - see https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Concepts.RegionsAndAvailabilityZones.html for a list of available regions.", - Validate: func(val string) error { - val = strings.TrimSpace(val) - found := false - for _, region := range availableRegions { - if val == region { - found = true - break - } - } - if !found { - return fmt.Errorf("%q is not a valid AWS region", val) - } - return nil - }, - }, - }, - { - Name: "domain", - Spec: terraform.VariableSpec{ - Description: `Gitpod works best when it's accessible using a Domain, rather than by IP address alone. -Please enter the domain under which you intent to operate Gitpod (e.g. gitpod.your-company.com). -Later, you'll be asked to add a DNS record to connect that domain with Gitpod's IP address. - -If you don't have your own (sub-)domain available, leave this field blank and we'll get a temporary one for you. -That domain will work for at least 30 days, but is not meant for productive installations. -You can, at any time move to your own domain by editing aws/main.auto.tfvars and re-running this installer.`, - }, - }, - { - Name: "project", - Sources: []terraform.VariableValueSource{ - func(name string, spec terraform.VariableSpec) (value string, ok bool) { - return "gp" + fmt.Sprint(rand.Int())[0:10], true - }, - }, - }, -} - -// TerraformErrorRetry retries when known AWS issues arrise -func TerraformErrorRetry(unsetVar func(name string)) terraform.RunRetryFunc { - return func(line []byte) terraform.RetryMethod { - if bytes.Contains(line, []byte("Invalid value: 31080: provided port is already allocated")) { - ui.Warnf(`Past experience has shown it takes up to five minutes before NodePorts can be re-alloced. -Now would be a great time for a cup of coffee and we'll retry in five minutes.`) - - for i := 5; i > 0; i++ { - time.Sleep(60 * time.Second) - ui.Infof("Waiting another %d minutes.", i) - } - return terraform.Retry - } - if bytes.Contains(line, []byte("OptInRequired: You are not subscribed to this service.")) { - ui.Errorf("Your account seems to be missing a credit card. Go to https://portal.aws.amazon.com/billing/signup?type=resubscribe#/resubscribed and finish the subscription process.") - return terraform.DontRetryAndFail - } - if bytes.Contains(line, []byte("The requested configuration is currently not supported")) { - ui.Errorf("Switch to another AWS region (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Concepts.RegionsAndAvailabilityZones.html) often helps.\nSome machines are not available in all regions.") - unsetVar("region") - return terraform.DontRetryAndFail - } - - return terraform.DontRetry - } -} diff --git a/install/installer/pkg/gcp/gcp.go b/install/installer/pkg/gcp/gcp.go deleted file mode 100644 index 993954a6ee38b7..00000000000000 --- a/install/installer/pkg/gcp/gcp.go +++ /dev/null @@ -1,215 +0,0 @@ -// Copyright (c) 2020 Gitpod GmbH. All rights reserved. -// Licensed under the GNU Affero General Public License (AGPL). -// See License-AGPL.txt in the project root for license information. - -package gcp - -import ( - "bytes" - "encoding/json" - "fmt" - "os" - "os/exec" - "path/filepath" - "strings" - - "github.com/gitpod-io/installer/pkg/terraform" - "github.com/gitpod-io/installer/pkg/ui" - log "github.com/sirupsen/logrus" -) - -var availableRegions = []string{ - "asia-east1", - "asia-east2", - "asia-northeast1", - "asia-northeast2", - "asia-northeast3", - "asia-south1", - "asia-southeast1", - "asia-southeast2", - "australia-southeast1", - "europe-north1", - "europe-west1", - "europe-west2", - "europe-west3", - "europe-west4", - "europe-west6", - "northamerica-northeast1", - "southamerica-east1", - "us-central1", - "us-east1", - "us-east4", - "us-west1", - "us-west2", - "us-west3", - "us-west4", -} - -// RequiredTerraformVariables are the variables required to execute the GCP terraform scripts -var RequiredTerraformVariables = []terraform.PersistVariableOpts{ - { - Name: "project", - Spec: terraform.VariableSpec{ - Description: "Project ID (not name) of the GCP project you want to install Gitpod in.", - Validate: func(val string) error { - if val == "" { - return fmt.Errorf("project ID is required") - } - return nil - }, - }, - }, - { - Name: "region", - Spec: terraform.VariableSpec{ - Description: "Your target GCP region - see https://cloud.google.com/compute/docs/regions-zones#locations for a list of available regions.", - Validate: func(val string) error { - val = strings.TrimSpace(val) - found := false - for _, region := range availableRegions { - if val == region { - found = true - break - } - } - if !found { - return fmt.Errorf("%q is not a valid GCP region", val) - } - return nil - }, - }, - Sources: []terraform.VariableValueSource{findBestGCPRegion}, - }, - { - Name: "domain", - Spec: terraform.VariableSpec{ - Description: `Gitpod works best when it's accessible using a Domain, rather than by IP address alone. -Please enter the domain under which you intent to operate Gitpod (e.g. gitpod.your-company.com). -Later, you'll be asked to add a DNS record to connect that domain with Gitpod's IP address. - -If you don't have your own (sub-)domain available, leave this field blank and we'll get a temporary one for you. -That domain will work for at least 30 days, but is not meant for productive installations. -You can, at any time move to your own domain by editing gcp/main.auto.tfvars and re-running this installer.`, - }, - }, -} - -func findBestGCPRegion(name string, spec terraform.VariableSpec) (value string, ok bool) { - return "", false -} - -// EnsureLoggedIn makes sure we are logged into gcloud -func EnsureLoggedIn() error { - acc, err := getActiveAccount() - if err != nil { - return nil - } - - if acc == "" { - loginCmdArgs := []string{"auth", "login"} - log.WithField("command", "gcloud").WithField("args", loginCmdArgs).Debug("running command") - loginCmd := exec.Command("gcloud", loginCmdArgs...) - loginCmd.Stdin = os.Stdin - loginCmd.Stdout = os.Stdout - loginCmd.Stderr = os.Stderr - err = loginCmd.Run() - if err != nil { - return fmt.Errorf("cannot call \"gcloud %v\": %w", loginCmdArgs, err) - } - } - - home, err := os.UserHomeDir() - if err != nil { - home = os.Getenv("HOME") - } - appDefAccFN := filepath.Join(home, ".config", "gcloud", "application_default_credentials.json") - if _, err := os.Stat(appDefAccFN); err == nil { - // default application credentials exist - we're ok - return nil - } - - // application default credentials aren't set yet - use the active account to log in - err = tryAndSetADCFromActiveAccount(appDefAccFN, home) - if err != nil { - log.WithError(err).Debug("cannot take over active account credentials - will try default login") - - log.Info("Terraform also the needs GCloud application default credentials. Please login (again) below.") - loginCmdArgs := []string{"auth", "application-default", "login"} - log.WithField("command", "gcloud").WithField("args", loginCmdArgs).Debug("running command") - loginCmd := exec.Command("gcloud", loginCmdArgs...) - loginCmd.Stdin = os.Stdin - loginCmd.Stdout = os.Stdout - loginCmd.Stderr = os.Stderr - err = loginCmd.Run() - if err != nil { - return fmt.Errorf("cannot call \"gcloud %v\": %w", loginCmdArgs, err) - } - } - - return nil -} - -func tryAndSetADCFromActiveAccount(appDefAccFN, home string) error { - acc, err := getActiveAccount() - if err != nil { - return nil - } - if _, err := os.Stat(filepath.Dir(appDefAccFN)); err != nil { - return fmt.Errorf("cannot determine home for the gcloud application default credentials: %w", err) - } - fc, err := os.ReadFile(filepath.Join(home, ".config", "gcloud", "legacy_credentials", acc, "adc.json")) - if err != nil { - return fmt.Errorf("cannot read active account credentials: %w", err) - } - err = os.WriteFile(appDefAccFN, fc, 0644) - if err != nil { - return fmt.Errorf("cannot write application default credentials: %w", err) - } - - return nil -} - -func run(name string, args ...string) ([]byte, error) { - log.WithField("command", name).WithField("args", args).Debug("running command") - out, err := exec.Command(name, args...).CombinedOutput() - if err != nil { - return nil, fmt.Errorf("cannot call \"%s %v\": %w: %s", name, args, err, string(out)) - } - return out, nil -} - -func getActiveAccount() (string, error) { - out, err := run("gcloud", "auth", "list", "--format", "json") - if err != nil { - return "", err - } - var accs []struct { - Account string `json:"account"` - Status string `json:"status"` - } - err = json.Unmarshal(out, &accs) - if err != nil { - return "", err - } - - for _, acc := range accs { - if acc.Status == "ACTIVE" { - return acc.Account, nil - } - } - - return "", nil -} - -// BackendErrorRetry enables auto-retry for GCP-caused failures -func BackendErrorRetry(projectID string) terraform.RunRetryFunc { - return func(line []byte) terraform.RetryMethod { - if bytes.Contains(line, []byte("googleapi: Error 500: Internal error")) { - ui.Warnf("Past experience has shown that enabling the compute API using terraform is not always enough to make things work.\n" + - "Please visit https://console.cloud.google.com/kubernetes/list?organizationId=&project=" + projectID + " which can help move things along.") - return terraform.Retry - } - - return terraform.DontRetry - } -} diff --git a/install/installer/pkg/sources/sources.go b/install/installer/pkg/sources/sources.go deleted file mode 100644 index ba999e749bcab4..00000000000000 --- a/install/installer/pkg/sources/sources.go +++ /dev/null @@ -1,207 +0,0 @@ -// Copyright (c) 2020 Gitpod GmbH. All rights reserved. -// Licensed under the GNU Affero General Public License (AGPL). -// See License-AGPL.txt in the project root for license information. - -package sources - -import ( - "bytes" - "fmt" - "os" - "os/exec" - "path/filepath" - "strings" - "time" - - "github.com/gitpod-io/installer/pkg/ui" - "github.com/manifoldco/promptui" -) - -// Layout describes the source layout -type Layout struct { - Helm string `yaml:"helm"` - Terraform map[string]string `yaml:"terraform"` - Destination string `yaml:"destination"` - VersionFile string `yaml:"versionFile"` -} - -// DifferentVersionResolution determines how to continue if the install-script versions differ -type DifferentVersionResolution int - -const ( - // DifferentVersionsCancel cancels the operation - DifferentVersionsCancel DifferentVersionResolution = iota - // DifferentVersionBackupAndContinue backs up the old files and copies the new ones - DifferentVersionBackupAndContinue - // DifferentVerionsIgnoreAndContinue ignores the new version and continues - DifferentVerionsIgnoreAndContinue -) - -// CloneAndOwnOpts provides options for the clone & own process -type CloneAndOwnOpts struct { - AskIfVersionDiffers func(existingVersion, newVersion string) DifferentVersionResolution - - // If set this overrides the content of VersionFile - SourceVersion string -} - -// DefaultAskIfVersionDiffers is the default behaviour when there's an existing version -// of the terraform scripts already. -func DefaultAskIfVersionDiffers(existingVersion, newVersion string) DifferentVersionResolution { - fmt.Printf(`The version of the installer scripts has changed. - old version: %s - new version: %s - -`, existingVersion, newVersion) - - choices := []struct { - Name string - Value DifferentVersionResolution - }{ - {"Backup existing files and continue with new version (recommended)", DifferentVersionBackupAndContinue}, - {"Ignore new version and continue with old one", DifferentVerionsIgnoreAndContinue}, - {"Cancel", DifferentVersionsCancel}, - } - i, _, err := (&promptui.Select{ - Label: "How would you like to continue?", - Items: choices, - Templates: &promptui.SelectTemplates{ - Active: fmt.Sprintf("%s {{ .Name | underline }}", promptui.IconSelect), - Inactive: "{{ .Name }}", - Selected: "", - }, - }).Run() - - if err != nil { - ui.Fatalf("unsupported choice: %q", err) - } - - return choices[i].Value -} - -// ErrCanceled is returned when AskIfVersionDiffers returns false -var ErrCanceled = fmt.Errorf("versions differed and was asked to cancel") - -// CloneAndOwn copies the terraform sources and helm chart to the destination if -// - the destination does not exist -// - there is no version file at the destination -// - the version file at the destination differs from the source one. -// -// In case of the latter, this function will ask if existing files should be backed up, -// or if the process is to be canceled. -func CloneAndOwn(l Layout, opts CloneAndOwnOpts) (err error) { - if opts.AskIfVersionDiffers == nil { - opts.AskIfVersionDiffers = DefaultAskIfVersionDiffers - } - - srcver := []byte(opts.SourceVersion) - if len(srcver) == 0 { - srcver, err = os.ReadFile(l.VersionFile) - if err != nil { - return fmt.Errorf("cannot read source version file %s: %w", l.VersionFile, err) - } - } - - var ( - dstVersionExists bool - dstVersionFn = l.VersionDestination() - dstFolder = l.DestinationFolder() - dstbkp = l.BackupDestination() - ) - if _, err := os.Stat(dstVersionFn); err == nil { - dstVersionExists = true - } else if os.IsNotExist(err) { - dstVersionExists = false - } else { - return err - } - - if dstVersionExists { - dstver, err := os.ReadFile(dstVersionFn) - if err != nil { - return fmt.Errorf("cannot read destination version file %s: %w", dstVersionFn, err) - } - if bytes.EqualFold(dstver, srcver) { - // versions match - content is already up to date - return nil - } - switch opts.AskIfVersionDiffers(strings.TrimSpace(string(dstver)), strings.TrimSpace(string(srcver))) { - case DifferentVerionsIgnoreAndContinue: - // sources exist - we're done - return nil - case DifferentVersionBackupAndContinue: - // backup the old content - _ = os.MkdirAll(filepath.Dir(dstbkp), 0755) - err = os.Rename(dstFolder, dstbkp) - if err != nil { - return fmt.Errorf("cannot backup %s to %s: %w", dstFolder, dstbkp, err) - } - case DifferentVersionsCancel: - return ErrCanceled - } - } - - if _, err = os.Stat(dstFolder); os.IsNotExist(err) { - err = os.MkdirAll(dstFolder, 0755) - } - if err != nil { - return err - } - - out, err := exec.Command("cp", "-rf", l.Helm, l.HelmDestination()).CombinedOutput() - if err != nil { - return fmt.Errorf("cannot copy %s to %s: %s", l.Helm, l.HelmDestination(), string(out)) - } - for plt, src := range l.Terraform { - out, err := exec.Command("cp", "-rf", src, l.TerraformDestination(plt)).CombinedOutput() - if err != nil { - return fmt.Errorf("cannot copy %s to %s: %s", src, l.TerraformDestination(plt), string(out)) - } - - // there are some files from the backup we might want to keep - for _, keeper := range []string{"main.auto.tfvars", "terraform.tfstate", "terraform.tfstate.backup"} { - bkpfn := filepath.Join(dstbkp, plt, keeper) - if _, err := os.Stat(bkpfn); err != nil { - continue - } - - dst := filepath.Join(l.TerraformDestination(plt), keeper) - out, err := exec.Command("cp", "-rf", bkpfn, dst).CombinedOutput() - if err != nil { - ui.Warnf("cannot copy old %s file: %s", keeper, string(out)) - } - } - } - - err = os.WriteFile(dstVersionFn, []byte(srcver), 0644) - if err != nil { - return fmt.Errorf("cannot write destination version file %s: %w", dstVersionFn, err) - } - - return nil -} - -// DestinationFolder is the folder where the actual contents (helm and terraform) are copied to -func (l Layout) DestinationFolder() string { - return filepath.Join(l.Destination, "gitpod") -} - -// HelmDestination returns the path to where the helm contents were copied to -func (l Layout) HelmDestination() string { - return filepath.Join(l.DestinationFolder(), "helm") -} - -// TerraformDestination is the path where the terraform contents were copied to -func (l Layout) TerraformDestination(platform string) string { - return filepath.Join(l.DestinationFolder(), platform) -} - -// BackupDestination is the destination where a new backup should be made to -func (l Layout) BackupDestination() string { - return filepath.Join(l.Destination, "backup", fmt.Sprint(time.Now().Unix())) -} - -// VersionDestination is the location where the dest version file resides -func (l Layout) VersionDestination() string { - return filepath.Join(l.Destination, "version") -} diff --git a/install/installer/pkg/terraform/run.go b/install/installer/pkg/terraform/run.go deleted file mode 100644 index f622ddc604bee1..00000000000000 --- a/install/installer/pkg/terraform/run.go +++ /dev/null @@ -1,180 +0,0 @@ -// Copyright (c) 2020 Gitpod GmbH. All rights reserved. -// Licensed under the GNU Affero General Public License (AGPL). -// See License-AGPL.txt in the project root for license information. - -package terraform - -import ( - "bufio" - "bytes" - "fmt" - "io" - "os" - "os/exec" - "sync" - "time" - - "github.com/gitpod-io/installer/pkg/ui" -) - -// RunRetryFunc determines if a terraform execution should be retried if terraform exits -// with a non-zero exit code. This function will see every line of TF output, and if it -// returns true at any point the run will restart. -type RunRetryFunc func(line []byte) RetryMethod - -// RetryMethod determines how to retry upon failure -type RetryMethod int - -const ( - // DontRetry means we're not retrying upon failure - DontRetry RetryMethod = iota - // DontRetryAndFail means we're not retrying upon failure and - // escalate the error to a fatal one - DontRetryAndFail - // Retry means we're retrying - Retry -) - -// RunOpt configures RUn -type RunOpt func(*runOpts) - -type runOpts struct { - Basedir string - FatalErrors bool - - Retry RunRetryFunc - RetryInterval time.Duration -} - -// WithBasedir runs terraform in the basedir -func WithBasedir(basedir string) RunOpt { - return func(o *runOpts) { - o.Basedir = basedir - } -} - -// WithFatalErrors makes a failing terraform fatal for this program -func WithFatalErrors(o *runOpts) { - o.FatalErrors = true -} - -// WithRetry possibly retries a failed TF run -func WithRetry(f RunRetryFunc, pause time.Duration) RunOpt { - return func(o *runOpts) { - o.Retry = f - o.RetryInterval = pause - } -} - -// Run runs terraform -func Run(args []string, opt ...RunOpt) error { - var opts runOpts - for _, o := range opt { - o(&opts) - } - - var ( - retry = Retry - rtchan = make(chan RetryMethod, 10) - stdout io.Writer = os.Stdout - stderr io.Writer = os.Stderr - ) - scanAndForward := func(wg *sync.WaitGroup, in io.Reader, out io.Writer) { - defer wg.Done() - - rd := bufio.NewReader(in) - for { - line, err := rd.ReadBytes('\n') - if err == io.EOF { - break - } - if err != nil { - ui.Warnf("scanAndForward failure:\n\t%q", err) - break - } - - rtchan <- opts.Retry(line) - if bytes.Contains(line, []byte("Enter a value")) { - continue - } - - out.Write(line) - - if bytes.Contains(line, []byte("Only 'yes' will be accepted to approve.")) { - fmt.Println("Enter a value: ") - } - } - } - - for retry == Retry { - retry = DontRetry - cancel := make(chan struct{}) - - var wg sync.WaitGroup - if opts.Retry != nil { - wg.Add(3) - - // empty rtchan from prior runs - emptyRtLoop: - for { - select { - case <-rtchan: - default: - break emptyRtLoop - } - } - // fan in retries - go func() { - defer wg.Done() - for { - select { - case <-cancel: - return - case rt := <-rtchan: - if rt > retry { - retry = rt - } - } - } - }() - - soutr, soutw := io.Pipe() - stdout = soutw - go scanAndForward(&wg, soutr, os.Stdout) - - serrr, serrw := io.Pipe() - stderr = serrw - go scanAndForward(&wg, serrr, os.Stderr) - } - - ui.Command("terraform", args...) - tfcmd := exec.Command("terraform", args...) - tfcmd.Stdout = stdout - tfcmd.Stderr = stderr - tfcmd.Stdin = os.Stdin - tfcmd.Dir = opts.Basedir - - err := tfcmd.Run() - close(cancel) - - if err != nil { - if opts.FatalErrors || retry == DontRetryAndFail { - ui.Fatalf("terraform failed: %q", err) - } - - // wait for the scanAndForward go routines to finish, i.e. wait until the final - // retry decision is made. - stdout.(io.WriteCloser).Close() - stderr.(io.WriteCloser).Close() - wg.Wait() - if retry == 0 { - return err - } - - ui.Warnf("terraform failed - will retry in %s", opts.RetryInterval.String()) - time.Sleep(opts.RetryInterval) - } - } - - return nil -} diff --git a/install/installer/pkg/terraform/variables.go b/install/installer/pkg/terraform/variables.go deleted file mode 100644 index a44790601a1dfc..00000000000000 --- a/install/installer/pkg/terraform/variables.go +++ /dev/null @@ -1,205 +0,0 @@ -// Copyright (c) 2020 Gitpod GmbH. All rights reserved. -// Licensed under the GNU Affero General Public License (AGPL). -// See License-AGPL.txt in the project root for license information. - -package terraform - -import ( - "bufio" - "encoding/json" - "fmt" - "os" - "os/exec" - "strings" - - "github.com/gitpod-io/installer/pkg/ui" - "github.com/gookit/color" - "github.com/hashicorp/hcl/v2" - "github.com/hashicorp/hcl/v2/hclparse" - "github.com/hashicorp/hcl/v2/hclwrite" - "github.com/zclconf/go-cty/cty" -) - -// PersistVariableOpts configures PersistVariable -type PersistVariableOpts struct { - Name string - Spec VariableSpec - Sources []VariableValueSource - ForceOverwrite bool -} - -// VariableSpec describes a variable -type VariableSpec struct { - Description string - Validate func(val string) error -} - -// VariableValueSource can possibly produce a value for the variable -type VariableValueSource func(name string, spec VariableSpec) (value string, ok bool) - -// PersistVariable tries to obtain the variable value and set it in the terraform file. -// If the value is already set in the TF file, nothing will happen. -func PersistVariable(file string, opts ...PersistVariableOpts) error { - tf, err := loadOrCreateFile(file) - if err != nil { - return err - } - - for _, opt := range opts { - if tf.Body().GetAttribute(opt.Name) != nil && !opt.ForceOverwrite { - continue - } - - var ( - val string - ok bool - ) - srcs := append(opt.Sources, - getVariableValueFromEnv, - getVariableValueInteractively, - ) - for _, src := range srcs { - val, ok = src(opt.Name, opt.Spec) - if ok { - break - } - } - if opt.Spec.Validate != nil { - err = opt.Spec.Validate(val) - if err != nil { - return fmt.Errorf("invalid value for %q: %w", opt.Name, err) - } - } - tf.Body().SetAttributeValue(opt.Name, cty.StringVal(val)) - } - - f, err := os.OpenFile(file, os.O_TRUNC|os.O_WRONLY, 0644) - if err != nil { - return err - } - defer f.Close() - _, err = tf.WriteTo(f) - if err != nil { - return err - } - - return nil -} - -// UnsetVariable unsets/removes a variable from a tf file -func UnsetVariable(file string, name string) error { - tf, err := loadOrCreateFile(file) - if err != nil { - return err - } - - tf.Body().RemoveAttribute(name) - - f, err := os.OpenFile(file, os.O_TRUNC|os.O_WRONLY, 0644) - if err != nil { - return err - } - defer f.Close() - _, err = tf.WriteTo(f) - if err != nil { - return err - } - - return nil -} - -func loadOrCreateFile(fn string) (*hclwrite.File, error) { - fc, err := os.ReadFile(fn) - if os.IsNotExist(err) { - ui.Infof("variables file does exist - creating new one: %s", fn) - return hclwrite.NewEmptyFile(), nil - } - - if err != nil { - return nil, err - } - tf, diags := hclwrite.ParseConfig(fc, fn, hcl.Pos{Line: 1, Column: 1}) - if diags.HasErrors() { - return nil, fmt.Errorf("terraform file %s has errors: %s", fn, diags) - } - return tf, nil -} - -func getVariableValueFromEnv(name string, spec VariableSpec) (value string, ok bool) { - return os.LookupEnv(fmt.Sprintf("INSTALLER_%s", strings.ToUpper(name))) -} - -func getVariableValueInteractively(name string, spec VariableSpec) (value string, ok bool) { - fmt.Printf("\n%s\n%s ? ", color.Bold.Sprint(spec.Description), name) - - for { - in := bufio.NewScanner(os.Stdin) - if !in.Scan() { - return "", false - } - value = strings.TrimSpace(in.Text()) - - if spec.Validate != nil { - err := spec.Validate(value) - if err != nil { - ui.Warnf(err.Error()) - fmt.Printf("%s ? ", name) - continue - } - } - - break - } - - if value == "" { - return "", false - } - return value, true -} - -// GetVariableValue reads the value of a variable from a file -func GetVariableValue(fn, name string) (string, error) { - f, _ := hclparse.NewParser().ParseHCLFile(fn) - if f == nil { - return "", fmt.Errorf("cannot parse %s", fn) - } - - attrs, _ := f.Body.JustAttributes() - attr := attrs[name] - if attr == nil { - return "", nil - } - val, _ := attr.Expr.Value(nil) - return val.AsString(), nil -} - -// GetOutputValue reads the value of an output variable from a terraform.tfstate file -func GetOutputValue(basedir string, variable string) (string, error) { - args := []string{"show", "-json"} - ui.Command("terraform", args...) - tfcmd := exec.Command("terraform", args...) - tfcmd.Dir = basedir - out, err := tfcmd.CombinedOutput() - if err != nil { - return "", fmt.Errorf("cannot run terraform: %w", err) - } - - var outputs struct { - Values struct { - Outputs map[string]struct { - Value string `json:"value"` - } `json:"outputs"` - } `json:"values"` - } - err = json.Unmarshal(out, &outputs) - if err != nil { - return "", fmt.Errorf("cannot unmarshal terraform output") - } - - val, ok := outputs.Values.Outputs[variable] - if !ok { - return "", nil - } - - return val.Value, nil -} diff --git a/install/installer/pkg/ui/log.go b/install/installer/pkg/ui/log.go deleted file mode 100644 index 64edfd76064f2b..00000000000000 --- a/install/installer/pkg/ui/log.go +++ /dev/null @@ -1,47 +0,0 @@ -// Copyright (c) 2020 Gitpod GmbH. All rights reserved. -// Licensed under the GNU Affero General Public License (AGPL). -// See License-AGPL.txt in the project root for license information. - -package ui - -import ( - "fmt" - "os" - "strings" - - "github.com/gookit/color" -) - -// Command prints a command as run by the installer -func Command(name string, args ...string) { - fmt.Println(prefix(color.Gray.Light().Sprintf("running command: %s %v", name, args), " ", color.BgGray.Light())) -} - -// Infof logs out something informative -func Infof(format string, args ...interface{}) { - fmt.Println(prefix(fmt.Sprintf(format, args...), " ", color.BgGreen)) -} - -// Warnf warns the user about something -func Warnf(format string, args ...interface{}) { - fmt.Println(prefix(fmt.Sprintf(format, args...), " ", color.BgYellow)) -} - -// Errorf prints an error message -func Errorf(format string, args ...interface{}) { - fmt.Println(prefix(fmt.Sprintf("\n"+format+"\n", args...), " ", color.BgRed.Light())) -} - -// Fatalf prints the message and exits with exit code 1 -func Fatalf(format string, args ...interface{}) { - fmt.Println(prefix(fmt.Sprintf("\n"+format+"\n", args...), "!!", color.BgRed.Light())) - os.Exit(1) -} - -func prefix(txt, prefix string, c color.Color) string { - lines := strings.Split(txt, "\n") - for i, l := range lines { - lines[i] = c.Sprint(prefix) + " " + l - } - return strings.Join(lines, "\n") -}