如何仅使用bash(无编辑器)创建Kubernetes YAML部署对象?

时间:2019-04-15 14:12:30

标签: bash kubernetes yaml

使用Kubernetes进行练习。

是否可以仅通过YAML创建Bash部署对象及其配置?

我已经尝试过了:

kubectl create -f deployment.yaml

创建一个Yaml,以便以后编辑。但是,它仅显示

error: the path "deployment.yaml" does not exist

8 个答案:

答案 0 :(得分:2)

我看到了两种简单的方法:

  1. 使用echo。示例:
echo "
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment
  labels:
    app: nginx
spec:
  replicas: 3
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:1.7.9
        ports:
        - containerPort: 80
" > deployment.yaml

  1. 使用 kubectl 创建资源,然后将其输出到yaml:

    kubectl创建部署nginx --image = nginx --replicas = 1

    kubectl获得部署nginx --export = true -o yaml

答案 1 :(得分:1)

如错误所述,它找不到文件的位置

如果通过脚本运行文件,则应指定文件所在的路径

如果仅通过命令行运行,则指定的文件不在执行命令的目录中

#!/bin/bash
DEPLOYMENT_LOCATION="~/deployments"
kubectl create -f "$DEPLOYMENT_LOCATION/deployment.yaml"

或者相对于您的脚本

#!/bin/bash
SCRIPT_DIR="`dirname \"$0\"`"
kubectl create -f "$SCRIPT_DIR/deployments/deployment.yaml"

答案 2 :(得分:1)

即使您不必为此创建部署,也可以运行以下命令来生成nginx部署。

kubectl create deployment mynginx --image=nginx -o yaml --dry-run > /tmp/mydeployment.yaml

cat /tmp/mydeployment.yaml

现在,您可以编辑此Yaml文件以添加更多详细信息。但这为您提供了一个基本的结构。

答案 3 :(得分:1)

到目前为止,所有答案都建议实际部署到集群,然后检索正在运行的部署。

使用--dry-run可以获取对象的YAML格式,而无需实际部署任何内容。例如:

kubectl create deployment nginx --image=nginx --dry-run -o yaml

将部署YAML输出到stdout:

apiVersion: apps/v1
kind: Deployment
metadata:
  creationTimestamp: null
  labels:
    app: nginx
  name: nginx
spec:
  replicas: 1
  selector:
    matchLabels:
      app: nginx
  strategy: {}
  template:
    metadata:
      creationTimestamp: null
      labels:
        app: nginx
    spec:
      containers:
      - image: nginx
        name: nginx
        resources: {}
status: {}

答案 4 :(得分:0)

您可以运行kubectl create deployment my-deployment --image=my-image

然后,如果需要清单: kubectl get deployment my-deployment --output=yaml

答案 5 :(得分:0)

如果我正确理解了您的问题,听起来您正在尝试以YAML的形式检索当前部署,以便您可以进行尝试。

这是我认为您需要的命令:

kubectl get  deployments -o yaml 

答案 6 :(得分:0)

您可以使用此模板创建不带bash的部署     猫<

---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment
  labels:
    app: nginx
spec:
  replicas: 3
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:1.7.9
        ports:
        - containerPort: 80
EOF

答案 7 :(得分:0)

  1. 使用命令vim deployment.yaml输入文件内容
  2. kubectl create -f deployment.yaml

这在通过终端创建时有效