You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Ansible k8s模块中传递service account json文件创建Secret

实现方案

你可以通过以下两种方式实现和原生kubectl命令完全等效的效果,--from-file=gcp=serviceaccount.json对应的是Secret中键为gcp,值为serviceaccount.json文件内容的配置:

方法1:使用data字段(需手动base64编码)

k8s原生Secret的data字段要求所有值为base64编码字符串,搭配Ansible的lookup和过滤器即可实现:

- name: CREATE SECRET
  k8s:
    state: present
    definition: 
      apiVersion: v1
      kind: Secret
      type: Opaque             
      metadata:
        name: test
        namespace: default     
      data:
        gcp: "{{ lookup('file', 'serviceaccount.json') | b64encode }}"

方法2:使用stringData字段(无需手动编码,更推荐)

stringData是k8s提供的简化字段,支持直接传入明文内容,底层会自动完成base64编码存储,写法更简单:

- name: CREATE SECRET
  k8s:
    state: present
    definition: 
      apiVersion: v1
      kind: Secret
      type: Opaque             
      metadata:
        name: test
        namespace: default     
      stringData:
        gcp: "{{ lookup('file', 'serviceaccount.json') }}"

注意事项

  • 示例中serviceaccount.json路径默认读取的是Ansible控制节点上的文件,如果文件存放在远程托管节点,需要先通过fetch模块拉取到控制端再读取。
  • 两种方法最终生成的Secret和你使用kubectl命令创建的结果完全一致。

内容的提问来源于stack exchange,提问作者sasi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 23:45:05