控制台指南

最佳实践

开发者指南

API 文档

SDK 文档

填写文档满意度调查问卷,赢取缤纷好礼> HOT

使用参数加密

最近更新时间:2022-06-10 10:19:47

在 Fluid 中创建 Dataset 时,有时候我们需要在 mounts 中配置一些密钥信息,为了保证安全,Fluid 提供使用 Secret 来配置这些密钥信息的能力。

下面以访问 对象存储(Cloud Object Storage,COS) 数据集为例说明如何配置。

创建携带密钥信息的 Dataset

查看 Secret

在要创建的 Secret 中,需要写明在上面创建 Dataset 时需要配置的密钥信息。

apiVersion: v1
kind: Secret
metadata:
  name: mysecret
stringData:
  fs.cosn.userinfo.secretId: <COS_SECRET_ID>
  fs.cosn.userinfo.secretKey: <COS_SECRET_KEY>

可以看到,fs.cosn.userinfo.secretKeyfs.cosn.userinfo.secretId 的具体内容写在 Secret 中,Dataset 通过寻找配置中同名的 Secret 和 key 来读取对应的值,而不再是在 Dataset 直接写明,这样就保证了一些数据的安全性。

创建 Secret

$ kubectl apply -f secret.yaml 
secret/mysecret created

$ kubectl get secret
NAME        TYPE     DATA   AGE
mysecret   Opaque    2      57s

查看 Dataset 和 Runtime

apiVersion: data.fluid.io/v1alpha1
kind: Dataset
metadata:
  name: mydata
spec:
  mounts:
    - mountPoint: cosn://<COS_BUCKET>/<COS_DIRECTORY>/
      name: mydata
      options:
        fs.cosn.bucket.region: <COS_REGION>
        fs.cosn.impl: org.apache.hadoop.fs.CosFileSystem
        fs.AbstractFileSystem.cosn.impl: org.apache.hadoop.fs.CosN
        fs.cosn.userinfo.appid: <COS_APP_ID>
      encryptOptions:
        - name: fs.cosn.userinfo.secretId
          valueFrom:
            secretKeyRef:
              name: mysecret
              key: fs.cosn.userinfo.secretId
        - name: fs.cosn.userinfo.secretKey
          valueFrom:
            secretKeyRef:
              name: mysecret
              key: fs.cosn.userinfo.secretKey
---
apiVersion: data.fluid.io/v1alpha1
kind: GooseFSRuntime
metadata:
  name: mydata
spec:
  replicas: 1
  tieredstore:
    levels:
      - mediumtype: SSD
        path: /mnt/disk1/
        quota: 2G
        high: "0.8"
        low: "0.7"

可以看到,在上面的配置中,与直接配置 fs.cos.endpoint 不同,我们把 fs.cosn.userinfo.secretId 以及 fs.cosn.userinfo.secretKey 的配置改为从 Secret 中读取,以此来保障安全性。

注意:

如果在 optionsencryptOptions 中配置了同名的键,例如都有 fs.cosn.userinfo.secretId 的配置,那么 encryptOptions 中的值会覆盖 options 中对应的值的内容。

创建 Dataset 和 Runtime

$ kubectl create -f dataset.yaml
dataset.data.fluid.io/mydata created
goosefsruntime.data.fluid.io/mydata created

查看部署的 GooseFSRuntime 情况,显示都为 Ready 状态表示部署成功。

$ kubectl get goosefsruntime mydata
NAME     MASTER PHASE   WORKER PHASE   FUSE PHASE   AGE
mydata    Ready           Ready           Ready     62m

查看 dataset 的情况,显示 Bound 状态表示 dataset 绑定成功。

$ kubectl get dataset mydata
NAME     UFS TOTAL SIZE   CACHED   CACHE CAPACITY   CACHED PERCENTAGE   PHASE   AGE
mydata       210.00MiB       0.00B    2GiB              0.0%          Bound   1h

此时,使用 Secret 的 Dataset 即可获取到远程文件。

目录