# 快速开始

# 克隆代码

$ git clone https://github.com/etcd-carry/etcd-carry.git
1

# 准备测试数据

在源k8s集群的master节点上执行下面操作:

$ cd etcd-carry 
$ kubectl apply -f deploy/examples/kube/
1
2

# 准备CA和证书密钥文件

将源etcd集群和目的etcd集群拷贝到一个目录下,比如/opt/pki/目录,并命名如下:

/opt/pki/
├── dest-ca.crt
├── dest-server.crt
├── dest-server.key
├── source-ca.crt
├── source-server.crt
└── source-server.key
1
2
3
4
5
6
7

# 编译

$ cd etcd-carry
$ make
1
2

生成的二进制文件在bin目录下。

# 同步测试

执行下面的命令来同步符合过滤规则的测试数据:

$ cd etcd-carry
$ ./bin/etcd-carry --source-cacert=/opt/pki/source-ca.crt --source-cert=/opt/pki/source-server.crt --source-key=/opt/pki/source-server.key --source-endpoints={source ip}:{source port} --dest-cacert=/opt/pki/dest-ca.crt --dest-cert=/opt/pki/dest-server.crt --dest-key=/opt/pki/dest-server.key --dest-endpoints={dest ip}:{dest port} --encryption-provider-config=./deploy/examples/secrets-encryption.yaml --mirror-rule=./deploy/examples/rules.yaml
1
2

# 验证结果

根据./deploy/examples/rules.yaml中的过滤规则,以下数据将会被同步到目的集群:

/registry/apiextensions.k8s.io/customresourcedefinitions/*
/registry/configmaps/unit-test/influxdb1
/registry/namespaces/unique
/registry/namespaces/unit-test
/registry/secrets/unique/influxdb
1
2
3
4
5

在目的etcd集群节点上执行以下命令可以查看数据:

$ ETCDCTL_API=3 etcdctl get --keys-only --prefix /registry --endpoints={ip}:{port} --cacert={CA文件路径} --cert={证书文件路径} --key={密钥文件路径}
1

对应K8S中的数据:

CRD
namespace unique
namespace unit-test
secret named influxdb in namespace unique
configmap named influxdb1 in namespace unit-test
1
2
3
4
5
Last Updated: 2/24/2023, 5:25:10 PM