import yaml
# 定义一个生成 Deployment 模板的函数
def generate_deployment(name, image, replicas, port):
deployment = {
'apiVersion': 'apps/v1',
'kind': 'Deployment',
'metadata': {'name': name},
'spec': {
'selector': {'matchLabels': {'app': name}},
'replicas': replicas,
'template': {
'metadata': {'labels': {'app': name}},
'spec': {
'containers': [{
'name': name,
'image': image,
'ports': [{'containerPort': port}]
}]
}
}
}
}
return deployment
# 定义一个生成 Service 模板的函数
def generate_service(name, port, service_type):
service = {
'apiVersion': 'v1',
'kind': 'Service',
'metadata': {'name': name},
'spec': {
'selector': {'app': name},
'ports': [{'name': 'http', 'port': port}],
'type': service_type
}
}
return service
# 获取用户输入
name = input("请输入您要创建的 Deployment 和 Service 的名称:")
image = input("请输入镜像名称(包括版本):")
replicas = int(input("请输入副本数:"))
port = int(input("请输入容器端口号:"))
service_type = input("请输入 Service 暴露的类型(ClusterIP/NodePort/LoadBalancer):")
# 生成部署和服务模板
deployment = generate_deployment(name, image, replicas, port)
service = generate_service(name, port, service_type)
# 将模板转换为 YAML 格式并输出到文件
with open(f"{name}.yaml", 'w') as f:
f.write(yaml.dump(deployment))
f.write('\n---\n')
f.write(yaml.dump(service))
print(f"已生成 {name}.yaml 文件。")
结果如下:
请输入您要创建的 Deployment 和 Service 的名称:nginx
请输入镜像名称(包括版本):nginx:latest
请输入副本数:2
请输入容器端口号:80
请输入 Service 暴露的类型(ClusterIP/NodePort/LoadBalancer):NodePort
已生成 nginx.yaml 文件。