kubernetes clients/python包装器

tulips的Python项目详细描述


Build StatusCode style: blackType checker: mypyPackaging: poetryPackaging: poetrycodecov

郁金香

理解kubernetes图表的{a7}周围的小包装。

为什么

我需要一些简单的东西来读取头盔图表并将它们推到kubernetes集群 可扩展。所以像helm+kubectl这样有能力围绕它们编写自己的工具。

支持的CRD aka kubernetes资源

  • 展开
  • 服务
  • 入口
  • 秘密
  • 发行人(证书管理人)
  • 持久卷目标

示例使用

importyamlfromtulips.resourcesimportResourceRegistryfromkubernetesimportclientask8sfromkubernetesimportconfigclient=config.new_client_from_config('kube.conf')spec=yaml.load('ingress.yaml')ingress_cls=ResourceRegistry.get_cls(spec['kind'])ingress=ingress_cls(config.client,namespace='default',spec)ingress.create()# Create Ingress resourceingress.delete()# Delete Ingress resource

添加新资源

为了添加对新kubernetes资源的支持,需要创建类 从tulips.resources.Resource类继承的。

示例资源

importtulips.resources.ResourceclassClusterIssuer(Resource):"""A `cert-manager` ClusterIssuer resource."""version="v1alpha1"group="certmanager.k8s.io"plural="clusterissuers"defdelete(self,body:k8s.V1DeleteOptions):returnk8s.CustomObjectsApi(self.client).delete_namespaced_custom_object(body=body,namespace=self.namespace,version=self.version,group=self.group,plural=self.plural,name=self.name,)defcreate(self):returnk8s.CustomObjectsApi(self.client).create_namespaced_custom_object(body=self.resource,namespace=self.namespace,version=self.version,group=self.group,plural=self.plural,)

它将注册到ResourceRegistry,并可以通过ResourceRegistry.get_cls方法获取。

郁金香

郁金香是一个模拟helm但没有tiller的示例客户机。

$ python tulips push --help                                    06/25/18 -  9:49
Usage: tulips push [OPTIONS] CHART

  You can pass chart variables via foo=bar, for example '$ tulip push  app.yaml foo=bar'

Options:
  --namespace TEXT   Kubernetes namespace
  --release TEXT     Name of the release
  --kubeconfig PATH  Path to kubernetes config
  --help             Show this message and exit.

示例客户机

假设我想部署一个秘密和入口

apiVersion:v1kind:Secretmetadata:name:{{release}}-secretstype:Opaquedata:password:{{@pwd}}---apiVersion:extensions/v1beta1kind:Ingressmetadata:name:{{release}}-web-ingresslabels:app:woocart-{{ release }}annotations:nginx.ingress.kubernetes.io/limit-connections:"100"kubernetes.io/ingress.class:nginxspec:rules:-host:{{domain}}http:paths:-path:/backend:serviceName:{{release}}-webservicePort:80

如果运行“tulip--release test push--kube conf kube.conf app.yaml domain=test.tld”

检查spec文件,并用实际值替换所有{{ variables }}。阿尔索 特殊的{{ @pwd }}将使用passlib库生成强密码。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java我需要在一个数组中添加1000个介于1和100之间的整数及其出现次数,然后显示它们   如何在java中将两个不同的excel文件作为数据库连接到同一台服务器上?   java JSP编译错误令牌“throws”语法错误,应为throw   java如何使用Jetty HTTP客户端和MultiPartContentProvider上载BuffereImage?   具有多个方法对象的java测试类   在java中比较字符串和打印剩余字符时出现意外输出?   java设置JPanel的大小,当其中没有组件时   使用exoplayer播放m3u8文件的java   JSON中未添加Jackson@type的java Rest JSON   java如何为heroku创建procfile文件?   基于数组的java信息存储   sockets java。网SocketTimeoutException:在Tomcat下读取超时   安卓x的java问题。偏爱安卓工作室   java我的方法没有按预期运行   java如何通过单击单选按钮将值从表传递到servlet?   java无法获取instagram个人资料图片的完整大小