All Projects → GoogleCloudPlatform → gke-ip-address-management

GoogleCloudPlatform / gke-ip-address-management

Licence: other
An application to help with IP Address Management (IPAM) for Google Kubernetes Engine (GKE) clusters. Easily allows the calculation of the subnets required to spin up GKE clusters in VPC-native mode. See it at: https://googlecloudplatform.github.io/gke-ip-address-management/

Programming Languages

javascript
184084 projects - #8 most used programming language
python
139335 projects - #7 most used programming language
shell
77523 projects
HTML
75241 projects
CSS
56736 projects
Makefile
30231 projects

Projects that are alternatives of or similar to gke-ip-address-management

gke-vault-demo
This demo builds two GKE Clusters and guides you through using secrets in Vault, using Kubernetes authentication from within a pod to login to Vault, and fetching short-lived Google Service Account credentials on-demand from Vault within a pod.
Stars: ✭ 63 (+40%)
Mutual labels:  gcp, gke, kubernetes-engine, gke-helmsman
gke-logging-sinks-demo
This project describes the steps required to deploy a sample application to Kubernetes Engine that forwards log events to Stackdriver Logging. As a part of the exercise, you will create a Cloud Storage bucket and a BigQuery dataset for exporting log data.
Stars: ✭ 45 (+0%)
Mutual labels:  gke, kubernetes-engine, gke-helmsman
gke-istio-telemetry-demo
This project demonstrates how to use an Istio service mesh in a single Kubernetes Engine cluster alongside Prometheus, Jaeger, and Grafana, to monitor cluster and workload performance metrics. You will first deploy the Istio control plane, data plane, and additional visibility tools using the provided scripts, then explore the collected metrics …
Stars: ✭ 55 (+22.22%)
Mutual labels:  gke, kubernetes-engine, gke-helmsman
gke-rbac-demo
This project covers two use cases for RBAC within a Kubernetes Engine cluster. First, assigning different permissions to user personas. Second, granting limited API access to an application running within your cluster. Since RBAC's flexibility can occasionally result in complex rules, you will also perform common steps for troubleshooting RBAC a…
Stars: ✭ 138 (+206.67%)
Mutual labels:  gke, kubernetes-engine, gke-helmsman
gke-managed-certificates-demo
GKE ingress with GCP managed certificates
Stars: ✭ 21 (-53.33%)
Mutual labels:  gcp, gke, gke-helmsman
gke-istio-gce-demo
In this project, you will leverage Kubernetes Engine and Google Compute Engine to explore how Istio can manage services that reside outside of the Kubernetes Engine environment. You will deploy a typical Istio service mesh in Kubernetes Engine, then configure an externally deployed microservice to join the mesh.
Stars: ✭ 53 (+17.78%)
Mutual labels:  gke, kubernetes-engine, gke-helmsman
gke-anthos-holistic-demo
This repository guides you through deploying a private GKE cluster and provides a base platform for hands-on exploration of several GKE related topics which leverage or integrate with that infrastructure. After completing the exercises in all topic areas, you will have a deeper understanding of several core components of GKE and GCP as configure…
Stars: ✭ 55 (+22.22%)
Mutual labels:  gcp, gke, gke-helmsman
gke-datadog-demo
This project demonstrates how a third party solution, like Datadog, can be used to monitor a Kubernetes Engine cluster and its workloads. Using the provided manifest, you will install Datadog and a simple nginx workload into your cluster. The Datadog agents will be configured to monitor the nginx workload, and ship metrics to your own Datadog ac…
Stars: ✭ 21 (-53.33%)
Mutual labels:  gke, kubernetes-engine, gke-helmsman
google-managed-certs-gke
DEPRECATED: How to use Google Managed SSL Certificates on GKE
Stars: ✭ 16 (-64.44%)
Mutual labels:  gcp, gke
k8s-digester
Add digests to container and init container images in Kubernetes pod and pod template specs. Use either as a mutating admission webhook, or as a client-side KRM function with kpt or kustomize.
Stars: ✭ 65 (+44.44%)
Mutual labels:  gcp, gke
gke-demo
Demonstration of complete, fully-featured CI/CD and cloud automation for microservices, done with GCP/GKE
Stars: ✭ 47 (+4.44%)
Mutual labels:  gcp, gke
gtoken
Securely access AWS services from GKE cluster
Stars: ✭ 43 (-4.44%)
Mutual labels:  gcp, gke
gke-enterprise-mt
This repository hosts the terraform module that helps setup a GKE cluster and environment based on the Enterprise Multi-Tenancy Best Practices Guide.
Stars: ✭ 20 (-55.56%)
Mutual labels:  gcp, gke-helmsman
inspec-gke-cis-benchmark
GKE CIS 1.1.0 Benchmark InSpec Profile
Stars: ✭ 27 (-40%)
Mutual labels:  gcp, gke
Networking-and-Kubernetes
This is the code repo for Networking and Kubernetes: A Layered Approach. https://learning.oreilly.com/library/view/networking-and-kubernetes/9781492081647/
Stars: ✭ 103 (+128.89%)
Mutual labels:  gcp, gke
tfquery
tfquery: Run SQL queries on your Terraform infrastructure. Query resources and analyze its configuration using a SQL-powered framework.
Stars: ✭ 297 (+560%)
Mutual labels:  gcp
terraform-modules
Reusable Terraform modules
Stars: ✭ 12 (-73.33%)
Mutual labels:  gcp
waihona
Rust crate for performing cloud storage CRUD actions across major cloud providers e.g aws
Stars: ✭ 46 (+2.22%)
Mutual labels:  gcp
deploy-cloudrun
This action deploys your container image to Cloud Run.
Stars: ✭ 238 (+428.89%)
Mutual labels:  gcp
vertex-edge
A tool for training models to Vertex on Google Cloud Platform.
Stars: ✭ 24 (-46.67%)
Mutual labels:  gcp

GKE IP Address Management

A tool to do IP Address Management for VPC-native GKE(Google Kubernetes Engine) clusters.

Introduction

This tool provides an easy and interactive way to model the IP Address requirement to create VPC-native GKE clusters using alias IP addresses.

Architecture

This application is a React single page application. The application has no backend requirements, and can be run locally or hosted in any standard web server.

Prerequisites

Tools

To build and run the tool locally, Node.js and npm are required. Both tools can be installed by most popular package managers in Unix-like operating systems. Alternatively, native installers for Node.js are available from the Node.js site downloads. Node.js installers include the required npm tool. Additionally, jq is required to build a distribution to deploy on a webserver. jq can be downloaded from the official website, but is normally installed using the native package manager of the platform you're running (such as apt-get or yum). Any reasonable recent version of jq would suffice. The process has been tested with version 1.5.

Versions

Any reasonable modern version of Node.js and npm should suffice to build and run the tool. It has been tested with node version 8.6.0 and npm version 5.4.2.

Running

The tool can be run locally by executing:

make run

This will install the required node dependancies and start the developement server. The developement service will listen on http://localhost:3000/.

Alternatively you can just execute npm directly:

npm install
npm start

Deployment

The application can be deployed to a webserver. To create a optimized production build, run:

make npm-build

Simply copy the files located inside the build directory and serve from the root of a web server.

Deployment from a different root URL

To create a build that is served out of URL that is not a the root of the domain, pass the base url as an environment variable before building:

export IPAM_HOST_URL=https://mydomain.com/gke-ipam/
make npm-build

Copy the resulting files from the build directory to the webserver at the previously designated path.

CLI

A CLI is provided in the src directory. It currently takes the input in JSON format. For example:

{
    "network": "10.0.0.0",
    "netmask": "16",
    "nodeNetmask": "29",
    "clusterNetmask": "24",
    "serviceNetmask": "24",
    "nodePodNetmask": "24",
    "masterNetwork": "PUBLIC",
    "locationType": "ZONAL",
    "extraZones": "1"
}

The input can be passed from a file using --input=:

./gke-ipam.js --input=test.tmp

The input can be passed from stdin:

cat test.tmp | ./gke-ipam.js

Developing

See CONTRIBUTING for details on Contribuiting to the project.

Testing

We use jest to run automated testing. During development it is useful to have jest running. constantly and monitoring changes to the files:

npm test

Code Quality and Format

We use eslint for code quality. During development it's use full to run eslint periodically to catch any. issues and to fix any formatting issues:

npm run lint -- --fix

Test Coverage

To see the test coverage of the codebase use the following command:

npm test -- --coverage --watchAll=false

There's a bug in jest that prevents running coverage and watching files together.

TODO

  • Display free ranges
  • Allow to share the Cluster range CIDR accross VPCs
  • Allow to add manually defined networks
  • Allow to reserve IPs in the main VPC ranges
  • Dispaly more info regarding what rules are constraining the results
  • Allow packing multiple GKE clusters into a single VPC (2 or 4 depending on whether we share the Cluster Alias range)

Relevant Material

The following links are relevant to nuances of creating VPC-native GKE clusters.

GKE Network overview Creating VPC-native clusters using alias IP addresses Alias IP Ranges Overview

Change Log

  • 5/13/2019 - Minimum size for Services changed to /27.

License

Apache 2.0. See LICENSE for more information.

Disclaimer

This is not an official Google product.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].