Adoptable Cookbooks List

Looking for a cookbook to adopt? You can now see a list of cookbooks available for adoption!
List of Adoptable Cookbooks

Supermarket Belongs to the Community

Supermarket belongs to the community. While Chef has the responsibility to keep it running and be stewards of its functionality, what it does and how it works is driven by the community. The chef/supermarket repository will continue to be where development of the Supermarket application takes place. Come be part of shaping the direction of Supermarket by opening issues and pull requests or by joining us on the Chef Mailing List.

Select Badges

Select Supported Platforms

RSS

kubernetes (1) Versions 1.0.0

Manipulate Kubernetes resources

Berkshelf/Librarian
Policyfile
Knife
cookbook 'kubernetes', '~> 1.0.0'
cookbook 'kubernetes', '~> 1.0.0', :supermarket
knife cookbook site install kubernetes
knife cookbook site download kubernetes
README
Dependencies
Quality 78%

kubernetes

Resources for deploying various Kubernetes entities, these resources are designed to be ran on the kubernetes master but can be ran anywhere that has access to a kubernetes api by changing the ['kubernetes']['master']['ip'] attribute. These resources utilize the kubeclient ruby gem and run against the v1beta1 api.

Currently supported resources:

  • Kubernetes Master (kube_master)
  • Kubernetes Node (kube_node)

Currently broken resources: (waiting on support for v1 api through kubeclient gem)

  • Kubernetes Pod (kube_pod)
  • Kubernetes Replication Controller (kube_replication_controller)
  • Kubernetes Service (kube_service)

Attributes

  • ['kubernetes']['master']['ip'] - the address used when contacting the kubernetes api
  • ['kubernetes']['master']['port'] - the port that will be used whe contacting the kubernetes api
  • ['kubernetes']['client_version'] - the version of the kubeclient gem to install

Recipes

default

Installs the kubeclient ruby gem for interacting with the Kubernetes api

install

Creates a docker service for kubernetes

master

Ensures the needed containers for a kubernetes master are deployed/running with proper networking setup

node

Ensures the needed containers for a kubernetes node are in place and running

Resources and Providers

Kubernetes Master (kube_master)

Deploy the containers needed to make a functioning Kubernetes master locally on the system. This will deploy etcd, flannel, and all needed kubernetes services.

Actions
  • create - default. setup the system as a kubernetes master
  • destroy - stop all related containers
Examples
kube_master 'default' do
  action :create
end

Kubernetes Node (kube_node)

Deploy the containers needed to make a functioning Kubernetes node that can attach to a remote master. This will deploy flannel and the needed kubernetes services.

Actions
  • create - default. setup the system as a kubernetes node
  • destroy - stop all related containers
Attribute Parameters
  • master_ip - required The ip address of your kubernetes masters
Examples
kube_node 'default-worker' do
  action :create
  master_ip '10.1.2.3'
end

Kubernetes Pod (kube_pod)

Manage a standalone Kubernetes pod, there is no redundancy in a pod and is simply used to specify a group of containers to be jointly deployed on a host.

Actions
  • create - default. ensures the pod is created
  • destroy - ensures the pod does not exist
Attribute Parameters
  • id - name attribute. The identifier used when managing the pod
  • containers - required a hash of container information that will be used when creating the pod
  • volumes - a hash of volume information used when specifying storage for containers
  • labels - specify the labels that will be added to the pod
Examples
kube_pod "my-pod" do
  containers({
    name: 'pod-member',
    image: 'my/image'
  })
  labels "aww=yiss"
  action [:destroy,:create]
end

Kubernetes Replication Controller (kube_replication_controller)

Replication controllers are used to maintain a consistent amount of a pod at any given time using selector labels

Actions
  • create - default. ensures the replication controller is created
  • destroy - ensures the replication controller does not exist
Attribute Parameters
  • id - name attribute. The identifier used when managing the replication controller
  • containers - required a hash of container information that will be used when the replication controller needs to generate new pods
  • volumes - a hash of volume information used in generating new pods
  • selector - how the replication controller will ensure that enough replicas exist
  • pod_labels - specify the labels added to the indivial pods that are spawned off
  • labels - specify the labels that will be added to the replication controller
Examples
kube_replication_controller "master-controller" do
  containers({
    name: 'redis-master',
    image: 'dockerfile/redis'
  })
  replicas 2
  selector 'role' => 'master','app' => 'redis'
  labels ['aww=yiss','motha-freakin=breadcrumbs']
  action [:destroy,:create]
end

Kubernetes Service (kube_service)

Deploy a Kubernetes service, which can be used as a basic container load balancer that routes traffic based on selector labels

Actions
  • create - default. ensure the service exists
  • destroy - ensure the service does not exist
Attribute Parameters
  • id - name attribute. The identifier used when managing the service
  • port - required the port that the service will listen on for traffic
  • container_port - what port the service will route to on the selected containers defaults to the port that the service is listening on
  • selector - labels that the service will use when choosing containers to route traffic to
  • labels - labels that will be added to the service
Examples
kube_service "backend-service" do
  port 8005
  selector 'role' => 'backend'
end

Containers and Volumes

The syntax used when specifing containers and volumes is specific to the kubernetes api, for examples on what these can/should look like please see the kubernetes documentation/examples.

Labels

Theres a bit of magic in the helper library that allows you to specify labels as either a hash 'this' => 'that', 'app' => 'redis', an array of labels ['this=that','app=redis'], or a comma delimited string 'this=that,app=redis'. All three will be treated as the same thing when writing your resources.

License and Author

Copyright 2015, Chef Software, Inc.

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

Dependent cookbooks

docker ~> 1.0.12
selinux ~> 0.9.0
build-essential ~> 2.2.3

Contingent cookbooks

There are no cookbooks that are contingent upon this one.

Collaborator Number Metric
            

1.0.0 passed this metric

Contributing File Metric
            

1.0.0 passed this metric

Foodcritic Metric
            

1.0.0 failed this metric

FC016: LWRP does not declare a default action: kubernetes/resources/master.rb:1
FC016: LWRP does not declare a default action: kubernetes/resources/node.rb:1
FC064: Ensure issues_url is set in metadata: kubernetes/metadata.rb:1
FC065: Ensure source_url is set in metadata: kubernetes/metadata.rb:1
FC066: Ensure chef_version is set in metadata: kubernetes/metadata.rb:1
FC069: Ensure standardized license defined in metadata: kubernetes/metadata.rb:1
FC070: Ensure supports metadata defines valid platforms: kubernetes/metadata.rb:1
Run with Foodcritic Version 12.2.1 with tags metadata,correctness ~FC031 ~FC045 and failure tags any

License Metric
            

1.0.0 failed this metric

kubernetes does not have a valid open source license.
Acceptable licenses include Apache-2.0, apachev2, Apache 2.0, MIT, mit, GPL-2.0, gplv2, GNU Public License 2.0, GPL-3.0, gplv3, GNU Public License 3.0.

No Binaries Metric
            

1.0.0 passed this metric

Publish Metric
            

1.0.0 passed this metric

Supported Platforms Metric
            

1.0.0 passed this metric

Testing File Metric
            

1.0.0 passed this metric

Version Tag Metric
            

1.0.0 passed this metric