All Projects → kubernetes-sigs → Kustomize

kubernetes-sigs / Kustomize

Licence: apache-2.0
Customization of kubernetes YAML configurations

Programming Languages

go
31211 projects - #10 most used programming language
CSS
56736 projects
shell
77523 projects
HTML
75241 projects
SCSS
7915 projects
Makefile
30231 projects

Projects that are alternatives of or similar to Kustomize

Trivy
Scanner for vulnerabilities in container images, file systems, and Git repositories, as well as for configuration issues
Stars: ✭ 9,673 (+22.75%)
Mutual labels:  hacktoberfest
Stalin Sort
Add a stalin sort algorithm in any language you like ❣️ if you like give us a ⭐️
Stars: ✭ 868 (-88.98%)
Mutual labels:  hacktoberfest
Jbops
Just a Bunch Of Plex Scripts
Stars: ✭ 873 (-88.92%)
Mutual labels:  hacktoberfest
Pynvim
Python client and plugin host for Nvim
Stars: ✭ 851 (-89.2%)
Mutual labels:  hacktoberfest
Supervisor
🏡 Home Assistant Supervisor
Stars: ✭ 862 (-89.06%)
Mutual labels:  hacktoberfest
Pskoans
A simple, fun, and interactive way to learn the PowerShell language through Pester unit testing.
Stars: ✭ 868 (-88.98%)
Mutual labels:  hacktoberfest
Platform
Reactive libraries for Angular
Stars: ✭ 7,020 (-10.91%)
Mutual labels:  hacktoberfest
Go Critic
The most opinionated Go source code linter for code audit.
Stars: ✭ 875 (-88.9%)
Mutual labels:  hacktoberfest
Swiftyjsonaccelerator
macOS app to generate Swift 5 code for models from JSON (with Codeable)
Stars: ✭ 864 (-89.04%)
Mutual labels:  hacktoberfest
Azure Sdk For Js
This repository is for active development of the Azure SDK for JavaScript (NodeJS & Browser). For consumers of the SDK we recommend visiting our public developer docs at https://docs.microsoft.com/en-us/javascript/azure/ or our versioned developer docs at https://azure.github.io/azure-sdk-for-js.
Stars: ✭ 872 (-88.93%)
Mutual labels:  hacktoberfest
Conpot
ICS/SCADA honeypot
Stars: ✭ 853 (-89.18%)
Mutual labels:  hacktoberfest
Accumulo
Apache Accumulo
Stars: ✭ 857 (-89.12%)
Mutual labels:  hacktoberfest
Oh My Posh
A prompt theme engine for any shell.
Stars: ✭ 841 (-89.33%)
Mutual labels:  hacktoberfest
Vscode Debug Visualizer
An extension for VS Code that visualizes data during debugging.
Stars: ✭ 7,116 (-9.7%)
Mutual labels:  hacktoberfest
Oreboot
oreboot is a fork of coreboot, with C removed, written in Rust.
Stars: ✭ 874 (-88.91%)
Mutual labels:  hacktoberfest
Openebs
Leading Open Source Container Attached Storage, built using Cloud Native Architecture, simplifies running Stateful Applications on Kubernetes.
Stars: ✭ 7,277 (-7.65%)
Mutual labels:  hacktoberfest
Bakeware
Compile Elixir applications into single, easily distributed executable binaries
Stars: ✭ 865 (-89.02%)
Mutual labels:  hacktoberfest
Woocommerce
An open source eCommerce plugin for WordPress.
Stars: ✭ 7,473 (-5.16%)
Mutual labels:  hacktoberfest
Swift Sdk
📱 The Watson Swift SDK enables developers to quickly add Watson Cognitive Computing services to their Swift applications.
Stars: ✭ 877 (-88.87%)
Mutual labels:  hacktoberfest
Go Jira
Go client library for Atlassian Jira
Stars: ✭ 871 (-88.95%)
Mutual labels:  hacktoberfest

kustomize

kustomize lets you customize raw, template-free YAML files for multiple purposes, leaving the original YAML untouched and usable as is.

kustomize targets kubernetes; it understands and can patch kubernetes style API objects. It's like make, in that what it does is declared in a file, and it's like sed, in that it emits edited text.

This tool is sponsored by sig-cli (KEP).

Build Status Go Report Card

kubectl integration

The kustomize build flow at v2.0.3 was added to kubectl v1.14. The kustomize flow in kubectl remained frozen at v2.0.3 until kubectl v1.21, which updated it to v4.0.5. It will be updated on a regular basis going forward, and such updates will be reflected in the Kubernetes release notes.

Kubectl version Kustomize version
< v1.14 n/a
v1.14-v1.20 v2.0.3
v1.21 v4.0.5
v1.22 v4.2.0

For examples and guides for using the kubectl integration please see the kubectl book or the kubernetes documentation.

Usage

1) Make a kustomization file

In some directory containing your YAML resource files (deployments, services, configmaps, etc.), create a kustomization file.

This file should declare those resources, and any customization to apply to them, e.g. add a common label.

base image

File structure:

~/someApp
├── deployment.yaml
├── kustomization.yaml
└── service.yaml

The resources in this directory could be a fork of someone else's configuration. If so, you can easily rebase from the source material to capture improvements, because you don't modify the resources directly.

Generate customized YAML with:

kustomize build ~/someApp

The YAML can be directly applied to a cluster:

kustomize build ~/someApp | kubectl apply -f -

2) Create variants using overlays

Manage traditional variants of a configuration - like development, staging and production - using overlays that modify a common base.

overlay image

File structure:

~/someApp
├── base
│   ├── deployment.yaml
│   ├── kustomization.yaml
│   └── service.yaml
└── overlays
    ├── development
    │   ├── cpu_count.yaml
    │   ├── kustomization.yaml
    │   └── replica_count.yaml
    └── production
        ├── cpu_count.yaml
        ├── kustomization.yaml
        └── replica_count.yaml

Take the work from step (1) above, move it into a someApp subdirectory called base, then place overlays in a sibling directory.

An overlay is just another kustomization, referring to the base, and referring to patches to apply to that base.

This arrangement makes it easy to manage your configuration with git. The base could have files from an upstream repository managed by someone else. The overlays could be in a repository you own. Arranging the repo clones as siblings on disk avoids the need for git submodules (though that works fine, if you are a submodule fan).

Generate YAML with

kustomize build ~/someApp/overlays/production

The YAML can be directly applied to a cluster:

kustomize build ~/someApp/overlays/production | kubectl apply -f -

Community

Code of conduct

Participation in the Kubernetes community is governed by the Kubernetes Code of Conduct.

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].