diff --git a/pkg/cluster/cluster.go b/pkg/cluster/cluster.go
index e7dae408d5f0399165c8ce96bf9c2d8164c26fac..103ccde790bbaa675621a35d032dd584c1e2587b 100644
--- a/pkg/cluster/cluster.go
+++ b/pkg/cluster/cluster.go
@@ -11,8 +11,6 @@ import (
 	"sync"
 
 	"github.com/Sirupsen/logrus"
-	etcdclient "github.com/coreos/etcd/client"
-	"golang.org/x/net/context"
 	"k8s.io/client-go/kubernetes"
 	"k8s.io/client-go/pkg/api"
 	"k8s.io/client-go/pkg/api/v1"
@@ -38,7 +36,6 @@ var (
 type Config struct {
 	KubeClient          *kubernetes.Clientset //TODO: move clients to the better place?
 	RestClient          *rest.RESTClient
-	EtcdClient          etcdclient.KeysAPI
 	TeamsAPIClient      *teams.API
 	OpConfig            config.Config
 	InfrastructureRoles map[string]spec.PgUser // inherited from the controller
@@ -146,22 +143,6 @@ func (c *Cluster) initUsers() error {
 	return nil
 }
 
-func (c *Cluster) etcdKeyExists(keyName string) (bool, error) {
-	options := etcdclient.GetOptions{}
-	resp, err := c.EtcdClient.Get(context.Background(), keyName, &options)
-	if err != nil {
-		etcdErr, ok := err.(etcdclient.Error)
-		if !ok {
-			return false, err
-		}
-		if etcdErr.Code == etcdclient.ErrorCodeKeyNotFound {
-			return false, nil
-		}
-	}
-
-	return resp != nil, err
-}
-
 func (c *Cluster) Create(stopCh <-chan struct{}) error {
 	c.mu.Lock()
 	defer c.mu.Unlock()
@@ -182,13 +163,6 @@ func (c *Cluster) Create(stopCh <-chan struct{}) error {
 
 	c.setStatus(spec.ClusterStatusCreating)
 
-	keyExist, err := c.etcdKeyExists(fmt.Sprintf("/%s/%s", c.OpConfig.EtcdScope, c.Metadata.Name))
-	if err != nil {
-		c.logger.Warnf("Can't check etcd key: %s", err)
-	}
-	if keyExist {
-		c.logger.Warnf("Etcd key for the cluster already exists")
-	}
 	//TODO: service will create endpoint implicitly
 	ep, err := c.createEndpoint()
 	if err != nil {
diff --git a/pkg/cluster/util.go b/pkg/cluster/util.go
index ff74c193635202015caae3cb448e71b56c3a06a1..683c99a0337f58e8a0b2945939d5b050bbed31d2 100644
--- a/pkg/cluster/util.go
+++ b/pkg/cluster/util.go
@@ -1,11 +1,11 @@
 package cluster
 
 import (
+	"encoding/json"
 	"fmt"
 	"strings"
 	"time"
 
-	"k8s.io/apimachinery/pkg/util/json"
 	"k8s.io/client-go/pkg/api/v1"
 	"k8s.io/client-go/pkg/apis/apps/v1beta1"
 	"k8s.io/client-go/pkg/labels"
diff --git a/pkg/controller/controller.go b/pkg/controller/controller.go
index 0075a07b1de511b42e8fa9a955a3abc535f00ed1..3f50158cb7e101b959f924fc9059eca93ff7722a 100644
--- a/pkg/controller/controller.go
+++ b/pkg/controller/controller.go
@@ -5,7 +5,6 @@ import (
 	"sync"
 
 	"github.com/Sirupsen/logrus"
-	etcdclient "github.com/coreos/etcd/client"
 	"k8s.io/client-go/kubernetes"
 	"k8s.io/client-go/pkg/api/v1"
 	"k8s.io/client-go/rest"
@@ -21,7 +20,6 @@ type Config struct {
 	RestConfig          *rest.Config
 	KubeClient          *kubernetes.Clientset
 	RestClient          *rest.RESTClient
-	EtcdClient          etcdclient.KeysAPI
 	TeamsAPIClient      *teams.API
 	InfrastructureRoles map[string]spec.PgUser
 }
@@ -122,10 +120,6 @@ func (c *Controller) initController() {
 		DeleteFunc: c.podDelete,
 	})
 
-	if err := c.initEtcdClient(c.opConfig.EtcdHost); err != nil {
-		c.logger.Fatalf("Can't get etcd client: %s", err)
-	}
-
 	c.clusterEventQueues = make([]*cache.FIFO, c.opConfig.Workers)
 	for i := range c.clusterEventQueues {
 		c.clusterEventQueues[i] = cache.NewFIFO(func(obj interface{}) (string, error) {
diff --git a/pkg/controller/etcd.go b/pkg/controller/etcd.go
deleted file mode 100644
index 0bb38fe58c35164fcffcf2ed6c89db510d2cbf28..0000000000000000000000000000000000000000
--- a/pkg/controller/etcd.go
+++ /dev/null
@@ -1,25 +0,0 @@
-package controller
-
-import (
-	"fmt"
-	"time"
-
-	etcdclient "github.com/coreos/etcd/client"
-)
-
-func (c *Controller) initEtcdClient(etcdHost string) error {
-	etcdURL := fmt.Sprintf("http://%s", etcdHost)
-
-	cfg, err := etcdclient.New(etcdclient.Config{
-		Endpoints:               []string{etcdURL},
-		Transport:               etcdclient.DefaultTransport,
-		HeaderTimeoutPerRequest: time.Second,
-	})
-	if err != nil {
-		return err
-	}
-
-	c.EtcdClient = etcdclient.NewKeysAPI(cfg)
-
-	return nil
-}
diff --git a/pkg/controller/util.go b/pkg/controller/util.go
index 5d002cdad8f54ba33897faccb61efc2ed3aa9511..94f9fc898a0a770e1893ff9d3c3fa70caf97d77c 100644
--- a/pkg/controller/util.go
+++ b/pkg/controller/util.go
@@ -23,7 +23,6 @@ func (c *Controller) makeClusterConfig() cluster.Config {
 	return cluster.Config{
 		KubeClient:          c.KubeClient,
 		RestClient:          c.RestClient,
-		EtcdClient:          c.EtcdClient,
 		TeamsAPIClient:      c.TeamsAPIClient,
 		OpConfig:            config.Copy(c.opConfig),
 		InfrastructureRoles: infrastructureRoles,