运行 `kubectl apply` 使用存储在变量中的 yaml

Run `kubectl apply` using yaml stored in a variable

我有一个资源想作为自动化脚本的一部分应用(运行 在 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)?

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 - 用于执行相同的操作。