Skip to main content

如何在 Kubernetes 中设置数据加密

注意

此特性需使用 0.13.0 及以上版本的 JuiceFS CSI 驱动

JuiceFS 支持数据加密功能,本文档展示如何在 Kubernetes 中使用 JuiceFS 的数据加密功能。

开启 CSI 的相关功能

该功能依赖 mount pod 挂载配置文件,v0.13.0 版本默认关闭,需要手动开启,执行如下命令:

$ kubectl -n kube-system patch ds juicefs-csi-node --patch '{"spec": {"template": {"spec": {"containers": [{"name": "juicefs-plugin","args": ["--endpoint=$(CSI_ENDPOINT)", "--logtostderr", "--nodeid=$(NODE_NAME)", "--v=5", "--format-in-pod=true"]}]}}}}'
daemonset.apps/juicefs-csi-node patched

确保 JuiceFS CSI node 的 pod 均已重建。

在 Secret 中设置秘钥配置信息

社区版

秘钥管理参考这篇文档生成秘钥后创建 Secret,如下:

apiVersion: v1
kind: Secret
metadata:
name: juicefs-secret
type: Opaque
stringData:
name: <NAME>
metaurl: redis://[:<PASSWORD>]@<HOST>:6379[/<DB>]
storage: s3
bucket: https://<BUCKET>.s3.<REGION>.amazonaws.com
access-key: <ACCESS_KEY>
secret-key: <SECRET_KEY>
envs: "{JFS_RSA_PASSPHRASE: <PASSPHRASE>}"
encrypt_rsa_key: <PATH_TO_PRIVATE_KEY>

其中,PASSPHRASE 为创建秘钥时所用的密码,PATH_TO_PRIVATE_KEY 为生成的秘钥文件的路径。

云服务版

托管密钥

托管秘钥的使用参考 这篇文档 创建 Secret:

apiVersion: v1
kind: Secret
metadata:
name: juicefs-secret
type: Opaque
stringData:
name: ${JUICEFS_NAME}
token: ${JUICEFS_TOKEN}
access-key: ${JUICEFS_ACCESSKEY}
secret-key: ${JUICEFS_SECRETKEY}
envs: "{JFS_RSA_PASSPHRASE: <PASSPHRASE>}"

其中,PASSPHRASE 为在 JuiceFS 官方控制台开启存储加密功能时使用的密码。

自行管理密钥

秘钥的生成参考 这篇文档 生成秘钥后创建 Secret,如下:

apiVersion: v1
kind: Secret
metadata:
name: juicefs-secret
type: Opaque
stringData:
name: ${JUICEFS_NAME}
token: ${JUICEFS_TOKEN}
access-key: ${JUICEFS_ACCESSKEY}
secret-key: ${JUICEFS_SECRETKEY}
envs: "{JFS_RSA_PASSPHRASE: <PASSPHRASE>}"
encrypt_rsa_key: <PATH_TO_PRIVATE_KEY>

其中,PASSPHRASE 为创建秘钥时所用的密码,PATH_TO_PRIVATE_KEY 为生成的秘钥文件的路径。

部署

创建好 Secret 后,有两种方式使用 JuiceFS。可以采用静态配置,参考 这篇文档;也可以采用动态配置,参考 这篇文档