kops

package module
v1.10.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Aug 16, 2018 License: Apache-2.0 Imports: 1 Imported by: 0

README

kops logo

kops - Kubernetes Operations

Build Status Go Report Card GoDoc Widget

The easiest way to get a production grade Kubernetes cluster up and running.

What is kops?

We like to think of it as kubectl for clusters.

kops helps you create, destroy, upgrade and maintain production-grade, highly available, Kubernetes clusters from the command line. AWS (Amazon Web Services) is currently officially supported, with GCE in beta support , and VMware vSphere in alpha, and other platforms planned.

Can I see it in action?

Launching a Kubernetes cluster hosted on AWS, GCE or DigitalOcean

To replicate the above demo, check out our tutorial for launching a Kubernetes cluster hosted on AWS.

To install a Kubernetes cluster on GCE please follow this guide.

To install a Kubernetes cluster on DigitalOcean, follow this guide.

Features

  • Automates the provisioning of Kubernetes clusters in AWS and GCE
  • Deploys Highly Available (HA) Kubernetes Masters
  • Built on a state-sync model for dry-runs and automatic idempotency
  • Ability to generate Terraform
  • Supports custom Kubernetes add-ons
  • Command line autocompletion
  • YAML Manifest Based API Configuration
  • Templating and dry-run modes for creating Manifests
  • Choose from eight different CNI Networking providers out-of-the-box
  • Supports upgrading from kube-up
  • Capability to add containers, as hooks, and files to nodes via a cluster manifest

Documentation

Documentation is in the /docs directory, and the index is here.

Kubernetes Release Compatibility

Kubernetes Version Support

kops is intended to be backward compatible. It is always recommended to use the latest version of kops with whatever version of Kubernetes you are using. Always use the latest version of kops.

One exception, in regards to compatibility, kops supports the equivalent Kubernetes minor release number. A minor version is the second digit in the release number. kops version 1.8.0 has a minor version of 8. The numbering follows the semantic versioning specification, MAJOR.MINOR.PATCH.

For example, kops 1.8.0 does not support Kubernetes 1.9.2, but kops 1.9.0 supports Kubernetes 1.9.2 and previous Kubernetes versions. Only when kops minor version matches, the Kubernetes minor version does kops officially support the Kubernetes release. kops does not stop a user from installing mismatching versions of K8s, but Kubernetes releases always require kops to install specific versions of components like docker, that tested against the particular Kubernetes version.

Compatibility Matrix
kops version k8s 1.5.x k8s 1.6.x k8s 1.7.x k8s 1.8.x k8s 1.9.x
1.9.x Y Y Y Y Y
1.8.x Y Y Y Y N
1.7.x Y Y Y N N
1.6.x Y Y N N N

Use the latest version of kops for all releases of Kubernetes, with the caveat that higher versions of Kubernetes are not officially supported by kops.

kops Release Schedule

This project does not follow the Kubernetes release schedule. kops aims to provide a reliable installation experience for kubernetes, and typically releases about a month after the corresponding Kubernetes release. This time allows for the Kubernetes project to resolve any issues introduced by the new version and ensures that we can support the latest features. kops will release alpha and beta pre-releases for people that are eager to try the latest Kubernetes release. Please only use pre-GA kops releases in environments that can tolerate the quirks of new releases, and please do report any issues encountered.

Installing

Prerequisite

kubectl is required, see here.

OSX From Homebrew
brew update && brew install kops

The kops binary is also available via our releases.

Linux
curl -LO https://github.com/kubernetes/kops/releases/download/$(curl -s https://api.github.com/repos/kubernetes/kops/releases/latest | grep tag_name | cut -d '"' -f 4)/kops-linux-amd64
chmod +x kops-linux-amd64
sudo mv kops-linux-amd64 /usr/local/bin/kops

Release History

See the releases for more information on changes between releases.

Getting Involved and Contributing

Are you interested in contributing to kops? We, the maintainers and community, would love your suggestions, contributions, and help! We have a quick-start guide on adding a feature. Also, the maintainers can be contacted at any time to learn more about how to get involved.

In the interest of getting more new folks involved with kops, we are starting to tag issues with good-starter-issue. These are typically issues that have smaller scope but are good ways to start to get acquainted with the codebase.

We also encourage ALL active community participants to act as if they are maintainers, even if you don't have "official" write permissions. This is a community effort, we are here to serve the Kubernetes community. If you have an active interest and you want to get involved, you have real power! Don't assume that the only people who can get things done around here are the "maintainers".

We also would love to add more "official" maintainers, so show us what you can do!

What this means:

Issues

  • Help read and triage issues, assist when possible.
  • Point out issues that are duplicates, out of date, etc.
    • Even if you don't have tagging permissions, make a note and tag maintainers (/close,/dupe #127).

Pull Requests

  • Read and review the code. Leave comments, questions, and critiques (/lgtm ).
  • Download, compile, and run the code and make sure the tests pass (make test).
    • Also verify that the new feature seems sane, follows best architectural patterns, and includes tests.

This repository uses the Kubernetes bots. See a full list of the commands here.

Office Hours

Kops maintainers set aside one hour every other week for public office hours. Office hours are hosted on a zoom video chat on Fridays at 12 noon (Eastern Time)/9 am (Pacific Time), on odd week numbered weeks. We strive to get to know and help developers either working on kops or interested in getting to know more about the project.

Open Office Hours Topics

Include but not limited to:

  • Help and guide to those who attend, who are interested in contributing.
  • Discuss the current state of the kops project, including releases.
  • Strategize about how to move kops forward.
  • Collaborate about open and upcoming PRs.
  • Present demos.

This time is focused on developers, although we will never turn a courteous participant away. Please swing by, even if you've never actually installed kops.

We encourage you to reach out beforehand if you plan on attending. You're welcome to join any session, and please feel free to add an item to the agenda where we track notes from office hours.

Office hours are hosted on Zoom video conference, held on Fridays at 12 noon (Eastern Time)/9 am (Pacific Time) every other odd numbered week.

You can check your week number using:

date +%V

The maintainers and other community members are generally available on the kubernetes slack in #kops-users, so come find and chat with us about how kops can be better for you!

GitHub Issues

Bugs

If you think you have found a bug please follow the instructions below.

  • Please spend a small amount of time giving due diligence to the issue tracker. Your issue might be a duplicate.
  • Set -v 10 command line option and save the log output. Please paste this into your issue.
  • Note the version of kops you are running (from kops version), and the command line options you are using.
  • Open a new issue.
  • Remember users might be searching for your issue in the future, so please give it a meaningful title to helps others.
  • Feel free to reach out to the kops community on kubernetes slack.
Features

We also use the issue tracker to track features. If you have an idea for a feature, or think you can help kops become even more awesome follow the steps below.

  • Open a new issue.
  • Remember users might be searching for your issue in the future, so please give it a meaningful title to helps others.
  • Clearly define the use case, using concrete examples. EG: I type this and kops does that.
  • Some of our larger features will require some design. If you would like to include a technical design for your feature please include it in the issue.
  • After the new feature is well understood, and the design agreed upon we can start coding the feature. We would love for you to code it. So please open up a WIP (work in progress) pull request, and happy coding.

Documentation

Overview

Package kops is the parent package for the kops kubernetes-ops tool..

Index

Constants

View Source
const (
	KOPS_RELEASE_VERSION = "1.10.0"
	KOPS_CI_VERSION      = "1.10.1-alpha.1"
)

These constants are parsed by build tooling - be careful about changing the formats

Variables

View Source
var GitVersion = ""

GitVersion should be replaced by the makefile

Version can be replaced by build tooling

Functions

func DefaultProtokubeImageName

func DefaultProtokubeImageName() string

DefaultProtokubeImageName is the name of the protokube image, as we would pass to "docker run"

Types

This section is empty.

Directories

Path Synopsis
_vendor
bitbucket.org/ww/goautoneg
HTTP Content-Type Autonegotiation.
HTTP Content-Type Autonegotiation.
channels
cloudmock
cmd
dns-controller
dnsprovider
pkg/dnsprovider
dnsprovider supplies interfaces for dns service providers (e.g.
dnsprovider supplies interfaces for dns service providers (e.g.
pkg/dnsprovider/providers/aws/route53
route53 is the implementation of pkg/dnsprovider interface for AWS Route53
route53 is the implementation of pkg/dnsprovider interface for AWS Route53
pkg/dnsprovider/providers/aws/route53/stubs
internal implements a stub for the AWS Route53 API, used primarily for unit testing purposes
internal implements a stub for the AWS Route53 API, used primarily for unit testing purposes
pkg/dnsprovider/providers/coredns
Package coredns is the implementation of pkg/dnsprovider interface for CoreDNS
Package coredns is the implementation of pkg/dnsprovider interface for CoreDNS
pkg/dnsprovider/providers/coredns/stubs
Package stubs implements a stub for the EtcdKeysAPI, used primarily for unit testing purposes
Package stubs implements a stub for the EtcdKeysAPI, used primarily for unit testing purposes
pkg/dnsprovider/providers/google/clouddns
clouddns is the implementation of pkg/dnsprovider interface for Google Cloud DNS
clouddns is the implementation of pkg/dnsprovider interface for Google Cloud DNS
examples
kube-discovery
node-authorizer
nodeup
pkg
apis/kops
+groupName=kops
+groupName=kops
apis/kops/install
Package install installs the kops API group, making it available as an option to all of the API encoding/decoding machinery.
Package install installs the kops API group, making it available as an option to all of the API encoding/decoding machinery.
apis/kops/v1alpha1
+groupName=kops
+groupName=kops
apis/kops/v1alpha2
+groupName=kops
+groupName=kops
client/clientset_generated/clientset
This package has the automatically generated clientset.
This package has the automatically generated clientset.
client/clientset_generated/clientset/fake
This package has the automatically generated fake clientset.
This package has the automatically generated fake clientset.
client/clientset_generated/clientset/scheme
This package contains the scheme of the automatically generated clientset.
This package contains the scheme of the automatically generated clientset.
client/clientset_generated/clientset/typed/kops/internalversion
This package has the automatically generated typed clients.
This package has the automatically generated typed clients.
client/clientset_generated/clientset/typed/kops/internalversion/fake
Package fake has the automatically generated clients.
Package fake has the automatically generated clients.
client/clientset_generated/clientset/typed/kops/v1alpha1
This package has the automatically generated typed clients.
This package has the automatically generated typed clients.
client/clientset_generated/clientset/typed/kops/v1alpha1/fake
Package fake has the automatically generated clients.
Package fake has the automatically generated clients.
client/clientset_generated/clientset/typed/kops/v1alpha2
This package has the automatically generated typed clients.
This package has the automatically generated typed clients.
client/clientset_generated/clientset/typed/kops/v1alpha2/fake
Package fake has the automatically generated clients.
Package fake has the automatically generated clients.
client/clientset_generated/internalclientset
This package has the automatically generated clientset.
This package has the automatically generated clientset.
client/clientset_generated/internalclientset/fake
This package has the automatically generated fake clientset.
This package has the automatically generated fake clientset.
client/clientset_generated/internalclientset/scheme
This package contains the scheme of the automatically generated clientset.
This package contains the scheme of the automatically generated clientset.
client/clientset_generated/internalclientset/typed/kops/internalversion
This package has the automatically generated typed clients.
This package has the automatically generated typed clients.
client/clientset_generated/internalclientset/typed/kops/internalversion/fake
Package fake has the automatically generated clients.
Package fake has the automatically generated clients.
client/clientset_generated/internalclientset/typed/kops/v1alpha1
This package has the automatically generated typed clients.
This package has the automatically generated typed clients.
client/clientset_generated/internalclientset/typed/kops/v1alpha1/fake
Package fake has the automatically generated clients.
Package fake has the automatically generated clients.
client/clientset_generated/internalclientset/typed/kops/v1alpha2
This package has the automatically generated typed clients.
This package has the automatically generated typed clients.
client/clientset_generated/internalclientset/typed/kops/v1alpha2/fake
Package fake has the automatically generated clients.
Package fake has the automatically generated clients.
dns
featureflag
Package featureflag implements simple feature-flagging.
Package featureflag implements simple feature-flagging.
pki
protokube
pkg/gossip/dns/provider
Package provider implements a dnsprovider backed by the gossip store.
Package provider implements a dnsprovider backed by the gossip store.
pkg/gossip/mesh
Package mesh is a generated protocol buffer package.
Package mesh is a generated protocol buffer package.
upup
util
pkg/slice
Package slice provides utility methods for common operations on slices.
Package slice provides utility methods for common operations on slices.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL