# 快速开始
# 克隆代码
$ git clone https://github.com/etcd-carry/etcd-carry.git
1
# 准备测试数据
在源k8s集群的master节点上执行下面操作:
$ cd etcd-carry
$ kubectl apply -f deploy/examples/kube/
1
2
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
2
3
4
5
6
7
# 编译
$ cd etcd-carry
$ make
1
2
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
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
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
2
3
4
5
← 过滤规则