diff --git a/metrics-server/pkg/version/version.go b/metrics-server/pkg/version/version.go
new file mode 100644
index 0000000..72dd1ca
--- /dev/null
+++ b/metrics-server/pkg/version/version.go
@@ -0,0 +1,43 @@
+// Copyright 2018 The Kubernetes Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package version
+
+import (
+	"fmt"
+	"runtime"
+
+	genericversion "k8s.io/apimachinery/pkg/version"
+)
+
+// these come from ldflags
+var (
+	gitVersion   = "v0.0.0-master+$Format:%h$"
+	gitCommit    = "$Format:%H$"          // sha1 from git, output of $(git rev-parse HEAD)
+	gitTreeState = ""                     // state of git tree, either "clean" or "dirty"
+	buildDate    = "1970-01-01T00:00:00Z" // build date in ISO8601 format, output of $(date -u +'%Y-%m-%dT%H:%M:%SZ')
+)
+
+// VersionInfo returns the version information for metrics-server.
+func VersionInfo() *genericversion.Info {
+	return &genericversion.Info{
+		GitVersion:   gitVersion,
+		GitCommit:    gitCommit,
+		GitTreeState: gitTreeState,
+		BuildDate:    buildDate,
+		GoVersion:    runtime.Version(),
+		Compiler:     runtime.Compiler,
+		Platform:     fmt.Sprintf("%s/%s", runtime.GOOS, runtime.GOARCH),
+	}
+}
