diff --git a/.github/workflows/tf-deploy-gcp.yml b/.github/workflows/tf-deploy-gcp.yml index 5dc80880e1..818de73dc4 100644 --- a/.github/workflows/tf-deploy-gcp.yml +++ b/.github/workflows/tf-deploy-gcp.yml @@ -134,6 +134,40 @@ jobs: run: terraform apply -auto-approve working-directory: terraform/gcp/external-ips/cloud-nat/${{ github.event.inputs.env }} + gcp_external_ip_external_lb: + needs: gcp_vpc + runs-on: ubuntu-latest + steps: + - run: | + echo "External IP for External Load Balancer / ${{ github.event.inputs.env }}" + + - name: Checkout + uses: actions/checkout@v2 + + - name: Setup Terraform + uses: hashicorp/setup-terraform@v1 + with: + terraform_version: ${{ github.event.inputs.tf_version }} + cli_config_credentials_token: ${{ secrets.TF_API_TOKEN }} + + # - name: Configure GCP credentials + # uses: google-github-actions/setup-gcloud@v0.2.1 + # with: + # version: 324.0.0 + # service_account_key: ${{ secrets.GCP_SA_KEY_PROD }} + # export_default_credentials: true + + # - name: Use gcloud CLI + # run: gcloud info + + - name: Terraform Init + run: terraform init -upgrade + working-directory: terraform/gcp/external-ips/external-lb/${{ github.event.inputs.env }} + + - name: Terraform Apply + run: terraform apply -auto-approve + working-directory: terraform/gcp/external-ips/external-lb/${{ github.event.inputs.env }} + gcp_cloud_nat: needs: gcp_external_ip_cloud_nat runs-on: ubuntu-latest @@ -309,6 +343,7 @@ jobs: - gcp_cloud_nat - gcp_artifact_registry - gcp_pubsub + - gcp_external_ip_external_lb - gcp_internal_ip_internal_lb runs-on: ubuntu-latest steps: diff --git a/.github/workflows/tf-undeploy-gcp.yml b/.github/workflows/tf-undeploy-gcp.yml index 152b69d4b7..ae8e26b662 100644 --- a/.github/workflows/tf-undeploy-gcp.yml +++ b/.github/workflows/tf-undeploy-gcp.yml @@ -446,8 +446,42 @@ jobs: run: terraform destroy -auto-approve working-directory: terraform/gcp/external-ips/cloud-nat/${{ github.event.inputs.env }} + gcp_external_ip_external_lb: + needs: gcp_gke + runs-on: ubuntu-latest + steps: + - run: | + echo "External IP for External Load Balancer / ${{ github.event.inputs.env }}" + + - name: Checkout + uses: actions/checkout@v2 + + - name: Setup Terraform + uses: hashicorp/setup-terraform@v1 + with: + terraform_version: ${{ github.event.inputs.tf_version }} + cli_config_credentials_token: ${{ secrets.TF_API_TOKEN }} + + # - name: Configure GCP credentials + # uses: google-github-actions/setup-gcloud@v0.2.1 + # with: + # version: 324.0.0 + # service_account_key: ${{ secrets.GCP_SA_KEY_PROD }} + # export_default_credentials: true + + # - name: Use gcloud CLI + # run: gcloud info + + - name: Terraform Init + run: terraform init -upgrade + working-directory: terraform/gcp/external-ips/external-lb/${{ github.event.inputs.env }} + + - name: Terraform Destroy + run: terraform destroy -auto-approve + working-directory: terraform/gcp/external-ips/external-lb/${{ github.event.inputs.env }} + gcp_internal_ip_internal_lb: - needs: gcp_cloud_nat + needs: gcp_gke runs-on: ubuntu-latest steps: - run: | @@ -488,6 +522,7 @@ jobs: - gcp_pubsub - gcp_artifact_registry - gcp_external_ip_cloud_nat + - gcp_external_ip_external_lb - gcp_internal_ip_internal_lb runs-on: ubuntu-latest steps: diff --git a/gitops/fluxcd/clusters/gcp/prod/apigateway.yaml b/gitops/fluxcd/clusters/gcp/prod/apigateway.yaml new file mode 100644 index 0000000000..3af53ddc88 --- /dev/null +++ b/gitops/fluxcd/clusters/gcp/prod/apigateway.yaml @@ -0,0 +1,38 @@ +# Copyright (C) 2021 Nicolas Lamirault +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +--- +apiVersion: kustomize.toolkit.fluxcd.io/v1beta2 +kind: Kustomization +metadata: + name: apigateway + namespace: flux-system +spec: + interval: 10m0s + # dependsOn: + # - name: kube-prometheus-stack-crd + sourceRef: + kind: GitRepository + name: flux-system + path: ./gitops/fluxcd/kubernetes/overlays/gcp/dev/apigateway/gke + prune: true + healthChecks: + - apiVersion: networking.x-k8s.io/v1alpha1 + kind: Gateway + name: external-http + namespace: apigateway + - apiVersion: networking.x-k8s.io/v1alpha1 + kind: Gateway + name: internal-http + namespace: apigateway diff --git a/gitops/fluxcd/clusters/gcp/prod/whereami.yaml b/gitops/fluxcd/clusters/gcp/prod/whereami.yaml new file mode 100644 index 0000000000..95ac6ae589 --- /dev/null +++ b/gitops/fluxcd/clusters/gcp/prod/whereami.yaml @@ -0,0 +1,46 @@ +# Copyright (C) 2021 Nicolas Lamirault +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +--- +apiVersion: kustomize.toolkit.fluxcd.io/v1beta2 +kind: Kustomization +metadata: + name: whereami + namespace: flux-system +spec: + interval: 10m0s + # dependsOn: + # - name: kube-prometheus-stack-crd + sourceRef: + kind: GitRepository + name: flux-system + path: ./gitops/fluxcd/kubernetes/overlays/gcp/dev/whereami/whereami + prune: true + healthChecks: + - apiVersion: apps/v1 + kind: Deployment + name: whereami-foo + namespace: whereami + - apiVersion: apps/v1 + kind: Deployment + name: whereami-bar + namespace: whereami + - apiVersion: networking.x-k8s.io/v1alpha1 + kind: HTTPRoute + name: whereami-foo + namespace: whereami + - apiVersion: networking.x-k8s.io/v1alpha1 + kind: HTTPRoute + name: whereami-bar + namespace: whereami diff --git a/gitops/fluxcd/kubernetes/base/apigateway/gke/external-gateway.yaml b/gitops/fluxcd/kubernetes/base/apigateway/gke/external-gateway.yaml new file mode 100644 index 0000000000..838d4d5bf7 --- /dev/null +++ b/gitops/fluxcd/kubernetes/base/apigateway/gke/external-gateway.yaml @@ -0,0 +1,36 @@ +# Copyright (C) 2021 Nicolas Lamirault +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +--- +kind: Gateway +apiVersion: networking.x-k8s.io/v1alpha1 +metadata: + name: external-http +spec: + gatewayClassName: gke-l7-gxlb + listeners: + - protocol: HTTPS + port: 443 + routes: + kind: HTTPRoute + selector: + matchLabels: + gateway: external-http + # tls: + # mode: Terminate + # options: + # networking.gke.io/pre-shared-certs: portefaix-dev-cert + addresses: + - type: NamedAddress + value: ADDRESS_NAME diff --git a/gitops/fluxcd/kubernetes/base/apigateway/gke/internal-gateway.yaml b/gitops/fluxcd/kubernetes/base/apigateway/gke/internal-gateway.yaml new file mode 100644 index 0000000000..357c38732d --- /dev/null +++ b/gitops/fluxcd/kubernetes/base/apigateway/gke/internal-gateway.yaml @@ -0,0 +1,32 @@ +# Copyright (C) 2021 Nicolas Lamirault +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +--- +kind: Gateway +apiVersion: networking.x-k8s.io/v1alpha1 +metadata: + name: internal-http +spec: + gatewayClassName: gke-l7-rilb + listeners: + - protocol: HTTP + port: 80 + routes: + kind: HTTPRoute + selector: + matchLabels: + gateway: internal-gateway + addresses: + - type: NamedAddress + value: ADDRESS_NAME diff --git a/gitops/fluxcd/kubernetes/base/apigateway/gke/kustomization.yaml b/gitops/fluxcd/kubernetes/base/apigateway/gke/kustomization.yaml new file mode 100644 index 0000000000..0de0c62362 --- /dev/null +++ b/gitops/fluxcd/kubernetes/base/apigateway/gke/kustomization.yaml @@ -0,0 +1,21 @@ +# Copyright (C) 2021 Nicolas Lamirault +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +--- +apiVersion: kustomize.config.k8s.io/v1beta1 +kind: Kustomization +resources: +- ../namespace +- ./external-gateway.yaml +- ./internal-gateway.yaml diff --git a/gitops/fluxcd/kubernetes/base/whereami/namespace/kustomization.yaml b/gitops/fluxcd/kubernetes/base/whereami/namespace/kustomization.yaml new file mode 100644 index 0000000000..d09faeecd4 --- /dev/null +++ b/gitops/fluxcd/kubernetes/base/whereami/namespace/kustomization.yaml @@ -0,0 +1,19 @@ +# Copyright (C) 2021 Nicolas Lamirault +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +--- +apiVersion: kustomize.config.k8s.io/v1beta1 +kind: Kustomization +resources: +- ./namespace.yaml diff --git a/gitops/fluxcd/kubernetes/base/whereami/namespace/namespace.yaml b/gitops/fluxcd/kubernetes/base/whereami/namespace/namespace.yaml new file mode 100644 index 0000000000..4f1b1bb14e --- /dev/null +++ b/gitops/fluxcd/kubernetes/base/whereami/namespace/namespace.yaml @@ -0,0 +1,19 @@ +# Copyright (C) 2021 Nicolas Lamirault +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +--- +apiVersion: v1 +kind: Namespace +metadata: + name: whereami diff --git a/gitops/fluxcd/kubernetes/base/whereami/whereami/kustomization.yaml b/gitops/fluxcd/kubernetes/base/whereami/whereami/kustomization.yaml new file mode 100644 index 0000000000..5415f01bdc --- /dev/null +++ b/gitops/fluxcd/kubernetes/base/whereami/whereami/kustomization.yaml @@ -0,0 +1,22 @@ +# Copyright (C) 2021 Nicolas Lamirault +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +--- +apiVersion: kustomize.config.k8s.io/v1beta1 +kind: Kustomization +transformers: +- labels.yaml +resources: +- ../namespace +- ./whereami.yaml diff --git a/gitops/fluxcd/kubernetes/base/whereami/whereami/labels.yaml b/gitops/fluxcd/kubernetes/base/whereami/whereami/labels.yaml new file mode 100644 index 0000000000..3ba6a147f3 --- /dev/null +++ b/gitops/fluxcd/kubernetes/base/whereami/whereami/labels.yaml @@ -0,0 +1,37 @@ +# Copyright (C) 2021 Nicolas Lamirault +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +--- +apiVersion: builtin +kind: LabelTransformer +metadata: + name: labels +labels: + app.kubernetes.io/name: whereami + app.kubernetes.io/instance: whereami-app + app.kubernetes.io/component: whereami + app.kubernetes.io/version: v1.2.6 + app.kubernetes.io/part-of: whereami + app.kubernetes.io/managed-by: kustomize + portefaix.xyz/version: v0.30.0 +fieldSpecs: +- path: metadata/labels + create: true +- path: spec/selector + create: true + version: v1 + kind: Service +- path: spec/selector/matchLabels + create: true + kind: Deployment diff --git a/gitops/fluxcd/kubernetes/base/whereami/whereami/whereami.yaml b/gitops/fluxcd/kubernetes/base/whereami/whereami/whereami.yaml new file mode 100644 index 0000000000..1b9897abc5 --- /dev/null +++ b/gitops/fluxcd/kubernetes/base/whereami/whereami/whereami.yaml @@ -0,0 +1,106 @@ +# Copyright (C) 2021 Nicolas Lamirault +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +--- +apiVersion: apps/v1 +kind: Deployment +metadata: + name: whereami-foo + namespace: whereami + labels: + app: whereami-foo +spec: + replicas: 2 + selector: + matchLabels: + app: whereami-foo + template: + metadata: + labels: + app: whereami-foo + spec: + containers: + - name: whereami + image: gcr.io/google-samples/whereami:v1.2.6 + env: + - name: METADATA + value: "foo" + ports: + - name: http + containerPort: 8080 + readinessProbe: + httpGet: + path: /healthz + port: 8080 + scheme: HTTP +--- +apiVersion: v1 +kind: Service +metadata: + name: whereami-foo + namespace: whereami + labels: + app: whereami-foo +spec: + selector: + app: whereami-foo + ports: + - port: 8080 + targetPort: 8080 +--- +apiVersion: apps/v1 +kind: Deployment +metadata: + name: whereami-bar + namespace: whereami + labels: + app: whereami-bar +spec: + replicas: 2 + selector: + matchLabels: + app: whereami-bar + template: + metadata: + labels: + app: whereami-bar + spec: + containers: + - name: whereami + image: gcr.io/google-samples/whereami:v1.2.6 + env: + - name: METADATA + value: "bar" + ports: + - name: http + containerPort: 8080 + readinessProbe: + httpGet: + path: /healthz + port: 8080 + scheme: HTTP +--- +apiVersion: v1 +kind: Service +metadata: + name: whereami-bar + namespace: whereami + labels: + app: whereami-bar +spec: + selector: + app: whereami-bar + ports: + - port: 8080 + targetPort: 8080 diff --git a/gitops/fluxcd/kubernetes/overlays/gcp/dev/apigateway/gke/apigateway.yaml b/gitops/fluxcd/kubernetes/overlays/gcp/dev/apigateway/gke/apigateway.yaml new file mode 100644 index 0000000000..16d68ac5a0 --- /dev/null +++ b/gitops/fluxcd/kubernetes/overlays/gcp/dev/apigateway/gke/apigateway.yaml @@ -0,0 +1,32 @@ +# Copyright (C) 2021 Nicolas Lamirault +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +--- +kind: Gateway +apiVersion: networking.x-k8s.io/v1alpha1 +metadata: + name: external-http +spec: + addresses: + - type: NamedAddress + value: portefaix-dev-external-lb +--- +kind: Gateway +apiVersion: networking.x-k8s.io/v1alpha1 +metadata: + name: internal-http +spec: + addresses: + - type: NamedAddress + value: portefaix-dev-internal-lb diff --git a/gitops/fluxcd/kubernetes/overlays/gcp/dev/apigateway/gke/kustomization.yaml b/gitops/fluxcd/kubernetes/overlays/gcp/dev/apigateway/gke/kustomization.yaml new file mode 100644 index 0000000000..dd1fb99197 --- /dev/null +++ b/gitops/fluxcd/kubernetes/overlays/gcp/dev/apigateway/gke/kustomization.yaml @@ -0,0 +1,21 @@ +# Copyright (C) 2021 Nicolas Lamirault +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +--- +apiVersion: kustomize.config.k8s.io/v1beta1 +kind: Kustomization +resources: +- ../../../../../base/apigateway/gke +patchesStrategicMerge: +- apigateway.yaml diff --git a/gitops/fluxcd/kubernetes/overlays/gcp/dev/whereami/whereami/httproutes.yaml b/gitops/fluxcd/kubernetes/overlays/gcp/dev/whereami/whereami/httproutes.yaml new file mode 100644 index 0000000000..14d11ac843 --- /dev/null +++ b/gitops/fluxcd/kubernetes/overlays/gcp/dev/whereami/whereami/httproutes.yaml @@ -0,0 +1,54 @@ +# Copyright (C) 2021 Nicolas Lamirault +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +--- +kind: HTTPRoute +apiVersion: networking.x-k8s.io/v1alpha1 +metadata: + name: whereami-foo + namespace: whereami + labels: + app: whereami-foo +spec: + gateways: + allow: FromList + gatewayRefs: + - name: external-http + namespace: apigateway + hostnames: + - "whereami-foo.gcp.lamirault.xyz" + rules: + - forwardTo: + - serviceName: whereami-foo + port: 8080 +--- +kind: HTTPRoute +apiVersion: networking.x-k8s.io/v1alpha1 +metadata: + name: whereami-bar + namespace: whereami + labels: + app: whereami-bar +spec: + gateways: + allow: FromList + gatewayRefs: + - name: external-http + namespace: apigateway + hostnames: + - "whereami-bar.gcp.lamirault.xyz" + rules: + - forwardTo: + - serviceName: whereami-bar + port: 8080 diff --git a/gitops/fluxcd/kubernetes/overlays/gcp/dev/whereami/whereami/kustomization.yaml b/gitops/fluxcd/kubernetes/overlays/gcp/dev/whereami/whereami/kustomization.yaml new file mode 100644 index 0000000000..1e9a008519 --- /dev/null +++ b/gitops/fluxcd/kubernetes/overlays/gcp/dev/whereami/whereami/kustomization.yaml @@ -0,0 +1,20 @@ +# Copyright (C) 2021 Nicolas Lamirault +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +--- +apiVersion: kustomize.config.k8s.io/v1beta1 +kind: Kustomization +resources: +- ../../../../../base/whereami/whereami +- ./httproutes.yaml diff --git a/terraform/gcp/external-ips/external-lb/dev/.terraform-version b/terraform/gcp/external-ips/external-lb/dev/.terraform-version new file mode 100644 index 0000000000..e25d8d9f35 --- /dev/null +++ b/terraform/gcp/external-ips/external-lb/dev/.terraform-version @@ -0,0 +1 @@ +1.1.5 diff --git a/terraform/gcp/external-ips/external-lb/dev/.terraform.lock.hcl b/terraform/gcp/external-ips/external-lb/dev/.terraform.lock.hcl new file mode 100644 index 0000000000..98174dd864 --- /dev/null +++ b/terraform/gcp/external-ips/external-lb/dev/.terraform.lock.hcl @@ -0,0 +1,55 @@ +# This file is maintained automatically by "terraform init". +# Manual edits may be lost in future updates. + +provider "registry.terraform.io/hashicorp/google" { + version = "4.10.0" + constraints = "4.10.0" + hashes = [ + "h1:0NoqhNTgzrnhUkyUf8mbNla0W2HT6qire2DOzMnFd/U=", + "h1:3h6rm4oV59H2iyKeWPkzAQCAtDp7fajYJh2t/tk49JM=", + "h1:Hl5IzrNzeWfEy6AjNej2PlMTa3p+5T75tc9FV4FqCU0=", + "h1:P1frw7JuQ48Lenrq66/Ui+BzmP+f/5RMNLs4UzTbb0M=", + "h1:VRv6ISPlBo6ImYBAMyd5wJyhrptX3jBvESpVCbrzV+I=", + "h1:kINRoM9cVGpVdYAS4fNxcSjIPuGOx6CC1niRdtKQIYw=", + "h1:klcBszbevW3m4qYTIBKzVSa6jqm0ajQQbhfQuLBLebc=", + "h1:pP4kfF58QltprmdMmXbpgUKzlmcqrmZHf1L3DzWFLso=", + "h1:shYDX/nVFra0HL0LJt77RPQf7a10jncVMKW8TqKEmYk=", + "h1:tUBTkxoznR07bD2zQNqTwlkgRCal0r9mIaIOXG9DeTg=", + "h1:uFW3Sj871W1n00RSEB4XzOPp5Od99iZpI8ixIHPGvVU=", + ] +} + +provider "registry.terraform.io/hashicorp/null" { + version = "3.1.0" + hashes = [ + "h1:vpC6bgUQoJ0znqIKVFevOdq+YQw42bRq0u+H3nto8nA=", + "zh:02a1675fd8de126a00460942aaae242e65ca3380b5bb192e8773ef3da9073fd2", + "zh:53e30545ff8926a8e30ad30648991ca8b93b6fa496272cd23b26763c8ee84515", + "zh:5f9200bf708913621d0f6514179d89700e9aa3097c77dac730e8ba6e5901d521", + "zh:9ebf4d9704faba06b3ec7242c773c0fbfe12d62db7d00356d4f55385fc69bfb2", + "zh:a6576c81adc70326e4e1c999c04ad9ca37113a6e925aefab4765e5a5198efa7e", + "zh:a8a42d13346347aff6c63a37cda9b2c6aa5cc384a55b2fe6d6adfa390e609c53", + "zh:c797744d08a5307d50210e0454f91ca4d1c7621c68740441cf4579390452321d", + "zh:cecb6a304046df34c11229f20a80b24b1603960b794d68361a67c5efe58e62b8", + "zh:e1371aa1e502000d9974cfaff5be4cfa02f47b17400005a16f14d2ef30dc2a70", + "zh:fc39cc1fe71234a0b0369d5c5c7f876c71b956d23d7d6f518289737a001ba69b", + "zh:fea4227271ebf7d9e2b61b89ce2328c7262acd9fd190e1fd6d15a591abfa848e", + ] +} + +provider "registry.terraform.io/hashicorp/template" { + version = "2.2.0" + hashes = [ + "h1:94qn780bi1qjrbC3uQtjJh3Wkfwd5+tTtJHOb7KTg9w=", + "zh:01702196f0a0492ec07917db7aaa595843d8f171dc195f4c988d2ffca2a06386", + "zh:09aae3da826ba3d7df69efeb25d146a1de0d03e951d35019a0f80e4f58c89b53", + "zh:09ba83c0625b6fe0a954da6fbd0c355ac0b7f07f86c91a2a97849140fea49603", + "zh:0e3a6c8e16f17f19010accd0844187d524580d9fdb0731f675ffcf4afba03d16", + "zh:45f2c594b6f2f34ea663704cc72048b212fe7d16fb4cfd959365fa997228a776", + "zh:77ea3e5a0446784d77114b5e851c970a3dde1e08fa6de38210b8385d7605d451", + "zh:8a154388f3708e3df5a69122a23bdfaf760a523788a5081976b3d5616f7d30ae", + "zh:992843002f2db5a11e626b3fc23dc0c87ad3729b3b3cff08e32ffb3df97edbde", + "zh:ad906f4cebd3ec5e43d5cd6dc8f4c5c9cc3b33d2243c89c5fc18f97f7277b51d", + "zh:c979425ddb256511137ecd093e23283234da0154b7fa8b21c2687182d9aea8b2", + ] +} diff --git a/terraform/gcp/external-ips/external-lb/dev/README.md b/terraform/gcp/external-ips/external-lb/dev/README.md new file mode 100644 index 0000000000..e3983db61d --- /dev/null +++ b/terraform/gcp/external-ips/external-lb/dev/README.md @@ -0,0 +1,36 @@ +## Requirements + +| Name | Version | +|------|---------| +| terraform | >= 0.13.5 | +| google | 3.74.0 | +| google-beta | 3.74.0 | + +## Providers + +| Name | Version | +|------|---------| +| google-beta | 3.74.0 | + +## Modules + +No Modules. + +## Resources + +| Name | +|------| +| [google-beta_google_compute_address](https://registry.terraform.io/providers/hashicorp/google-beta/3.74.0/docs/resources/google_compute_address) | + +## Inputs + +| Name | Description | Type | Default | Required | +|------|-------------|------|---------|:--------:| +| external\_ip\_names | Names of the External IP for the Cloud NAT | `set(string)` | n/a | yes | +| labels | Map of labels to apply to the IP address | `map(string)` |
{
"made-by": "terraform"
}
| no | +| project | The project in which the resource belongs | `string` | n/a | yes | +| region | The region in which the cluster should be created. | `string` | n/a | yes | + +## Outputs + +No output. diff --git a/terraform/gcp/external-ips/external-lb/dev/backend.tf b/terraform/gcp/external-ips/external-lb/dev/backend.tf new file mode 100644 index 0000000000..3dbdf6808c --- /dev/null +++ b/terraform/gcp/external-ips/external-lb/dev/backend.tf @@ -0,0 +1,27 @@ +# Copyright (C) 2021 Nicolas Lamirault +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +terraform { + # backend "gcs" { + # bucket = "portefaix-dev-tfstates" + # } + backend "remote" { + hostname = "app.terraform.io" + organization = "portefaix" + + workspaces { + name = "portefaix-gcp-dev-external-ip-external-lb" + } + } +} diff --git a/terraform/gcp/external-ips/external-lb/dev/dev.auto.tfvars b/terraform/gcp/external-ips/external-lb/dev/dev.auto.tfvars new file mode 100644 index 0000000000..bd768208b0 --- /dev/null +++ b/terraform/gcp/external-ips/external-lb/dev/dev.auto.tfvars @@ -0,0 +1,38 @@ +# Copyright (C) 2021 Nicolas Lamirault +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +###################################################################### +# Provider + +project = "portefaix-dev" + +region = "europe-west1" + + +############################################################################# +# External IPs + +project_id = "portefaix-dev" + +ip_region = "europe-west1" + +names = [ + "portefaix-dev-external-lb" +] + +#labels = { +# "service" = "load-balancer", +# "roler" = "external" +# "made-by" = "terraform" +#} diff --git a/terraform/gcp/internal-ips/internal-lb/dev/external-ips.tf b/terraform/gcp/external-ips/external-lb/dev/external-ips.tf similarity index 92% rename from terraform/gcp/internal-ips/internal-lb/dev/external-ips.tf rename to terraform/gcp/external-ips/external-lb/dev/external-ips.tf index 435b77b69f..4b5a03d660 100644 --- a/terraform/gcp/internal-ips/internal-lb/dev/external-ips.tf +++ b/terraform/gcp/external-ips/external-lb/dev/external-ips.tf @@ -12,8 +12,8 @@ # See the License for the specific language governing permissions and # limitations under the License. -module "cloud_nat" { - source = "../modules/cloud-nat" +module "external_lb" { + source = "../modules/external-lb" project_id = var.project_id region = var.ip_region diff --git a/terraform/gcp/external-ips/external-lb/dev/main.tf b/terraform/gcp/external-ips/external-lb/dev/main.tf new file mode 100644 index 0000000000..e2a316460b --- /dev/null +++ b/terraform/gcp/external-ips/external-lb/dev/main.tf @@ -0,0 +1,28 @@ +# Copyright (C) 2021 Nicolas Lamirault +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +terraform { + required_version = ">= 1.0.0" + + required_providers { + google = { + source = "hashicorp/google" + version = "4.10.0" + } + # google-beta = { + # source = "hashicorp/google-beta" + # version = "< 4.0.0" + # } + } +} diff --git a/terraform/gcp/external-ips/external-lb/dev/outputs.tf b/terraform/gcp/external-ips/external-lb/dev/outputs.tf new file mode 100644 index 0000000000..c01521eaf0 --- /dev/null +++ b/terraform/gcp/external-ips/external-lb/dev/outputs.tf @@ -0,0 +1,13 @@ +# Copyright (C) 2021 Nicolas Lamirault +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. diff --git a/terraform/gcp/external-ips/external-lb/dev/provider.tf b/terraform/gcp/external-ips/external-lb/dev/provider.tf new file mode 100644 index 0000000000..d742b8bdc7 --- /dev/null +++ b/terraform/gcp/external-ips/external-lb/dev/provider.tf @@ -0,0 +1,23 @@ +# Copyright (C) 2021 Nicolas Lamirault +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +provider "google" { + project = var.project + region = var.region +} + +# provider "google-beta" { +# project = var.project +# region = var.region +# } diff --git a/terraform/gcp/external-ips/external-lb/dev/variables.tf b/terraform/gcp/external-ips/external-lb/dev/variables.tf new file mode 100644 index 0000000000..ab0cf922a3 --- /dev/null +++ b/terraform/gcp/external-ips/external-lb/dev/variables.tf @@ -0,0 +1,53 @@ +# Copyright (C) 2021 Nicolas Lamirault +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +###################################################################### +# Provider + +variable "project" { + type = string + description = "The project in which the resource belongs" +} + +variable "region" { + type = string + description = "The region in which the cluster should be created." +} + +############################################################################# +# External IPs + +variable "project_id" { + type = string + description = "The project ID to create the address in" +} + +variable "ip_region" { + type = string + description = "The region to create the address in" +} + +variable "names" { + description = "A list of IP address resource names to create. This is the GCP resource name and not the associated hostname of the IP address. Existing resource names may be found with `gcloud compute addresses list` (e.g. [\"gusw1-dev-fooapp-fe-0001-a-001-ip\"])" + type = list(string) + default = [] +} + +# variable "labels" { +# description = "Map of labels to apply to the IP address" +# type = map(string) +# default = { +# "made-by" = "terraform" +# } +# } diff --git a/terraform/gcp/external-ips/external-lb/modules/external-lb/.terraform-version b/terraform/gcp/external-ips/external-lb/modules/external-lb/.terraform-version new file mode 100644 index 0000000000..e25d8d9f35 --- /dev/null +++ b/terraform/gcp/external-ips/external-lb/modules/external-lb/.terraform-version @@ -0,0 +1 @@ +1.1.5 diff --git a/terraform/gcp/external-ips/external-lb/modules/external-lb/README.md b/terraform/gcp/external-ips/external-lb/modules/external-lb/README.md new file mode 100644 index 0000000000..e3983db61d --- /dev/null +++ b/terraform/gcp/external-ips/external-lb/modules/external-lb/README.md @@ -0,0 +1,36 @@ +## Requirements + +| Name | Version | +|------|---------| +| terraform | >= 0.13.5 | +| google | 3.74.0 | +| google-beta | 3.74.0 | + +## Providers + +| Name | Version | +|------|---------| +| google-beta | 3.74.0 | + +## Modules + +No Modules. + +## Resources + +| Name | +|------| +| [google-beta_google_compute_address](https://registry.terraform.io/providers/hashicorp/google-beta/3.74.0/docs/resources/google_compute_address) | + +## Inputs + +| Name | Description | Type | Default | Required | +|------|-------------|------|---------|:--------:| +| external\_ip\_names | Names of the External IP for the Cloud NAT | `set(string)` | n/a | yes | +| labels | Map of labels to apply to the IP address | `map(string)` |
{
"made-by": "terraform"
}
| no | +| project | The project in which the resource belongs | `string` | n/a | yes | +| region | The region in which the cluster should be created. | `string` | n/a | yes | + +## Outputs + +No output. diff --git a/terraform/gcp/external-ips/external-lb/modules/external-lb/external-ips.tf b/terraform/gcp/external-ips/external-lb/modules/external-lb/external-ips.tf new file mode 100644 index 0000000000..9136c68678 --- /dev/null +++ b/terraform/gcp/external-ips/external-lb/modules/external-lb/external-ips.tf @@ -0,0 +1,23 @@ +# Copyright (C) 2021 Nicolas Lamirault +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +module "external_lb" { + source = "terraform-google-modules/address/google" + version = "3.1.0" + + project_id = var.project_id + region = var.region + names = var.names + address_type = "EXTERNAL" +} diff --git a/terraform/gcp/external-ips/external-lb/modules/external-lb/main.tf b/terraform/gcp/external-ips/external-lb/modules/external-lb/main.tf new file mode 100644 index 0000000000..5a79f9d866 --- /dev/null +++ b/terraform/gcp/external-ips/external-lb/modules/external-lb/main.tf @@ -0,0 +1,28 @@ +# Copyright (C) 2021 Nicolas Lamirault +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +terraform { + required_version = ">= 1.0.0" + + # required_providers { + # google = { + # source = "hashicorp/google" + # version = "< 4.0.0" + # } + # google-beta = { + # source = "hashicorp/google-beta" + # version = "4.0.0" + # } + # } +} diff --git a/terraform/gcp/external-ips/external-lb/modules/external-lb/outputs.tf b/terraform/gcp/external-ips/external-lb/modules/external-lb/outputs.tf new file mode 100644 index 0000000000..c01521eaf0 --- /dev/null +++ b/terraform/gcp/external-ips/external-lb/modules/external-lb/outputs.tf @@ -0,0 +1,13 @@ +# Copyright (C) 2021 Nicolas Lamirault +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. diff --git a/terraform/gcp/external-ips/external-lb/modules/external-lb/variables.tf b/terraform/gcp/external-ips/external-lb/modules/external-lb/variables.tf new file mode 100644 index 0000000000..daf03f1e2d --- /dev/null +++ b/terraform/gcp/external-ips/external-lb/modules/external-lb/variables.tf @@ -0,0 +1,40 @@ +# Copyright (C) 2021 Nicolas Lamirault +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +############################################################################# +# External IPs + +variable "project_id" { + type = string + description = "The project ID to create the address in" +} + +variable "region" { + type = string + description = "The region to create the address in" +} + +variable "names" { + description = "A list of IP address resource names to create. This is the GCP resource name and not the associated hostname of the IP address. Existing resource names may be found with `gcloud compute addresses list` (e.g. [\"gusw1-dev-fooapp-fe-0001-a-001-ip\"])" + type = list(string) + default = [] +} + +# variable "labels" { +# description = "Map of labels to apply to the IP address" +# type = map(string) +# default = { +# "made-by" = "terraform" +# } +# } diff --git a/terraform/gcp/internal-ips/internal-lb/dev/backend.tf b/terraform/gcp/internal-ips/internal-lb/dev/backend.tf index f81aa4edb0..be2327e139 100644 --- a/terraform/gcp/internal-ips/internal-lb/dev/backend.tf +++ b/terraform/gcp/internal-ips/internal-lb/dev/backend.tf @@ -21,7 +21,7 @@ terraform { organization = "portefaix" workspaces { - name = "portefaix-gcp-dev-external-ip-cloud-nat" + name = "portefaix-gcp-dev-internal-ip-internal-lb" } } } diff --git a/terraform/gcp/internal-ips/internal-lb/dev/dev.auto.tfvars b/terraform/gcp/internal-ips/internal-lb/dev/dev.auto.tfvars index fe615318f9..c3b02f8b64 100644 --- a/terraform/gcp/internal-ips/internal-lb/dev/dev.auto.tfvars +++ b/terraform/gcp/internal-ips/internal-lb/dev/dev.auto.tfvars @@ -27,11 +27,14 @@ project_id = "portefaix-dev" ip_region = "europe-west1" +subnetwork = "portefaix-dev" + names = [ "portefaix-dev-internal-lb", ] # labels = { -# "service" = "internal-lb", +# "service" = "load-balancer", +# "role" = "internal", # "made-by" = "terraform" # } diff --git a/terraform/gcp/internal-ips/internal-lb/dev/internal-ips.tf b/terraform/gcp/internal-ips/internal-lb/dev/internal-ips.tf new file mode 100644 index 0000000000..a3af822faa --- /dev/null +++ b/terraform/gcp/internal-ips/internal-lb/dev/internal-ips.tf @@ -0,0 +1,24 @@ +# Copyright (C) 2021 Nicolas Lamirault +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +module "internal_lb" { + source = "../modules/internal-lb" + + project_id = var.project_id + region = var.ip_region + names = var.names + subnetwork = var.subnetwork + + # labels = var.labels +} diff --git a/terraform/gcp/internal-ips/internal-lb/dev/variables.tf b/terraform/gcp/internal-ips/internal-lb/dev/variables.tf index 90977b2c7c..b1740f5b69 100644 --- a/terraform/gcp/internal-ips/internal-lb/dev/variables.tf +++ b/terraform/gcp/internal-ips/internal-lb/dev/variables.tf @@ -44,6 +44,11 @@ variable "names" { default = [] } +variable "subnetwork" { + type = string + description = "The subnet containing the addresses." +} + # variable "labels" { # description = "Map of labels to apply to the IP address" # type = map(string) diff --git a/terraform/gcp/internal-ips/internal-lb/modules/internal-lb/internal-ips.tf b/terraform/gcp/internal-ips/internal-lb/modules/internal-lb/internal-ips.tf index 74d9af969a..98d89d0476 100644 --- a/terraform/gcp/internal-ips/internal-lb/modules/internal-lb/internal-ips.tf +++ b/terraform/gcp/internal-ips/internal-lb/modules/internal-lb/internal-ips.tf @@ -20,4 +20,5 @@ module "internal_lb" { region = var.region names = var.names address_type = "INTERNAL" + subnetwork = var.subnetwork } diff --git a/terraform/gcp/internal-ips/internal-lb/modules/internal-lb/variables.tf b/terraform/gcp/internal-ips/internal-lb/modules/internal-lb/variables.tf index 0279692a13..8520bffff0 100644 --- a/terraform/gcp/internal-ips/internal-lb/modules/internal-lb/variables.tf +++ b/terraform/gcp/internal-ips/internal-lb/modules/internal-lb/variables.tf @@ -31,6 +31,11 @@ variable "names" { default = [] } +variable "subnetwork" { + type = string + description = "The subnet containing the addresses." +} + # variable "labels" { # description = "Map of labels to apply to the IP address" # type = map(string) diff --git a/terraform/gcp/terraform-cloud/terraform/tfvars/dev.tfvars b/terraform/gcp/terraform-cloud/terraform/tfvars/dev.tfvars index 2ef749fc5b..4ec5a8cb47 100644 --- a/terraform/gcp/terraform-cloud/terraform/tfvars/dev.tfvars +++ b/terraform/gcp/terraform-cloud/terraform/tfvars/dev.tfvars @@ -53,7 +53,7 @@ workspaces = { }, portefaix-gcp-dev-external-ip-cloud-nat = { directory = "terraform/gcp/external-ips/cloud-nat/dev" - tags = ["gcp", "externalips", "cloudnat"] + tags = ["gcp", "ip-address", "cloudnat"] gitops = false branch = "master" auto_apply = true @@ -64,9 +64,22 @@ workspaces = { "../modules/cloud-nat/*.tf", ] }, + portefaix-gcp-dev-external-ip-external-lb = { + directory = "terraform/gcp/external-ips/external-lb/dev" + tags = ["gcp", "ip-address", "loadbalancer"] + gitops = false + branch = "master" + auto_apply = true + execution_mode = "remote" + trigger = [ + "*.tf", + "*.tfvars", + "../modules/external-lb/*.tf", + ] + }, portefaix-gcp-dev-internal-ip-internal-lb = { directory = "terraform/gcp/internal-ips/internal-lb/dev" - tags = ["gcp", "internalips", "loadbalancer"] + tags = ["gcp", "ip-address", "loadbalancer"] gitops = false branch = "master" auto_apply = true