diff --git a/metropolis/node/core/consensus/client/unimplemented.go b/metropolis/node/core/consensus/client/unimplemented.go
index c80bc47..32f384d 100644
--- a/metropolis/node/core/consensus/client/unimplemented.go
+++ b/metropolis/node/core/consensus/client/unimplemented.go
@@ -22,7 +22,7 @@
 type unimplementedCluster struct {
 }
 
-func (c *unimplementedCluster) MemberList(_ context.Context) (*clientv3.MemberListResponse, error) {
+func (c *unimplementedCluster) MemberList(_ context.Context, _ ...clientv3.OpOption) (*clientv3.MemberListResponse, error) {
 	panic(ErrUnimplementedInNamespaced)
 }
 
@@ -146,6 +146,10 @@
 	panic(ErrUnimplementedInNamespaced)
 }
 
+func (c *unimplementedMaintenance) SnapshotWithVersion(ctx context.Context) (*clientv3.SnapshotResponse, error) {
+	panic(ErrUnimplementedInNamespaced)
+}
+
 func (c *unimplementedMaintenance) Snapshot(ctx context.Context) (io.ReadCloser, error) {
 	panic(ErrUnimplementedInNamespaced)
 }
@@ -153,3 +157,7 @@
 func (c *unimplementedMaintenance) MoveLeader(ctx context.Context, transfereeID uint64) (*clientv3.MoveLeaderResponse, error) {
 	panic(ErrUnimplementedInNamespaced)
 }
+
+func (c *unimplementedMaintenance) Downgrade(ctx context.Context, action clientv3.DowngradeAction, version string) (*clientv3.DowngradeResponse, error) {
+	panic(ErrUnimplementedInNamespaced)
+}
diff --git a/metropolis/node/core/consensus/configuration.go b/metropolis/node/core/consensus/configuration.go
index a3379ca..8c4bd06 100644
--- a/metropolis/node/core/consensus/configuration.go
+++ b/metropolis/node/core/consensus/configuration.go
@@ -110,6 +110,8 @@
 	cfg.InitialClusterToken = "METROPOLIS"
 	cfg.Logger = "zap"
 	cfg.LogOutputs = []string{c.Ephemeral.ServerLogsFIFO.FullPath()}
+	cfg.EnableGRPCGateway = false
+	cfg.GRPCOnly = true
 	cfg.ListenMetricsUrls = []url.URL{
 		{Scheme: "http", Host: net.JoinHostPort("127.0.0.1", fmt.Sprintf("%d", etcdPort))},
 	}
diff --git a/metropolis/node/core/consensus/consensus.go b/metropolis/node/core/consensus/consensus.go
index 69ded4f..f6addd8 100644
--- a/metropolis/node/core/consensus/consensus.go
+++ b/metropolis/node/core/consensus/consensus.go
@@ -277,7 +277,7 @@
 
 		isMember := false
 		for _, member := range members.Members {
-			if member.ID != uint64(server.Server.ID()) {
+			if member.ID != uint64(server.Server.MemberID()) {
 				continue
 			}
 			if !member.IsLearner {
@@ -297,7 +297,7 @@
 
 	st := &Status{
 		localPeerURL:  cfg.AdvertisePeerUrls[0].String(),
-		localMemberID: uint64(server.Server.ID()),
+		localMemberID: uint64(server.Server.MemberID()),
 		cl:            cl,
 		ca:            s.ca,
 	}
diff --git a/metropolis/node/core/curator/BUILD.bazel b/metropolis/node/core/curator/BUILD.bazel
index 497bf7d..5aad27a 100644
--- a/metropolis/node/core/curator/BUILD.bazel
+++ b/metropolis/node/core/curator/BUILD.bazel
@@ -90,7 +90,7 @@
         "//osbase/supervisor",
         "@com_github_google_go_cmp//cmp",
         "@io_etcd_go_etcd_client_v3//:client",
-        "@io_etcd_go_etcd_tests_v3//integration",
+        "@io_etcd_go_etcd_tests_v3//framework/integration",
         "@io_k8s_utils//ptr",
         "@org_golang_google_grpc//:grpc",
         "@org_golang_google_grpc//grpclog",
diff --git a/metropolis/node/core/curator/curator_test.go b/metropolis/node/core/curator/curator_test.go
index da021c0..1b95c4e 100644
--- a/metropolis/node/core/curator/curator_test.go
+++ b/metropolis/node/core/curator/curator_test.go
@@ -11,7 +11,7 @@
 	"time"
 
 	clientv3 "go.etcd.io/etcd/client/v3"
-	"go.etcd.io/etcd/tests/v3/integration"
+	"go.etcd.io/etcd/tests/v3/framework/integration"
 	"go.uber.org/zap"
 	"google.golang.org/grpc/grpclog"
 
@@ -25,7 +25,7 @@
 
 var (
 	// cluster is a 3-member in-memory etcd cluster for testing.
-	cluster *integration.ClusterV3
+	cluster *integration.Cluster
 	// endpoints is a list of the three etcd members that make up the cluster above.
 	endpoints []string
 )
@@ -196,7 +196,7 @@
 	}
 	integration.BeforeTestExternal(t)
 	grpclog.SetLoggerV2(logtree.GRPCify(lt.MustLeveledFor("grpc")))
-	cluster = integration.NewClusterV3(t, &cfg)
+	cluster = integration.NewCluster(t, &cfg)
 	t.Cleanup(func() {
 		ctxC()
 		cluster.Terminate(t)
diff --git a/metropolis/node/core/curator/impl_leader_test.go b/metropolis/node/core/curator/impl_leader_test.go
index cd61e54..7e31aeb 100644
--- a/metropolis/node/core/curator/impl_leader_test.go
+++ b/metropolis/node/core/curator/impl_leader_test.go
@@ -21,7 +21,7 @@
 
 	"github.com/google/go-cmp/cmp"
 	clientv3 "go.etcd.io/etcd/client/v3"
-	"go.etcd.io/etcd/tests/v3/integration"
+	"go.etcd.io/etcd/tests/v3/framework/integration"
 	"go.uber.org/zap"
 	"google.golang.org/grpc"
 	"google.golang.org/grpc/test/bufconn"
@@ -75,7 +75,7 @@
 
 	// Start a single-node etcd cluster.
 	integration.BeforeTestExternal(t)
-	cluster := integration.NewClusterV3(t, &integration.ClusterConfig{
+	cluster := integration.NewCluster(t, &integration.ClusterConfig{
 		Size: 1,
 		LoggerBuilder: func(memberName string) *zap.Logger {
 			dn := logtree.DN("etcd." + memberName)
@@ -332,7 +332,7 @@
 	nameMap map[string]string
 }
 
-func (c etcdClusterWrap) MemberList(ctx context.Context) (*clientv3.MemberListResponse, error) {
+func (c etcdClusterWrap) MemberList(ctx context.Context, _ ...clientv3.OpOption) (*clientv3.MemberListResponse, error) {
 	list, err := c.Cluster.MemberList(ctx)
 	if list == nil {
 		return list, err
diff --git a/metropolis/node/kubernetes/reconciler/BUILD.bazel b/metropolis/node/kubernetes/reconciler/BUILD.bazel
index caac358..7c4f7cf 100644
--- a/metropolis/node/kubernetes/reconciler/BUILD.bazel
+++ b/metropolis/node/kubernetes/reconciler/BUILD.bazel
@@ -62,7 +62,7 @@
         "//osbase/supervisor",
         "//version",
         "//version/spec",
-        "@io_etcd_go_etcd_tests_v3//integration",
+        "@io_etcd_go_etcd_tests_v3//framework/integration",
         "@io_k8s_apimachinery//pkg/api/equality",
         "@io_k8s_apimachinery//pkg/api/errors",
         "@io_k8s_apimachinery//pkg/api/validation",
diff --git a/metropolis/node/kubernetes/reconciler/reconciler_status_test.go b/metropolis/node/kubernetes/reconciler/reconciler_status_test.go
index 1f17e69..4154670 100644
--- a/metropolis/node/kubernetes/reconciler/reconciler_status_test.go
+++ b/metropolis/node/kubernetes/reconciler/reconciler_status_test.go
@@ -8,7 +8,7 @@
 	"testing"
 	"time"
 
-	"go.etcd.io/etcd/tests/v3/integration"
+	"go.etcd.io/etcd/tests/v3/framework/integration"
 	"google.golang.org/protobuf/proto"
 	"k8s.io/client-go/kubernetes/fake"
 
@@ -47,7 +47,7 @@
 	t.Helper()
 	// Start a single-node etcd cluster.
 	integration.BeforeTestExternal(t)
-	cluster := integration.NewClusterV3(t, &integration.ClusterConfig{Size: 1})
+	cluster := integration.NewCluster(t, &integration.ClusterConfig{Size: 1})
 	t.Cleanup(func() {
 		cluster.Terminate(t)
 	})
