首页 > 解决方案 > 使用存储在变量中的 yaml 运行“kubectl apply”

问题描述

我有一个资源想作为自动化脚本的一部分应用(在 powershell 中运行)。我宁愿不必将其写入文件然后必须处理清理它。

是否可以将 yaml 作为脚本的一部分应用?

与此类似的东西:

$myYaml = @'
apiVersion: "rbac.authorization.k8s.io/v1"
kind: RoleBinding
metadata:
  name: ServiceAccount-clusteradmin
roleRef:
  apiGroup: "rbac.authorization.k8s.io"
  kind: ClusterRole
  name: ClusterAdmin
subjects:
  - apiGroup: "rbac.authorization.k8s.io"
    kind: User
    name: "MyAdminServiceAccount"
'@

kubectl apply @myYaml

显然,kubectl上面的命令不起作用。

我的问题是:是否可以在不创建文件的情况下应用此 yaml(使用 powershell)?

标签: powershellkubectl

解决方案


myYaml是具有数据的变量:

$myYaml = @'
apiVersion: "rbac.authorization.k8s.io/v1"
kind: RoleBinding
metadata:
  name: ServiceAccount-clusteradmin
roleRef:
  apiGroup: "rbac.authorization.k8s.io"
  kind: ClusterRole
  name: ClusterAdmin
subjects:
  - apiGroup: "rbac.authorization.k8s.io"
    kind: User
    name: "MyAdminServiceAccount"
'@

执行以下操作以回显$myYaml变量的内容并将其通过管道传输到kubectl apply -f -,最后-用于管道输入。

$myYaml |kubectl.exe apply -f -
rolebinding.rbac.authorization.k8s.io/ServiceAccount-clusteradmin created

kubectl.exe get rolebindings
NAME                          ROLE                       AGE
ServiceAccount-clusteradmin   ClusterRole/ClusterAdmin   18s

这与用于执行相同操作的linux环境非常相似。echo "$var" |kubectl apply -f -


推荐阅读