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

时间:2018-11-12 23:44:41

标签: 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: {{ .Release.Service }}
spec:
    ...

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

2 个答案:

答案 0 :(得分:1)

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

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

搜索nginx in kubernetes,以获取有关人们如何使用configmap将其配置(在您的情况下为公钥)部署到集群的示例。

对于测试,您可以使用此命令kubectl create configmap public-conf --from-file=./your-public-key创建配置映射。这将创建一个名为public-conf的配置图。您可以运行kubectl get configmap来查看新创建的configmap。

答案 1 :(得分:0)

我最终使用了@Crou建议的secrets来创建密钥:

$ 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上的密钥