diff --git a/cmd/flux/create.go b/cmd/flux/create.go
index 758a2f54e8e8171ab8369bad6315b4cde96b952e..9aed0c43f9933830192da48c904b43bf205d4a75 100644
--- a/cmd/flux/create.go
+++ b/cmd/flux/create.go
@@ -19,6 +19,7 @@ package main
 import (
 	"context"
 	"fmt"
+	"regexp"
 	"strings"
 	"time"
 
@@ -51,6 +52,18 @@ func init() {
 	createCmd.PersistentFlags().BoolVar(&createArgs.export, "export", false, "export in YAML format to stdout")
 	createCmd.PersistentFlags().StringSliceVar(&createArgs.labels, "label", nil,
 		"set labels on the resource (can specify multiple labels with commas: label1=value1,label2=value2)")
+	createCmd.PersistentPreRunE = func(cmd *cobra.Command, args []string) error {
+		if len(args) < 1 {
+			return fmt.Errorf("name is required")
+		}
+
+		name := args[0]
+		if !validateObjectName(name) {
+			return fmt.Errorf("name '%s' is invalid, it should adhere to standard defined in RFC 1123, the name can only contain alphanumeric characters or '-'", name)
+		}
+
+		return nil
+	}
 	rootCmd.AddCommand(createCmd)
 }
 
@@ -150,3 +163,8 @@ func parseLabels() (map[string]string, error) {
 
 	return result, nil
 }
+
+func validateObjectName(name string) bool {
+	r := regexp.MustCompile("^[a-z0-9]([a-z0-9\\-]){0,61}[a-z0-9]$")
+	return r.MatchString(name)
+}
diff --git a/cmd/flux/create_alert.go b/cmd/flux/create_alert.go
index 0a5ea93aae8b016b47f3cacfaacaca89b50d18f1..7f9968b8e958d0756bce499af90dc6245764a485 100644
--- a/cmd/flux/create_alert.go
+++ b/cmd/flux/create_alert.go
@@ -63,9 +63,6 @@ func init() {
 }
 
 func createAlertCmdRun(cmd *cobra.Command, args []string) error {
-	if len(args) < 1 {
-		return fmt.Errorf("Alert name is required")
-	}
 	name := args[0]
 
 	if alertArgs.providerRef == "" {
diff --git a/cmd/flux/create_alertprovider.go b/cmd/flux/create_alertprovider.go
index 7d5bf640958bd096d7b88b2ecc0b8dda02127c36..2663482c5144446e0269b867be3ae96ed8ffdb65 100644
--- a/cmd/flux/create_alertprovider.go
+++ b/cmd/flux/create_alertprovider.go
@@ -73,9 +73,6 @@ func init() {
 }
 
 func createAlertProviderCmdRun(cmd *cobra.Command, args []string) error {
-	if len(args) < 1 {
-		return fmt.Errorf("Provider name is required")
-	}
 	name := args[0]
 
 	if alertProviderArgs.alertType == "" {
diff --git a/cmd/flux/create_helmrelease.go b/cmd/flux/create_helmrelease.go
index 2072c720e99492b6a0fe73b0d0d79919259d702e..d8f37cc59f2188348e91aae8e9ac7303ac58c217 100644
--- a/cmd/flux/create_helmrelease.go
+++ b/cmd/flux/create_helmrelease.go
@@ -139,9 +139,6 @@ func init() {
 }
 
 func createHelmReleaseCmdRun(cmd *cobra.Command, args []string) error {
-	if len(args) < 1 {
-		return fmt.Errorf("HelmRelease name is required")
-	}
 	name := args[0]
 
 	if helmReleaseArgs.chart == "" {
diff --git a/cmd/flux/create_image_policy.go b/cmd/flux/create_image_policy.go
index 05cb5c142c3b478a7f5b24dc975491de80c04947..b9d8eb1a0e2708c95b91795bb9b37d88576717d4 100644
--- a/cmd/flux/create_image_policy.go
+++ b/cmd/flux/create_image_policy.go
@@ -84,9 +84,6 @@ func (obj imagePolicyAdapter) getObservedGeneration() int64 {
 }
 
 func createImagePolicyRun(cmd *cobra.Command, args []string) error {
-	if len(args) < 1 {
-		return fmt.Errorf("ImagePolicy name is required")
-	}
 	objectName := args[0]
 
 	if imagePolicyArgs.imageRef == "" {
diff --git a/cmd/flux/create_image_repository.go b/cmd/flux/create_image_repository.go
index b5ffdcb83286cbf25afb539e974f53c6f63aa5ec..140658f3ce26ddb02db73711de6ab78a3046372a 100644
--- a/cmd/flux/create_image_repository.go
+++ b/cmd/flux/create_image_repository.go
@@ -83,9 +83,6 @@ func init() {
 }
 
 func createImageRepositoryRun(cmd *cobra.Command, args []string) error {
-	if len(args) < 1 {
-		return fmt.Errorf("ImageRepository name is required")
-	}
 	objectName := args[0]
 
 	if imageRepoArgs.image == "" {
diff --git a/cmd/flux/create_image_update.go b/cmd/flux/create_image_update.go
index f1b7e2cad825a9ac164a5ffc2490e607036c76ad..a67f6bc341fad4f34003858a67ee9899c3deb0a0 100644
--- a/cmd/flux/create_image_update.go
+++ b/cmd/flux/create_image_update.go
@@ -94,9 +94,6 @@ func init() {
 }
 
 func createImageUpdateRun(cmd *cobra.Command, args []string) error {
-	if len(args) < 1 {
-		return fmt.Errorf("ImageUpdateAutomation name is required")
-	}
 	objectName := args[0]
 
 	if imageUpdateArgs.gitRepoName == "" {
diff --git a/cmd/flux/create_kustomization.go b/cmd/flux/create_kustomization.go
index d523374dc87dc5d77354b0b3fe8400368994c8ba..4d0ebb99e0129e7f78ab8a156aa26c9e0cb03ea1 100644
--- a/cmd/flux/create_kustomization.go
+++ b/cmd/flux/create_kustomization.go
@@ -119,9 +119,6 @@ func NewKustomizationFlags() kustomizationFlags {
 }
 
 func createKsCmdRun(cmd *cobra.Command, args []string) error {
-	if len(args) < 1 {
-		return fmt.Errorf("Kustomization name is required")
-	}
 	name := args[0]
 
 	if kustomizationArgs.path == "" {
diff --git a/cmd/flux/create_receiver.go b/cmd/flux/create_receiver.go
index d6004dc1b754547bfb4b15173c811d0d5f07e279..6533f17374ded84b35a1092d2fe61575b8fc3789 100644
--- a/cmd/flux/create_receiver.go
+++ b/cmd/flux/create_receiver.go
@@ -67,9 +67,6 @@ func init() {
 }
 
 func createReceiverCmdRun(cmd *cobra.Command, args []string) error {
-	if len(args) < 1 {
-		return fmt.Errorf("Receiver name is required")
-	}
 	name := args[0]
 
 	if receiverArgs.receiverType == "" {
diff --git a/cmd/flux/create_secret_git.go b/cmd/flux/create_secret_git.go
index 769c25269f849033011177502c696d3dab04ccad..0effc1b52ec4bb1e9b60f8151eb2cb0f3be0bb62 100644
--- a/cmd/flux/create_secret_git.go
+++ b/cmd/flux/create_secret_git.go
@@ -112,9 +112,6 @@ func NewSecretGitFlags() secretGitFlags {
 }
 
 func createSecretGitCmdRun(cmd *cobra.Command, args []string) error {
-	if len(args) < 1 {
-		return fmt.Errorf("secret name is required")
-	}
 	name := args[0]
 	if secretGitArgs.url == "" {
 		return fmt.Errorf("url is required")
diff --git a/cmd/flux/create_secret_git_test.go b/cmd/flux/create_secret_git_test.go
index 01a3e9291c9fcabdaf4dfbd78f8fb098db7bbd55..16ff400a90657f23ae36928f2a96b593bcddb978 100644
--- a/cmd/flux/create_secret_git_test.go
+++ b/cmd/flux/create_secret_git_test.go
@@ -13,7 +13,7 @@ func TestCreateGitSecret(t *testing.T) {
 		{
 			name:   "no args",
 			args:   "create secret git",
-			assert: assertError("secret name is required"),
+			assert: assertError("name is required"),
 		},
 		{
 			name:   "basic secret",
diff --git a/cmd/flux/create_secret_helm.go b/cmd/flux/create_secret_helm.go
index 8f9df1b544341d8954a664d0934a61a13daa8c91..80a7ce9d959a233c7de2ab45d102c751485f6724 100644
--- a/cmd/flux/create_secret_helm.go
+++ b/cmd/flux/create_secret_helm.go
@@ -18,7 +18,6 @@ package main
 
 import (
 	"context"
-	"fmt"
 
 	"github.com/spf13/cobra"
 	corev1 "k8s.io/api/core/v1"
@@ -68,9 +67,6 @@ func init() {
 }
 
 func createSecretHelmCmdRun(cmd *cobra.Command, args []string) error {
-	if len(args) < 1 {
-		return fmt.Errorf("secret name is required")
-	}
 	name := args[0]
 
 	labels, err := parseLabels()
diff --git a/cmd/flux/create_secret_helm_test.go b/cmd/flux/create_secret_helm_test.go
index 04c96dbb5b2737281627971207348e2567fcfc00..fe0bc0c941789cc3524fb780103190ca7ded0b88 100644
--- a/cmd/flux/create_secret_helm_test.go
+++ b/cmd/flux/create_secret_helm_test.go
@@ -12,7 +12,7 @@ func TestCreateHelmSecret(t *testing.T) {
 	}{
 		{
 			args:   "create secret helm",
-			assert: assertError("secret name is required"),
+			assert: assertError("name is required"),
 		},
 		{
 			args:   "create secret helm helm-secret --username=my-username --password=my-password --namespace=my-namespace --export",
diff --git a/cmd/flux/create_secret_tls.go b/cmd/flux/create_secret_tls.go
index a308066e405017ccad8f1e6f2d335d4bfe5deee1..b89a26010274f588d3378b028e4fb95573e53653 100644
--- a/cmd/flux/create_secret_tls.go
+++ b/cmd/flux/create_secret_tls.go
@@ -18,7 +18,6 @@ package main
 
 import (
 	"context"
-	"fmt"
 
 	"github.com/spf13/cobra"
 	"github.com/spf13/pflag"
@@ -67,9 +66,6 @@ func init() {
 }
 
 func createSecretTLSCmdRun(cmd *cobra.Command, args []string) error {
-	if len(args) < 1 {
-		return fmt.Errorf("secret name is required")
-	}
 	name := args[0]
 
 	labels, err := parseLabels()
diff --git a/cmd/flux/create_secret_tls_test.go b/cmd/flux/create_secret_tls_test.go
index 8085c584d507cda62ac9e9c8e53ff160a0d26648..31d4920046f15d31a57f1593b6fe700d174206f9 100644
--- a/cmd/flux/create_secret_tls_test.go
+++ b/cmd/flux/create_secret_tls_test.go
@@ -12,7 +12,7 @@ func TestCreateTlsSecretNoArgs(t *testing.T) {
 	}{
 		{
 			args:   "create secret tls",
-			assert: assertError("secret name is required"),
+			assert: assertError("name is required"),
 		},
 		{
 			args:   "create secret tls certs --namespace=my-namespace --cert-file=./testdata/create_secret/tls/test-cert.pem --key-file=./testdata/create_secret/tls/test-key.pem --export",
diff --git a/cmd/flux/create_source_bucket.go b/cmd/flux/create_source_bucket.go
index 50858c5bdd867aebb5988304ab5fe9cb339a27f9..31279799f27308fdde5b3cd4948cf78684782a69 100644
--- a/cmd/flux/create_source_bucket.go
+++ b/cmd/flux/create_source_bucket.go
@@ -93,9 +93,6 @@ func NewSourceBucketFlags() sourceBucketFlags {
 }
 
 func createSourceBucketCmdRun(cmd *cobra.Command, args []string) error {
-	if len(args) < 1 {
-		return fmt.Errorf("Bucket source name is required")
-	}
 	name := args[0]
 
 	if sourceBucketArgs.name == "" {
diff --git a/cmd/flux/create_source_git.go b/cmd/flux/create_source_git.go
index 17a928b6dc776596b16e40a0fe0b4888a58b16fd..2f13dd9cf57ae21601adcfd83e0149cdec341f48 100644
--- a/cmd/flux/create_source_git.go
+++ b/cmd/flux/create_source_git.go
@@ -150,9 +150,6 @@ func newSourceGitFlags() sourceGitFlags {
 }
 
 func createSourceGitCmdRun(cmd *cobra.Command, args []string) error {
-	if len(args) < 1 {
-		return fmt.Errorf("GitRepository source name is required")
-	}
 	name := args[0]
 
 	if sourceGitArgs.url == "" {
diff --git a/cmd/flux/create_source_git_test.go b/cmd/flux/create_source_git_test.go
index 1b391bce16ba9df26bbdd80dcefc90247d0506e9..73c1724a91b3657f365fcdd0cbf5f004fb64bf22 100644
--- a/cmd/flux/create_source_git_test.go
+++ b/cmd/flux/create_source_git_test.go
@@ -96,7 +96,7 @@ func TestCreateSourceGit(t *testing.T) {
 		{
 			"NoArgs",
 			"create source git",
-			assertError("GitRepository source name is required"),
+			assertError("name is required"),
 			nil,
 		}, {
 			"Succeeded",
diff --git a/cmd/flux/create_source_helm.go b/cmd/flux/create_source_helm.go
index 81b5a05fa112a20c53a674f1d27a9bb43e2d447d..2d3f251354ad89ab1b709f654cd47c8f0fa546c7 100644
--- a/cmd/flux/create_source_helm.go
+++ b/cmd/flux/create_source_helm.go
@@ -91,9 +91,6 @@ func init() {
 }
 
 func createSourceHelmCmdRun(cmd *cobra.Command, args []string) error {
-	if len(args) < 1 {
-		return fmt.Errorf("HelmRepository source name is required")
-	}
 	name := args[0]
 
 	if sourceHelmArgs.url == "" {
diff --git a/cmd/flux/create_tenant.go b/cmd/flux/create_tenant.go
index 88b8eda6521c9adb5224d5aa793ae9adc1485a9c..4ac8eb9688046c89cccfd0fb787982f0c82ae4c0 100644
--- a/cmd/flux/create_tenant.go
+++ b/cmd/flux/create_tenant.go
@@ -70,9 +70,6 @@ func init() {
 }
 
 func createTenantCmdRun(cmd *cobra.Command, args []string) error {
-	if len(args) < 1 {
-		return fmt.Errorf("tenant name is required")
-	}
 	tenant := args[0]
 	if err := validation.IsQualifiedName(tenant); len(err) > 0 {
 		return fmt.Errorf("invalid tenant name '%s': %v", tenant, err)
diff --git a/cmd/flux/create_test.go b/cmd/flux/create_test.go
new file mode 100644
index 0000000000000000000000000000000000000000..ee38fe5051986793e09666ce1baf1442771100cf
--- /dev/null
+++ b/cmd/flux/create_test.go
@@ -0,0 +1,55 @@
+package main
+
+import (
+	"testing"
+
+	"k8s.io/apimachinery/pkg/util/rand"
+)
+
+func Test_validateObjectName(t *testing.T) {
+	tests := []struct {
+		name  string
+		valid bool
+	}{
+		{
+			name:  "flux-system",
+			valid: true,
+		},
+		{
+			name:  "-flux-system",
+			valid: false,
+		},
+		{
+			name:  "-flux-system-",
+			valid: false,
+		},
+		{
+			name:  "third.first",
+			valid: false,
+		},
+		{
+			name:  "THirdfirst",
+			valid: false,
+		},
+		{
+			name:  "THirdfirst",
+			valid: false,
+		},
+		{
+			name:  rand.String(63),
+			valid: true,
+		},
+		{
+			name:  rand.String(64),
+			valid: false,
+		},
+	}
+
+	for _, tt := range tests {
+		valid := validateObjectName(tt.name)
+		if valid != tt.valid {
+			t.Errorf("expected name %q to return %t for validateObjectName func but got %t",
+				tt.name, tt.valid, valid)
+		}
+	}
+}