Table des matières

Notes etcd

Voir aussi :

Intro

Install

apt install etcd-client
apt-get install etcd

Config

Droits

https://etcd.io/docs/v3.5/demo/

Exemples basiques

Lancement

etcd

Connexion

etcdctl --endpoints http://127.0.0.1:2379 get /

Put

etcdctl put greeting "Hello, etcd"

Get

ETCDCTL_API=3 etcdctl get greeting
etcdctl get foo --print-value-only
etcdctl get --prefix --rev=4 foo
etcdctl watch foo --hex
etcdctl --no-sync --peers https//plop1.lan:10835,https//plop2.lan:10836 -u username:password ls /
 
alias e='etcdctl --ca-file ~/compose_etcd.pk --no-sync --peers https://aws-us-east-1-portal10.dblayer.com:10835,https://aws-us-east-1-portal11.dblayer.com:27265 -u root:*********'
etcdctl mk x 3
etcdctl mk y 123
etcdctl ls
etcdctl get /y
etcdctl set new 6
etcdctl set d/a 4
etcdctl set d/b 5
etcdctl ls d
etcdctl rm --recursive d
 
# TTL of 5 seconds
etcdctl mk e 4 --ttl "5"
export ETCDCTL_API=3
export ETCDCTL_ENDPOINTS=$(minikube service example-etcd-cluster-client-service --url)

backup (cluster & local) Voir https://etcd.io/docs/v3.5/op-guide/recovery/

ETCDCTL_API=3 etcdctl --endpoints $ENDPOINT snapshot save snapshot.db #--cacert /etc/ssl/etcd/ca.crt --cert /etc/ssl/etcd/client.crt --key /etc/ssl/etcd/client.key

Verify the snapshot:

ETCDCTL_API=3 etcdctl --write-out=table snapshot status snapshotdb

Restore (local)

ETCDCTL_API=3 etcdctl snapshot restore snapshot.db

grpc-proxy

etcd grpc-proxy start --endpoints=infra0.example.com,infra1.example.com,infra2.example.com --listen-addr=127.0.0.1:2379

Tuning

IO

# best effort, highest priority
sudo ionice -c2 -n0 -p `pgrep etcd`

CPU

echo performance | tee /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor

Diag

sudo chown -R etcd:etcd /var/lib/etcd
sudo systemctl start etcd

List the cluster member:

etcdctl --endpoints=http://${NODE1}:2379 member list

Client API Python

https://www.dasblinkenlichten.com/python-pieces-working-with-etcd/

Autre

pas de type list ?

Voir https://github.com/ake-persson/etcdtool

etcd doesn't support list's, this is handled by using the index as the key:

JSON Input:

{
    "users": [
        { "username": "jblack", "first_name": "John", "last_name": "Blackbeard" },
        { "username": "ltrier", "first_name": "Lars", "last_name": "Von Trier" }
    ]
}

Result in etcd:

users/0/username: jblack
users/0/first_name: John
users/0/last_name: Blackbeard
users/1/username: ltrier
users/1/first_name: Ludwig
users/1/last_name: Von Treimer