部署式文件系统Ozone对接Ranger KMS 实现TDE

前言

公司隐私计算的项目准备使用K8S来运行计算的任务和工作调度,隐私计算的源数据放到分布式文件系统中,通过对接Ranger KMS实现透明数据加密(Transparent Data Encryption,缩写TDE). 前面一篇文章(https://blog.csdn.net/lwlfox/article/details/121068645)已经实现了未开启TDE模式,这篇文章将介绍如何从非TDE模式切换到带TDE模式并与K8S 对接。

必读

https://blog.csdn.net/lwlfox/article/details/121068645icon-default.png?t=L9C2https://blog.csdn.net/lwlfox/article/details/121068645

修改集群配置

1. 将下面的文件复制到所有Ozone的节点中,我的环境中有4个节点。路径为: /opt/hadoop/etc/hadoop/core-site.xml 。

配置中的IP+端口,为KMS服务的地址,Ranger KMS的安装文档参考: Apache Ranger KMS 部署文档_偷闲小苑-CSDN博客

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<!--
  Licensed under the Apache License, Version 2.0 (the "License");
  you may not use this file except in compliance with the License.
  You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

  Unless required by applicable law or agreed to in writing, software
  distributed under the License is distributed on an "AS IS" BASIS,
  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  See the License for the specific language governing permissions and
  limitations under the License. See accompanying LICENSE file.
-->

<!-- Put site-specific property overrides in this file. -->

<configuration>
    <property>
        <name>hadoop.security.key.provider.path</name>
        <value>kms://http@10.228.82.21:9292/kms</value>
    </property>
</configuration>

KMS地址查看

 2. 重启管理节点上的所有服务(停止顺序: RECON->S3G->OM-SCM,启动顺序: SCM->OM->S3G->RECON)

#停止
[root@vm10-50-0-80 hadoop]# ozone --daemon stop recon
[root@vm10-50-0-80 hadoop]# ozone --daemon stop s3g
[root@vm10-50-0-80 hadoop]# ozone --daemon stop om
[root@vm10-50-0-80 hadoop]# ozone --daemon stop scm
#启动
[root@vm10-50-0-80 hadoop]# ozone --daemon start scm
[root@vm10-50-0-80 hadoop]# ozone --daemon stop om
[root@vm10-50-0-80 hadoop]# ozone --daemon stop s3g
[root@vm10-50-0-80 hadoop]# ozone --daemon stop recon

3. 重启所有3 个DATANODE节点 ,

ozone --daemon stop datanode
ozone --daemon start datanode

4. 检查所有3个DATANODE运行正常,在任意Ozone节点运行以下命令

ozone admin datanode list

5. 创建带KMS地址的ozone镜像

#root 登录到Master节点
git clone https://gitee.com/kevinliu_CQ/ozone-1-1-0-csi.git
cd ozone-1-1-0-csi/ozone-docker
vi core-site.xml #修改配置文件中的IP 和端口
docker build -t ozone-with-kms:1.1.0 -f Dockerfile_with_KMS .
docker tag ozone-with-kms:1.1.0 registry.cn-hangzhou.aliyuncs.com/imagesfromgoogle/ozone-with-kms:1.1.0 #tag为自己的镜像仓库
docker push registry.cn-hangzhou.aliyuncs.com/imagesfromgoogle/ozone-with-kms:1.1.0 #将镜像推送到自己的仓库中

6. 更新CSI使用的镜像

#root 登录到Master节点
git clone https://gitee.com/kevinliu_CQ/ozone-1-1-0-csi.git
cd ozone-1-1-0-csi/with-tde
vi csi-ozone-datanode-daemonset.yaml #将编排中的zone的镜像替换为刚刚构建的镜像
vi csi-ozone-provisioner-deployment.yaml #将编排中的zone的镜像替换为刚刚构建的镜像
kubectl apply -f . # 等待csi-daemontset和csi-provisioner更新完成

7. 创建加密区

#root登录Ozone 的SCM节点,执行以下命令
#其中test_key1为在KMS里面创建的Key
ozone sh bucket create -k test_key1 /s3v/encrypt 
[root@vm10-50-0-80 hadoop]# ozone sh bucket list /s3v
{
  "metadata" : { },
  "volumeName" : "s3v",
  "name" : "encrypt",
  "storageType" : "DISK",
  "versioning" : false,
  "usedBytes" : 268435486,
  "usedNamespace" : 6,
  "creationTime" : "2021-10-31T07:53:09.803Z",
  "modificationTime" : "2021-10-31T07:53:09.803Z",
  "encryptionKeyName" : "test_key1",  #加密区使用的KMS Key
  "sourceVolume" : null,
  "sourceBucket" : null,
  "quotaInBytes" : -1,
  "quotaInNamespace" : -1
}

8. 向加密区写入数据

[root@vm10-50-0-80 hadoop]#ozone sh key put /s3v/encrypt/ENcryptedKey Readme.md

9. 制作挂载加密区的镜像

#root 登录到Master节点
git clone https://gitee.com/kevinliu_CQ/ozone-1-1-0-csi.git
cd ozone-TDE-docker
docker build -t ozone-client:1.0.0 .
docker tag ozone-client:1.0.0 registry.cn-hangzhou.aliyuncs.com/imagesfromgoogle/ozone-client:1.0.0 #tag为自建的容器仓库
docker push registry.cn-hangzhou.aliyuncs.com/imagesfromgoogle/ozone-client:1.0.0 #推送镜像到自己的仓库

 10. 挂载加密区并创建非加密区PVC

#root 登录到Master节点
git clone https://gitee.com/kevinliu_CQ/ozone-1-1-0-csi.git
cd pvc-test
kubectl apply -f ozone-client-pvc.yaml -f ozone-client-deployment.yaml

11. 登录到zone-client容器中进行加密区与非加密区的文件操作,客户端无感知是否为加密或未加密。/mnt为加密区  /data/为非加密区

[root@vm10-10-0-160 pvc-test]# kubectl exec -it ozone-client-6dc754db6c-cbnt7 bash
kubectl exec [POD] [COMMAND] is DEPRECATED and will be removed in a future version. Use kubectl kubectl exec [POD] -- [COMMAND] instead.

[root@ozone-client-6dc754db6c-cbnt7 /]# ls /data 
KK  Key
[root@ozone-client-6dc754db6c-cbnt7 /]# ls /mnt
KEVIN  KK
[root@ozone-client-6dc754db6c-cbnt7 /]# df -h /data
Filesystem                                Size  Used Avail Use% Mounted on
pvc-f8d7e8eb-26ea-44e1-a07f-8cf6cfee4cf1  1.0P     0  1.0P   0% /data
[root@ozone-client-6dc754db6c-cbnt7 /]# df -h  /mnt
Filesystem      Size  Used Avail Use% Mounted on
encrypt         1.0P     0  1.0P   0% /mnt

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值