doitintl / iris3

An upgraded and improved version of the Iris automatic GCP-labeling project
MIT License
72 stars 25 forks source link
bigquery cloud-cost cloud-storage cloudsql cost-control gce gce-instance gcp gcp-projects gcp-pubsub google-cloud google-cloud-platform google-cloud-pubsub google-cloud-sql google-pubsub labeling organization-administrator pubsub set-labels

Iris

In Greek mythology, Iris(Ἶρις) is the personification of the rainbow and messenger of the gods. She was the handmaiden to Hera.

Iris

Blog post

See the post that presents Iris.

What Iris does for you

Iris automatically assigns labels to Google Cloud Platform resources for easier analysis, particularly of cost.

Resources of all supported types in all or some of the projects in the GCP organization will get automatically-generated labels with keys like iris_zone (the prefix is configurable), and a value copied from the resource. For example, a Google Compute Engine instance would get labels like [iris_name:nginx], [iris_region:us-central1] and [iris_zone:us-central1-a]. This behavior can be configured in various ways; see below.

Organization focus

Note that Iris is designed to serve the organization.

Iris doesn't add new information

Iris does not add information, only copy values that already exist. For example, it can label a VM instance with its zone; but it cannot add a "business unit" label because it does not know a resource's business unit.

For that, you should label all resources when creating them, e.g., in your Terraform scripts. In fact, I recommend doing that (and making Iris extraneous.)

Labeling existing resources when you deploy Iris

If you want to label the resources -- virtual machines, PubSub topics etc. -- that already exist when you deploy Iris, see section "Labeling existing resources" below.

Open source

Iris is open-source; it is not an official DoiT product. Feel free to send Pull Requests with new functionality and add new types of labels. See the TODO.md file and Github issues for features and fixes you might do.

When Iris adds labels

On resource creation

Iris labels most types of newly-created resources by listening to Google Cloud Operations Logs. You can disable this: See INSTALL or run deploy.sh -h.

On schedule

Iris labels a few types of resources periodically on a Cloud Scheduler "cron" job. By default, Iris does not label all types of resources on these cron runs, to save the costs of relabeling -- with the same label -- every day.

You can have Iris relabel everything on every cron run, See label_all_on_cron to True in the configuration file.

You can also disable the scheduled labeling entirely. See Deployment below or run ./deploy.sh -h

Labeling existing resources

Supported Google Cloud resources

Right now, there are plugins for the following types of resources.

To learn from the code what resources and keys are added, search for functions whose names start _gcp_. The part of the function name after _gcp_ is used for the label key.

Installing

Please see INSTALL.

Architecture

Please see ARCHITECTURE.

Development and Testing

Please see HACKING.