{"id":21834613,"url":"https://github.com/mineiros-io/terraform-google-cloud-run","last_synced_at":"2025-03-21T14:19:07.065Z","repository":{"id":42007389,"uuid":"414282004","full_name":"mineiros-io/terraform-google-cloud-run","owner":"mineiros-io","description":"A Terraform module to deploy and manage highly scalable, containerized applications in Google Cloud Run, a fully managed serverless platform in Google Cloud https://cloud.google.com/run","archived":false,"fork":false,"pushed_at":"2024-02-28T10:40:36.000Z","size":221,"stargazers_count":2,"open_issues_count":0,"forks_count":1,"subscribers_count":7,"default_branch":"main","last_synced_at":"2025-01-26T09:43:06.268Z","etag":null,"topics":["iac","mineiros","terraform","terraform-modules"],"latest_commit_sha":null,"homepage":"","language":"HCL","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/mineiros-io.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null}},"created_at":"2021-10-06T16:08:06.000Z","updated_at":"2023-07-25T14:50:22.000Z","dependencies_parsed_at":"2023-02-17T20:10:23.003Z","dependency_job_id":null,"html_url":"https://github.com/mineiros-io/terraform-google-cloud-run","commit_stats":null,"previous_names":[],"tags_count":6,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mineiros-io%2Fterraform-google-cloud-run","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mineiros-io%2Fterraform-google-cloud-run/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mineiros-io%2Fterraform-google-cloud-run/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mineiros-io%2Fterraform-google-cloud-run/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mineiros-io","download_url":"https://codeload.github.com/mineiros-io/terraform-google-cloud-run/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":244811374,"owners_count":20514276,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["iac","mineiros","terraform","terraform-modules"],"created_at":"2024-11-27T20:13:22.357Z","updated_at":"2025-03-21T14:19:07.033Z","avatar_url":"https://github.com/mineiros-io.png","language":"HCL","funding_links":[],"categories":[],"sub_categories":[],"readme":"[\u003cimg src=\"https://raw.githubusercontent.com/mineiros-io/brand/3bffd30e8bdbbde32c143e2650b2faa55f1df3ea/mineiros-primary-logo.svg\" width=\"400\"/\u003e](https://mineiros.io/?ref=terraform-google-cloud-run)\n\n[![Build Status](https://github.com/mineiros-io/terraform-google-cloud-run/workflows/Tests/badge.svg)](https://github.com/mineiros-io/terraform-google-cloud-run/actions)\n[![GitHub tag (latest SemVer)](https://img.shields.io/github/v/tag/mineiros-io/terraform-google-cloud-run.svg?label=latest\u0026sort=semver)](https://github.com/mineiros-io/terraform-google-cloud-run/releases)\n[![Terraform Version](https://img.shields.io/badge/Terraform-1.x-623CE4.svg?logo=terraform)](https://github.com/hashicorp/terraform/releases)\n[![Google Provider Version](https://img.shields.io/badge/google-4-1A73E8.svg?logo=terraform)](https://github.com/terraform-providers/terraform-provider-google/releases)\n[![Join Slack](https://img.shields.io/badge/slack-@mineiros--community-f32752.svg?logo=slack)](https://mineiros.io/slack)\n\n# terraform-google-cloud-run\n\nA [Terraform](https://www.terraform.io) module for creating and managing\n[Google Cloud Run](https://cloud.google.com/run/docs/) with optional\n[Custom Domain Mapping](https://cloud.google.com/run/docs/mapping-custom-domains).\n\n**_This module supports Terraform version 1\nand is compatible with the Terraform Google Provider version 4._**\n\nThis module is part of our Infrastructure as Code (IaC) framework\nthat enables our users and customers to easily deploy and manage reusable,\nsecure, and production-grade cloud infrastructure.\n\n\n- [Module Features](#module-features)\n- [Getting Started](#getting-started)\n- [Module Argument Reference](#module-argument-reference)\n  - [Main Resource Configuration](#main-resource-configuration)\n  - [Extended Resource Configuration](#extended-resource-configuration)\n  - [Module Configuration](#module-configuration)\n- [Module Outputs](#module-outputs)\n- [External Documentation](#external-documentation)\n  - [Google Documentation](#google-documentation)\n  - [Terraform GCP Provider Documentation](#terraform-gcp-provider-documentation)\n- [Module Versioning](#module-versioning)\n  - [Backwards compatibility in `0.0.z` and `0.y.z` version](#backwards-compatibility-in-00z-and-0yz-version)\n- [About Mineiros](#about-mineiros)\n- [Reporting Issues](#reporting-issues)\n- [Contributing](#contributing)\n- [Makefile Targets](#makefile-targets)\n- [License](#license)\n\n## Module Features\n\nThis module implements the following Terraform resources\n\n- `google_cloud_run_service`\n- `google_cloud_run_domain_mapping`\n\nand supports additional features of the following modules:\n\n- [mineiros-io/terraform-google-cloud-run-iam](https://github.com/mineiros-io/terraform-google-cloud-run-iam)\n\n## Getting Started\n\nMost common usage of the module:\n\n```hcl\nmodule \"terraform-google-cloud-run\" {\n  source = \"github.com/mineiros-io/terraform-google-cloud-run?ref=v0.2.1\"\n\n  name     = \"example-name\"\n  location = \"us-central1\"\n\n  template = {\n    spec = {\n      containers = [\n        {\n          image = \"gcr.io/cloudrun/hello:latest\"\n        }\n      ]\n    }\n  }\n}\n```\n\n## Module Argument Reference\n\nSee [variables.tf] and [examples/] for details and use-cases.\n\n### Main Resource Configuration\n\n- [**`name`**](#var-name): *(**Required** `string`)*\u003ca name=\"var-name\"\u003e\u003c/a\u003e\n\n  Name must be unique within a namespace, within a Cloud Run region.\n  Is required when creating resources. Name is primarily intended for\n  creation idempotence and configuration definition. Cannot be updated.\n\n- [**`location`**](#var-location): *(**Required** `string`)*\u003ca name=\"var-location\"\u003e\u003c/a\u003e\n\n  The location of the cloud run instance. eg `us-central1`.\n\n- [**`project`**](#var-project): *(Optional `string`)*\u003ca name=\"var-project\"\u003e\u003c/a\u003e\n\n  The ID of the project in which the resource belongs. If it is not\n  provided, the provider project is used.\n\n- [**`autogenerate_revision_name`**](#var-autogenerate_revision_name): *(Optional `bool`)*\u003ca name=\"var-autogenerate_revision_name\"\u003e\u003c/a\u003e\n\n  If set to `true`, the revision name (`template.metadata.name`) will be\n  omitted and autogenerated by Cloud Run. This cannot be set to true\n  while `template.metadata.name` is also set. (For legacy support, if\n  `template.metadata.name` is unset in state while this field is set to\n  `false`, the revision name will still autogenerate.).\n\n- [**`template`**](#var-template): *(Optional `object(template)`)*\u003ca name=\"var-template\"\u003e\u003c/a\u003e\n\n  A template holds the latest specification for the Revision to be\n  stamped out. The template references the container image, and may also\n  include labels and annotations that should be attached to the\n  Revision. To correlate a Revision, and/or to force a Revision to be\n  created when the spec doesn't otherwise change, a nonce label may be\n  provided in the template metadata.\n\n  Default is `{}`.\n\n  The `template` object accepts the following attributes:\n\n  - [**`metadata`**](#attr-template-metadata): *(Optional `object(metadata)`)*\u003ca name=\"attr-template-metadata\"\u003e\u003c/a\u003e\n\n    Optional metadata for this Revision, including labels and\n    annotations. Name will be generated by the Configuration. To set\n    minimum instances for this revision, use the\n    `autoscaling.knative.dev/minScale` annotation key. To set maximum\n    instances for this revision, use the\n    `autoscaling.knative.dev/maxScale` annotation key. To set Cloud SQL\n    connections for the revision, use the\n    `run.googleapis.com/cloudsql-instances` annotation key.\n\n    Default is `{}`.\n\n    The `metadata` object accepts the following attributes:\n\n    - [**`name`**](#attr-template-metadata-name): *(Optional `string`)*\u003ca name=\"attr-template-metadata-name\"\u003e\u003c/a\u003e\n\n      Name must be unique within a namespace, within a Cloud Run region.\n      Is required when creating resources. Name is primarily intended\n      for creation idempotence and configuration definition. Cannot be\n      updated. More info:\n      http://kubernetes.io/docs/user-guide/identifiers#names\n\n    - [**`namespace`**](#attr-template-metadata-namespace): *(Optional `string`)*\u003ca name=\"attr-template-metadata-namespace\"\u003e\u003c/a\u003e\n\n      In Cloud Run the namespace must be equal to either the project ID\n      or project number. It will default to the resource's project.\n\n    - [**`labels`**](#attr-template-metadata-labels): *(Optional `map(string)`)*\u003ca name=\"attr-template-metadata-labels\"\u003e\u003c/a\u003e\n\n      Map of string keys and values that can be used to organize and\n      categorize (scope and select) objects. May match selectors of\n      replication controllers and routes. More info:\n      http://kubernetes.io/docs/user-guide/labels\n\n    - [**`annotations`**](#attr-template-metadata-annotations): *(Optional `map(string)`)*\u003ca name=\"attr-template-metadata-annotations\"\u003e\u003c/a\u003e\n\n      Annotations is a key value map stored with a resource that may be\n      set by external tools to store and retrieve arbitrary metadata.\n      More info: http://kubernetes.io/docs/user-guide/annotations Note:\n      The Cloud Run API may add additional annotations that were not\n      provided in your config. If terraform plan shows a diff where a\n      server-side annotation is added, you can add it to your config or\n      apply the `lifecycle.ignore_changes` rule to the\n      `metadata.0.annotations` field.\n\n  - [**`spec`**](#attr-template-spec): *(**Required** `object(spec)`)*\u003ca name=\"attr-template-spec\"\u003e\u003c/a\u003e\n\n    RevisionSpec holds the desired state of the Revision (from the\n    client).\n\n    The `spec` object accepts the following attributes:\n\n    - [**`container_concurrency`**](#attr-template-spec-container_concurrency): *(Optional `number`)*\u003ca name=\"attr-template-spec-container_concurrency\"\u003e\u003c/a\u003e\n\n      ContainerConcurrency specifies the maximum allowed in-flight\n      (concurrent) requests per container of the Revision. Values are:\n\n      - 0 thread-safe, the system should manage the max concurrency.\n        This is the default value.\n      - 1 not-thread-safe. Single concurrency\n      - 2-N thread-safe, max concurrency of N\n\n    - [**`timeout_seconds`**](#attr-template-spec-timeout_seconds): *(Optional `number`)*\u003ca name=\"attr-template-spec-timeout_seconds\"\u003e\u003c/a\u003e\n\n      TimeoutSeconds holds the max duration the instance is allowed for\n      responding to a request.\n\n    - [**`service_account_name`**](#attr-template-spec-service_account_name): *(Optional `string`)*\u003ca name=\"attr-template-spec-service_account_name\"\u003e\u003c/a\u003e\n\n      Email address of the IAM service account associated with the\n      revision of the service. The service account represents the\n      identity of the running revision, and determines what permissions\n      the revision has. If not provided, the revision will use the\n      project's default service account.\n\n    - [**`containers`**](#attr-template-spec-containers): *(**Required** `list(container)`)*\u003ca name=\"attr-template-spec-containers\"\u003e\u003c/a\u003e\n\n      Container defines the unit of execution for this Revision. In the\n      context of a Revision, we disallow a number of the fields of this\n      Container, including: name, ports, and volumeMounts. The runtime\n      contract is documented here: https://github.com/knative/serving/blob/master/docs/runtime-contract.md\n\n      Each `container` object in the list accepts the following attributes:\n\n      - [**`args`**](#attr-template-spec-containers-args): *(Optional `list(string)`)*\u003ca name=\"attr-template-spec-containers-args\"\u003e\u003c/a\u003e\n\n        Arguments to the entrypoint. The docker image's CMD is used if\n        this is not provided. Variable references `$(VAR_NAME)` are\n        expanded using the container's environment. If a variable cannot\n        be resolved, the reference in the input string will be unchanged.\n        The `$(VAR_NAME)` syntax can be escaped with a double `$$`, ie:\n        `$$(VAR_NAME)`. Escaped references will never be expanded,\n        regardless of whether the variable exists or not. More info:\n        https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell\n\n      - [**`image`**](#attr-template-spec-containers-image): *(**Required** `string`)*\u003ca name=\"attr-template-spec-containers-image\"\u003e\u003c/a\u003e\n\n        Docker image name. This is most often a reference to a container\n        located in the container registry, such as\n        `gcr.io/cloudrun/helloMore` info:\n        https://kubernetes.io/docs/concepts/containers/images\n\n      - [**`command`**](#attr-template-spec-containers-command): *(Optional `list(string)`)*\u003ca name=\"attr-template-spec-containers-command\"\u003e\u003c/a\u003e\n\n        Entrypoint array. Not executed within a shell. The docker\n        image's ENTRYPOINT is used if this is not provided. Variable\n        references `$(VAR_NAME)` are expanded using the container's\n        environment. If a variable cannot be resolved, the reference in\n        the input string will be unchanged. The `$(VAR_NAME)` syntax can\n        be escaped with a double `$$`, ie: `$$(VAR_NAME)`. Escaped\n        references will never be expanded, regardless of whether the\n        variable exists or not. More info:\n        https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell\n\n      - [**`env`**](#attr-template-spec-containers-env): *(Optional `object(env)`)*\u003ca name=\"attr-template-spec-containers-env\"\u003e\u003c/a\u003e\n\n        List of environment variables to set in the container.\n\n        Default is `{}`.\n\n        The `env` object accepts the following attributes:\n\n        - [**`name`**](#attr-template-spec-containers-env-name): *(Optional `string`)*\u003ca name=\"attr-template-spec-containers-env-name\"\u003e\u003c/a\u003e\n\n          Name of the environment variable.\n\n        - [**`value`**](#attr-template-spec-containers-env-value): *(Optional `string`)*\u003ca name=\"attr-template-spec-containers-env-value\"\u003e\u003c/a\u003e\n\n          Variable references `$(VAR_NAME)` are expanded using the\n          previous defined environment variables in the container and\n          any route environment variables. If a variable cannot be\n          resolved, the reference in the input string will be unchanged.\n          The `$(VAR_NAME)` syntax can be escaped with a double `$$`,\n          ie: `$$(VAR_NAME)`. Escaped references will never be expanded,\n          regardless of whether the variable exists or not.\n\n        - [**`value_from`**](#attr-template-spec-containers-env-value_from): *(Optional `object(value_from)`)*\u003ca name=\"attr-template-spec-containers-env-value_from\"\u003e\u003c/a\u003e\n\n          Source for the environment variable's value.\n          Only supports `secret_key_ref`.\n\n          The `value_from` object accepts the following attributes:\n\n          - [**`secret_key_ref`**](#attr-template-spec-containers-env-value_from-secret_key_ref): *(**Required** `object(secret_key_ref)`)*\u003ca name=\"attr-template-spec-containers-env-value_from-secret_key_ref\"\u003e\u003c/a\u003e\n\n            Selects a key (version) of a secret in Secret Manager.\n\n            The `secret_key_ref` object accepts the following attributes:\n\n            - [**`key`**](#attr-template-spec-containers-env-value_from-secret_key_ref-key): *(Optional `string`)*\u003ca name=\"attr-template-spec-containers-env-value_from-secret_key_ref-key\"\u003e\u003c/a\u003e\n\n              A Cloud Secret Manager secret version.\n              Must be `\"latest\"` for the latest version or an integer for a specific version.\n\n            - [**`name`**](#attr-template-spec-containers-env-value_from-secret_key_ref-name): *(Optional `string`)*\u003ca name=\"attr-template-spec-containers-env-value_from-secret_key_ref-name\"\u003e\u003c/a\u003e\n\n              The name of the secret in Cloud Secret Manager.\n              By default, the secret is assumed to be in the same project.\n              If the secret is in another project, you must define an alias.\n              You set the in this field, and create an annotation with the following structure\n              `\"run.googleapis.com/secrets\" = \":projects//secrets/\"`.\n              If multiple alias definitions are needed, they must be separated by commas in the annotation field.\n\n      - [**`ports`**](#attr-template-spec-containers-ports): *(Optional `list(port)`)*\u003ca name=\"attr-template-spec-containers-ports\"\u003e\u003c/a\u003e\n\n        List of open ports in the container. More Info:\n        https://cloud.google.com/run/docs/reference/rest/v1/RevisionSpec#ContainerPort\n\n        Default is `[]`.\n\n        Each `port` object in the list accepts the following attributes:\n\n        - [**`name`**](#attr-template-spec-containers-ports-name): *(Optional `string`)*\u003ca name=\"attr-template-spec-containers-ports-name\"\u003e\u003c/a\u003e\n\n          Name of the port.\n\n        - [**`protocol`**](#attr-template-spec-containers-ports-protocol): *(Optional `string`)*\u003ca name=\"attr-template-spec-containers-ports-protocol\"\u003e\u003c/a\u003e\n\n          Protocol used on port.\n\n        - [**`container_port`**](#attr-template-spec-containers-ports-container_port): *(**Required** `number`)*\u003ca name=\"attr-template-spec-containers-ports-container_port\"\u003e\u003c/a\u003e\n\n          Port number.\n\n      - [**`resources`**](#attr-template-spec-containers-resources): *(Optional `object(resource)`)*\u003ca name=\"attr-template-spec-containers-resources\"\u003e\u003c/a\u003e\n\n        Compute Resources required by this container. Used to set values\n        such as max memory More info:\n        https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/#requests-and-limits\n\n        Default is `{}`.\n\n        The `resource` object accepts the following attributes:\n\n        - [**`limits`**](#attr-template-spec-containers-resources-limits): *(Optional `map(string)`)*\u003ca name=\"attr-template-spec-containers-resources-limits\"\u003e\u003c/a\u003e\n\n          Limits describes the maximum amount of compute resources\n          allowed. The values of the map is string form of the\n          'quantity' k8s type:\n          https://github.com/kubernetes/kubernetes/blob/master/staging/src/k8s.io/apimachinery/pkg/api/resource/quantity.go\n\n        - [**`requests`**](#attr-template-spec-containers-resources-requests): *(Optional `map(string)`)*\u003ca name=\"attr-template-spec-containers-resources-requests\"\u003e\u003c/a\u003e\n\n          Requests describes the minimum amount of compute resources\n          required. If Requests is omitted for a container, it defaults\n          to Limits if that is explicitly specified, otherwise to an\n          implementation-defined value. The values of the map is string\n          form of the 'quantity' k8s type:\n          https://github.com/kubernetes/kubernetes/blob/master/staging/src/k8s.io/apimachinery/pkg/api/resource/quantity.go\n\n- [**`traffic`**](#var-traffic): *(Optional `list(traffic)`)*\u003ca name=\"var-traffic\"\u003e\u003c/a\u003e\n\n  A list of traffic specifies how to distribute traffic over a\n  collection of Knative Revisions and Configurations Structure.\n\n  Default is `[]`.\n\n  Each `traffic` object in the list accepts the following attributes:\n\n  - [**`revision_name`**](#attr-traffic-revision_name): *(Optional `string`)*\u003ca name=\"attr-traffic-revision_name\"\u003e\u003c/a\u003e\n\n    RevisionName of a specific revision to which to send this portion of\n    traffic.\n\n  - [**`percent`**](#attr-traffic-percent): *(**Required** `number`)*\u003ca name=\"attr-traffic-percent\"\u003e\u003c/a\u003e\n\n    Percent specifies percent of the traffic to this Revision or\n    Configuration.\n\n  - [**`latest_revision`**](#attr-traffic-latest_revision): *(Optional `bool`)*\u003ca name=\"attr-traffic-latest_revision\"\u003e\u003c/a\u003e\n\n    LatestRevision may be optionally provided to indicate that the\n    latest ready Revision of the Configuration should be used for this\n    traffic target. When provided LatestRevision must be `true` if\n    `RevisionName` is empty; it must be `false` when `RevisionName` is\n    non-empty.\n\n- [**`metadata`**](#var-metadata): *(Optional `object(metadata)`)*\u003ca name=\"var-metadata\"\u003e\u003c/a\u003e\n\n  Optional metadata for this Revision, including labels and\n  annotations. Name will be generated by the Configuration. To set\n  minimum instances for this revision, use the\n  `autoscaling.knative.dev/minScale` annotation key. To set maximum\n  instances for this revision, use the\n  `autoscaling.knative.dev/maxScale` annotation key. To set Cloud SQL\n  connections for the revision, use the\n  `run.googleapis.com/cloudsql-instances` annotation key.\n\n  Default is `{}`.\n\n  The `metadata` object accepts the following attributes:\n\n  - [**`namespace`**](#attr-metadata-namespace): *(Optional `string`)*\u003ca name=\"attr-metadata-namespace\"\u003e\u003c/a\u003e\n\n    In Cloud Run the namespace must be equal to either the project ID\n    or project number. It will default to the resource's project.\n\n  - [**`labels`**](#attr-metadata-labels): *(Optional `map(string)`)*\u003ca name=\"attr-metadata-labels\"\u003e\u003c/a\u003e\n\n    Map of string keys and values that can be used to organize and\n    categorize (scope and select) objects. May match selectors of\n    replication controllers and routes. More info:\n    http://kubernetes.io/docs/user-guide/labels\n\n  - [**`generation`**](#attr-metadata-generation): *(Optional `number`)*\u003ca name=\"attr-metadata-generation\"\u003e\u003c/a\u003e\n\n    A sequence number representing a specific generation of the\n    desired state.\n\n  - [**`resource_version`**](#attr-metadata-resource_version): *(Optional `string`)*\u003ca name=\"attr-metadata-resource_version\"\u003e\u003c/a\u003e\n\n    An opaque value that represents the internal version of this\n    object that can be used by clients to determine when objects have\n    changed. May be used for optimistic concurrency, change detection,\n    and the watch operation on a resource or set of resources. They\n    may only be valid for a particular resource or set of resources.\n    More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#concurrency-control-and-consistency\n\n  - [**`self_link`**](#attr-metadata-self_link): *(Optional `string`)*\u003ca name=\"attr-metadata-self_link\"\u003e\u003c/a\u003e\n\n    SelfLink is a URL representing this object.\n\n  - [**`uid`**](#attr-metadata-uid): *(Optional `string`)*\u003ca name=\"attr-metadata-uid\"\u003e\u003c/a\u003e\n\n    UID is a unique id generated by the server on successful creation\n    of a resource and is not allowed to change on PUT operations. More\n    info: http://kubernetes.io/docs/user-guide/identifiers#uids\n\n  - [**`annotations`**](#attr-metadata-annotations): *(Optional `map(string)`)*\u003ca name=\"attr-metadata-annotations\"\u003e\u003c/a\u003e\n\n    Annotations is a key value map stored with a resource that may be\n    set by external tools to store and retrieve arbitrary metadata.\n    More info: http://kubernetes.io/docs/user-guide/annotations Note:\n    The Cloud Run API may add additional annotations that were not\n    provided in your config. If terraform plan shows a diff where a\n    server-side annotation is added, you can add it to your config or\n    apply the `lifecycle.ignore_changes` rule to the\n    `metadata.0.annotations` field.\n\n- [**`domain_mapping`**](#var-domain_mapping): *(Optional `object(domain_mapping)`)*\u003ca name=\"var-domain_mapping\"\u003e\u003c/a\u003e\n\n  An Object that holds the state and status of a user's domain mapping.\n\n  The `domain_mapping` object accepts the following attributes:\n\n  - [**`spec`**](#attr-domain_mapping-spec): *(Optional `object(spec)`)*\u003ca name=\"attr-domain_mapping-spec\"\u003e\u003c/a\u003e\n\n    RevisionSpec holds the desired state of the Revision (from the\n    client).\n\n    Default is `{}`.\n\n    The `spec` object accepts the following attributes:\n\n    - [**`force_override`**](#attr-domain_mapping-spec-force_override): *(Optional `bool`)*\u003ca name=\"attr-domain_mapping-spec-force_override\"\u003e\u003c/a\u003e\n\n      If set, the mapping will override any mapping set before this spec\n      was set. It is recommended that the user leaves this empty to\n      receive an error warning about a potential conflict and only set\n      it once the respective UI has given such a warning.\n\n    - [**`certificate_mode`**](#attr-domain_mapping-spec-certificate_mode): *(Optional `string`)*\u003ca name=\"attr-domain_mapping-spec-certificate_mode\"\u003e\u003c/a\u003e\n\n      The mode of the certificate. Possible values are `NONE` and\n      `AUTOMATIC`.\n\n      Default is `\"AUTOMATIC\"`.\n\n  - [**`metadata`**](#attr-domain_mapping-metadata): *(Optional `object(metadata)`)*\u003ca name=\"attr-domain_mapping-metadata\"\u003e\u003c/a\u003e\n\n    Optional metadata for this Revision, including labels and\n    annotations. Name will be generated by the Configuration. To set\n    minimum instances for this revision, use the\n    `autoscaling.knative.dev/minScale` annotation key. To set maximum\n    instances for this revision, use the\n    `autoscaling.knative.dev/maxScale` annotation key. To set Cloud SQL\n    connections for the revision, use the\n    `run.googleapis.com/cloudsql-instances` annotation key.\n\n    Default is `{}`.\n\n    The `metadata` object accepts the following attributes:\n\n    - [**`namespace`**](#attr-domain_mapping-metadata-namespace): *(Optional `string`)*\u003ca name=\"attr-domain_mapping-metadata-namespace\"\u003e\u003c/a\u003e\n\n      In Cloud Run the namespace must be equal to either the project ID\n      or project number. It will default to the resource's project.\n\n    - [**`labels`**](#attr-domain_mapping-metadata-labels): *(Optional `map(string)`)*\u003ca name=\"attr-domain_mapping-metadata-labels\"\u003e\u003c/a\u003e\n\n      Map of string keys and values that can be used to organize and\n      categorize (scope and select) objects. May match selectors of\n      replication controllers and routes. More info:\n      http://kubernetes.io/docs/user-guide/labels\n\n    - [**`generation`**](#attr-domain_mapping-metadata-generation): *(Optional `number`)*\u003ca name=\"attr-domain_mapping-metadata-generation\"\u003e\u003c/a\u003e\n\n      A sequence number representing a specific generation of the\n      desired state.\n\n    - [**`resource_version`**](#attr-domain_mapping-metadata-resource_version): *(Optional `string`)*\u003ca name=\"attr-domain_mapping-metadata-resource_version\"\u003e\u003c/a\u003e\n\n      An opaque value that represents the internal version of this\n      object that can be used by clients to determine when objects have\n      changed. May be used for optimistic concurrency, change detection,\n      and the watch operation on a resource or set of resources. They\n      may only be valid for a particular resource or set of resources.\n      More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#concurrency-control-and-consistency\n\n    - [**`self_link`**](#attr-domain_mapping-metadata-self_link): *(Optional `string`)*\u003ca name=\"attr-domain_mapping-metadata-self_link\"\u003e\u003c/a\u003e\n\n      SelfLink is a URL representing this object.\n\n    - [**`uid`**](#attr-domain_mapping-metadata-uid): *(Optional `string`)*\u003ca name=\"attr-domain_mapping-metadata-uid\"\u003e\u003c/a\u003e\n\n      UID is a unique id generated by the server on successful creation\n      of a resource and is not allowed to change on PUT operations. More\n      info: http://kubernetes.io/docs/user-guide/identifiers#uids\n\n    - [**`annotations`**](#attr-domain_mapping-metadata-annotations): *(Optional `map(string)`)*\u003ca name=\"attr-domain_mapping-metadata-annotations\"\u003e\u003c/a\u003e\n\n      Annotations is a key value map stored with a resource that may be\n      set by external tools to store and retrieve arbitrary metadata.\n      More info: http://kubernetes.io/docs/user-guide/annotations Note:\n      The Cloud Run API may add additional annotations that were not\n      provided in your config. If terraform plan shows a diff where a\n      server-side annotation is added, you can add it to your config or\n      apply the `lifecycle.ignore_changes` rule to the\n      `metadata.0.annotations` field.\n\n### Extended Resource Configuration\n\n- [**`iam`**](#var-iam): *(Optional `list(iam)`)*\u003ca name=\"var-iam\"\u003e\u003c/a\u003e\n\n  A list of IAM access to apply to the created secret.\n\n  Default is `[]`.\n\n  Each `iam` object in the list accepts the following attributes:\n\n  - [**`role`**](#attr-iam-role): *(Optional `string`)*\u003ca name=\"attr-iam-role\"\u003e\u003c/a\u003e\n\n    The role that should be applied. Note that custom roles must be of\n    the format\n    `[projects|organizations]/{parent-name}/roles/{role-name}`.\n\n  - [**`members`**](#attr-iam-members): *(Optional `set(string)`)*\u003ca name=\"attr-iam-members\"\u003e\u003c/a\u003e\n\n    Identities that will be granted the privilege in role. Each entry\n    can have one of the following values:\n    - `allUsers`: A special identifier that represents anyone who is on\n       the internet; with or without a Google account.\n    - `allAuthenticatedUsers`: A special identifier that represents\n       anyone who is authenticated with a Google account or a service\n       account.\n    - `user:{emailid}`: An email address that represents a specific\n       Google account. For example, alice@gmail.com or joe@example.com.\n    - `serviceAccount:{emailid}`: An email address that represents\n       a service account. For example,\n       `my-other-app@appspot.gserviceaccount.com`.\n    - `group:{emailid}`: An email address that represents a Google\n       group. For example, `admins@example.com`.\n    - `domain:{domain}`: A G Suite domain (primary, instead of alias)\n       name that represents all the users of that domain. For example,\n      google.com or example.com.\n    - `projectOwner:projectid`: Owners of the given project. For\n       example, `projectOwner:my-example-project`\n    - `projectEditor:projectid`: Editors of the given project.\n       For example, `projectEditor:my-example-project`\n    - `projectViewer:projectid`: Viewers of the given project.\n       For example, `projectViewer:my-example-project`\n\n  - [**`authoritative`**](#attr-iam-authoritative): *(Optional `bool`)*\u003ca name=\"attr-iam-authoritative\"\u003e\u003c/a\u003e\n\n    Whether to exclusively set (authoritative mode) or add\n    (non-authoritative/additive mode) members to the role.\n\n    Default is `true`.\n\n- [**`policy_bindings`**](#var-policy_bindings): *(Optional `list(policy_binding)`)*\u003ca name=\"var-policy_bindings\"\u003e\u003c/a\u003e\n\n  A list of IAM policy bindings.\n\n  Example:\n\n  ```hcl\n  policy_bindings = [{\n    role    = \"roles/viewer\"\n    members = [\"user:member@example.com\"]\n  }]\n  ```\n\n  Each `policy_binding` object in the list accepts the following attributes:\n\n  - [**`role`**](#attr-policy_bindings-role): *(**Required** `string`)*\u003ca name=\"attr-policy_bindings-role\"\u003e\u003c/a\u003e\n\n    The role that should be applied.\n\n  - [**`members`**](#attr-policy_bindings-members): *(Optional `set(string)`)*\u003ca name=\"attr-policy_bindings-members\"\u003e\u003c/a\u003e\n\n    Identities that will be granted the privilege in `role`.\n\n    Default is `var.members`.\n\n  - [**`condition`**](#attr-policy_bindings-condition): *(Optional `object(condition)`)*\u003ca name=\"attr-policy_bindings-condition\"\u003e\u003c/a\u003e\n\n    An IAM Condition for a given binding.\n\n    Example:\n\n    ```hcl\n    condition = {\n      expression = \"request.time \u003c timestamp(\\\"2022-01-01T00:00:00Z\\\")\"\n      title      = \"expires_after_2021_12_31\"\n    }\n    ```\n\n    The `condition` object accepts the following attributes:\n\n    - [**`expression`**](#attr-policy_bindings-condition-expression): *(**Required** `string`)*\u003ca name=\"attr-policy_bindings-condition-expression\"\u003e\u003c/a\u003e\n\n      Textual representation of an expression in Common Expression\n      Language syntax.\n\n    - [**`title`**](#attr-policy_bindings-condition-title): *(**Required** `string`)*\u003ca name=\"attr-policy_bindings-condition-title\"\u003e\u003c/a\u003e\n\n      A title for the expression, i.e. a short string describing its\n      purpose.\n\n    - [**`description`**](#attr-policy_bindings-condition-description): *(Optional `string`)*\u003ca name=\"attr-policy_bindings-condition-description\"\u003e\u003c/a\u003e\n\n      An optional description of the expression. This is a longer text\n      which describes the expression, e.g. when hovered over it in a\n      UI.\n\n### Module Configuration\n\n- [**`module_enabled`**](#var-module_enabled): *(Optional `bool`)*\u003ca name=\"var-module_enabled\"\u003e\u003c/a\u003e\n\n  Specifies whether resources in the module will be created.\n\n  Default is `true`.\n\n- [**`module_timeouts`**](#var-module_timeouts): *(Optional `object(module_timeouts)`)*\u003ca name=\"var-module_timeouts\"\u003e\u003c/a\u003e\n\n  A map of timeout objects that is keyed by Terraform resource name\n  defining timeouts for `create`, `update` and `delete` Terraform operations.\n\n  Supported resources are: `google_cloud_run_service`, `google_cloud_run_domain_mapping`\n\n  Default is `{}`.\n\n  Example:\n\n  ```hcl\n  module_timeouts = {\n    null_resource = {\n      create = \"4m\"\n      update = \"4m\"\n      delete = \"4m\"\n    }\n  }\n  ```\n\n  The `module_timeouts` object accepts the following attributes:\n\n  - [**`create`**](#attr-module_timeouts-create): *(Optional `string`)*\u003ca name=\"attr-module_timeouts-create\"\u003e\u003c/a\u003e\n\n    Timeout for create operations.\n\n    Default is `\"6m\"`.\n\n  - [**`update`**](#attr-module_timeouts-update): *(Optional `string`)*\u003ca name=\"attr-module_timeouts-update\"\u003e\u003c/a\u003e\n\n    Timeout for update operations.\n\n    Default is `\"15m\"`.\n\n  - [**`delete`**](#attr-module_timeouts-delete): *(Optional `string`)*\u003ca name=\"attr-module_timeouts-delete\"\u003e\u003c/a\u003e\n\n    Timeout for delete operations.\n\n    Default is `\"4m\"`.\n\n- [**`module_depends_on`**](#var-module_depends_on): *(Optional `list(dependency)`)*\u003ca name=\"var-module_depends_on\"\u003e\u003c/a\u003e\n\n  A list of dependencies.\n  Any object can be _assigned_ to this list to define a hidden external dependency.\n\n  Default is `[]`.\n\n  Example:\n\n  ```hcl\n  module_depends_on = [\n    null_resource.name\n  ]\n  ```\n\n## Module Outputs\n\nThe following attributes are exported in the outputs of the module:\n\n- [**`iam`**](#output-iam): *(`list(iam)`)*\u003ca name=\"output-iam\"\u003e\u003c/a\u003e\n\n  The iam resource objects that define the access to the secret.\n\n- [**`service`**](#output-service): *(`object(service)`)*\u003ca name=\"output-service\"\u003e\u003c/a\u003e\n\n  All `google_cloud_run_service` resource attributes.\n\n- [**`domain_mapping`**](#output-domain_mapping): *(`object(domain_mapping)`)*\u003ca name=\"output-domain_mapping\"\u003e\u003c/a\u003e\n\n  All `google_cloud_run_domain_mapping` resource attributes.\n\n- [**`module_enabled`**](#output-module_enabled): *(`bool`)*\u003ca name=\"output-module_enabled\"\u003e\u003c/a\u003e\n\n  Whether this module is enabled.\n\n## External Documentation\n\n### Google Documentation\n\n- Cloud Run - https://cloud.google.com/run/docs/\n- Mapping Custom Domains - https://cloud.google.com/run/docs/mapping-custom-domains\n\n### Terraform GCP Provider Documentation\n\n- Run Services - https://registry.terraform.io/providers/hashicorp/google/latest/docs/resources/cloud_run_service\n- Domain Mapping - https://registry.terraform.io/providers/hashicorp/google/latest/docs/resources/cloud_run_domain_mapping\n\n## Module Versioning\n\nThis Module follows the principles of [Semantic Versioning (SemVer)].\n\nGiven a version number `MAJOR.MINOR.PATCH`, we increment the:\n\n1. `MAJOR` version when we make incompatible changes,\n2. `MINOR` version when we add functionality in a backwards compatible manner, and\n3. `PATCH` version when we make backwards compatible bug fixes.\n\n### Backwards compatibility in `0.0.z` and `0.y.z` version\n\n- Backwards compatibility in versions `0.0.z` is **not guaranteed** when `z` is increased. (Initial development)\n- Backwards compatibility in versions `0.y.z` is **not guaranteed** when `y` is increased. (Pre-release)\n\n## About Mineiros\n\n[Mineiros][homepage] is a remote-first company headquartered in Berlin, Germany\nthat solves development, automation and security challenges in cloud infrastructure.\n\nOur vision is to massively reduce time and overhead for teams to manage and\ndeploy production-grade and secure cloud infrastructure.\n\nWe offer commercial support for all of our modules and encourage you to reach out\nif you have any questions or need help. Feel free to email us at [hello@mineiros.io] or join our\n[Community Slack channel][slack].\n\n## Reporting Issues\n\nWe use GitHub [Issues] to track community reported issues and missing features.\n\n## Contributing\n\nContributions are always encouraged and welcome! For the process of accepting changes, we use\n[Pull Requests]. If you'd like more information, please see our [Contribution Guidelines].\n\n## Makefile Targets\n\nThis repository comes with a handy [Makefile].\nRun `make help` to see details on each available target.\n\n## License\n\n[![license][badge-license]][apache20]\n\nThis module is licensed under the Apache License Version 2.0, January 2004.\nPlease see [LICENSE] for full details.\n\nCopyright \u0026copy; 2020-2022 [Mineiros GmbH][homepage]\n\n\n\u003c!-- References --\u003e\n\n[homepage]: https://mineiros.io/?ref=terraform-google-cloud-run\n[hello@mineiros.io]: mailto:hello@mineiros.io\n[badge-license]: https://img.shields.io/badge/license-Apache%202.0-brightgreen.svg\n[releases-terraform]: https://github.com/hashicorp/terraform/releases\n[releases-aws-provider]: https://github.com/terraform-providers/terraform-provider-aws/releases\n[apache20]: https://opensource.org/licenses/Apache-2.0\n[slack]: https://mineiros.io/slack\n[terraform]: https://www.terraform.io\n[aws]: https://aws.amazon.com/\n[semantic versioning (semver)]: https://semver.org/\n[variables.tf]: https://github.com/mineiros-io/terraform-google-cloud-run/blob/main/variables.tf\n[examples/]: https://github.com/mineiros-io/terraform-google-cloud-run/blob/main/examples\n[issues]: https://github.com/mineiros-io/terraform-google-cloud-run/issues\n[license]: https://github.com/mineiros-io/terraform-google-cloud-run/blob/main/LICENSE\n[makefile]: https://github.com/mineiros-io/terraform-google-cloud-run/blob/main/Makefile\n[pull requests]: https://github.com/mineiros-io/terraform-google-cloud-run/pulls\n[contribution guidelines]: https://github.com/mineiros-io/terraform-google-cloud-run/blob/main/CONTRIBUTING.md\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmineiros-io%2Fterraform-google-cloud-run","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmineiros-io%2Fterraform-google-cloud-run","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmineiros-io%2Fterraform-google-cloud-run/lists"}