Giter Club home page Giter Club logo

kubernetes-client's Introduction

Kubernetes Client

Build Status

A PHP client for managing a Kubernetes cluster.

Last tested with 1.4.6 on Google Container Engine and 1.5.1 on Custom CoreOS Cluster.

Installation using Composer

$ composer require maclof/kubernetes-client

Supported API Features

v1

  • Nodes
  • Pods
  • Replica Sets
  • Replication Controllers
  • Services
  • Secrets
  • Events
  • Config Maps
  • Endpoints

extensions/v1beta1

  • Deployments
  • Jobs
  • Ingresses

Basic Usage

<?php

require __DIR__ . '/vendor/autoload.php';

use Maclof\Kubernetes\Client;

$client = new Client([
	'master' => 'http://master.mycluster.com',
]);

// Find pods by label selector
$pods = $client->pods()->setLabelSelector([
	'name'    => 'test',
	'version' => 'a',
])->find();

// Find pods by field selector
$pods = $client->pods()->setFieldSelector([
	'metadata.name' => 'test',
])->find();

// Find first pod with label selector (same for field selector)
$pod = $client->pods()->setLabelSelector([
	'name' => 'test',
])->first();

Authentication Examples

Insecure HTTP

$client = new Client([
	'master' => 'http://master.mycluster.com',
]);

Using TLS Certificates (Client Certificate Validation)

$client = new Client([
	'master'      => 'https://master.mycluster.com',
    'ca_cert'     => '/etc/kubernetes/ssl/ca.crt',
    'client_cert' => '/etc/kubernetes/ssl/client.crt',
    'client_key'  => '/etc/kubernetes/ssl/client.key',
]);

Using Basic Auth

$client = new Client([
	'master'   => 'https://master.mycluster.com',
    'username' => 'admin',
    'password' => 'abc123',
]);

Using a Service Account

$client = new Client([
	'master'  => 'https://master.mycluster.com',
	'ca_cert' => '/var/run/secrets/kubernetes.io/serviceaccount/ca.crt',
	'token'   => '/var/run/secrets/kubernetes.io/serviceaccount/token',
]);

Usage Examples

Create/Update a Replication Controller

use Maclof\Kubernetes\Models\ReplicationController;

$replicationController = new ReplicationController([
	'metadata' => [
		'name' => 'nginx-test',
		'labels' => [
			'name' => 'nginx-test',
		],
	],
	'spec' => [
		'replicas' => 1,
		'template' => [
			'metadata' => [
				'labels' => [
					'name' => 'nginx-test',
				],
			],
			'spec' => [
				'containers' => [
					[
						'name'  => 'nginx',
						'image' => 'nginx',
						'ports' => [
							[
								'containerPort' => 80,
								'protocol'      => 'TCP',
							],
						],
					],
				],
			],
		],
	],
]);

if ($client->replicationControllers()->exists($replicationController->getMetadata('name'))) {
	$client->replicationControllers()->update($replicationController);
} else {
	$client->replicationControllers()->create($replicationController);
}

Delete a Replication Controller

$replicationController = $client->replicationControllers()->setLabelSelector([
	'name' => 'nginx-test',
])->first();
$client->replicationControllers()->delete($replicationController);

kubernetes-client's People

Contributors

bkolobara avatar claygorman avatar maclof avatar weechow avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.