LoginSignup
1
1

More than 5 years have passed since last update.

【etcd】とりあえずetcd(v2) コンテナを動かす

Last updated at Posted at 2016-11-23

etcdのv2(最新はv3)のコンテナを起動し使ってみるところまで。

Vagrantfile

使用するVagrantfile。
Dockerのインストール&quay.io/coreos/etcd:v2.3.7イメージをpullする。

# -*- mode: ruby -*-
# vi: set ft=ruby :

# Vagrantfile API/syntax version. Don't touch unless you know what you're doing!
VAGRANTFILE_API_VERSION = "2"

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|

  # If true, then any SSH connections made will enable agent forwarding.
  # Default value: false
  config.ssh.forward_agent = true

  config.vm.define "host" do |d|
    d.vm.box = "ubuntu/trusty64"
    d.vm.network :private_network, ip: "192.168.33.10", virtualbox__intnet: "intnet"

    d.vm.provision "docker" do |d|
       d.pull_images "quay.io/coreos/etcd:v2.3.7"
    end
  end
end
$ docker images 
REPOSITORY            TAG                 IMAGE ID            CREATED             SIZE
quay.io/coreos/etcd   v2.3.7              e81032a59e55        5 months ago        32.29 MB

etcdコンテナの起動

$ docker run -d --name etcd -p 2379:2379 -p 4001:4001 quay.io/coreos/etcd:v2.3.7 --advertise-client-urls 'http://192.168.33.10:2379,http://192.168.33.10:4001' --listen-client-urls 'http://0.0.0.0:2379,http://0.0.0.0:4001'

$ docker ps 
CONTAINER ID        IMAGE                        COMMAND                  CREATED             STATUS              PORTS                                                                NAMES
4e71ac2989c1        quay.io/coreos/etcd:v2.3.7   "/etcd --advertise-cl"   52 seconds ago      Up 51 seconds       0.0.0.0:2379->2379/tcp, 2380/tcp, 0.0.0.0:4001->4001/tcp, 7001/tcp   etcd

v2 API

APIをいくつか実行してみる

Version

/versionで動作確認。

$ curl http://127.0.0.1:2379/version | jq . 
{
  "etcdcluster": "2.3.0",
  "etcdserver": "2.3.7"
}

Key/Valueのセット

Let's set the first key-value pair in the datastore. In this case the key is /message and the value is Hello world.

/messageキーに"Hello world"をセットする

$ curl http://127.0.0.1:2379/v2/keys/message -XPUT -d value="Hello world" | jq . 
{
  "node": {
    "createdIndex": 4,
    "modifiedIndex": 4,
    "value": "Hello world",
    "key": "/message"
  },
  "action": "set"
}

KeyからValueを取得

We can get the value that we just set in /message by issuing a GET request:

同じエンドポイントに対しGETリクエストでValueを取得。

$ curl http://127.0.0.1:2379/v2/keys/message | jq . 
{
  "node": {
    "createdIndex": 4,
    "modifiedIndex": 4,
    "value": "Hello world",
    "key": "/message"
  },
  "action": "get"
}

etcdctl

インストール

$ curl -L  https://github.com/coreos/etcd/releases/download/v2.3.7/etcd-v2.3.7-linux-amd64.tar.gz -o etcd-v2.3.7-linux-amd64.tar.gz
$ tar xzvf etcd-v2.3.7-linux-amd64.tar.gz
$ cd etcd-v2.3.7-linux-amd64
$ ./etcdctl cluster-health
member ce2a822cea30bfca is healthy: got healthy result from http://0.0.0.0:2379
cluster is healthy

つかう

$ ./etcdctl --endpoint="http://127.0.0.1:2379" --no-sync get  message 
Hello world
$ ./etcdctl --endpoint="http://127.0.0.1:2379" --no-sync set some-key some-value
some-value
$ ./etcdctl --endpoint="http://127.0.0.1:2379" --no-sync get some-key 
some-value

endpointはデフォルトでhttp://127.0.0.1:2379なのでいらないけどいちおう。

参考

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1