{"id":18624741,"url":"https://github.com/opszero/terraform-helm-kubespot","last_synced_at":"2026-01-23T20:39:44.586Z","repository":{"id":39870008,"uuid":"482105045","full_name":"opszero/terraform-helm-kubespot","owner":"opszero","description":null,"archived":false,"fork":false,"pushed_at":"2025-11-24T19:29:51.000Z","size":239,"stargazers_count":0,"open_issues_count":1,"forks_count":3,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-11-28T07:33:42.586Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://opszero.com","language":"HCL","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/opszero.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":"SUPPORT","governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null},"funding":{"github":["abhiyerra"],"custom":["https://www.opszero.com"]}},"created_at":"2022-04-15T23:01:00.000Z","updated_at":"2025-11-24T19:29:54.000Z","dependencies_parsed_at":"2024-04-01T09:24:12.592Z","dependency_job_id":"70c8cf9e-94d2-4713-8b32-92522788c332","html_url":"https://github.com/opszero/terraform-helm-kubespot","commit_stats":null,"previous_names":[],"tags_count":5,"template":false,"template_full_name":null,"purl":"pkg:github/opszero/terraform-helm-kubespot","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/opszero%2Fterraform-helm-kubespot","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/opszero%2Fterraform-helm-kubespot/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/opszero%2Fterraform-helm-kubespot/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/opszero%2Fterraform-helm-kubespot/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/opszero","download_url":"https://codeload.github.com/opszero/terraform-helm-kubespot/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/opszero%2Fterraform-helm-kubespot/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28699690,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-23T17:25:48.045Z","status":"ssl_error","status_checked_at":"2026-01-23T17:25:47.153Z","response_time":59,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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":[],"created_at":"2024-11-07T04:30:36.851Z","updated_at":"2026-01-23T20:39:44.576Z","avatar_url":"https://github.com/opszero.png","language":"HCL","funding_links":["https://github.com/sponsors/abhiyerra","https://www.opszero.com"],"categories":[],"sub_categories":[],"readme":"\u003c!-- BEGIN_TF_DOCS --\u003e\n# Kubespot (Helm)\n\n- cert-manager\n- datadog\n- keda\n- nginx\n- prometheus\n- grafana\n- grafana loki\n- kubecost\n\n# Configuration\n\n## cert-manager\n\nTo use cert-manager add the following annotation to your Ingress\n\n```yaml\napiVersion: networking.k8s.io/v1\nkind: Ingress\nmetadata:\n  annotations:\n    # add an annotation indicating the issuer to use.\n    cert-manager.io/cluster-issuer: letsencrypt\n  name: myIngress\n  namespace: myIngress\nspec:\n  tls:\n    - hosts:\n        - https-example.foo.com\n      secretName: testsecret-tls\n  rules:\n    - host: https-example.foo.com\n      http:\n        paths:\n          - path: /\n            pathType: Prefix\n            backend:\n              service:\n                name: service1\n                port:\n                  number: 80\n```\n\n# Grafana\n\nGrafana is installed on a ClusterIP use the following to open it locally.\n\n```\nkubectl port-forward -n grafana service/grafana 6891:80\nopen https://localhost:6891\n\nUsername: opszero\nPassword: opszero\n```\n\n# Deployment\n\n```sh\nterraform init\nterraform plan\nterraform apply -auto-approve\n```\n\n# Teardown\n\n```sh\nterraform destroy -auto-approve\n```\n## Providers\n\n| Name | Version |\n|------|---------|\n| \u003ca name=\"provider_helm\"\u003e\u003c/a\u003e [helm](#provider\\_helm) | n/a |\n| \u003ca name=\"provider_null\"\u003e\u003c/a\u003e [null](#provider\\_null) | n/a |\n| \u003ca name=\"provider_random\"\u003e\u003c/a\u003e [random](#provider\\_random) | n/a |\n## Inputs\n\n| Name | Description | Type | Default | Required |\n|------|-------------|------|---------|:--------:|\n| \u003ca name=\"input_cert_manager_email\"\u003e\u003c/a\u003e [cert\\_manager\\_email](#input\\_cert\\_manager\\_email) | Your email address to use for cert manager | `any` | `null` | no |\n| \u003ca name=\"input_cert_manager_enable\"\u003e\u003c/a\u003e [cert\\_manager\\_enable](#input\\_cert\\_manager\\_enable) | Enable or disable cert-manager installation | `bool` | `true` | no |\n| \u003ca name=\"input_cert_manager_leader_election_namespace\"\u003e\u003c/a\u003e [cert\\_manager\\_leader\\_election\\_namespace](#input\\_cert\\_manager\\_leader\\_election\\_namespace) | The namespace used for the leader election lease. Change to cert-manager for GKE Autopilot | `string` | `\"cert-manager\"` | no |\n| \u003ca name=\"input_cert_manager_resources\"\u003e\u003c/a\u003e [cert\\_manager\\_resources](#input\\_cert\\_manager\\_resources) | n/a | \u003cpre\u003emap(object({\u003cbr/\u003e    cpu    = string\u003cbr/\u003e    memory = string\u003cbr/\u003e  }))\u003c/pre\u003e | `null` | no |\n| \u003ca name=\"input_cert_manager_version\"\u003e\u003c/a\u003e [cert\\_manager\\_version](#input\\_cert\\_manager\\_version) | The version of the Cert-Manager Helm chart to be deployed, used for automating the issuance and renewal of TLS certificates. | `string` | `\"1.16.3\"` | no |\n| \u003ca name=\"input_datadog_api_key\"\u003e\u003c/a\u003e [datadog\\_api\\_key](#input\\_datadog\\_api\\_key) | The API key for datadog | `string` | `\"\"` | no |\n| \u003ca name=\"input_datadog_values\"\u003e\u003c/a\u003e [datadog\\_values](#input\\_datadog\\_values) | Values for datadog helm chart | `string` | `\"\"` | no |\n| \u003ca name=\"input_datadog_values_extra\"\u003e\u003c/a\u003e [datadog\\_values\\_extra](#input\\_datadog\\_values\\_extra) | Path to extra values YAML file for Datadog Helm chart | `string` | `null` | no |\n| \u003ca name=\"input_datadog_version\"\u003e\u003c/a\u003e [datadog\\_version](#input\\_datadog\\_version) | The version of the Datadog Helm chart to be deployed, used for monitoring, security, and observability in Kubernetes environments. | `string` | `\"3.88.3\"` | no |\n| \u003ca name=\"input_grafana_admin_password\"\u003e\u003c/a\u003e [grafana\\_admin\\_password](#input\\_grafana\\_admin\\_password) | The Password of Grafana for login Dashboard | `string` | `\"\"` | no |\n| \u003ca name=\"input_grafana_admin_user\"\u003e\u003c/a\u003e [grafana\\_admin\\_user](#input\\_grafana\\_admin\\_user) | The User name of Grafana for login Dashboard | `string` | `\"opszero\"` | no |\n| \u003ca name=\"input_grafana_datasources\"\u003e\u003c/a\u003e [grafana\\_datasources](#input\\_grafana\\_datasources) | n/a | \u003cpre\u003elist(object({\u003cbr/\u003e    name      = string\u003cbr/\u003e    type      = string\u003cbr/\u003e    url       = string\u003cbr/\u003e    access    = string\u003cbr/\u003e    isDefault = bool\u003cbr/\u003e  }))\u003c/pre\u003e | `[]` | no |\n| \u003ca name=\"input_grafana_efs_enable\"\u003e\u003c/a\u003e [grafana\\_efs\\_enable](#input\\_grafana\\_efs\\_enable) | Enable EFS storage for Grafana | `bool` | `false` | no |\n| \u003ca name=\"input_grafana_efs_storage_class_name\"\u003e\u003c/a\u003e [grafana\\_efs\\_storage\\_class\\_name](#input\\_grafana\\_efs\\_storage\\_class\\_name) | If EFS is needed pass EFS storage class, but make sure efs and efs driver deployed | `string` | `\"gp2\"` | no |\n| \u003ca name=\"input_grafana_enabled\"\u003e\u003c/a\u003e [grafana\\_enabled](#input\\_grafana\\_enabled) | Enable grafana | `bool` | `false` | no |\n| \u003ca name=\"input_grafana_extra_yml\"\u003e\u003c/a\u003e [grafana\\_extra\\_yml](#input\\_grafana\\_extra\\_yml) | Grafana Datasources as Yaml | `any` | `null` | no |\n| \u003ca name=\"input_grafana_google_auth_client_id\"\u003e\u003c/a\u003e [grafana\\_google\\_auth\\_client\\_id](#input\\_grafana\\_google\\_auth\\_client\\_id) | Add Google Auth client id | `string` | `\"\"` | no |\n| \u003ca name=\"input_grafana_google_auth_client_secret\"\u003e\u003c/a\u003e [grafana\\_google\\_auth\\_client\\_secret](#input\\_grafana\\_google\\_auth\\_client\\_secret) | Add Google Auth client secret | `string` | `\"\"` | no |\n| \u003ca name=\"input_grafana_ingress_class_name\"\u003e\u003c/a\u003e [grafana\\_ingress\\_class\\_name](#input\\_grafana\\_ingress\\_class\\_name) | Ingress class name for Grafana | `string` | `\"nginx\"` | no |\n| \u003ca name=\"input_grafana_ingress_enabled\"\u003e\u003c/a\u003e [grafana\\_ingress\\_enabled](#input\\_grafana\\_ingress\\_enabled) | Enable grafana ingress | `bool` | `false` | no |\n| \u003ca name=\"input_grafana_ingress_hosts\"\u003e\u003c/a\u003e [grafana\\_ingress\\_hosts](#input\\_grafana\\_ingress\\_hosts) | Add grafana ingress hosts | `list` | `[]` | no |\n| \u003ca name=\"input_grafana_loki_bucket_name\"\u003e\u003c/a\u003e [grafana\\_loki\\_bucket\\_name](#input\\_grafana\\_loki\\_bucket\\_name) | Name for the S3 bucket | `string` | `\"\"` | no |\n| \u003ca name=\"input_grafana_loki_enabled\"\u003e\u003c/a\u003e [grafana\\_loki\\_enabled](#input\\_grafana\\_loki\\_enabled) | Enable grafana loki | `bool` | `false` | no |\n| \u003ca name=\"input_grafana_loki_yml_file\"\u003e\u003c/a\u003e [grafana\\_loki\\_yml\\_file](#input\\_grafana\\_loki\\_yml\\_file) | n/a | `any` | `null` | no |\n| \u003ca name=\"input_grafana_persistence_storage\"\u003e\u003c/a\u003e [grafana\\_persistence\\_storage](#input\\_grafana\\_persistence\\_storage) | Enable persistence storage for Grafana | `bool` | `true` | no |\n| \u003ca name=\"input_grafana_version\"\u003e\u003c/a\u003e [grafana\\_version](#input\\_grafana\\_version) | The version of the Grafana Helm chart to be deployed, used for data visualization and monitoring dashboards. | `string` | `\"8.8.5\"` | no |\n| \u003ca name=\"input_ingress_nginx_enable\"\u003e\u003c/a\u003e [ingress\\_nginx\\_enable](#input\\_ingress\\_nginx\\_enable) | Enable or disable the installation of the ingress-nginx Helm chart | `string` | `\"true\"` | no |\n| \u003ca name=\"input_ingress_nginx_version\"\u003e\u003c/a\u003e [ingress\\_nginx\\_version](#input\\_ingress\\_nginx\\_version) | The version of the Ingress-NGINX Helm chart to be deployed, used for managing ingress traffic in Kubernetes. | `string` | `\"4.12.1\"` | no |\n| \u003ca name=\"input_keda_version\"\u003e\u003c/a\u003e [keda\\_version](#input\\_keda\\_version) | The version of the KEDA Helm chart to be deployed, used for Kubernetes-based Event-Driven Autoscaling. | `string` | `\"2.16.1\"` | no |\n| \u003ca name=\"input_kubecost_enabled\"\u003e\u003c/a\u003e [kubecost\\_enabled](#input\\_kubecost\\_enabled) | A boolean to enable or disable the deployment of Kubecost, a tool for monitoring and managing Kubernetes cost and resource usage. | `bool` | `false` | no |\n| \u003ca name=\"input_kubecost_version\"\u003e\u003c/a\u003e [kubecost\\_version](#input\\_kubecost\\_version) | The version of the Kubecost Helm chart to be deployed, used for Kubernetes cost management and optimization. | `string` | `\"2.5.3\"` | no |\n| \u003ca name=\"input_loki_version\"\u003e\u003c/a\u003e [loki\\_version](#input\\_loki\\_version) | The version of the Loki Helm chart to be deployed, used for log aggregation and analysis. | `string` | `\"6.25.0\"` | no |\n| \u003ca name=\"input_loki_yml_file\"\u003e\u003c/a\u003e [loki\\_yml\\_file](#input\\_loki\\_yml\\_file) | Path to custom Loki YAML file | `string` | `null` | no |\n| \u003ca name=\"input_nginx_max_replicas\"\u003e\u003c/a\u003e [nginx\\_max\\_replicas](#input\\_nginx\\_max\\_replicas) | Maximum number of Nginx Replicas | `number` | `11` | no |\n| \u003ca name=\"input_nginx_min_replicas\"\u003e\u003c/a\u003e [nginx\\_min\\_replicas](#input\\_nginx\\_min\\_replicas) | Minimum number of Nginx Replicas | `number` | `2` | no |\n| \u003ca name=\"input_nginx_name\"\u003e\u003c/a\u003e [nginx\\_name](#input\\_nginx\\_name) | Release name for the installed helm chart | `string` | `\"nginx\"` | no |\n| \u003ca name=\"input_nginx_yml_file\"\u003e\u003c/a\u003e [nginx\\_yml\\_file](#input\\_nginx\\_yml\\_file) | n/a | `any` | `null` | no |\n| \u003ca name=\"input_opentelemetry_collector_version\"\u003e\u003c/a\u003e [opentelemetry\\_collector\\_version](#input\\_opentelemetry\\_collector\\_version) | The version of the OpenTelemetry Collector Helm chart to be deployed, used for collecting telemetry data (logs, metrics, and traces) from various sources. | `string` | `\"0.115.0\"` | no |\n| \u003ca name=\"input_otel_yml_file\"\u003e\u003c/a\u003e [otel\\_yml\\_file](#input\\_otel\\_yml\\_file) | n/a | `any` | `null` | no |\n| \u003ca name=\"input_prometheus_additional_scrape_configs\"\u003e\u003c/a\u003e [prometheus\\_additional\\_scrape\\_configs](#input\\_prometheus\\_additional\\_scrape\\_configs) | Add additional scrape for configuration for prometheus if needed | \u003cpre\u003elist(object({\u003cbr/\u003e    job_name        = string\u003cbr/\u003e    targets         = list(string)\u003cbr/\u003e    scrape_interval = string\u003cbr/\u003e    metrics_path    = string\u003cbr/\u003e  }))\u003c/pre\u003e | `[]` | no |\n| \u003ca name=\"input_prometheus_enabled\"\u003e\u003c/a\u003e [prometheus\\_enabled](#input\\_prometheus\\_enabled) | Enable prometheus | `bool` | `true` | no |\n| \u003ca name=\"input_prometheus_persistence_storage\"\u003e\u003c/a\u003e [prometheus\\_persistence\\_storage](#input\\_prometheus\\_persistence\\_storage) | Enable persistence storage for Prometheus | `bool` | `false` | no |\n| \u003ca name=\"input_prometheus_version\"\u003e\u003c/a\u003e [prometheus\\_version](#input\\_prometheus\\_version) | The version of the Prometheus Helm chart to be deployed, used for monitoring and alerting in Kubernetes. | `string` | `\"27.1.0\"` | no |\n| \u003ca name=\"input_promtail_version\"\u003e\u003c/a\u003e [promtail\\_version](#input\\_promtail\\_version) | The version of the Promtail Helm chart to be deployed, used as a log collector to send logs to Loki. | `string` | `\"6.16.6\"` | no |\n| \u003ca name=\"input_pushgateway_ingress_host\"\u003e\u003c/a\u003e [pushgateway\\_ingress\\_host](#input\\_pushgateway\\_ingress\\_host) | List of hosts for prometheus push gateway ingress | `list` | `[]` | no |\n| \u003ca name=\"input_storage_class\"\u003e\u003c/a\u003e [storage\\_class](#input\\_storage\\_class) | Storage Class to use for Persistence | `string` | `\"gp2\"` | no |\n## Resources\n\n| Name | Type |\n|------|------|\n| [helm_release.cert-manager](https://registry.terraform.io/providers/hashicorp/helm/latest/docs/resources/release) | resource |\n| [helm_release.datadog](https://registry.terraform.io/providers/hashicorp/helm/latest/docs/resources/release) | resource |\n| [helm_release.grafana](https://registry.terraform.io/providers/hashicorp/helm/latest/docs/resources/release) | resource |\n| [helm_release.keda](https://registry.terraform.io/providers/hashicorp/helm/latest/docs/resources/release) | resource |\n| [helm_release.kubecost](https://registry.terraform.io/providers/hashicorp/helm/latest/docs/resources/release) | resource |\n| [helm_release.loki](https://registry.terraform.io/providers/hashicorp/helm/latest/docs/resources/release) | resource |\n| [helm_release.nginx](https://registry.terraform.io/providers/hashicorp/helm/latest/docs/resources/release) | resource |\n| [helm_release.opentelemetry_collector](https://registry.terraform.io/providers/hashicorp/helm/latest/docs/resources/release) | resource |\n| [helm_release.prometheus](https://registry.terraform.io/providers/hashicorp/helm/latest/docs/resources/release) | resource |\n| [helm_release.promtail](https://registry.terraform.io/providers/hashicorp/helm/latest/docs/resources/release) | resource |\n| [null_resource.cert-manager-cluster-issuer](https://registry.terraform.io/providers/hashicorp/null/latest/docs/resources/resource) | resource |\n| [random_password.grafana_admin_password](https://registry.terraform.io/providers/hashicorp/random/latest/docs/resources/password) | resource |\n## Outputs\n\n| Name | Description |\n|------|-------------|\n| \u003ca name=\"output_grafana_admin_password\"\u003e\u003c/a\u003e [grafana\\_admin\\_password](#output\\_grafana\\_admin\\_password) | n/a |\n# 🚀 Built by opsZero!\n\n\u003ca href=\"https://opszero.com\"\u003e\u003cimg src=\"https://opszero.com/img/common/opsZero-Logo-Large.webp\" width=\"300px\"/\u003e\u003c/a\u003e\n\n[opsZero](https://opszero.com) provides software and consulting for Cloud + AI. With our decade plus of experience scaling some of the world’s most innovative companies we have developed deep expertise in Kubernetes, DevOps, FinOps, and Compliance.\n\nOur software and consulting solutions enable organizations to:\n\n- migrate workloads to the Cloud\n- setup compliance frameworks including SOC2, HIPAA, PCI-DSS, ITAR, FedRamp, CMMC, and more.\n- FinOps solutions to reduce the cost of running Cloud workloads\n- Kubernetes optimized for web scale and AI workloads\n- finding underutilized Cloud resources\n- setting up custom AI training and delivery\n- building data integrations and scrapers\n- modernizing onto modern ARM based processors\n\nWe do this with a high-touch support model where you:\n\n- Get access to us on Slack, Microsoft Teams or Email\n- Get 24/7 coverage of your infrastructure\n- Get an accelerated migration to Kubernetes\n\nPlease [schedule a call](https://calendly.com/opszero-llc/discovery) if you need support.\n\n\u003cbr/\u003e\u003cbr/\u003e\n\n\u003cdiv style=\"display: block\"\u003e\n  \u003cimg src=\"https://opszero.com/img/common/aws-advanced.png\" alt=\"AWS Advanced Tier\" width=\"150px\" \u003e\n  \u003cimg src=\"https://opszero.com/img/common/aws-devops-competency.png\" alt=\"AWS DevOps Competency\" width=\"150px\" \u003e\n  \u003cimg src=\"https://opszero.com/img/common/aws-eks.png\" alt=\"AWS EKS Delivery\" width=\"150px\" \u003e\n  \u003cimg src=\"https://opszero.com/img/common/aws-public-sector.png\" alt=\"AWS Public Sector\" width=\"150px\" \u003e\n\u003c/div\u003e\n\u003c!-- END_TF_DOCS --\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fopszero%2Fterraform-helm-kubespot","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fopszero%2Fterraform-helm-kubespot","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fopszero%2Fterraform-helm-kubespot/lists"}