我在GKE管理了一对(现在,但会增加)群集,直到现在已经可以根据需要手动启动。我已经开始使用自己的API,它可以接收按需为特定集群启动新资源的请求,但为了使其可扩展,我需要做一些比每次请求在集群之间切换更动态的事情。我找到了一个可以访问GKE的Google API python客户端的链接:
https://developers.google.com/api-client-library/python/apis/container/v1#system-requirements
我还发现了其他一些客户(特别是我正在密切关注的是来自godaddy的nodejs客户端)可以访问Kubernetes:
https://github.com/godaddy/kubernetes-client
Google API客户端似乎没有记录用于GKE / kubectl命令,而godaddy kubernetes-client必须访问单个群集主服务器,但无法在GKE上访问一个群集主服务器(没有首先启用kubectl代理)。所以我的问题是,如何在编程上以编程方式管理kubernetes,而无需在nodejs或python中使用命令行实用程序?
答案 0 :(得分:0)
我知道这个问题已有两年了,但是希望这对某人有帮助。此处提供了适用于Node.js的更新的GKE API:https://cloud.google.com/nodejs/docs/reference/container/0.3.x/
在此处查看容器API的列表:https://developers.google.com/apis-explorer/#p/container/v1/
通过API连接后,您可以访问群集详细信息,其中包括用于通过标准API调用连接到主服务器的连接信息。
答案 1 :(得分:0)
I just posted an article on Medium with an example of how to do this
本文的第一部分概述了如何设置服务帐户,角色和凭据并将其作为环境变量加载。完成后,您可以运行以下python:
from kubernetes import client
import base64
from tempfile import NamedTemporaryFile
import os
import yaml
from os import path
def main():
try:
host_url = os.environ["HOST_URL"]
cacert = os.environ["CACERT"]
token = os.environ["TOKEN"]
# Set the configuration
configuration = client.Configuration()
with NamedTemporaryFile(delete=False) as cert:
cert.write(base64.b64decode(cacert))
configuration.ssl_ca_cert = cert.name
configuration.host = host_url
configuration.verify_ssl = True
configuration.debug = False
configuration.api_key = {"authorization": "Bearer " + token}
client.Configuration.set_default(configuration)
# Prepare all the required properties in order to run the create_namespaced_job method
# https://github.com/kubernetes-client/python/blob/master/kubernetes/docs/BatchV1Api.md#create_namespaced_job
v1 = client.BatchV1Api()
with open(path.join(path.dirname(__file__), "job.yaml")) as f:
body = yaml.safe_load(f)
v1.create_namespaced_job(namespace="default", body=body, pretty=True)
return f'Job created successfully', 200
except Exception as e:
return str(e), 500
if __name__ == '__main__':
main()