Code Monkey home page Code Monkey logo

terraform-gke's Introduction

Terraform GKE

This repository contains modules for GKE cluster implementations, and is a work in progress. The GKE cluster modules are adaptable, and allow for separate node pool modules from the cluster modules themselves. This repository only contains GKE-related resources -- underlying network resources need to be provided. See the terraform-gcp-vpc-native repository.

Usage

Please see the readme and example-usage docs within each specific module for details on how to use.

Contributing

See CONTRIBUTING.md.

Release Expectations

We intend to use semantic versioning for the modules in this repository. This means that each module folder will have a release tag similar to module-name:v0.0.1. We never intend any versions to recreate the GKE clusters, since this could result in state loss. If any modules are made completely incompatible we will note in release notes. If any compatibility issues are found in the wild, please submit an issue with a way to recreate the scenario.

Each module should have it's own usage documentation in the folder. The module folder should also include a CHANGELOG.md for that module.

We do not anticipate retrofitting patches to older MINOR versions. If we are currently on v1.2.0 and a bug is found that was introduced in v1.1.0 we will patch to v1.2.1 (and there will not be a v1.1.1). Pull requests always accepted if you have a need to patch older releases.

Version Differences

  • MAJOR: Changing versions here will require changes to your module parameters
    • Could have new required parameters or changes to defaults that could affect implementations
    • May remove certain parameters
    • Will not re-provision your cluster, unless noted in the changelog release notes
  • MINOR: Changing minor versions should have parameter backwards compatibility
    • Required parameters should not change between MINOR versions
    • Optional parameters may change or there may be new optional parameters
    • We will not remove optional parameters between MINOR releases, a MAJOR is required
    • Defaults on optional parameters may change between MINOR versions, including default versions or other cluster settings
    • Change Log will outline expected differences between Minor releases
  • PATCH: Changing minor defaults or logic fixes
    • Bugs that fix behavior or adjust "constant change" issues in terraform runs
    • Typos could be fixed with patch if it affects behavior of the terraform module
    • Fixes to older supported features of the module that broke with MINOR functionality changes
    • README and USAGE documentation changes may trigger a PATCH change and should be documented in CHANGELOG

Join the Fairwinds Open Source Community

The goal of the Fairwinds Community is to exchange ideas, influence the open source roadmap, and network with fellow Kubernetes users. Chat with us on Slack join the user group to get involved!

Love Fairwinds Open Source? Share your business email and job title and we'll send you a free Fairwinds t-shirt!

Other Projects from Fairwinds

Enjoying terraform-gke? Check out some of our other projects:

  • Polaris - Audit, enforce, and build policies for Kubernetes resources, including over 20 built-in checks for best practices
  • Goldilocks - Right-size your Kubernetes Deployments by compare your memory and CPU settings against actual usage
  • Pluto - Detect Kubernetes resources that have been deprecated or removed in future versions
  • Nova - Check to see if any of your Helm charts have updates available
  • rbac-manager - Simplify the management of RBAC in your Kubernetes clusters

terraform-gke's People

Contributors

abdulahadakhter avatar azahorscak avatar bambash avatar bbensky avatar dosullivan avatar fairmay avatar ivanfetch avatar katiekeel avatar lucasreed avatar nickfw avatar nungster avatar rbren avatar reactiveops-bot avatar transient1 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

terraform-gke's Issues

Handle labels added by other GCP services

Right now, when using something like google game services, Google adds labels to the cluster. When doing further updates, I can't seem to add the label or ignore any changes on the labels. This breaks the terraform.

Make node pool auth scope an input

Capturing a comment from @dosullivan from PR #3

Another thought for future functionality: perhaps we could pull out the oauth scope list as a module parameter. I don't think this will be necessary in a lot of cases (as the default list will suffice), but it could come up in environments with lots of GCP services in use.

Deprecated fields

These errors came from running terraform plan, using terraform v0.12.16 and these modules:
source = "[email protected]:FairwindsOps/terraform-gcp-vpc-native.git//default?ref=default-v2.0.0"
source = "[email protected]:/FairwindsOps/terraform-gke//vpc-native?ref=vpc-native-v1.0.0"
source = "[email protected]:/FairwindsOps/terraform-gke//node_pool?ref=node-pool-v3.0.0"

Error: "addons_config.0.http_load_balancing": one of addons_config.0.horizontal_pod_autoscaling,addons_config.0.http_load_balancing,addons_config.0.network_policy_config must be specified on .terraform/modules/cluster_1/vpc-native/main.tf line 1, in resource "google_container_cluster" "cluster":
 1: resource "google_container_cluster" "cluster" {
 Error: "addons_config.0.horizontal_pod_autoscaling": one of addons_config.0.horizontal_pod_autoscaling,addons_config.0.http_load_balancing,addons_config.0.network_policy_config must be specified
 on .terraform/modules/cluster_1/vpc-native/main.tf line 1, in resource "google_container_cluster" "cluster":
 1: resource "google_container_cluster" "cluster" {
 Error: "addons_config.0.kubernetes_dashboard": [REMOVED] The Kubernetes Dashboard addon is removed for clusters on GKE.
 on .terraform/modules/cluster_1/vpc-native/main.tf line 1, in resource "google_container_cluster" "cluster":
 1: resource "google_container_cluster" "cluster" {
 Error: "addons_config.0.network_policy_config": one of addons_config.0.horizontal_pod_autoscaling,addons_config.0.http_load_balancing,addons_config.0.network_policy_config must be specified
 on .terraform/modules/cluster_1/vpc-native/main.tf line 1, in resource "google_container_cluster" "cluster":1: resource "google_container_cluster" "cluster" {
    Error: "addons_config.0.kubernetes_dashboard": [REMOVED] The Kubernetes Dashboard addon is removed for clusters on GKE. 
    on .terraform/modules/cluster_1/vpc-native/main.tf line 1, in resource "google_container_cluster" "cluster":
    1: resource "google_container_cluster" "cluster" {
    Error: "enable_flow_logs": [REMOVED] This field is being removed in favor of log_config. If log_config is present, flow logs are enabled. Please remove this field
    
    on .terraform/modules/network_1/default/main.tf line 73, in resource "google_compute_subnetwork" "subnetwork":
    73: resource "google_compute_subnetwork" "subnetwork" {

Project shouldn't ever be needed

https://github.com/reactiveops/terraform-gke/blob/master/public-vpc-native/inputs.tf#L9

If someone specifies project, there may be issues with the network or other assets that refer to this module in the resources. The preferred way to inject a new project to a module is with terraform module provider aliases. (See https://www.terraform.io/docs/configuration/providers.html#selecting-alternate-providers for documentation)

I would recommend removing this parameter from the inputs to avoid future confusion with projects.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.