NAME Net::Kubernetes VERSION version 0.10 This package provides an object oriented interface to the REST API's provided by kubernetes. STATUS SYNOPSIS my $kube = Net::Kubernets->new(url=>'http://127.0.0.1:8080', username=>'dave', password=>'davespassword'); my $pod_list = $kube->list_pods(); my $nginx_pod = $kube->create_from_file('kubernetes/examples/pod.yaml'); my $ns = $kube->get_namespace('default'); my $services = $ns->list_services; my $pod = $ns->get_pod('my-pod'); $pod->delete; my $other_pod = $ns->create_from_file('./my-pod.yaml'); Description This package allows programatic access to the Kubernetes rest api. Please note this package is still a BETA release (as is kubernetes itself), and the methods and API are still subject to change. Use at your own risk. Methods By convention, methods will throw exceptions if kubernetes api server returns a non-successful status code. Unless otherwise noted, assume this behavoir through out. new - Create a new $kube object All parameters are optional and have some basic default values (where appropriate). url ['http://localhost:8080'] The base url for the kubernetes. This should include the protocal (http or https) but not "/api/v1beta3" (see base_path). base_path ['/api/v1beta3'] The entry point for api calls, this may be used to set the api version with which to interact. username Username to use with basic authentication. If either username or password are not provided, basic authentication will not be used. password Password to use with basic authentication. If either username or password are not provided, basic authentication will not be used. token An authentication token to be used to access the apiserver. This may be provided as a plain string, a path to a file from which to read the token (like /var/run/secrets/kubernetes.io/serviceaccount/token from within a pod), or a reference to a file handle (from which to read the token). $kube->get_namespace("myNamespace"); This method returns a "Namespace" object on which many methods can be called implicitly limited to the specified namespace. my(@pods) = $kube->list_pods([label=>{label=>value}], [fields=>{field=>value}]) my(@rcs) = $kube->list_rc([label=>{label=>value}], [fields=>{field=>value}]) my(@rcs) = $kube->list_replication_controllers([label=>{label=>value}], [fields=>{field=>value}]) (alias to list_rc) my(@scerets) = $kube->list_secrets([label=>{label=>value}], [fields=>{field=>value}]) my(@services) = $kube->list_services([label=>{label=>value}], [fields=>{field=>value}]) my $resource = $kube->create({OBJECT}) my $resource = $kube->create_from_file(PATH_TO_FILE) (accepts either JSON or YAML files) The following methods are automatically deligated to the 'default' namespace. $ns->get_pod('my-pod-name') $ns->get_repllcation_controller('my-rc-name') (aliased as $ns->get_rc('my-rc-name')) $ns->get_service('my-servce-name') $ns->get_secret('my-secret-name') Create from file is really just a short cut around something like: my $object = YAML::LoadFile(PATH_TO_FILE); $kube->create($object); See Also Net::Kubernetes::Namespace, Net::Kubernetes::Resource AUTHOR Dave Mueller COPYRIGHT AND LICENSE This software is copyright (c) 2015 by Dave Mueller. This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.