Skip to content

Instantly share code, notes, and snippets.

@moolitayer
Last active August 3, 2016 05:41
Show Gist options
  • Select an option

  • Save moolitayer/476ed01d377fc9e9954fea83572ba662 to your computer and use it in GitHub Desktop.

Select an option

Save moolitayer/476ed01d377fc9e9954fea83572ba662 to your computer and use it in GitHub Desktop.
require 'kubeclient'
def toggle_pod(client)
hash = {
:kind => "Pod",
:metadata => {
:name => "nginx",
:namespace => "default",
:labels => "nginx",
:app => "nginx"
},
:spec => {
:containers => [
{
:name => "nginx",
:image => "docker.io/nginx",
:ports =>[
{
:containerPort => 80
}
]
}
]
}
}
client.create_pod(hash)
puts "pod created"
client.delete_pod
end
########
# Core #
########
client = Kubeclient::Client.new('http://localhost:8080/api' , 'v1', ssl_options: { verify_ssl: 0 })
nodes = client.get_nodes
# nodes = client.get_noges
node_count = nodes.count
puts "There are #{node_count} nodes"
puts nodes
puts "*****************************"
nodes.each{|n| puts n}
node = client.get_node('127.0.0.1')
puts "node name: #{node.metadata.name}"
#
entities = client.get_secrets
puts "There are #{entities.count} secrets"
#
client.get_secrets.each {|sec| puts "secret_name: #{sec.metadata.name}"}
# toggle_pod(client)
puts "#{client.get_services.count} services"
service = client.resource_class("Service").new
service.metadata = {}
service.metadata.name = "redis-master"
service.metadata.namespace = 'default'
service.spec = {}
service.spec.ports = [{ 'port' => 6379,
'targetPort' => 'redis-server' }]
service.spec.selector = {}
service.spec.selector.name = "redis"
service.spec.selector.role = "master"
service.metadata.labels = {}
service.metadata.labels.app = 'redis'
service.metadata.labels.role = 'slave'
client.create_service(service)
puts "#{client.get_services.count} services"
client.delete_service('redis-master', 'default')
puts "#{client.get_services.count} services"
##########
# Groups #
##########
client = Kubeclient::Client.new('http://localhost:8080/apis/batch' , 'v1', ssl_options: { verify_ssl: 0 })
puts "#{client.get_jobs.count} jobs"
#
# apiVersion: batch/v1
# kind: Job
# metadata:
# name: pi
# spec:
# template:
# metadata:
# name: pi
# spec:
# containers:
# - name: pi
# image: perl
# command: ["perl", "-Mbignum=bpi", "-wle", "print bpi(2000)"]
# restartPolicy: Never
#
job = client.resource_class("Job").new
job.metadata = {}
job.metadata.name = 'pi'
job.metadata.namespace = 'default'
job.spec = {}
job.spec.template = {}
job.spec.template.spec = {}
job.spec.template.spec.restartPolicy = 'Never'
job.spec.template.spec.containers = [
{
:name => 'pi',
:image => 'perl',
:command => ["perl", "-Mbignum=bpi", "-wle", "print bpi(2000)"]
}
]
puts job
client.create_job(job)
puts "#{client.get_jobs.count} jobs"
puts "#{client.get_jobs.count} jobs"
client.delete_job(job.metadata.name, job.metadata.namespace)
puts "#{client.get_jobs.count} jobs"
client.get_jobs
# Deployments
client = Kubeclient::Client.new('http://localhost:8080/apis/extensions' , 'v1beta1', ssl_options: { verify_ssl: 0 })
deployment_json = YAML.load(File.read('/home/mtayer/dev/repo/scripts/data/nginx-deployment.yaml'))
puts "deployment_json #{deployment_json}"
deployment = client.resource_class('Deployment').new(deployment_json)
# apiVersion: extensions/v1beta1
# kind: Deployment
# metadata:
# name: nginx-deployment
# spec:
# replicas: 3
# template:
# metadata:
# labels:
# app: nginx
# spec:
# containers:
# - name: nginx
# image: nginx:1.7.9
# ports:
# - containerPort: 80
client.create_deployment(deployment)
client.delete_deployment('nginx-deployment', 'default')
#############
# OpenShift #
#############
auth_options = {
bearer_token: 'TOKEN'
}
client = Kubeclient::Client.new('https://oshift01.eng.lab.tlv.redhat.com:8443/oapi' , 'v1', ssl_options: { verify_ssl: 0 }, auth_options: auth_options)
puts client.get_templates
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment