diff --git a/core/installer/namespace.go b/core/installer/namespace.go
new file mode 100644
index 0000000..87cd8c4
--- /dev/null
+++ b/core/installer/namespace.go
@@ -0,0 +1,64 @@
+package installer
+
+import (
+	"crypto/rand"
+	"fmt"
+)
+
+type NamespaceGenerator interface {
+	Generate(name string) (string, error)
+}
+
+type prefixGenerator struct {
+	prefix string
+}
+
+func NewPrefixGenerator(prefix string) NamespaceGenerator {
+	return &prefixGenerator{prefix}
+}
+
+func (g *prefixGenerator) Generate(name string) (string, error) {
+	return g.prefix + name, nil
+}
+
+type randomSuffixGenerator struct {
+	len int
+}
+
+func NewRandomSuffixGenerator(len int) NamespaceGenerator {
+	return &randomSuffixGenerator{len}
+}
+
+var letters = []rune("abcdefghijklmnopqrstuvwxyz")
+
+func (g randomSuffixGenerator) Generate(name string) (string, error) {
+	r := make([]byte, g.len)
+	if _, err := rand.Read(r); err != nil {
+		return "", err
+	}
+	ret := make([]rune, g.len)
+	for i, v := range r {
+		ret[i] += letters[v%26]
+	}
+	return fmt.Sprintf("%s-%s", name, string(ret)), nil
+}
+
+type combineGenerator struct {
+	ns []NamespaceGenerator
+}
+
+func NewCombine(ns ...NamespaceGenerator) NamespaceGenerator {
+	return &combineGenerator{ns}
+}
+
+func (g *combineGenerator) Generate(name string) (string, error) {
+	cur := name
+	var err error
+	for _, i := range g.ns {
+		cur, err = i.Generate(cur)
+		if err != nil {
+			return "", err
+		}
+	}
+	return cur, nil
+}
