电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

使用python腳本自動生成K8S-YAML的方法示例

瀏覽:11日期:2022-07-17 18:23:30

1、生成 servie.yaml

1.1、yaml轉json

service模板yaml

apiVersion: v1kind: Servicemetadata: name: ${jarName} labels: name: ${jarName} version: v1spec: ports: - port: ${port} targetPort: ${port} selector: name: ${jarName}

轉成json的結構

{ 'apiVersion': 'v1', 'kind': 'Service', 'metadata': { 'name': '${jarName}', 'labels': { 'name': '${jarName}', 'version': 'v1' } }, 'spec': { 'ports': [ { 'port': '${port}', 'targetPort': '${port}' } ], 'selector': { 'name': '${jarName}' } }}

1.2、關鍵代碼

# 通過傳入service_name及ports列表def create_service_yaml(service_name, ports): # 將yaml讀取為json,然后修改所有需要修改的${jarName} service_data[’metadata’][’name’] = service_name service_data[’metadata’][’labels’][’name’] = service_name service_data[’spec’][’selector’][’name’] = service_name # .spec.ports 比較特殊,是一個字典列表,由于傳入的ports難以確定數量,難以直接修改 # 新建一個列表,遍歷傳入的ports列表,將傳入的每個port都生成為一個字典,添加入新列表中 new_spec_ports = [] for port in ports: port = int(port) new_port = {’port’: port, ’targetPort’: port} new_spec_ports.append(new_port) # 修改.spec.ports為新列表 service_data[’spec’][’ports’] = new_spec_ports

2、生成 deployment.yaml

2.1、yaml轉json

deployment模板yaml

apiVersion: apps/v1kind: Deploymentmetadata: name: ${jarName} labels: name: ${jarName}spec: selector: matchLabels: name: ${jarName} replicas: 1 template: metadata: labels: name: ${jarName} spec: containers: - name: ${jarName} image: reg.test.local/library/${jarName}:${tag} imagePullSecrets: - name: registry-secret

轉成的json結構

{ 'apiVersion': 'apps/v1', 'kind': 'Deployment', 'metadata': { 'name': '${jarName}', 'labels': { 'name': '${jarName}' } }, 'spec': { 'selector': { 'matchLabels': { 'name': '${jarName}' } }, 'replicas': 1, 'template': { 'metadata': { 'labels': { 'name': '${jarName}' } }, 'spec': { 'containers': [ { 'name': '${jarName}', 'image': 'reg.test.local/library/${jarName}:${tag}' } ], 'imagePullSecrets': [ { 'name': 'registry-secret' } ] } } }}

2.2、關鍵代碼

# 傳入service_name及image tagdef create_deploy_yaml(service_name, tag): # 首先修改所有的${jarName} deploy_data[’metadata’][’name’] = service_name deploy_data[’metadata’][’labels’][’name’] = service_name deploy_data[’spec’][’selector’][’matchLabels’][’name’] = service_name deploy_data[’spec’][’template’][’metadata’][’labels’][’name’] = service_name # 由于.spec.template.spec.containers的特殊性,我們采用直接修改的方式 # 首先拼接image字段 image = 'reg.test.local/library/' + service_name + ':' + tag # 創建new_containers字典列表 new_containers = [{’name’: service_name, ’image’: image}] deploy_data[’spec’][’template’][’spec’][’containers’] = new_containers

3、完整腳本

#!/usr/bin/python# encoding: utf-8'''The Script for Auto Create Deployment Yaml.File:auto_create_deploy_yamlUser:miaocunfaCreate Date: 2020-06-10Create Time: 17:06'''import osfrom ruamel.yaml import YAMLyaml = YAML()def create_service_yaml(service_name, ports): service_mould_file = 'mould/info-service-mould.yaml' isServiceMould = os.path.isfile(service_mould_file) if isServiceMould: # read Service-mould yaml convert json with open(service_mould_file, encoding=’utf-8’) as yaml_obj: service_data = yaml.load(yaml_obj) # Update jarName service_data[’metadata’][’name’] = service_name service_data[’metadata’][’labels’][’name’] = service_name service_data[’spec’][’selector’][’name’] = service_name # Update port new_spec_ports = [] for port in ports: port = int(port) portname = ’port’ + str(port) new_port = {’name’: portname, ’port’: port, ’targetPort’: port} new_spec_ports.append(new_port) service_data[’spec’][’ports’] = new_spec_ports # json To service yaml save_file = tag + ’/’ + service_name + ’_svc.yaml’ with open(save_file, mode=’w’, encoding=’utf-8’) as yaml_obj: yaml.dump(service_data, yaml_obj) print(save_file + ': Success!') else: print('Service Mould File is Not Exist!')def create_deploy_yaml(service_name, tag): deploy_mould_file = 'mould/info-deploy-mould.yaml' isDeployMould = os.path.isfile(deploy_mould_file) if isDeployMould: with open(deploy_mould_file, encoding=’utf-8’) as yaml_obj: deploy_data = yaml.load(yaml_obj) # Update jarName deploy_data[’metadata’][’name’] = service_name deploy_data[’metadata’][’labels’][’name’] = service_name deploy_data[’spec’][’selector’][’matchLabels’][’name’] = service_name deploy_data[’spec’][’template’][’metadata’][’labels’][’name’] = service_name # Update containers image = 'reg.test.local/library/' + service_name + ':' + tag new_containers = [{’name’: service_name, ’image’: image}] deploy_data[’spec’][’template’][’spec’][’containers’] = new_containers # json To service yaml save_file = tag + ’/’ + service_name + ’_deploy.yaml’ with open(save_file, mode=’w’, encoding=’utf-8’) as yaml_obj: yaml.dump(deploy_data, yaml_obj) print(save_file + ': Success!') else: print('Deploy Mould File is Not Exist!')services = { ’info-gateway’:[’9999’], ’info-admin’: [’7777’], ’info-config’:[’8888’], ’info-message-service’: [’8555’, ’9666’], ’info-auth-service’: [’8666’], ’info-scheduler-service’: [’8777’], ’info-uc-service’: [’8800’], ’info-ad-service’: [’8801’], ’info-community-service’: [’8802’], ’info-groupon-service’: [’8803’], ’info-hotel-service’: [’8804’], ’info-nearby-service’: [’8805’], ’info-news-service’: [’8806’], ’info-store-service’: [’8807’], ’info-payment-service’: [’8808’], ’info-agent-service’: [’8809’], ’info-consumer-service’: [’8090’],}prompt = 'n請輸入要生成的tag: 'answer = input(prompt)print('')if os.path.isdir(answer): raise SystemExit(answer + ’: is Already exists!’)else: tag = answer os.makedirs(tag) for service_name, service_ports in services.items(): create_service_yaml(service_name, service_ports) create_deploy_yaml(service_name, tag)

4、執行效果

➜ python3 Auto_Create_K8S_YAML.py請輸入要生成的tag: 0.0.10.0.1/info-gateway_svc.yaml: Success!0.0.1/info-gateway_deploy.yaml: Success!0.0.1/info-admin_svc.yaml: Success!0.0.1/info-admin_deploy.yaml: Success!0.0.1/info-config_svc.yaml: Success!0.0.1/info-config_deploy.yaml: Success!0.0.1/info-message-service_svc.yaml: Success!0.0.1/info-message-service_deploy.yaml: Success!0.0.1/info-auth-service_svc.yaml: Success!0.0.1/info-auth-service_deploy.yaml: Success!0.0.1/info-scheduler-service_svc.yaml: Success!0.0.1/info-scheduler-service_deploy.yaml: Success!0.0.1/info-uc-service_svc.yaml: Success!0.0.1/info-uc-service_deploy.yaml: Success!0.0.1/info-ad-service_svc.yaml: Success!0.0.1/info-ad-service_deploy.yaml: Success!0.0.1/info-community-service_svc.yaml: Success!0.0.1/info-community-service_deploy.yaml: Success!0.0.1/info-groupon-service_svc.yaml: Success!0.0.1/info-groupon-service_deploy.yaml: Success!0.0.1/info-hotel-service_svc.yaml: Success!0.0.1/info-hotel-service_deploy.yaml: Success!0.0.1/info-nearby-service_svc.yaml: Success!0.0.1/info-nearby-service_deploy.yaml: Success!0.0.1/info-news-service_svc.yaml: Success!0.0.1/info-news-service_deploy.yaml: Success!0.0.1/info-store-service_svc.yaml: Success!0.0.1/info-store-service_deploy.yaml: Success!0.0.1/info-payment-service_svc.yaml: Success!0.0.1/info-payment-service_deploy.yaml: Success!0.0.1/info-agent-service_svc.yaml: Success!0.0.1/info-agent-service_deploy.yaml: Success!0.0.1/info-consumer-service_svc.yaml: Success!0.0.1/info-consumer-service_deploy.yaml: Success!➜ lltotal 12drwxr-xr-x. 2 root root 4096 Jun 29 18:24 0.0.1# 生成的 service yaml➜ cat info-message-service_svc.yamlapiVersion: v1kind: Servicemetadata: name: info-message-service labels: name: info-message-service version: v1spec: ports: - name: port8555 port: 8555 targetPort: 8555 - name: port9666 port: 9666 targetPort: 9666 selector: name: info-message-service# 生成的 deployment yaml➜ cat info-message-service_deploy.yamlapiVersion: apps/v1kind: Deploymentmetadata: name: info-message-service labels: name: info-message-servicespec: selector: matchLabels: name: info-message-service replicas: 2 template: metadata: labels: name: info-message-service spec: containers: - name: info-message-service image: reg.test.local/library/info-message-service:0.0.1 imagePullSecrets: - name: registry-secret

到此這篇關于使用python腳本自動生成K8S-YAML的方法示例的文章就介紹到這了,更多相關python自動生成K8S-YAML內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: Python 編程
相關文章:
主站蜘蛛池模板: 环讯传媒,永康网络公司,永康网站建设,永康小程序开发制作,永康网站制作,武义网页设计,金华地区网站SEO优化推广 - 永康市环讯电子商务有限公司 | 爱德华真空泵油/罗茨泵维修,爱发科-比其尔产品供应东莞/杭州/上海等全国各地 | 不锈钢发酵罐_水果酒发酵罐_谷物发酵罐_山东誉诚不锈钢制品有限公司 | 郑州巴特熔体泵有限公司专业的熔体泵,熔体齿轮泵与换网器生产厂家 | 电缆故障测试仪_电缆故障定位仪_探测仪_检测仪器_陕西意联电气厂家 | 大立教育官网-一级建造师培训-二级建造师培训-造价工程师-安全工程师-监理工程师考试培训 | 磨煤机配件-高铬辊套-高铬衬板-立磨辊套-盐山县宏润电力设备有限公司 | 浙江华锤电器有限公司_地磅称重设备_防作弊地磅_浙江地磅售后维修_无人值守扫码过磅系统_浙江源头地磅厂家_浙江工厂直营地磅 | SMC-SMC电磁阀-日本SMC气缸-SMC气动元件展示网 | 盐城网络公司_盐城网站优化_盐城网站建设_盐城市启晨网络科技有限公司 | SRRC认证_电磁兼容_EMC测试整改_FCC认证_SDOC认证-深圳市环测威检测技术有限公司 | 厂房出售_厂房仓库出租_写字楼招租_土地出售-中苣招商网-中苣招商网 | 天津货架厂_穿梭车货架_重型仓储货架_阁楼货架定制-天津钢力仓储货架生产厂家_天津钢力智能仓储装备 | 微妙网,专业的动画师、特效师、CG模型设计师网站! - wmiao.com 超声波电磁流量计-液位计-孔板流量计-料位计-江苏信仪自动化仪表有限公司 | RV减速机-蜗轮蜗杆减速机-洗车机减速机-减速机厂家-艾思捷 | 废水处理-废气处理-工业废水处理-工业废气处理工程-深圳丰绿环保废气处理公司 | 新能源汽车电机定转子合装机 - 电机维修设备 - 睿望达 | 电动卫生级调节阀,电动防爆球阀,电动软密封蝶阀,气动高压球阀,气动对夹蝶阀,气动V型调节球阀-上海川沪阀门有限公司 | 蒜肠网-动漫,二次元,COSPLAY,漫展以及收藏型模型,手办,玩具的新媒体.(原变形金刚变迷TF圈) | 除尘布袋_液体过滤袋_针刺毡滤料-杭州辉龙过滤技术有限公司 | 硅胶管挤出机厂家_硅胶挤出机生产线_硅胶条挤出机_臣泽智能装备 贵州科比特-防雷公司厂家提供贵州防雷工程,防雷检测,防雷接地,防雷设备价格,防雷产品报价服务-贵州防雷检测公司 | 深圳工程师职称评定条件及流程_深圳职称评审_职称评审-职称网 | 螺杆式冷水机-低温冷水机厂家-冷冻机-风冷式-水冷式冷水机-上海祝松机械有限公司 | 深圳美安可自动化设备有限公司,喷码机,定制喷码机,二维码喷码机,深圳喷码机,纸箱喷码机,东莞喷码机 UV喷码机,日期喷码机,鸡蛋喷码机,管芯喷码机,管内壁喷码机,喷码机厂家 | 信阳网站建设专家-信阳时代网联-【信阳网站建设百度推广优质服务提供商】信阳网站建设|信阳网络公司|信阳网络营销推广 | 上海盐水喷雾试验机_两厢式冷热冲击试验箱-巨怡环试 | 全自动过滤器_反冲洗过滤器_自清洗过滤器_量子除垢环_量子环除垢_量子除垢 - 安士睿(北京)过滤设备有限公司 | 联系我们老街华纳娱乐公司官网19989979996(客服) | 沟盖板_复合沟盖板厂_电力盖板_树脂雨水篦子-淄博拜斯特 | 真空粉体取样阀,电动楔式闸阀,电动针型阀-耐苛尔(上海)自动化仪表有限公司 | 称重传感器,测力传感器,拉压力传感器,压力变送器,扭矩传感器,南京凯基特电气有限公司 | 喷砂机厂家_自动喷砂机生产_新瑞自动化喷砂除锈设备 | 武汉创亿电气设备有限公司_电力检测设备生产厂家 | 臻知网大型互动问答社区-你的问题将在这里得到解答!-无锡据风网络科技有限公司 | 捆扎机_气动捆扎机_钢带捆扎机-沈阳海鹞气动钢带捆扎机公司 | 信阳网站建设专家-信阳时代网联-【信阳网站建设百度推广优质服务提供商】信阳网站建设|信阳网络公司|信阳网络营销推广 | 济南冷库安装-山东冷库设计|建造|冷库维修-山东齐雪制冷设备有限公司 | 直读光谱仪,光谱分析仪,手持式光谱仪,碳硫分析仪,创想仪器官网 | 广州展览制作|展台制作工厂|展览设计制作|展览展示制作|搭建制作公司 | 螺杆真空泵_耐腐蚀螺杆真空泵_水环真空泵_真空机组_烟台真空泵-烟台斯凯威真空 | 压片机_高速_单冲_双层_花篮式_多功能旋转压片机-上海天九压片机厂家 |