2017-03-13 11 views
1

kubernetesで「カスタムオブジェクト」を作成するためにpython APIを使用することはできますか?カスタムオブジェクトを作成するためのKubernetes python api

編集:私はthisに参照のうえてるカスタムオブジェクトによって

ありがとうございます。

+0

あなたは、「カスタムオブジェクト」 – jaxxstorm

+0

によって何を意味するかについて、より具体的にすることができますがhttps://pypi.python.org/pypi/python-k8sclientを確認しました/0.1.0? – Buchi

+0

はい。私はカスタムオブジェクトのための関数を見つけませんでした。しかし、ThirdPartyResourceのためのものがあります。 – cristi

答えて

1

すぐに使用できるAPIはまだありません。後に、これを実行することを忘れないでください

$ bin/python test.py                                          
ThirdPartyResource created 
{'api_version': 'extensions/v1beta1', 
'description': 'For storage of Thingy objects', 
'kind': 'ThirdPartyResource', 
'metadata': {'annotations': None, 
       'cluster_name': None, 
       'creation_timestamp': u'2017-03-14T13:57:07Z', 
       'deletion_grace_period_seconds': None, 
       'deletion_timestamp': None, 
       'finalizers': None, 
       'generate_name': None, 
       'generation': None, 
       'labels': None, 
       'name': 'thingy.example.com', 
       'namespace': None, 
       'owner_references': None, 
       'resource_version': '59942', 
       'self_link': '/apis/extensions/v1beta1/thirdpartyresourcesthingy.example.com', 
       'uid': '1c596824-08be-11e7-9a5f-5254000f561a'}, 
'versions': [{'name': 'v1'}]} 
{u'kind': u'Thingy', u'object': {u'foo': u'bar'}, u'apiVersion': u'example.com/v1', u'key': u'value', u'array': [40, 2], u'metadata': {u'name': u'mythingy-1', u'namespace': u'default', u'resourceVersion': u'59943', u'creationTimestamp': u'2017-03-14T13:57:07Z', u'selfLink': u'/apis/example.com/v1/namespaces/default/thingies/mythingy-1', u'uid': u'1c59f7ae-08be-11e7-9a5f-5254000f561a'}} 
{u'kind': u'Thingy', u'object': {u'foo': u'bar'}, u'apiVersion': u'example.com/v1', u'key': u'value', u'array': [40, 2], u'metadata': {u'name': u'mythingy-2', u'namespace': u'default', u'resourceVersion': u'59944', u'creationTimestamp': u'2017-03-14T13:57:07Z', u'selfLink': u'/apis/example.com/v1/namespaces/default/thingies/mythingy-2', u'uid': u'1c5be2a7-08be-11e7-9a5f-5254000f561a'}} 
{u'kind': u'Thingy', u'object': {u'foo': u'bar'}, u'apiVersion': u'example.com/v1', u'key': u'value', u'array': [40, 2], u'metadata': {u'name': u'mythingy-3', u'namespace': u'default', u'resourceVersion': u'59945', u'creationTimestamp': u'2017-03-14T13:57:07Z', u'selfLink': u'/apis/example.com/v1/namespaces/default/thingies/mythingy-3', u'uid': u'1c5c390e-08be-11e7-9a5f-5254000f561a'}} 

:ここでの出力は次のようなものになりますhttps://github.com/kubernetes-incubator/client-python

import json 
from kubernetes import client, config 

class ThingyApi(object): 
    def __init__(self): 
     config = client.Configuration() 
     if not config.api_client: 
      config.api_client = client.ApiClient() 
     self.api_client = config.api_client 

    def create_thingy(self, body, namespace='default'): 
     resource_path = '/apis/example.com/v1/namespaces/' + namespace + '/thingies' 
     header_params = {} 
     header_params['Accept'] = self.api_client.select_header_accept(['application/json']) 
     header_params['Content-Type'] = self.api_client.select_header_content_type(['*/*']) 

     (resp, code, header) = self.api_client.call_api(
       resource_path, 'POST', {'namespace': namespace}, {}, header_params, body, [], _preload_content=False) 

     return json.loads(resp.data.decode('utf-8')) 

config.load_kube_config() 

# Create the ThirdPartyResource (Thingy.example.com) 
resp = client.ExtensionsV1beta1Api().create_third_party_resource(body={ 
    'apiVersion': 'extensions/v1beta1', 
    'kind': 'ThirdPartyResource', 
    'metadata': {'name': 'thingy.example.com'}, 
    'description': 'For storage of Thingy objects', 
    'versions': [{'name': 'v1'}]}) 
print("ThirdPartyResource created") 
print(str(resp)) 

# Create 3 Thingy objects (mything-{1,2,3}) 
thingyapi = ThingyApi() 
for i in range(1, 4): 
    obj = {'apiVersion': 'example.com/v1', 
      'metadata': {'name': 'mythingy-'+str(i)}, 
      'kind': 'Thingy', 
      # Arbitrary contents 
      'key': 'value', 
      'array': [40, 2], 
      'object': {'foo': 'bar'}} 
    resp = thingyapi.create_thingy(body=obj, namespace='default') 
    print(str(resp)) 

を使って初歩的な例である

kubectl delete thingy --all 
kubectl delete thirdpartyresource thingy.example.com 
1

client-python今たTPRをサポートしています。これはthe example from the repo次のとおりです。

from __future__ import print_function 

from pprint import pprint 

import kubernetes 
from kubernetes import config 
from kubernetes.rest import ApiException 

config.load_kube_config() 
api_instance = kubernetes.ThirdPartyResources() 

namespace = 'default' 
resource = 'repos' 
fqdn = 'git.k8s.com' 

body = {} 
body['apiVersion'] = "git.k8s.com/v1" 
body['kind'] = "RePo" 
body['metadata'] = {} 
body['metadata']['name'] = "blog-repo" 
body['repo'] = "github.com/user/my-blog" 
body['username'] = "username" 
body['password'] = "password" 
body['branch'] = "branch" 



try: 
    # Create a Resource 
    api_response = api_instance.apis_fqdn_v1_namespaces_namespace_resource_post(
     namespace, fqdn, resource, body) 
    pprint(api_response) 
except ApiException as e: 
    print(
     "Exception when calling DefaultApi->apis_fqdn_v1_namespaces_namespace_resource_post: %s\n" % 
     e) 

はREF:https://github.com/kubernetes-incubator/client-python/blob/master/examples/create_thirdparty_resource.md

関連する問題