Kubernetes 关于秘密以及如何在 pods 中使用它们
Kubernetes about secrets and how to consume them in pods
我在我的项目中使用 GCP 容器引擎,现在我遇到一些问题,我不知道是否可以通过秘密解决。
我的一个部署是 node-js 应用服务器,我在那里使用了一些需要我的 GCP 服务帐户密钥(.json 文件)作为输入的 npm 模块。
输入的是这个json文件所在的路径。目前我设法通过提供此文件作为我的 docker 图像的一部分来使其工作,然后在代码中我将路径放入此文件并且它按预期工作。问题是我认为这不是一个好的解决方案,因为我想将我的 nodejs 图像与服务帐户密钥分离,因为服务帐户密钥可能会更改(例如 dev、test、prod),我将无法重用我现有的图像(除非我将构建并将其推送到不同的注册表)
所以我想知道是否可以将此服务帐户 json 文件作为秘密文件上传,然后在我的 pod 中使用它。我看到可以从文件中创建机密,但我不知道是否可以指定存储此 json 文件的路径。如果秘密不可能(因为秘密可能没有保存在文件中......)那么如何(以及是否)可以完成?
在此先致谢!
我认为你在 GKE/GCE 上部署,你不需要密钥,它会正常工作。
我只测试了 Google Cloud Logging,但其他服务可能也一样。
例如:在 gke/gce
上部署应用程序时我只需要以下内容
var loggingClient = logging({
projectId: 'grape-spaceship-123'
});
您可以将 json 文件保密并在您的 pod 中使用。秘密请看下面link(http://kubernetes.io/docs/user-guide/secrets/),不过接下来我总结一下:
首先从您的 json 文件创建一个秘密:
kubectl create secret generic nodejs-key --from-file=./key.json
现在您已经创建了密钥,您可以在您的 pod 中使用(在本例中作为一个卷):
{
"apiVersion": "v1",
"kind": "Pod",
"metadata": {
"name": "nodejs"
},
"spec": {
"containers": [{
"name": "nodejs",
"image": "node",
"volumeMounts": [{
"name": "foo",
"mountPath": "/etc/foo",
"readOnly": true
}]
}],
"volumes": [{
"name": "foo",
"secret": {
"secretName": "nodejs-key"
}
}]
}
}
因此,当您的 pod 启动时,文件将被放入 /etc/foo/key 中的 "file system"。json
我在我的项目中使用 GCP 容器引擎,现在我遇到一些问题,我不知道是否可以通过秘密解决。
我的一个部署是 node-js 应用服务器,我在那里使用了一些需要我的 GCP 服务帐户密钥(.json 文件)作为输入的 npm 模块。 输入的是这个json文件所在的路径。目前我设法通过提供此文件作为我的 docker 图像的一部分来使其工作,然后在代码中我将路径放入此文件并且它按预期工作。问题是我认为这不是一个好的解决方案,因为我想将我的 nodejs 图像与服务帐户密钥分离,因为服务帐户密钥可能会更改(例如 dev、test、prod),我将无法重用我现有的图像(除非我将构建并将其推送到不同的注册表) 所以我想知道是否可以将此服务帐户 json 文件作为秘密文件上传,然后在我的 pod 中使用它。我看到可以从文件中创建机密,但我不知道是否可以指定存储此 json 文件的路径。如果秘密不可能(因为秘密可能没有保存在文件中......)那么如何(以及是否)可以完成?
在此先致谢!
我认为你在 GKE/GCE 上部署,你不需要密钥,它会正常工作。
我只测试了 Google Cloud Logging,但其他服务可能也一样。
例如:在 gke/gce
上部署应用程序时我只需要以下内容var loggingClient = logging({
projectId: 'grape-spaceship-123'
});
您可以将 json 文件保密并在您的 pod 中使用。秘密请看下面link(http://kubernetes.io/docs/user-guide/secrets/),不过接下来我总结一下:
首先从您的 json 文件创建一个秘密:
kubectl create secret generic nodejs-key --from-file=./key.json
现在您已经创建了密钥,您可以在您的 pod 中使用(在本例中作为一个卷):
{
"apiVersion": "v1",
"kind": "Pod",
"metadata": {
"name": "nodejs"
},
"spec": {
"containers": [{
"name": "nodejs",
"image": "node",
"volumeMounts": [{
"name": "foo",
"mountPath": "/etc/foo",
"readOnly": true
}]
}],
"volumes": [{
"name": "foo",
"secret": {
"secretName": "nodejs-key"
}
}]
}
}
因此,当您的 pod 启动时,文件将被放入 /etc/foo/key 中的 "file system"。json