Go 如何从控制器文件向本地Kubernetes部署服务提供静态文件?

Go 如何从控制器文件向本地Kubernetes部署服务提供静态文件?,go,kubernetes,jwt,Go,Kubernetes,Jwt,我已定义了一个部署文件: --- apiVersion: apps/v1 kind: Deployment metadata: name: {{ ... }} labels: app.kubernetes.io/name: {{ ... }} helm.sh/chart: {{ ... }} app.kubernetes.io/instance: {{ .Release.Name }} app.kubernetes.io/managed-by: {{ .R

我已定义了一个部署文件:

---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: {{ ... }}
  labels:
    app.kubernetes.io/name: {{ ... }}
    helm.sh/chart: {{ ... }}
    app.kubernetes.io/instance: {{ .Release.Name }}
    app.kubernetes.io/managed-by: {{ .Release.Service }}
spec:
    ...

我的服务实现JWT验证,因此需要公钥。我是否可以在部署文件中指定将本地生成的发布密钥文件提供给我的服务?

您可以使用
configmaps
执行此操作。配置映射是用于部署单个文件的资源(基本上)。我目前正在使用一个用于集群nginx配置

在配置文件中,将公钥的内容写入数据字段,然后告诉部署使用该配置文件并从中读取。这非常类似于仅为单个文件装载卷。不过,您可能需要更新部署的映像以从装载位置读取

在kubernetes中搜索
nginx
,了解人们如何使用configmaps将其配置(在您的案例中为公钥)部署到集群的示例

为了进行测试,您可以使用以下命令创建配置映射
kubectl create configmap public conf--from file=./您的公钥
。这将创建一个名为public-conf的configmap。您可以运行
kubectl get configmap
查看新创建的configmap。

我使用@Crou建议的方法创建密钥:

$ kubectl create secret generic pub-key --from-file=./jwt-key.pub
然后将其装入部署yaml中的卷:

spec:
  volumes:
    - name: secret
      secret:
        secretName: pub-key
        defaultMode: 256
...
  containers:
      volumeMounts:
        - name: secret
          readOnly: true
          mountPath: /secret

并且能够在
/secret/jwt key.pub

上访问我的密钥。感谢您的回复,是否有任何方法可以配置它,使其从本地文件复制,以便任何正在旋转的人都可以生成pub密钥并可以很好地运行,而不必将文件内容转储到yaml文件中?我不确定我是否理解正确。您想让kubernetes自动访问您的本地文件系统吗?那是不可能的。您必须以这样或那样的方式将内容部署到云中,或者使用将上载的密钥写入数据库的端点。您可以使用来保存密钥。或者,如果您想在每次创建新pod时生成它,您可以查看@atayenel我不想在每次本地有人想要启动时手动将密钥复制/粘贴到configmap文件中。