Repository: GoogleContainerTools/kpt
Pull request #2248 (2021-06-15 19:51:14)

Update crd version for Kptfile to `v1`
Part of #2203 

What this PR does:

1.  Updating the schema in the types.go & all references in tests (unit and end to end)/code
2.  Updating examples in the kpt repo
3.  Updating reference docs and book
4.  Updating the code that handles unrecognized versions of Kptfile, for example, if one uses kpt 1.0 and finds a package with alpha2 or previous versions



Patch:
diff --git a/internal/cmdcomplete/complete.go b/internal/cmdcomplete/complete.go
index a5eeb952..5e637221 100644
--- a/internal/cmdcomplete/complete.go
+++ b/internal/cmdcomplete/complete.go
@@ -18,7 +18,7 @@ package cmdcomplete
 import (
 	"strings"
 
-	kptfilev1alpha2 "github.com/GoogleContainerTools/kpt/pkg/api/kptfile/v1alpha2"
+	kptfilev1 "github.com/GoogleContainerTools/kpt/pkg/api/kptfile/v1"
 	"github.com/posener/complete/v2"
 	"github.com/posener/complete/v2/predict"
 	"github.com/spf13/cobra"
@@ -60,7 +60,7 @@ func Complete(cmd *cobra.Command, skipHelp bool, visitFlags VisitFlags) *complet
 			visitFlags(cmd, flag, cc)
 		}
 		if flag.Name == "strategy" {
-			cc.Flags[flag.Name] = predict.Options(predict.OptValues(kptfilev1alpha2.UpdateStrategiesAsStrings()...))
+			cc.Flags[flag.Name] = predict.Options(predict.OptValues(kptfilev1.UpdateStrategiesAsStrings()...))
 			return
 		}
 		if flag.Name == "pattern" {
diff --git a/internal/cmdget/cmdget.go b/internal/cmdget/cmdget.go
index 335ccfe8..901c84b2 100644
--- a/internal/cmdget/cmdget.go
+++ b/internal/cmdget/cmdget.go
@@ -26,7 +26,7 @@ import (
 	"github.com/GoogleContainerTools/kpt/internal/util/cmdutil"
 	"github.com/GoogleContainerTools/kpt/internal/util/get"
 	"github.com/GoogleContainerTools/kpt/internal/util/parse"
-	kptfilev1alpha2 "github.com/GoogleContainerTools/kpt/pkg/api/kptfile/v1alpha2"
+	kptfilev1 "github.com/GoogleContainerTools/kpt/pkg/api/kptfile/v1"
 	"github.com/spf13/cobra"
 )
 
@@ -47,9 +47,9 @@ func NewRunner(ctx context.Context, parent string) *Runner {
 	}
 	cmdutil.FixDocs("kpt", parent, c)
 	r.Command = c
-	c.Flags().StringVar(&r.strategy, "strategy", string(kptfilev1alpha2.ResourceMerge),
+	c.Flags().StringVar(&r.strategy, "strategy", string(kptfilev1.ResourceMerge),
 		"update strategy that should be used when updating this package -- must be one of: "+
-			strings.Join(kptfilev1alpha2.UpdateStrategiesAsStrings(), ","))
+			strings.Join(kptfilev1.UpdateStrategiesAsStrings(), ","))
 	return r
 }
 
@@ -82,7 +82,7 @@ func (r *Runner) preRunE(_ *cobra.Command, args []string) error {
 	}
 	r.Get.Destination = string(p.UniquePath)
 
-	strategy, err := kptfilev1alpha2.ToUpdateStrategy(r.strategy)
+	strategy, err := kptfilev1.ToUpdateStrategy(r.strategy)
 	if err != nil {
 		return err
 	}
diff --git a/internal/cmdinit/cmdinit.go b/internal/cmdinit/cmdinit.go
index 0e39f094..e508dcb8 100644
--- a/internal/cmdinit/cmdinit.go
+++ b/internal/cmdinit/cmdinit.go
@@ -29,7 +29,7 @@ import (
 	"github.com/GoogleContainerTools/kpt/internal/printer"
 	"github.com/GoogleContainerTools/kpt/internal/util/cmdutil"
 	"github.com/GoogleContainerTools/kpt/internal/util/man"
-	kptfilev1alpha2 "github.com/GoogleContainerTools/kpt/pkg/api/kptfile/v1alpha2"
+	kptfilev1 "github.com/GoogleContainerTools/kpt/pkg/api/kptfile/v1"
 	"github.com/spf13/cobra"
 	"sigs.k8s.io/kustomize/kyaml/errors"
 	"sigs.k8s.io/kustomize/kyaml/yaml"
@@ -88,9 +88,9 @@ func (r *Runner) runE(c *cobra.Command, args []string) error {
 
 	pr := printer.FromContextOrDie(r.Ctx)
 
-	if _, err = os.Stat(filepath.Join(up, kptfilev1alpha2.KptFileName)); os.IsNotExist(err) {
+	if _, err = os.Stat(filepath.Join(up, kptfilev1.KptFileName)); os.IsNotExist(err) {
 		pr.Printf("writing %s\n", filepath.Join(args[0], "Kptfile"))
-		k := kptfilev1alpha2.KptFile{
+		k := kptfilev1.KptFile{
 			ResourceMeta: yaml.ResourceMeta{
 				ObjectMeta: yaml.ObjectMeta{
 					NameMeta: yaml.NameMeta{
@@ -98,7 +98,7 @@ func (r *Runner) runE(c *cobra.Command, args []string) error {
 					},
 				},
 			},
-			Info: &kptfilev1alpha2.PackageInfo{
+			Info: &kptfilev1.PackageInfo{
 				Description: r.Description,
 				Site:        r.Site,
 				Keywords:    r.Keywords,
@@ -106,11 +106,11 @@ func (r *Runner) runE(c *cobra.Command, args []string) error {
 		}
 
 		// serialize the gvk when writing the Kptfile
-		k.Kind = kptfilev1alpha2.TypeMeta.Kind
-		k.APIVersion = kptfilev1alpha2.TypeMeta.APIVersion
+		k.Kind = kptfilev1.TypeMeta.Kind
+		k.APIVersion = kptfilev1.TypeMeta.APIVersion
 
 		err = func() error {
-			f, err := os.Create(filepath.Join(up, kptfilev1alpha2.KptFileName))
+			f, err := os.Create(filepath.Join(up, kptfilev1.KptFileName))
 			if err != nil {
 				return err
 			}
diff --git a/internal/cmdliveinit/cmdliveinit.go b/internal/cmdliveinit/cmdliveinit.go
index 87745852..5335dc61 100644
--- a/internal/cmdliveinit/cmdliveinit.go
+++ b/internal/cmdliveinit/cmdliveinit.go
@@ -16,7 +16,7 @@ import (
 	"github.com/GoogleContainerTools/kpt/internal/errors"
 	"github.com/GoogleContainerTools/kpt/internal/pkg"
 	"github.com/GoogleContainerTools/kpt/internal/printer"
-	kptfilev1alpha2 "github.com/GoogleContainerTools/kpt/pkg/api/kptfile/v1alpha2"
+	kptfilev1 "github.com/GoogleContainerTools/kpt/pkg/api/kptfile/v1"
 	"github.com/GoogleContainerTools/kpt/pkg/kptfile/kptfileutil"
 	"github.com/spf13/cobra"
 	"k8s.io/cli-runtime/pkg/genericclioptions"
@@ -159,7 +159,7 @@ func (c *ConfigureInventoryInfo) Run(ctx context.Context) error {
 		inventoryID = c.InventoryID
 	}
 	// Finally, update these values in the Inventory section of the Kptfile.
-	err = updateKptfile(c.Pkg, &kptfilev1alpha2.Inventory{
+	err = updateKptfile(c.Pkg, &kptfilev1.Inventory{
 		Namespace:   namespace,
 		Name:        name,
 		InventoryID: inventoryID,
@@ -178,7 +178,7 @@ func (c *ConfigureInventoryInfo) Run(ctx context.Context) error {
 }
 
 // Run fills in the inventory object values into the Kptfile.
-func updateKptfile(p *pkg.Pkg, inv *kptfilev1alpha2.Inventory, force bool) error {
+func updateKptfile(p *pkg.Pkg, inv *kptfilev1.Inventory, force bool) error {
 	const op errors.Op = "cmdliveinit.updateKptfile"
 	// Read the Kptfile io io.dir
 	kf, err := p.Kptfile()
@@ -229,6 +229,6 @@ func generateHash(namespace string, name string) (string, error) {
 
 // kptfileInventoryEmpty returns true if the Inventory structure
 // in the Kptfile is empty; false otherwise.
-func kptfileInventoryEmpty(inv *kptfilev1alpha2.Inventory) bool {
+func kptfileInventoryEmpty(inv *kptfilev1.Inventory) bool {
 	return inv == nil
 }
diff --git a/internal/cmdrender/executor.go b/internal/cmdrender/executor.go
index d240de91..a67222bc 100644
--- a/internal/cmdrender/executor.go
+++ b/internal/cmdrender/executor.go
@@ -29,8 +29,8 @@ import (
 	"github.com/GoogleContainerTools/kpt/internal/printer"
 	"github.com/GoogleContainerTools/kpt/internal/types"
 	"github.com/GoogleContainerTools/kpt/internal/util/printerutil"
-	fnresult "github.com/GoogleContainerTools/kpt/pkg/api/fnresult/v1alpha2"
-	kptfilev1alpha2 "github.com/GoogleContainerTools/kpt/pkg/api/kptfile/v1alpha2"
+	fnresult "github.com/GoogleContainerTools/kpt/pkg/api/fnresult/v1"
+	kptfilev1 "github.com/GoogleContainerTools/kpt/pkg/api/kptfile/v1"
 	"sigs.k8s.io/kustomize/kyaml/kio"
 	"sigs.k8s.io/kustomize/kyaml/kio/filters"
 	"sigs.k8s.io/kustomize/kyaml/kio/kioutil"
@@ -326,7 +326,7 @@ func (pn *pkgNode) runPipeline(ctx context.Context, hctx *hydrationContext, inpu
 	}
 
 	if pl.IsEmpty() {
-		if err := kptfilev1alpha2.AreKRM(input); err != nil {
+		if err := kptfilev1.AreKRM(input); err != nil {
 			return nil, fmt.Errorf("input resource list must contain only KRM resources: %s", err.Error())
 		}
 		return input, nil
@@ -457,7 +457,7 @@ func adjustRelPath(resources []*yaml.RNode, relPath string) ([]*yaml.RNode, erro
 }
 
 // fnChain returns a slice of function runners given a list of functions defined in pipeline.
-func fnChain(ctx context.Context, hctx *hydrationContext, pkgPath types.UniquePath, fns []kptfilev1alpha2.Function) ([]kio.Filter, error) {
+func fnChain(ctx context.Context, hctx *hydrationContext, pkgPath types.UniquePath, fns []kptfilev1.Function) ([]kio.Filter, error) {
 	var runners []kio.Filter
 	for i := range fns {
 		fn := fns[i]
diff --git a/internal/cmdupdate/cmdupdate.go b/internal/cmdupdate/cmdupdate.go
index 10323c01..211b1e2a 100644
--- a/internal/cmdupdate/cmdupdate.go
+++ b/internal/cmdupdate/cmdupdate.go
@@ -28,7 +28,7 @@ import (
 	"github.com/GoogleContainerTools/kpt/internal/types"
 	"github.com/GoogleContainerTools/kpt/internal/util/cmdutil"
 	"github.com/GoogleContainerTools/kpt/internal/util/update"
-	kptfilev1alpha2 "github.com/GoogleContainerTools/kpt/pkg/api/kptfile/v1alpha2"
+	kptfilev1 "github.com/GoogleContainerTools/kpt/pkg/api/kptfile/v1"
 	"github.com/spf13/cobra"
 )
 
@@ -48,10 +48,10 @@ func NewRunner(ctx context.Context, parent string) *Runner {
 		SuggestFor: []string{"rebase", "replace"},
 	}
 
-	c.Flags().StringVar(&r.strategy, "strategy", string(kptfilev1alpha2.ResourceMerge),
+	c.Flags().StringVar(&r.strategy, "strategy", string(kptfilev1.ResourceMerge),
 		"the update strategy that will be used when updating the package. This will change "+
 			"the default strategy for the package -- must be one of: "+
-			strings.Join(kptfilev1alpha2.UpdateStrategiesAsStrings(), ","))
+			strings.Join(kptfilev1.UpdateStrategiesAsStrings(), ","))
 	cmdutil.FixDocs("kpt", parent, c)
 	r.Command = c
 	return r
@@ -76,9 +76,9 @@ func (r *Runner) preRunE(_ *cobra.Command, args []string) error {
 		args = append(args, pkg.CurDir)
 	}
 	if r.strategy == "" {
-		r.Update.Strategy = kptfilev1alpha2.ResourceMerge
+		r.Update.Strategy = kptfilev1.ResourceMerge
 	} else {
-		r.Update.Strategy = kptfilev1alpha2.UpdateStrategyType(r.strategy)
+		r.Update.Strategy = kptfilev1.UpdateStrategyType(r.strategy)
 	}
 
 	parts := strings.Split(args[0], "@")
diff --git a/internal/docs/generated/fndocs/docs.go b/internal/docs/generated/fndocs/docs.go
index 27e3bdaf..0e7690b5 100644
--- a/internal/docs/generated/fndocs/docs.go
+++ b/internal/docs/generated/fndocs/docs.go
@@ -59,7 +59,7 @@ Flags:
     container running the function. The value can be in ` + "`" + `key=value` + "`" + ` format or only
     the key of an already exported environment variable.
   
-  --exec-path:
+  --exec:
     Path to the local executable binary to execute as a function. ` + "`" + `eval` + "`" + ` executes
     only one function, so do not use ` + "`" + `--image` + "`" + ` flag with this flag. This is useful
     for testing function locally during development. It enables faster dev iterations
@@ -70,7 +70,7 @@ Flags:
   
   --image, i:
     Container image of the function to execute e.g. ` + "`" + `gcr.io/kpt-fn/set-namespace:v0.1` + "`" + `.
-    ` + "`" + `eval` + "`" + ` executes only one function, so do not use ` + "`" + `--exec-path` + "`" + ` flag with this flag.
+    ` + "`" + `eval` + "`" + ` executes only one function, so do not use ` + "`" + `--exec` + "`" + ` flag with this flag.
   
   --image-pull-policy:
     If the image should be pulled before rendering the package(s). It can be set
@@ -124,7 +124,7 @@ var EvalExamples = `
 
   # execute executable my-fn on the resources in DIR directory and
   # write output back to DIR
-  $ kpt fn eval DIR --exec-path ./my-fn
+  $ kpt fn eval DIR --exec ./my-fn
 
   # execute container my-fn on the resources in DIR directory,
   # save structured results in /tmp/my-results dir and write output back to DIR
diff --git a/internal/errors/resolver/pkg.go b/internal/errors/resolver/pkg.go
index 6030b755..3fc3a857 100644
--- a/internal/errors/resolver/pkg.go
+++ b/internal/errors/resolver/pkg.go
@@ -19,7 +19,7 @@ import (
 
 	"github.com/GoogleContainerTools/kpt/internal/errors"
 	"github.com/GoogleContainerTools/kpt/internal/pkg"
-	kptfile "github.com/GoogleContainerTools/kpt/pkg/api/kptfile/v1alpha2"
+	kptfile "github.com/GoogleContainerTools/kpt/pkg/api/kptfile/v1"
 )
 
 //nolint:gochecknoinits
diff --git a/internal/fnruntime/container.go b/internal/fnruntime/container.go
index 5f8cff20..d6bf071f 100644
--- a/internal/fnruntime/container.go
+++ b/internal/fnruntime/container.go
@@ -26,7 +26,7 @@ import (
 
 	"github.com/GoogleContainerTools/kpt/internal/printer"
 	"github.com/GoogleContainerTools/kpt/internal/types"
-	fnresult "github.com/GoogleContainerTools/kpt/pkg/api/fnresult/v1alpha2"
+	fnresult "github.com/GoogleContainerTools/kpt/pkg/api/fnresult/v1"
 	"sigs.k8s.io/kustomize/kyaml/fn/runtime/runtimeutil"
 )
 
diff --git a/internal/fnruntime/exec.go b/internal/fnruntime/exec.go
index eff85f28..514429fd 100644
--- a/internal/fnruntime/exec.go
+++ b/internal/fnruntime/exec.go
@@ -24,7 +24,7 @@ import (
 	"time"
 
 	"github.com/GoogleContainerTools/kpt/internal/printer"
-	fnresult "github.com/GoogleContainerTools/kpt/pkg/api/fnresult/v1alpha2"
+	fnresult "github.com/GoogleContainerTools/kpt/pkg/api/fnresult/v1"
 )
 
 type ExecFn struct {
diff --git a/internal/fnruntime/runner.go b/internal/fnruntime/runner.go
index 72197d89..9046b3a8 100644
--- a/internal/fnruntime/runner.go
+++ b/internal/fnruntime/runner.go
@@ -27,8 +27,8 @@ import (
 	"github.com/GoogleContainerTools/kpt/internal/errors"
 	"github.com/GoogleContainerTools/kpt/internal/printer"
 	"github.com/GoogleContainerTools/kpt/internal/types"
-	fnresult "github.com/GoogleContainerTools/kpt/pkg/api/fnresult/v1alpha2"
-	kptfilev1alpha2 "github.com/GoogleContainerTools/kpt/pkg/api/kptfile/v1alpha2"
+	fnresult "github.com/GoogleContainerTools/kpt/pkg/api/fnresult/v1"
+	kptfilev1 "github.com/GoogleContainerTools/kpt/pkg/api/kptfile/v1"
 	"sigs.k8s.io/kustomize/kyaml/fn/framework"
 	"sigs.k8s.io/kustomize/kyaml/fn/runtime/runtimeutil"
 	"sigs.k8s.io/kustomize/kyaml/kio"
@@ -39,7 +39,7 @@ import (
 // NewContainerRunner returns a kio.Filter given a specification of a container function
 // and it's config.
 func NewContainerRunner(
-	ctx context.Context, f *kptfilev1alpha2.Function,
+	ctx context.Context, f *kptfilev1.Function,
 	pkgPath types.UniquePath, fnResults *fnresult.ResultList,
 	imagePullPolicy ImagePullPolicy) (kio.Filter, error) {
 	config, err := newFnConfig(f, pkgPath)
@@ -124,7 +124,7 @@ func (fr *FunctionRunner) Filter(input []*yaml.RNode) (output []*yaml.RNode, err
 // do executes the kpt function and returns the modified resources.
 // fnResult is updated with the function results returned by the kpt function.
 func (fr *FunctionRunner) do(input []*yaml.RNode) (output []*yaml.RNode, err error) {
-	if krmErr := kptfilev1alpha2.AreKRM(input); krmErr != nil {
+	if krmErr := kptfilev1.AreKRM(input); krmErr != nil {
 		return output, fmt.Errorf("input resource list must contain only KRM resources: %s", krmErr.Error())
 	}
 
@@ -133,7 +133,7 @@ func (fr *FunctionRunner) do(input []*yaml.RNode) (output []*yaml.RNode, err err
 	if pathErr := enforcePathInvariants(output); pathErr != nil {
 		return output, pathErr
 	}
-	if krmErr := kptfilev1alpha2.AreKRM(output); krmErr != nil {
+	if krmErr := kptfilev1.AreKRM(output); krmErr != nil {
 		return output, fmt.Errorf("output resource list must contain only KRM resources: %s", krmErr.Error())
 	}
 
@@ -407,7 +407,7 @@ func resourceRefToString(ref yaml.ResourceIdentifier) string {
 	return s.String()
 }
 
-func newFnConfig(f *kptfilev1alpha2.Function, pkgPath types.UniquePath) (*yaml.RNode, error) {
+func newFnConfig(f *kptfilev1.Function, pkgPath types.UniquePath) (*yaml.RNode, error) {
 	const op errors.Op = "fn.readConfig"
 	var fn errors.Fn = errors.Fn(f.Image)
 
diff --git a/internal/fnruntime/utils.go b/internal/fnruntime/utils.go
index 854ba985..3a436152 100644
--- a/internal/fnruntime/utils.go
+++ b/internal/fnruntime/utils.go
@@ -19,7 +19,7 @@ import (
 	"io/ioutil"
 	"path/filepath"
 
-	fnresult "github.com/GoogleContainerTools/kpt/pkg/api/fnresult/v1alpha2"
+	fnresult "github.com/GoogleContainerTools/kpt/pkg/api/fnresult/v1"
 	"sigs.k8s.io/kustomize/kyaml/yaml"
 )
 
diff --git a/internal/pkg/pkg.go b/internal/pkg/pkg.go
index ad39eb6a..d3d56921 100644
--- a/internal/pkg/pkg.go
+++ b/internal/pkg/pkg.go
@@ -27,7 +27,7 @@ import (
 	"github.com/GoogleContainerTools/kpt/internal/errors"
 	"github.com/GoogleContainerTools/kpt/internal/types"
 	"github.com/GoogleContainerTools/kpt/internal/util/git"
-	kptfilev1alpha2 "github.com/GoogleContainerTools/kpt/pkg/api/kptfile/v1alpha2"
+	kptfilev1 "github.com/GoogleContainerTools/kpt/pkg/api/kptfile/v1"
 	"k8s.io/apimachinery/pkg/runtime/schema"
 	"k8s.io/kubectl/pkg/util/slice"
 	"sigs.k8s.io/kustomize/kyaml/kio"
@@ -41,6 +41,11 @@ const ParentDir = ".."
 
 var DeprecatedKptfileVersions = []string{
 	"v1alpha1",
+	"v1alpha2",
+}
+
+var SupportedKptfileVersions = []string{
+	kptfilev1.KptFileVersion,
 }
 
 // KptfileError records errors regarding reading or parsing of a Kptfile.
@@ -109,7 +114,7 @@ type Pkg struct {
 
 	// A package can contain zero or one Kptfile meta resource.
 	// A nil value represents an implicit package.
-	kptfile *kptfilev1alpha2.KptFile
+	kptfile *kptfilev1.KptFile
 }
 
 // New returns a pkg given an absolute or relative OS-defined path.
@@ -139,7 +144,7 @@ func New(path string) (*Pkg, error) {
 
 // Kptfile returns the Kptfile meta resource by lazy loading it from the filesytem.
 // A nil value represents an implicit package.
-func (p *Pkg) Kptfile() (*kptfilev1alpha2.KptFile, error) {
+func (p *Pkg) Kptfile() (*kptfilev1.KptFile, error) {
 	if p.kptfile == nil {
 		kf, err := ReadKptfile(p.UniquePath.String())
 		if err != nil {
@@ -156,8 +161,8 @@ func (p *Pkg) Kptfile() (*kptfilev1alpha2.KptFile, error) {
 // of Kptfile in code. One option is to follow Kubernetes approach to
 // have an internal version of Kptfile that all the code uses. In that case,
 // we will have to implement pieces for IO/Conversion with right interfaces.
-func ReadKptfile(p string) (*kptfilev1alpha2.KptFile, error) {
-	f, err := os.Open(filepath.Join(p, kptfilev1alpha2.KptFileName))
+func ReadKptfile(p string) (*kptfilev1.KptFile, error) {
+	f, err := os.Open(filepath.Join(p, kptfilev1.KptFileName))
 	if err != nil {
 		return nil, &KptfileError{
 			Path: types.UniquePath(p),
@@ -176,8 +181,8 @@ func ReadKptfile(p string) (*kptfilev1alpha2.KptFile, error) {
 	return kf, nil
 }
 
-func DecodeKptfile(in io.Reader) (*kptfilev1alpha2.KptFile, error) {
-	kf := &kptfilev1alpha2.KptFile{}
+func DecodeKptfile(in io.Reader) (*kptfilev1.KptFile, error) {
+	kf := &kptfilev1.KptFile{}
 	c, err := io.ReadAll(in)
 	if err != nil {
 		return kf, err
@@ -218,14 +223,14 @@ func CheckKptfileVersion(content []byte) error {
 
 	switch {
 	// If the resource type matches what we are looking for, just return nil.
-	case gv.Group == kptfilev1alpha2.KptFileGroup &&
-		gv.Version == kptfilev1alpha2.KptFileVersion &&
-		kind == kptfilev1alpha2.KptFileKind:
+	case gv.Group == kptfilev1.KptFileGroup &&
+		kind == kptfilev1.KptFileKind &&
+		isSupportedKptfileVersion(gv.Version):
 		return nil
 	// If the kind and group is correct and the version is a known deprecated
 	// schema for the Kptfile, return DeprecatedKptfileError.
-	case gv.Group == kptfilev1alpha2.KptFileGroup &&
-		kind == kptfilev1alpha2.KptFileKind &&
+	case gv.Group == kptfilev1.KptFileGroup &&
+		kind == kptfilev1.KptFileKind &&
 		isDeprecatedKptfileVersion(gv.Version):
 		return &DeprecatedKptfileError{
 			Version: gv.Version,
@@ -243,16 +248,20 @@ func isDeprecatedKptfileVersion(version string) bool {
 	return slice.ContainsString(DeprecatedKptfileVersions, version, nil)
 }
 
+func isSupportedKptfileVersion(version string) bool {
+	return slice.ContainsString(SupportedKptfileVersions, version, nil)
+}
+
 // Pipeline returns the Pipeline section of the pkg's Kptfile.
 // if pipeline is not specified in a Kptfile, it returns Zero value of the pipeline.
-func (p *Pkg) Pipeline() (*kptfilev1alpha2.Pipeline, error) {
+func (p *Pkg) Pipeline() (*kptfilev1.Pipeline, error) {
 	kf, err := p.Kptfile()
 	if err != nil {
 		return nil, err
 	}
 	pl := kf.Pipeline
 	if pl == nil {
-		return &kptfilev1alpha2.Pipeline{}, nil
+		return &kptfilev1.Pipeline{}, nil
 	}
 	return pl, nil
 }
@@ -426,7 +435,7 @@ func Subpackages(rootPath string, matcher SubpackageMatcher, recursive bool) ([]
 // IsPackageDir checks if there exists a Kptfile on the provided path, i.e.
 // whether the provided path is the root of a package.
 func IsPackageDir(path string) (bool, error) {
-	_, err := os.Stat(filepath.Join(path, kptfilev1alpha2.KptFileName))
+	_, err := os.Stat(filepath.Join(path, kptfilev1.KptFileName))
 
 	// If we got an error that wasn't IsNotExist, something went wrong and
 	// we don't really know if the file exists or not.
@@ -471,7 +480,7 @@ func (p *Pkg) LocalResources(includeMetaResources bool) (resources []*yaml.RNode
 
 	pkgReader := &kio.LocalPackageReader{
 		PackagePath:        string(p.UniquePath),
-		PackageFileName:    kptfilev1alpha2.KptFileName,
+		PackageFileName:    kptfilev1.KptFileName,
 		IncludeSubpackages: false,
 		MatchFilesGlob:     kio.MatchAll,
 	}
@@ -517,7 +526,7 @@ func (p *Pkg) ValidatePipeline() error {
 
 	for i, fn := range pl.Mutators {
 		if fn.ConfigPath != "" && !resourcesByPath.Has(filepath.Clean(fn.ConfigPath)) {
-			return &kptfilev1alpha2.ValidateError{
+			return &kptfilev1.ValidateError{
 				Field:  fmt.Sprintf("pipeline.%s[%d].configPath", "mutators", i),
 				Value:  fn.ConfigPath,
 				Reason: "functionConfig must exist in the current package",
@@ -526,7 +535,7 @@ func (p *Pkg) ValidatePipeline() error {
 	}
 	for i, fn := range pl.Validators {
 		if fn.ConfigPath != "" && !resourcesByPath.Has(filepath.Clean(fn.ConfigPath)) {
-			return &kptfilev1alpha2.ValidateError{
+			return &kptfilev1.ValidateError{
 				Field:  fmt.Sprintf("pipeline.%s[%d].configPath", "validators", i),
 				Value:  fn.ConfigPath,
 				Reason: "functionConfig must exist in the current package",
@@ -537,7 +546,7 @@ func (p *Pkg) ValidatePipeline() error {
 }
 
 // filterMetaResources filters kpt metadata files such as Kptfile, function configs.
-func filterMetaResources(input []*yaml.RNode, pl *kptfilev1alpha2.Pipeline) (output []*yaml.RNode, err error) {
+func filterMetaResources(input []*yaml.RNode, pl *kptfilev1.Pipeline) (output []*yaml.RNode, err error) {
 	pathsToExclude := fnConfigFilePaths(pl)
 	for _, r := range input {
 		meta, err := r.GetMeta()
@@ -563,7 +572,7 @@ func filterMetaResources(input []*yaml.RNode, pl *kptfilev1alpha2.Pipeline) (out
 
 // fnConfigFilePaths returns paths to function config files referred in the
 // given pipeline.
-func fnConfigFilePaths(pl *kptfilev1alpha2.Pipeline) (fnConfigPaths sets.String) {
+func fnConfigFilePaths(pl *kptfilev1.Pipeline) (fnConfigPaths sets.String) {
 	if pl == nil {
 		return nil
 	}
diff --git a/internal/util/diff/diff.go b/internal/util/diff/diff.go
index aee4c110..e2f3a20e 100644
--- a/internal/util/diff/diff.go
+++ b/internal/util/diff/diff.go
@@ -30,7 +30,7 @@ import (
 	"github.com/GoogleContainerTools/kpt/internal/util/addmergecomment"
 	"github.com/GoogleContainerTools/kpt/internal/util/fetch"
 	"github.com/GoogleContainerTools/kpt/internal/util/pkgutil"
-	kptfilev1alpha2 "github.com/GoogleContainerTools/kpt/pkg/api/kptfile/v1alpha2"
+	kptfilev1 "github.com/GoogleContainerTools/kpt/pkg/api/kptfile/v1"
 	"github.com/GoogleContainerTools/kpt/pkg/kptfile/kptfileutil"
 	"sigs.k8s.io/kustomize/kyaml/errors"
 )
@@ -312,7 +312,7 @@ func (d *defaultPkgDiffer) Diff(pkgs ...string) error {
 // prepareForDiff removes metadata such as .git and Kptfile from a staged package
 // to exclude them from diffing.
 func (d *defaultPkgDiffer) prepareForDiff(dir string) error {
-	excludePaths := []string{".git", kptfilev1alpha2.KptFileName}
+	excludePaths := []string{".git", kptfilev1.KptFileName}
 	for _, path := range excludePaths {
 		path = filepath.Join(dir, path)
 		if err := os.RemoveAll(path); err != nil {
@@ -343,9 +343,9 @@ func (pg defaultPkgGetter) GetPkg(ctx context.Context, stagingDir, targetDir, re
 
 	name := filepath.Base(dir)
 	kf := kptfileutil.DefaultKptfile(name)
-	kf.Upstream = &kptfilev1alpha2.Upstream{
-		Type: kptfilev1alpha2.GitOrigin,
-		Git: &kptfilev1alpha2.Git{
+	kf.Upstream = &kptfilev1.Upstream{
+		Type: kptfilev1.GitOrigin,
+		Git: &kptfilev1.Git{
 			Repo:      repo,
 			Directory: path,
 			Ref:       ref,
diff --git a/internal/util/diff/pkgdiff.go b/internal/util/diff/pkgdiff.go
index cf785da7..c4d3550e 100644
--- a/internal/util/diff/pkgdiff.go
+++ b/internal/util/diff/pkgdiff.go
@@ -22,7 +22,7 @@ import (
 
 	"github.com/GoogleContainerTools/kpt/internal/pkg"
 	"github.com/GoogleContainerTools/kpt/internal/util/pkgutil"
-	kptfilev1alpha2 "github.com/GoogleContainerTools/kpt/pkg/api/kptfile/v1alpha2"
+	kptfilev1 "github.com/GoogleContainerTools/kpt/pkg/api/kptfile/v1"
 	"sigs.k8s.io/kustomize/kyaml/sets"
 	"sigs.k8s.io/kustomize/kyaml/yaml"
 )
@@ -51,7 +51,7 @@ func PkgDiff(pkg1, pkg2 string) (sets.String, error) {
 		}
 
 		fileName := filepath.Base(f)
-		if fileName == kptfilev1alpha2.KptFileName {
+		if fileName == kptfilev1.KptFileName {
 			equal, err := kptfilesEqual(pkg1, pkg2, f)
 			if err != nil {
 				return diff, err
@@ -87,10 +87,10 @@ func kptfilesEqual(pkg1, pkg2, filePath string) (bool, error) {
 	}
 
 	// Diffs in Upstream and UpstreamLock should be ignored.
-	pkg1Kf.Upstream = &kptfilev1alpha2.Upstream{}
-	pkg1Kf.UpstreamLock = &kptfilev1alpha2.UpstreamLock{}
-	pkg2Kf.Upstream = &kptfilev1alpha2.Upstream{}
-	pkg2Kf.UpstreamLock = &kptfilev1alpha2.UpstreamLock{}
+	pkg1Kf.Upstream = &kptfilev1.Upstream{}
+	pkg1Kf.UpstreamLock = &kptfilev1.UpstreamLock{}
+	pkg2Kf.Upstream = &kptfilev1.Upstream{}
+	pkg2Kf.UpstreamLock = &kptfilev1.UpstreamLock{}
 
 	pkg1Bytes, err := yaml.Marshal(pkg1Kf)
 	if err != nil {
diff --git a/internal/util/fetch/fetch.go b/internal/util/fetch/fetch.go
index d0846437..987f6b3d 100644
--- a/internal/util/fetch/fetch.go
+++ b/internal/util/fetch/fetch.go
@@ -30,7 +30,7 @@ import (
 	"github.com/GoogleContainerTools/kpt/internal/types"
 	"github.com/GoogleContainerTools/kpt/internal/util/git"
 	"github.com/GoogleContainerTools/kpt/internal/util/pkgutil"
-	kptfilev1alpha2 "github.com/GoogleContainerTools/kpt/pkg/api/kptfile/v1alpha2"
+	kptfilev1 "github.com/GoogleContainerTools/kpt/pkg/api/kptfile/v1"
 	"github.com/GoogleContainerTools/kpt/pkg/kptfile/kptfileutil"
 	"sigs.k8s.io/kustomize/kyaml/copyutil"
 )
@@ -69,7 +69,7 @@ func (c Command) Run(ctx context.Context) error {
 
 // validate makes sure the Kptfile has the necessary information to fetch
 // the package.
-func (c Command) validate(kf *kptfilev1alpha2.KptFile) error {
+func (c Command) validate(kf *kptfilev1.KptFile) error {
 	const op errors.Op = "validate"
 	if kf.Upstream == nil {
 		return errors.E(op, errors.MissingParam, fmt.Errorf("kptfile doesn't contain upstream information"))
diff --git a/internal/util/get/get.go b/internal/util/get/get.go
index cadd6b78..77a2f401 100644
--- a/internal/util/get/get.go
+++ b/internal/util/get/get.go
@@ -31,7 +31,7 @@ import (
 	"github.com/GoogleContainerTools/kpt/internal/util/addmergecomment"
 	"github.com/GoogleContainerTools/kpt/internal/util/fetch"
 	"github.com/GoogleContainerTools/kpt/internal/util/stack"
-	kptfilev1alpha2 "github.com/GoogleContainerTools/kpt/pkg/api/kptfile/v1alpha2"
+	kptfilev1 "github.com/GoogleContainerTools/kpt/pkg/api/kptfile/v1"
 	"github.com/GoogleContainerTools/kpt/pkg/kptfile/kptfileutil"
 )
 
@@ -39,7 +39,7 @@ import (
 // directory, and expands any remote subpackages.
 type Command struct {
 	// Git contains information about the git repo to fetch
-	Git *kptfilev1alpha2.Git
+	Git *kptfilev1.Git
 
 	// Destination is the output directory to clone the package to.  Defaults to the name of the package --
 	// either the base repo name, or the base subdirectory name.
@@ -51,7 +51,7 @@ type Command struct {
 	// UpdateStrategy is the strategy that will be configured in the package
 	// Kptfile. This determines how changes will be merged when updating the
 	// package.
-	UpdateStrategy kptfilev1alpha2.UpdateStrategyType
+	UpdateStrategy kptfilev1.UpdateStrategyType
 }
 
 // Run runs the Command.
@@ -78,8 +78,8 @@ func (c Command) Run(ctx context.Context) error {
 	c.Git.Directory = repoDir
 
 	kf := kptfileutil.DefaultKptfile(c.Name)
-	kf.Upstream = &kptfilev1alpha2.Upstream{
-		Type:           kptfilev1alpha2.GitOrigin,
+	kf.Upstream = &kptfilev1.Upstream{
+		Type:           kptfilev1.GitOrigin,
 		Git:            c.Git,
 		UpdateStrategy: c.UpdateStrategy,
 	}
@@ -179,7 +179,7 @@ func (c *Command) DefaultValues() error {
 
 	// default the update strategy to resource-merge
 	if len(c.UpdateStrategy) == 0 {
-		c.UpdateStrategy = kptfilev1alpha2.ResourceMerge
+		c.UpdateStrategy = kptfilev1.ResourceMerge
 	}
 
 	return nil
diff --git a/internal/util/man/man.go b/internal/util/man/man.go
index 53d58d31..ba1a8ce0 100644
--- a/internal/util/man/man.go
+++ b/internal/util/man/man.go
@@ -26,7 +26,7 @@ import (
 	"strings"
 
 	"github.com/GoogleContainerTools/kpt/internal/pkg"
-	"github.com/GoogleContainerTools/kpt/pkg/api/kptfile/v1alpha2"
+	v1 "github.com/GoogleContainerTools/kpt/pkg/api/kptfile/v1"
 	"github.com/cpuguy83/go-md2man/v2/md2man"
 	"sigs.k8s.io/kustomize/kyaml/errors"
 )
@@ -63,7 +63,7 @@ func (m Command) Run() error {
 		return err
 	}
 	if k.Info == nil {
-		k.Info = &v1alpha2.PackageInfo{}
+		k.Info = &v1.PackageInfo{}
 	}
 
 	if k.Info.Man == "" {
diff --git a/internal/util/merge/merge3.go b/internal/util/merge/merge3.go
index 33610547..c4ac5cfb 100644
--- a/internal/util/merge/merge3.go
+++ b/internal/util/merge/merge3.go
@@ -18,7 +18,7 @@ import (
 	"path/filepath"
 	"strings"
 
-	kptfilev1alpha2 "github.com/GoogleContainerTools/kpt/pkg/api/kptfile/v1alpha2"
+	kptfilev1 "github.com/GoogleContainerTools/kpt/pkg/api/kptfile/v1"
 	"sigs.k8s.io/kustomize/kyaml/kio"
 	"sigs.k8s.io/kustomize/kyaml/kio/filters"
 	"sigs.k8s.io/kustomize/kyaml/kio/kioutil"
@@ -68,7 +68,7 @@ func (m Merge3) Merge() error {
 		MatchFilesGlob:     m.MatchFilesGlob,
 		SetAnnotations:     map[string]string{mergeSourceAnnotation: mergeSourceDest},
 		IncludeSubpackages: m.IncludeSubPackages,
-		PackageFileName:    kptfilev1alpha2.KptFileName,
+		PackageFileName:    kptfilev1.KptFileName,
 	}
 	inputs = append(inputs, dest)
 
@@ -79,7 +79,7 @@ func (m Merge3) Merge() error {
 			MatchFilesGlob:     m.MatchFilesGlob,
 			SetAnnotations:     map[string]string{mergeSourceAnnotation: mergeSourceOriginal},
 			IncludeSubpackages: m.IncludeSubPackages,
-			PackageFileName:    kptfilev1alpha2.KptFileName,
+			PackageFileName:    kptfilev1.KptFileName,
 		},
 		Exclusions: relPaths,
 	})
@@ -91,7 +91,7 @@ func (m Merge3) Merge() error {
 			MatchFilesGlob:     m.MatchFilesGlob,
 			SetAnnotations:     map[string]string{mergeSourceAnnotation: mergeSourceUpdated},
 			IncludeSubpackages: m.IncludeSubPackages,
-			PackageFileName:    kptfilev1alpha2.KptFileName,
+			PackageFileName:    kptfilev1.KptFileName,
 		},
 		Exclusions: relPaths,
 	})
@@ -108,7 +108,7 @@ func (m Merge3) Merge() error {
 
 func (m Merge3) findExclusions() ([]string, error) {
 	var relPaths []string
-	paths, err := pathutil.DirsWithFile(m.DestPath, kptfilev1alpha2.KptFileName, true)
+	paths, err := pathutil.DirsWithFile(m.DestPath, kptfilev1.KptFileName, true)
 	if err != nil {
 		return relPaths, err
 	}
diff --git a/internal/util/parse/parse.go b/internal/util/parse/parse.go
index 296be83e..2cd3c1fe 100644
--- a/internal/util/parse/parse.go
+++ b/internal/util/parse/parse.go
@@ -22,12 +22,12 @@ import (
 	"strings"
 
 	"github.com/GoogleContainerTools/kpt/internal/gitutil"
-	kptfilev1alpha2 "github.com/GoogleContainerTools/kpt/pkg/api/kptfile/v1alpha2"
+	kptfilev1 "github.com/GoogleContainerTools/kpt/pkg/api/kptfile/v1"
 	"sigs.k8s.io/kustomize/kyaml/errors"
 )
 
 type Target struct {
-	kptfilev1alpha2.Git
+	kptfilev1.Git
 	Destination string
 }
 
diff --git a/internal/util/pkgutil/pkgutil.go b/internal/util/pkgutil/pkgutil.go
index a5a1a395..c46198fb 100644
--- a/internal/util/pkgutil/pkgutil.go
+++ b/internal/util/pkgutil/pkgutil.go
@@ -23,7 +23,7 @@ import (
 	"strings"
 
 	"github.com/GoogleContainerTools/kpt/internal/pkg"
-	kptfilev1alpha2 "github.com/GoogleContainerTools/kpt/pkg/api/kptfile/v1alpha2"
+	kptfilev1 "github.com/GoogleContainerTools/kpt/pkg/api/kptfile/v1"
 	"github.com/GoogleContainerTools/kpt/pkg/kptfile/kptfileutil"
 	"sigs.k8s.io/kustomize/kyaml/copyutil"
 	"sigs.k8s.io/kustomize/kyaml/kio"
@@ -53,7 +53,7 @@ func WalkPackage(src string, c func(string, os.FileInfo, error) error) error {
 		}
 
 		if info.IsDir() {
-			_, err := os.Stat(filepath.Join(path, kptfilev1alpha2.KptFileName))
+			_, err := os.Stat(filepath.Join(path, kptfilev1.KptFileName))
 			if err != nil && !os.IsNotExist(err) {
 				return c(path, info, err)
 			}
@@ -98,7 +98,7 @@ func CopyPackage(src, dst string, copyRootKptfile bool, matcher pkg.SubpackageMa
 			return os.MkdirAll(filepath.Join(dst, copyTo), info.Mode())
 		}
 
-		if path == filepath.Join(src, kptfilev1alpha2.KptFileName) && !copyRootKptfile {
+		if path == filepath.Join(src, kptfilev1.KptFileName) && !copyRootKptfile {
 			return nil
 		}
 
@@ -191,7 +191,7 @@ func RemovePackageContent(path string, removeRootKptfile bool) error {
 			return nil
 		}
 
-		if p == filepath.Join(path, kptfilev1alpha2.KptFileName) && !removeRootKptfile {
+		if p == filepath.Join(path, kptfilev1.KptFileName) && !removeRootKptfile {
 			return nil
 		}
 
@@ -285,7 +285,7 @@ func FindSubpackagesForPaths(matcher pkg.SubpackageMatcher, recurse bool, pkgPat
 func FormatPackage(pkgPath string) {
 	inout := &kio.LocalPackageReadWriter{
 		PackagePath:    pkgPath,
-		MatchFilesGlob: append(kio.DefaultMatch, kptfilev1alpha2.KptFileName),
+		MatchFilesGlob: append(kio.DefaultMatch, kptfilev1.KptFileName),
 	}
 	f := &filters.FormatFilter{
 		UseSchema: true,
diff --git a/internal/util/update/fastforward.go b/internal/util/update/fastforward.go
index 6bc10bf2..0319ed1b 100644
--- a/internal/util/update/fastforward.go
+++ b/internal/util/update/fastforward.go
@@ -24,7 +24,7 @@ import (
 	"github.com/GoogleContainerTools/kpt/internal/types"
 	pkgdiff "github.com/GoogleContainerTools/kpt/internal/util/diff"
 	"github.com/GoogleContainerTools/kpt/internal/util/pkgutil"
-	kptfilev1alpha2 "github.com/GoogleContainerTools/kpt/pkg/api/kptfile/v1alpha2"
+	kptfilev1 "github.com/GoogleContainerTools/kpt/pkg/api/kptfile/v1"
 	"github.com/GoogleContainerTools/kpt/pkg/kptfile/kptfileutil"
 	"sigs.k8s.io/kustomize/kyaml/sets"
 )
@@ -37,7 +37,7 @@ type FastForwardUpdater struct{}
 
 var kptfileSet = func() sets.String {
 	s := sets.String{}
-	s.Insert(kptfilev1alpha2.KptFileName)
+	s.Insert(kptfilev1.KptFileName)
 	return s
 }()
 
@@ -94,7 +94,7 @@ func (u FastForwardUpdater) checkForLocalChanges(localPath, originalPath string)
 		// If the original package didn't have a Kptfile, one was created
 		// in local, but we don't consider that a change unless the user
 		// has made additional changes.
-		if d.Has(kptfilev1alpha2.KptFileName) && subPkgPath == "." {
+		if d.Has(kptfilev1.KptFileName) && subPkgPath == "." {
 			hasDiff, err := hasKfDiff(localSubPkgPath, originalSubPkgPath)
 			if err != nil {
 				return errors.E(op, types.UniquePath(localSubPkgPath), err)
@@ -123,7 +123,7 @@ func hasKfDiff(localPath, orgPath string) (bool, error) {
 	localKf.Upstream = nil
 	localKf.UpstreamLock = nil
 
-	_, err = os.Stat(filepath.Join(orgPath, kptfilev1alpha2.KptFileName))
+	_, err = os.Stat(filepath.Join(orgPath, kptfilev1.KptFileName))
 	if err != nil {
 		if os.IsNotExist(err) {
 			// We know that there aren't any Kptfile in the original
@@ -151,7 +151,7 @@ func hasKfDiff(localPath, orgPath string) (bool, error) {
 	return !equal, nil
 }
 
-func isDefaultKptfile(localKf *kptfilev1alpha2.KptFile, name string) (bool, error) {
+func isDefaultKptfile(localKf *kptfilev1.KptFile, name string) (bool, error) {
 	defaultKf := kptfileutil.DefaultKptfile(name)
 	return kptfileutil.Equal(localKf, defaultKf)
 }
diff --git a/internal/util/update/resource-merge.go b/internal/util/update/resource-merge.go
index 4703272a..64681bbe 100644
--- a/internal/util/update/resource-merge.go
+++ b/internal/util/update/resource-merge.go
@@ -27,7 +27,7 @@ import (
 	"github.com/GoogleContainerTools/kpt/internal/types"
 	"github.com/GoogleContainerTools/kpt/internal/util/merge"
 	"github.com/GoogleContainerTools/kpt/internal/util/pkgutil"
-	kptfilev1alpha2 "github.com/GoogleContainerTools/kpt/pkg/api/kptfile/v1alpha2"
+	kptfilev1 "github.com/GoogleContainerTools/kpt/pkg/api/kptfile/v1"
 	"github.com/GoogleContainerTools/kpt/pkg/kptfile/kptfileutil"
 	"sigs.k8s.io/kustomize/kyaml/copyutil"
 	"sigs.k8s.io/kustomize/kyaml/kio"
@@ -280,7 +280,7 @@ func getSubDirsAndNonKrmFiles(root string) (sets.String, sets.String, error) {
 	return dirs, files, nil
 }
 
-var krmFilesGlob = append([]string{kptfilev1alpha2.KptFileName}, kio.DefaultMatch...)
+var krmFilesGlob = append([]string{kptfilev1.KptFileName}, kio.DefaultMatch...)
 
 // isKrmFile checks if the file pointed to by the path is a yaml file (including
 // the Kptfile).
diff --git a/internal/util/update/update.go b/internal/util/update/update.go
index 28360024..3434bfc0 100644
--- a/internal/util/update/update.go
+++ b/internal/util/update/update.go
@@ -33,7 +33,7 @@ import (
 	"github.com/GoogleContainerTools/kpt/internal/util/git"
 	"github.com/GoogleContainerTools/kpt/internal/util/pkgutil"
 	"github.com/GoogleContainerTools/kpt/internal/util/stack"
-	kptfilev1alpha2 "github.com/GoogleContainerTools/kpt/pkg/api/kptfile/v1alpha2"
+	kptfilev1 "github.com/GoogleContainerTools/kpt/pkg/api/kptfile/v1"
 	"github.com/GoogleContainerTools/kpt/pkg/kptfile/kptfileutil"
 	"sigs.k8s.io/kustomize/kyaml/copyutil"
 )
@@ -85,10 +85,10 @@ type Updater interface {
 	Update(options UpdateOptions) error
 }
 
-var strategies = map[kptfilev1alpha2.UpdateStrategyType]func() Updater{
-	kptfilev1alpha2.FastForward:        func() Updater { return FastForwardUpdater{} },
-	kptfilev1alpha2.ForceDeleteReplace: func() Updater { return ReplaceUpdater{} },
-	kptfilev1alpha2.ResourceMerge:      func() Updater { return ResourceMergeUpdater{} },
+var strategies = map[kptfilev1.UpdateStrategyType]func() Updater{
+	kptfilev1.FastForward:        func() Updater { return FastForwardUpdater{} },
+	kptfilev1.ForceDeleteReplace: func() Updater { return ReplaceUpdater{} },
+	kptfilev1.ResourceMerge:      func() Updater { return ResourceMergeUpdater{} },
 }
 
 // Command updates the contents of a local package to a different version.
@@ -100,7 +100,7 @@ type Command struct {
 	Ref string
 
 	// Strategy is the update strategy to use
-	Strategy kptfilev1alpha2.UpdateStrategyType
+	Strategy kptfilev1.UpdateStrategyType
 }
 
 // Run runs the Command.
diff --git a/package-examples/helloworld-set/Kptfile b/package-examples/helloworld-set/Kptfile
index 06f58ed8..38e5bd52 100644
--- a/package-examples/helloworld-set/Kptfile
+++ b/package-examples/helloworld-set/Kptfile
@@ -1,4 +1,4 @@
-apiVersion: kpt.dev/v1alpha2
+apiVersion: kpt.dev/v1
 kind: Kptfile
 metadata:
   name: helloworld-set
diff --git a/package-examples/helloworld-tshirt/Kptfile b/package-examples/helloworld-tshirt/Kptfile
index 1e6ac739..8e1a7eb9 100644
--- a/package-examples/helloworld-tshirt/Kptfile
+++ b/package-examples/helloworld-tshirt/Kptfile
@@ -1,4 +1,4 @@
-apiVersion: kpt.dev/v1alpha2
+apiVersion: kpt.dev/v1
 kind: Kptfile
 metadata:
   name: helloworld-tshirt
@@ -7,4 +7,4 @@ pipeline:
     - image: gcr.io/kpt-fn/apply-setters:unstable
       configMap:
         tshirt-size: small
-    - image: gcr.io/kustomize-functions/example-tshirt:v0.1.0
\ No newline at end of file
+    - image: gcr.io/kustomize-functions/example-tshirt:v0.1.0
diff --git a/package-examples/helloworld/Kptfile b/package-examples/helloworld/Kptfile
index 396636fe..892c6b4a 100644
--- a/package-examples/helloworld/Kptfile
+++ b/package-examples/helloworld/Kptfile
@@ -1,4 +1,4 @@
-apiVersion: kpt.dev/v1alpha2
+apiVersion: kpt.dev/v1
 kind: Kptfile
 metadata:
   name: helloworld
diff --git a/package-examples/kustomize/Kptfile b/package-examples/kustomize/Kptfile
index b83f8775..380fe6c2 100644
--- a/package-examples/kustomize/Kptfile
+++ b/package-examples/kustomize/Kptfile
@@ -1,4 +1,4 @@
-apiVersion: kpt.dev/v1alpha2
+apiVersion: kpt.dev/v1
 kind: Kptfile
 metadata:
   name: kustomize-pkg
diff --git a/package-examples/kustomize/README.md b/package-examples/kustomize/README.md
index 79d8fee7..59c2433e 100644
--- a/package-examples/kustomize/README.md
+++ b/package-examples/kustomize/README.md
@@ -107,7 +107,7 @@ spec:
         ports:
         - containerPort: 80
 ---
-apiVersion: kpt.dev/v1alpha2
+apiVersion: kpt.dev/v1
 info:
   description: sample description
 kind: Kptfile
diff --git a/package-examples/kustomize/bases/nginx/Kptfile b/package-examples/kustomize/bases/nginx/Kptfile
index 4f6f5899..b6a579d7 100644
--- a/package-examples/kustomize/bases/nginx/Kptfile
+++ b/package-examples/kustomize/bases/nginx/Kptfile
@@ -1,4 +1,4 @@
-apiVersion: kpt.dev/v1alpha2
+apiVersion: kpt.dev/v1
 kind: Kptfile
 metadata:
   name: nginx
diff --git a/package-examples/kustomize/overlays/dev/Kptfile b/package-examples/kustomize/overlays/dev/Kptfile
index f41581e8..aba27dc7 100644
--- a/package-examples/kustomize/overlays/dev/Kptfile
+++ b/package-examples/kustomize/overlays/dev/Kptfile
@@ -1,4 +1,4 @@
-apiVersion: kpt.dev/v1alpha2
+apiVersion: kpt.dev/v1
 kind: Kptfile
 metadata:
   name: dev
diff --git a/package-examples/kustomize/overlays/prod/Kptfile b/package-examples/kustomize/overlays/prod/Kptfile
index f93f8728..f4458863 100644
--- a/package-examples/kustomize/overlays/prod/Kptfile
+++ b/package-examples/kustomize/overlays/prod/Kptfile
@@ -1,4 +1,4 @@
-apiVersion: kpt.dev/v1alpha2
+apiVersion: kpt.dev/v1
 kind: Kptfile
 metadata:
   name: prod
diff --git a/package-examples/nginx/Kptfile b/package-examples/nginx/Kptfile
index 3cb9d11c..a26f3990 100644
--- a/package-examples/nginx/Kptfile
+++ b/package-examples/nginx/Kptfile
@@ -1,4 +1,4 @@
-apiVersion: kpt.dev/v1alpha2
+apiVersion: kpt.dev/v1
 kind: Kptfile
 metadata:
   name: nginx
diff --git a/package-examples/pipeline-validate/Kptfile b/package-examples/pipeline-validate/Kptfile
index b81e172e..dd0211ce 100644
--- a/package-examples/pipeline-validate/Kptfile
+++ b/package-examples/pipeline-validate/Kptfile
@@ -1,4 +1,4 @@
-apiVersion: kpt.dev/v1alpha2
+apiVersion: kpt.dev/v1
 kind: Kptfile
 metadata:
   name: kpt-pipeline-validate-example
diff --git a/package-examples/wordpress/Kptfile b/package-examples/wordpress/Kptfile
index b99b46e1..84ac62a7 100644
--- a/package-examples/wordpress/Kptfile
+++ b/package-examples/wordpress/Kptfile
@@ -1,4 +1,4 @@
-apiVersion: kpt.dev/v1alpha2
+apiVersion: kpt.dev/v1
 kind: Kptfile
 metadata:
   name: wordpress
diff --git a/package-examples/wordpress/mysql/Kptfile b/package-examples/wordpress/mysql/Kptfile
index 7fc1835b..6ccacf92 100644
--- a/package-examples/wordpress/mysql/Kptfile
+++ b/package-examples/wordpress/mysql/Kptfile
@@ -1,4 +1,4 @@
-apiVersion: kpt.dev/v1alpha2
+apiVersion: kpt.dev/v1
 kind: Kptfile
 metadata:
   name: mysql
diff --git a/pkg/api/fnresult/v1alpha2/types.go b/pkg/api/fnresult/v1/types.go
similarity index 92%
rename from pkg/api/fnresult/v1alpha2/types.go
rename to pkg/api/fnresult/v1/types.go
index cc761ca1..b5a99062 100644
--- a/pkg/api/fnresult/v1alpha2/types.go
+++ b/pkg/api/fnresult/v1/types.go
@@ -12,10 +12,10 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-package v1alpha2
+package v1
 
 import (
-	kptfilev1alpha2 "github.com/GoogleContainerTools/kpt/pkg/api/kptfile/v1alpha2"
+	kptfilev1 "github.com/GoogleContainerTools/kpt/pkg/api/kptfile/v1"
 	"sigs.k8s.io/kustomize/kyaml/fn/framework"
 	"sigs.k8s.io/kustomize/kyaml/yaml"
 )
@@ -41,8 +41,8 @@ type Result struct {
 
 const (
 	ResultListKind       = "FunctionResultList"
-	ResultListGroup      = kptfilev1alpha2.KptFileGroup
-	ResultListVersion    = kptfilev1alpha2.KptFileVersion
+	ResultListGroup      = kptfilev1.KptFileGroup
+	ResultListVersion    = kptfilev1.KptFileVersion
 	ResultListAPIVersion = ResultListGroup + "/" + ResultListVersion
 )
 
diff --git a/pkg/api/kptfile/v1alpha2/types.go b/pkg/api/kptfile/v1/types.go
similarity index 88%
rename from pkg/api/kptfile/v1alpha2/types.go
rename to pkg/api/kptfile/v1/types.go
index 42418fdd..a628b87d 100644
--- a/pkg/api/kptfile/v1alpha2/types.go
+++ b/pkg/api/kptfile/v1/types.go
@@ -12,8 +12,8 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-// Package defines the schema for Kptfile version v1alpha2.
-package v1alpha2
+// Package defines the schema for Kptfile version v1.
+package v1
 
 import (
 	"fmt"
@@ -25,7 +25,7 @@ const (
 	KptFileName       = "Kptfile"
 	KptFileKind       = "Kptfile"
 	KptFileGroup      = "kpt.dev"
-	KptFileVersion    = "v1alpha2"
+	KptFileVersion    = "v1"
 	KptFileAPIVersion = KptFileGroup + "/" + KptFileVersion
 )
 
@@ -54,30 +54,6 @@ type KptFile struct {
 
 	// Inventory contains parameters for the inventory object used in apply.
 	Inventory *Inventory `yaml:"inventory,omitempty"`
-
-	// Ignore contains a list of .gitignore patterns for files and directories
-	// that should be ignored by kpt. Files/directories that match will be
-	// fetched and updated as part of the package, but will be ignored by the other
-	// kpt functionality. The patterns will only impact resources within the
-	// same package, and it is not possible to ignore subpackages.
-	//
-	// The following patterns are supported:
-	// * Absolute path (/path/to/ignore): If the pattern has a leading slash, it will
-	//   only match the specific path underneath the package root.
-	//   Example: "/ignore.me" will only match the file if it is in the root of
-	//   the package.
-	// * Relative path (path/to/ignore): If the pattern does not have a leading slash,
-	//   it will match at any depth in the package.
-	//   Example: "ignore.me" will match all files called "ignore.me" within the
-	//   package.
-	// * Accept pattern (!path/to/accept): Negate a previous pattern so the path
-	//   will be included.
-	// * Directory pattern (path/to/directory/): If the pattern has a slash at the
-	//   end, it will only match directories.
-	// * Glob pattern (path/to/*.txt): * matches all characters except slash.
-	//
-	// Recursive patterns (path/**/ignore) are not supported.
-	Ignore []string `yaml:"ignore,omitempty"`
 }
 
 // OriginType defines the type of origin for a package.
diff --git a/pkg/api/kptfile/v1alpha2/validation.go b/pkg/api/kptfile/v1/validation.go
similarity index 99%
rename from pkg/api/kptfile/v1alpha2/validation.go
rename to pkg/api/kptfile/v1/validation.go
index ff25d706..b4b5e89d 100644
--- a/pkg/api/kptfile/v1alpha2/validation.go
+++ b/pkg/api/kptfile/v1/validation.go
@@ -12,7 +12,7 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-package v1alpha2
+package v1
 
 import (
 	"fmt"
diff --git a/pkg/kptfile/kptfileutil/util.go b/pkg/kptfile/kptfileutil/util.go
index ce32a606..3acdb0fd 100644
--- a/pkg/kptfile/kptfileutil/util.go
+++ b/pkg/kptfile/kptfileutil/util.go
@@ -27,18 +27,18 @@ import (
 	"github.com/GoogleContainerTools/kpt/internal/pkg"
 	"github.com/GoogleContainerTools/kpt/internal/types"
 	"github.com/GoogleContainerTools/kpt/internal/util/git"
-	kptfilev1alpha2 "github.com/GoogleContainerTools/kpt/pkg/api/kptfile/v1alpha2"
+	kptfilev1 "github.com/GoogleContainerTools/kpt/pkg/api/kptfile/v1"
 	"sigs.k8s.io/kustomize/kyaml/yaml"
 	"sigs.k8s.io/kustomize/kyaml/yaml/merge3"
 )
 
-func WriteFile(dir string, k *kptfilev1alpha2.KptFile) error {
+func WriteFile(dir string, k *kptfilev1.KptFile) error {
 	const op errors.Op = "kptfileutil.WriteFile"
 	b, err := yaml.Marshal(k)
 	if err != nil {
 		return err
 	}
-	if _, err := os.Stat(filepath.Join(dir, kptfilev1alpha2.KptFileName)); err != nil && !goerrors.Is(err, os.ErrNotExist) {
+	if _, err := os.Stat(filepath.Join(dir, kptfilev1.KptFileName)); err != nil && !goerrors.Is(err, os.ErrNotExist) {
 		return errors.E(op, errors.IO, types.UniquePath(dir), err)
 	}
 
@@ -55,7 +55,7 @@ func WriteFile(dir string, k *kptfilev1alpha2.KptFile) error {
 	}
 
 	// fyi: perm is ignored if the file already exists
-	err = ioutil.WriteFile(filepath.Join(dir, kptfilev1alpha2.KptFileName), []byte(kptFileStr), 0600)
+	err = ioutil.WriteFile(filepath.Join(dir, kptfilev1.KptFileName), []byte(kptFileStr), 0600)
 	if err != nil {
 		return errors.E(op, errors.IO, types.UniquePath(dir), err)
 	}
@@ -66,7 +66,7 @@ func WriteFile(dir string, k *kptfilev1alpha2.KptFile) error {
 // is valid; otherwiste, false and the reason the inventory is not valid
 // is returned. A valid inventory must have a non-empty namespace, name,
 // and id.
-func ValidateInventory(inv *kptfilev1alpha2.Inventory) (bool, error) {
+func ValidateInventory(inv *kptfilev1.Inventory) (bool, error) {
 	const op errors.Op = "kptfileutil.ValidateInventory"
 	if inv == nil {
 		return false, errors.E(op, errors.MissingParam,
@@ -88,7 +88,7 @@ func ValidateInventory(inv *kptfilev1alpha2.Inventory) (bool, error) {
 	return true, nil
 }
 
-func Equal(kf1, kf2 *kptfilev1alpha2.KptFile) (bool, error) {
+func Equal(kf1, kf2 *kptfilev1.KptFile) (bool, error) {
 	const op errors.Op = "kptfileutil.Equal"
 	kf1Bytes, err := yaml.Marshal(kf1)
 	if err != nil {
@@ -104,12 +104,12 @@ func Equal(kf1, kf2 *kptfilev1alpha2.KptFile) (bool, error) {
 }
 
 // DefaultKptfile returns a new minimal Kptfile.
-func DefaultKptfile(name string) *kptfilev1alpha2.KptFile {
-	return &kptfilev1alpha2.KptFile{
+func DefaultKptfile(name string) *kptfilev1.KptFile {
+	return &kptfilev1.KptFile{
 		ResourceMeta: yaml.ResourceMeta{
 			TypeMeta: yaml.TypeMeta{
-				APIVersion: kptfilev1alpha2.TypeMeta.APIVersion,
-				Kind:       kptfilev1alpha2.TypeMeta.Kind,
+				APIVersion: kptfilev1.TypeMeta.APIVersion,
+				Kind:       kptfilev1.TypeMeta.Kind,
 			},
 			ObjectMeta: yaml.ObjectMeta{
 				NameMeta: yaml.NameMeta{
@@ -132,7 +132,7 @@ func UpdateKptfileWithoutOrigin(localPath, updatedPath string, updateUpstream bo
 		if !goerrors.Is(err, os.ErrNotExist) {
 			return errors.E(op, types.UniquePath(localPath), err)
 		}
-		localKf = &kptfilev1alpha2.KptFile{}
+		localKf = &kptfilev1.KptFile{}
 	}
 
 	updatedKf, err := pkg.ReadKptfile(updatedPath)
@@ -140,10 +140,10 @@ func UpdateKptfileWithoutOrigin(localPath, updatedPath string, updateUpstream bo
 		if !goerrors.Is(err, os.ErrNotExist) {
 			return errors.E(op, types.UniquePath(updatedPath), err)
 		}
-		updatedKf = &kptfilev1alpha2.KptFile{}
+		updatedKf = &kptfilev1.KptFile{}
 	}
 
-	err = merge(localKf, updatedKf, &kptfilev1alpha2.KptFile{})
+	err = merge(localKf, updatedKf, &kptfilev1.KptFile{})
 	if err != nil {
 		return err
 	}
@@ -171,7 +171,7 @@ func UpdateKptfile(localPath, updatedPath, originPath string, updateUpstream boo
 		if !goerrors.Is(err, os.ErrNotExist) {
 			return errors.E(op, types.UniquePath(localPath), err)
 		}
-		localKf = &kptfilev1alpha2.KptFile{}
+		localKf = &kptfilev1.KptFile{}
 	}
 
 	updatedKf, err := pkg.ReadKptfile(updatedPath)
@@ -179,7 +179,7 @@ func UpdateKptfile(localPath, updatedPath, originPath string, updateUpstream boo
 		if !goerrors.Is(err, os.ErrNotExist) {
 			return errors.E(op, types.UniquePath(localPath), err)
 		}
-		updatedKf = &kptfilev1alpha2.KptFile{}
+		updatedKf = &kptfilev1.KptFile{}
 	}
 
 	originKf, err := pkg.ReadKptfile(originPath)
@@ -187,7 +187,7 @@ func UpdateKptfile(localPath, updatedPath, originPath string, updateUpstream boo
 		if !goerrors.Is(err, os.ErrNotExist) {
 			return errors.E(op, types.UniquePath(localPath), err)
 		}
-		originKf = &kptfilev1alpha2.KptFile{}
+		originKf = &kptfilev1.KptFile{}
 	}
 
 	err = merge(localKf, updatedKf, originKf)
@@ -219,9 +219,9 @@ func UpdateUpstreamLockFromGit(path string, spec *git.RepoSpec) error {
 	}
 
 	// populate the cloneFrom values so we know where the package came from
-	kpgfile.UpstreamLock = &kptfilev1alpha2.UpstreamLock{
-		Type: kptfilev1alpha2.GitOrigin,
-		Git: &kptfilev1alpha2.GitLock{
+	kpgfile.UpstreamLock = &kptfilev1.UpstreamLock{
+		Type: kptfilev1.GitOrigin,
+		Git: &kptfilev1.GitLock{
 			Repo:      spec.OrgRepo,
 			Directory: spec.Path,
 			Ref:       spec.Ref,
@@ -235,7 +235,7 @@ func UpdateUpstreamLockFromGit(path string, spec *git.RepoSpec) error {
 	return nil
 }
 
-func merge(localKf, updatedKf, originalKf *kptfilev1alpha2.KptFile) error {
+func merge(localKf, updatedKf, originalKf *kptfilev1.KptFile) error {
 	localBytes, err := yaml.Marshal(localKf)
 	if err != nil {
 		return err
@@ -256,7 +256,7 @@ func merge(localKf, updatedKf, originalKf *kptfilev1alpha2.KptFile) error {
 		return err
 	}
 
-	var mergedKf kptfilev1alpha2.KptFile
+	var mergedKf kptfilev1.KptFile
 	err = yaml.Unmarshal([]byte(mergedBytes), &mergedKf)
 	if err != nil {
 		return err
@@ -273,7 +273,7 @@ func merge(localKf, updatedKf, originalKf *kptfilev1alpha2.KptFile) error {
 	return nil
 }
 
-func updateUpstreamAndUpstreamLock(localKf, updatedKf *kptfilev1alpha2.KptFile) {
+func updateUpstreamAndUpstreamLock(localKf, updatedKf *kptfilev1.KptFile) {
 	if updatedKf.Upstream != nil {
 		localKf.Upstream = updatedKf.Upstream
 	}
diff --git a/pkg/live/load.go b/pkg/live/load.go
index 386aab53..20b3a1dc 100644
--- a/pkg/live/load.go
+++ b/pkg/live/load.go
@@ -23,7 +23,7 @@ import (
 	"github.com/GoogleContainerTools/kpt/internal/errors"
 	"github.com/GoogleContainerTools/kpt/internal/pkg"
 	"github.com/GoogleContainerTools/kpt/internal/util/strings"
-	kptfilev1alpha2 "github.com/GoogleContainerTools/kpt/pkg/api/kptfile/v1alpha2"
+	kptfilev1 "github.com/GoogleContainerTools/kpt/pkg/api/kptfile/v1"
 	"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
 	"k8s.io/kubectl/pkg/cmd/util"
 	"sigs.k8s.io/cli-utils/pkg/common"
@@ -58,7 +58,7 @@ func (e *MultipleInventoryInfoError) Error() string {
 // for inventory information inside Kptfile resources.
 // It returns the resources in unstructured format and the inventory information.
 // If no inventory information is found, that is not considered an error here.
-func Load(f util.Factory, path string, stdIn io.Reader) ([]*unstructured.Unstructured, kptfilev1alpha2.Inventory, error) {
+func Load(f util.Factory, path string, stdIn io.Reader) ([]*unstructured.Unstructured, kptfilev1.Inventory, error) {
 	if path == "-" {
 		return loadFromStream(f, stdIn)
 	}
@@ -69,18 +69,18 @@ func Load(f util.Factory, path string, stdIn io.Reader) ([]*unstructured.Unstruc
 // filtered resources and any inventory information found in Kptfile resources.
 // If there is more than one Kptfile in the stream with inventory information, that
 // is considered an error.
-func loadFromStream(f util.Factory, r io.Reader) ([]*unstructured.Unstructured, kptfilev1alpha2.Inventory, error) {
+func loadFromStream(f util.Factory, r io.Reader) ([]*unstructured.Unstructured, kptfilev1.Inventory, error) {
 	var stdInBuf bytes.Buffer
 	tee := io.TeeReader(r, &stdInBuf)
 
 	invInfo, err := readInvInfoFromStream(tee)
 	if err != nil {
-		return nil, kptfilev1alpha2.Inventory{}, err
+		return nil, kptfilev1.Inventory{}, err
 	}
 
 	ro, err := toReaderOptions(f)
 	if err != nil {
-		return nil, kptfilev1alpha2.Inventory{}, err
+		return nil, kptfilev1.Inventory{}, err
 	}
 
 	objs, err := (&ResourceGroupStreamManifestReader{
@@ -89,12 +89,12 @@ func loadFromStream(f util.Factory, r io.Reader) ([]*unstructured.Unstructured,
 		ReaderOptions: ro,
 	}).Read()
 	if err != nil {
-		return nil, kptfilev1alpha2.Inventory{}, err
+		return nil, kptfilev1.Inventory{}, err
 	}
 	return objs, invInfo, nil
 }
 
-func readInvInfoFromStream(in io.Reader) (kptfilev1alpha2.Inventory, error) {
+func readInvInfoFromStream(in io.Reader) (kptfilev1.Inventory, error) {
 	invFilter := &InventoryFilter{}
 	if err := (&kio.Pipeline{
 		Inputs: []kio.Reader{
@@ -106,32 +106,32 @@ func readInvInfoFromStream(in io.Reader) (kptfilev1alpha2.Inventory, error) {
 			kio.FilterAll(invFilter),
 		},
 	}).Execute(); err != nil {
-		return kptfilev1alpha2.Inventory{}, err
+		return kptfilev1.Inventory{}, err
 	}
 
 	if len(invFilter.Inventories) > 1 {
-		return kptfilev1alpha2.Inventory{}, &MultipleInventoryInfoError{}
+		return kptfilev1.Inventory{}, &MultipleInventoryInfoError{}
 	}
 
 	if len(invFilter.Inventories) == 1 {
 		return *invFilter.Inventories[0], nil
 	}
-	return kptfilev1alpha2.Inventory{}, nil
+	return kptfilev1.Inventory{}, nil
 }
 
 // loadFromdisk reads resources from the provided directory and any subfolder.
 // It returns the filtered resources and any inventory information found in
 // Kptfile resources.
 // Only the Kptfile in the root directory will be checked for inventory information.
-func loadFromDisk(f util.Factory, path string) ([]*unstructured.Unstructured, kptfilev1alpha2.Inventory, error) {
+func loadFromDisk(f util.Factory, path string) ([]*unstructured.Unstructured, kptfilev1.Inventory, error) {
 	invInfo, err := readInvInfoFromDisk(path)
 	if err != nil {
-		return nil, kptfilev1alpha2.Inventory{}, err
+		return nil, kptfilev1.Inventory{}, err
 	}
 
 	ro, err := toReaderOptions(f)
 	if err != nil {
-		return nil, kptfilev1alpha2.Inventory{}, err
+		return nil, kptfilev1.Inventory{}, err
 	}
 
 	objs, err := (&ResourceGroupPathManifestReader{
@@ -139,28 +139,28 @@ func loadFromDisk(f util.Factory, path string) ([]*unstructured.Unstructured, kp
 		ReaderOptions: ro,
 	}).Read()
 	if err != nil {
-		return nil, kptfilev1alpha2.Inventory{}, err
+		return nil, kptfilev1.Inventory{}, err
 	}
 
 	return objs, invInfo, nil
 }
 
-func readInvInfoFromDisk(path string) (kptfilev1alpha2.Inventory, error) {
+func readInvInfoFromDisk(path string) (kptfilev1.Inventory, error) {
 	p, err := pkg.New(path)
 	if err != nil {
-		return kptfilev1alpha2.Inventory{}, err
+		return kptfilev1.Inventory{}, err
 	}
 
 	kf, err := p.Kptfile()
 	if err != nil && errors.Is(err, os.ErrNotExist) {
-		return kptfilev1alpha2.Inventory{}, nil
+		return kptfilev1.Inventory{}, nil
 	}
 	if err != nil {
-		return kptfilev1alpha2.Inventory{}, err
+		return kptfilev1.Inventory{}, err
 	}
 
 	if kf.Inventory == nil {
-		return kptfilev1alpha2.Inventory{}, nil
+		return kptfilev1.Inventory{}, nil
 	}
 
 	return *kf.Inventory, nil
@@ -169,12 +169,12 @@ func readInvInfoFromDisk(path string) (kptfilev1alpha2.Inventory, error) {
 // InventoryFilter is an implementation of the yaml.Filter interface
 // that extracts inventory information from Kptfile resources.
 type InventoryFilter struct {
-	Inventories []*kptfilev1alpha2.Inventory
+	Inventories []*kptfilev1.Inventory
 }
 
 func (i *InventoryFilter) Filter(object *yaml.RNode) (*yaml.RNode, error) {
-	if object.GetApiVersion() != kptfilev1alpha2.KptFileAPIVersion ||
-		object.GetKind() != kptfilev1alpha2.KptFileName {
+	if object.GetApiVersion() != kptfilev1.KptFileAPIVersion ||
+		object.GetKind() != kptfilev1.KptFileName {
 		return object, nil
 	}
 
@@ -212,7 +212,7 @@ func toReaderOptions(f util.Factory) (manifestreader.ReaderOptions, error) {
 
 // ToInventoryInfo takes the information in the provided inventory object and
 // return an InventoryResourceGroup implementation of the InventoryInfo interface.
-func ToInventoryInfo(inventory kptfilev1alpha2.Inventory) (inventory.InventoryInfo, error) {
+func ToInventoryInfo(inventory kptfilev1.Inventory) (inventory.InventoryInfo, error) {
 	if err := validateInventory(inventory); err != nil {
 		return nil, err
 	}
@@ -220,7 +220,7 @@ func ToInventoryInfo(inventory kptfilev1alpha2.Inventory) (inventory.InventoryIn
 	return WrapInventoryInfoObj(invObj), nil
 }
 
-func validateInventory(inventory kptfilev1alpha2.Inventory) error {
+func validateInventory(inventory kptfilev1.Inventory) error {
 	var violations errors.Violations
 	if inventory.Name == "" {
 		violations = append(violations, errors.Violation{
@@ -256,7 +256,7 @@ func validateInventory(inventory kptfilev1alpha2.Inventory) error {
 	return nil
 }
 
-func generateInventoryObj(inv kptfilev1alpha2.Inventory) *unstructured.Unstructured {
+func generateInventoryObj(inv kptfilev1.Inventory) *unstructured.Unstructured {
 	// Create and return ResourceGroup custom resource as inventory object.
 	groupVersion := fmt.Sprintf("%s/%s", ResourceGroupGVK.Group, ResourceGroupGVK.Version)
 	var inventoryObj = &unstructured.Unstructured{
diff --git a/pkg/live/rgstream.go b/pkg/live/rgstream.go
index 5057653d..b62a77a0 100644
--- a/pkg/live/rgstream.go
+++ b/pkg/live/rgstream.go
@@ -7,7 +7,7 @@ import (
 	"bytes"
 	"io"
 
-	kptfilev1alpha2 "github.com/GoogleContainerTools/kpt/pkg/api/kptfile/v1alpha2"
+	kptfilev1 "github.com/GoogleContainerTools/kpt/pkg/api/kptfile/v1"
 	"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
 	"k8s.io/apimachinery/pkg/runtime/schema"
 	"sigs.k8s.io/cli-utils/pkg/manifestreader"
@@ -20,8 +20,8 @@ import (
 var (
 	excludedGKs = []schema.GroupKind{
 		{
-			Group: kptfilev1alpha2.KptFileGroup,
-			Kind:  kptfilev1alpha2.KptFileKind,
+			Group: kptfilev1.KptFileGroup,
+			Kind:  kptfilev1.KptFileKind,
 		},
 	}
 )
@@ -80,14 +80,14 @@ func isExcluded(n *yaml.RNode) bool {
 	return false
 }
 
-var kptFileTemplate = kptfilev1alpha2.KptFile{ResourceMeta: kptfilev1alpha2.TypeMeta}
+var kptFileTemplate = kptfilev1.KptFile{ResourceMeta: kptfilev1.TypeMeta}
 
 // isKptfile returns true if the passed resource config is a Kptfile; false otherwise
 func isKptfile(resource []byte) bool {
 	d := yaml.NewDecoder(bytes.NewReader(resource))
 	d.KnownFields(true)
 	if err := d.Decode(&kptFileTemplate); err == nil {
-		return kptFileTemplate.ResourceMeta.TypeMeta == kptfilev1alpha2.TypeMeta.TypeMeta
+		return kptFileTemplate.ResourceMeta.TypeMeta == kptfilev1.TypeMeta.TypeMeta
 	}
 	return false
 }
diff --git a/site/book/03-packages/01-getting-a-package.md b/site/book/03-packages/01-getting-a-package.md
index 5df85e33..3de7426f 100644
--- a/site/book/03-packages/01-getting-a-package.md
+++ b/site/book/03-packages/01-getting-a-package.md
@@ -17,7 +17,7 @@ look at the content of the `Kptfile` on your local filesystem:
 
 ```yaml
 # wordpress/Kptfile
-apiVersion: kpt.dev/v1alpha2
+apiVersion: kpt.dev/v1
 kind: Kptfile
 metadata:
   name: wordpress
@@ -63,7 +63,7 @@ Now, let's look at the `Kptfile` for the `mysql` subpackage:
 
 ```yaml
 # wordpress/mysql/Kptfile
-apiVersion: kpt.dev/v1alpha2
+apiVersion: kpt.dev/v1
 kind: Kptfile
 metadata:
   name: mysql
diff --git a/site/book/03-packages/06-creating-a-package.md b/site/book/03-packages/06-creating-a-package.md
index 2ca62bea..10e275f0 100644
--- a/site/book/03-packages/06-creating-a-package.md
+++ b/site/book/03-packages/06-creating-a-package.md
@@ -20,7 +20,7 @@ The `info` section of the `Kptfile` contains some optional package metadata you
 may want to set. These fields are not consumed by any functionality in kpt:
 
 ```yaml
-apiVersion: kpt.dev/v1alpha2
+apiVersion: kpt.dev/v1
 kind: Kptfile
 metadata:
   name: awesomeapp
diff --git a/site/book/04-using-functions/01-declarative-function-execution.md b/site/book/04-using-functions/01-declarative-function-execution.md
index 321da0ef..8d1338a8 100644
--- a/site/book/04-using-functions/01-declarative-function-execution.md
+++ b/site/book/04-using-functions/01-declarative-function-execution.md
@@ -18,7 +18,7 @@ pipeline:
 
 ```yaml
 # wordpress/Kptfile (Excerpt)
-apiVersion: kpt.dev/v1alpha2
+apiVersion: kpt.dev/v1
 kind: Kptfile
 metadata:
   name: wordpress
@@ -49,7 +49,7 @@ The `mysql` subpackage declares only a mutator function:
 
 ```yaml
 # wordpress/mysql/Kptfile
-apiVersion: kpt.dev/v1alpha2
+apiVersion: kpt.dev/v1
 kind: Kptfile
 metadata:
   name: mysql
@@ -130,7 +130,7 @@ For example:
 
 ```yaml
 # wordpress/mysql/Kptfile
-apiVersion: kpt.dev/v1alpha2
+apiVersion: kpt.dev/v1
 kind: Kptfile
 metadata:
   name: mysql
@@ -160,7 +160,7 @@ The following is equivalent to what we showed before:
 
 ```yaml
 # wordpress/mysql/Kptfile
-apiVersion: kpt.dev/v1alpha2
+apiVersion: kpt.dev/v1
 kind: Kptfile
 metadata:
   name: mysql
diff --git a/site/book/04-using-functions/02-imperative-function-execution.md b/site/book/04-using-functions/02-imperative-function-execution.md
index f0e87a20..30c47053 100644
--- a/site/book/04-using-functions/02-imperative-function-execution.md
+++ b/site/book/04-using-functions/02-imperative-function-execution.md
@@ -17,7 +17,7 @@ For comparison, this has the same effect as the following declaration:
 
 ```yaml
 # wordpress/Kptfile (Excerpt)
-apiVersion: kpt.dev/v1alpha2
+apiVersion: kpt.dev/v1
 kind: Kptfile
 metadata:
   name: wordpress
diff --git a/site/book/04-using-functions/03-function-results.md b/site/book/04-using-functions/03-function-results.md
index 4f77883e..a2d098c0 100644
--- a/site/book/04-using-functions/03-function-results.md
+++ b/site/book/04-using-functions/03-function-results.md
@@ -30,7 +30,7 @@ The results are provided as resource of kind `FunctionResultList`:
 
 ```yaml
 # /tmp/results.yaml
-apiVersion: kpt.dev/v1alpha2
+apiVersion: kpt.dev/v1
 kind: FunctionResultList
 metadata:
   name: fnresults
@@ -69,7 +69,7 @@ The results resource will now contain failure details:
 
 ```yaml
 # /tmp/results.yaml
-apiVersion: kpt.dev/v1alpha2
+apiVersion: kpt.dev/v1
 kind: FunctionResultList
 metadata:
   name: fnresults
diff --git a/site/book/05-developing-functions/02-developing-in-Go.md b/site/book/05-developing-functions/02-developing-in-Go.md
index ab36837f..071a1e7e 100644
--- a/site/book/05-developing-functions/02-developing-in-Go.md
+++ b/site/book/05-developing-functions/02-developing-in-Go.md
@@ -76,10 +76,10 @@ $ kpt pkg get https://github.com/GoogleContainerTools/kpt.git/package-examples/w
 Test it by running the function imperatively:
 
 ```shell
-$ kpt fn eval wordpress --exec-path ./my-fn -- value=foo
+$ kpt fn eval wordpress --exec ./my-fn -- value=foo
 ```
 
-During iterative development, `--exec-path` flag can be used to execute the
+During iterative development, `--exec` flag can be used to execute the
 function binary directly instead of requiring the function to be containerized
 first. Once you have a function binary that works, you can then proceed to
 creating the container image.
@@ -122,9 +122,6 @@ $ kpt fn eval wordpress --image gcr.io/project/fn-name:tag -- value=foo
 - Take a look at the source code for [functions in the catalog] to better
   understand how to develop functions in Go
 
-[sigs.k8s.io/kustomize/kyaml/fn/framework]:
-  https://pkg.go.dev/sigs.k8s.io/kustomize/kyaml@v0.10.16/fn/framework#pkg-index
-[sigs.k8s.io/kustomize/kyaml/yaml]:
-  https://pkg.go.dev/sigs.k8s.io/kustomize/kyaml@v0.10.16/yaml
-[functions in the catalog]:
-  https://github.com/GoogleContainerTools/kpt-functions-catalog/tree/master/functions/go
+[sigs.k8s.io/kustomize/kyaml/fn/framework]: https://pkg.go.dev/sigs.k8s.io/kustomize/kyaml@v0.10.16/fn/framework#pkg-index
+[sigs.k8s.io/kustomize/kyaml/yaml]: https://pkg.go.dev/sigs.k8s.io/kustomize/kyaml@v0.10.16/yaml
+[functions in the catalog]: https://github.com/GoogleContainerTools/kpt-functions-catalog/tree/master/functions/go
diff --git a/site/index.html b/site/index.html
index c3217708..4a8bf975 100644
--- a/site/index.html
+++ b/site/index.html
@@ -32,6 +32,7 @@
     <script src="/static/js/config.js"></script>
     <script src="/static/js/plugins/plugins.js"></script>
     <script src="/static/js/plugins/copy_buttons.js"></script>
+    <script src="/static/js/plugins/book_page_title.js"></script>
     <script src="//cdn.jsdelivr.net/npm/docsify/lib/docsify.min.js"></script>
     <script src="https://cdn.jsdelivr.net/npm/docsify-themeable@0/dist/js/docsify-themeable.min.js"></script>
     <script src="//cdn.jsdelivr.net/npm/docsify-pagination/dist/docsify-pagination.min.js"></script>
diff --git a/site/installation/migration.md b/site/installation/migration.md
index c29619cc..a7078d49 100644
--- a/site/installation/migration.md
+++ b/site/installation/migration.md
@@ -98,12 +98,12 @@ directory by default.
 ### Kptfile schema changes
 
 The existing [v1alpha1 Kptfile] format/schema is not compatible with kpt `v1.0`.
-Here is the schema for [v1alpha2 Kptfile] which is compatible with kpt `v1.0`.
+Here is the schema for [v1 Kptfile] which is compatible with kpt `v1.0`.
 
 1. The `packageMetaData` section in `v1alpha1` Kptfile is transformed to `info`
-   section in `v1alpha2` Kptfile.
+   section in `v1` Kptfile.
 2. `upstream` section, in the `v1alpha1` Kptfile is split into `upstream` and
-   `upstreamLock` sections in `v1alpha2` Kptfile. `upstream` section can be
+   `upstreamLock` sections in `v1` Kptfile. `upstream` section can be
    modified by users to declare the desired version of the package,
    `upstreamLock` is the resolved package state and should not be modified by
    users.
@@ -114,7 +114,7 @@ Here is the schema for [v1alpha2 Kptfile] which is compatible with kpt `v1.0`.
 5. `functions` section in `v1alpha1` Kptfile holds definitions for Starlark
    functions only. This section is deprecated and all the functions can be
    declared in the `pipeline` section including [Starlark functions].
-6. `inventory-object` is moved to `inventory` section in `v1alpha2` Kptfile.
+6. `inventory-object` is moved to `inventory` section in `v1` Kptfile.
    [Details below](#live-group-changes).
 
 ### `pkg`
@@ -219,7 +219,7 @@ $ kpt fn eval PKG_PATH --image gcr.io/kpt-fn/fix:unstable --include-meta-resourc
 1. Best effort is made by the function to transform the `packageMetaData`
    section to the `info` section.
 2. `upstream` section, in the `v1alpha1` Kptfile is converted to `upstream` and
-   `upstreamLock` sections in `v1alpha2` version of Kptfile.
+   `upstreamLock` sections in `v1` version of Kptfile.
 3. `dependencies` section is removed from Kptfile.
 4. Starlark functions section is removed from Kptfile.
 5. `Setters` and `substitutions` are converted to new and simple setter
@@ -239,7 +239,7 @@ changes to the resources in the live cluster.
 1. All the functions are treated as `mutators` by the `gcr.io/kpt-fn/fix`
    function and are added to the `mutators` section in the pipeline. Users must
    manually go through the functions and move the validator functions to the
-   `validators` section in the pipeline section of `v1alpha2` Kptfile.
+   `validators` section in the pipeline section of `v1` Kptfile.
    1. The order of functions also must be re-arranged manually by users if
       needed.
    2. Also, note that the [function config] is used to configure the function
@@ -301,7 +301,7 @@ $ kpt fn render
   of the fetched and customized package.
 
 Here is an [example kpt package], migrated from `v1alpha1` version(compatible with
-kpt `v0.39`) to `v1alpha2` version(compatible with kpt `v1.0`).
+kpt `v0.39`) to `v1` version(compatible with kpt `v1.0`).
 
 ## Timeline
 
@@ -320,7 +320,7 @@ kpt `v0.39`) to `v1alpha2` version(compatible with kpt `v1.0`).
 
 [v0.39 commands]: https://googlecontainertools.github.io/kpt/reference/
 [v1.0 commands]: https://kpt.dev/reference/cli/
-[v1alpha2 kptfile]: https://github.com/GoogleContainerTools/kpt/blob/main/pkg/api/kptfile/v1alpha2/types.go
+[v1 kptfile]: https://github.com/GoogleContainerTools/kpt/blob/main/pkg/api/kptfile/v1/types.go
 [starlark functions]: https://catalog.kpt.dev/starlark/v0.1/
 [starlark function]: https://catalog.kpt.dev/starlark/v0.1/
 [apply-setters]: https://catalog.kpt.dev/apply-setters/v0.1/
diff --git a/site/package-lock.json b/site/package-lock.json
index 6d08fc5e..a5c7c382 100644
--- a/site/package-lock.json
+++ b/site/package-lock.json
@@ -6,7 +6,7 @@
     "": {
       "devDependencies": {
         "@babel/plugin-proposal-optional-chaining": "^7.14.2",
-        "@babel/plugin-transform-modules-commonjs": "^7.14.0",
+        "@gouch/to-title-case": "^2.2.1",
         "autoprefixer": "^9.7.4",
         "href-checker": "etefera/href-checker#docsify",
         "jest": "^27.0.4",
@@ -450,21 +450,6 @@
         "@babel/core": "^7.0.0-0"
       }
     },
-    "node_modules/@babel/plugin-transform-modules-commonjs": {
-      "version": "7.14.0",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.14.0.tgz",
-      "integrity": "sha512-EX4QePlsTaRZQmw9BsoPeyh5OCtRGIhwfLquhxGp5e32w+dyL8htOcDwamlitmNFK6xBZYlygjdye9dbd9rUlQ==",
-      "dev": true,
-      "dependencies": {
-        "@babel/helper-module-transforms": "^7.14.0",
-        "@babel/helper-plugin-utils": "^7.13.0",
-        "@babel/helper-simple-access": "^7.13.12",
-        "babel-plugin-dynamic-import-node": "^2.3.3"
-      },
-      "peerDependencies": {
-        "@babel/core": "^7.0.0-0"
-      }
-    },
     "node_modules/@babel/template": {
       "version": "7.12.13",
       "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.12.13.tgz",
@@ -531,6 +516,12 @@
       "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==",
       "dev": true
     },
+    "node_modules/@gouch/to-title-case": {
+      "version": "2.2.1",
+      "resolved": "https://registry.npmjs.org/@gouch/to-title-case/-/to-title-case-2.2.1.tgz",
+      "integrity": "sha512-i/Hj91LfiE2pxYdIT0Ttdc/fIzdBwojDNQe6S6/N/Uf3xMmn0lWO+iLkAd84zs/NUGfTLsMUacDZzSy6N4jkcw==",
+      "dev": true
+    },
     "node_modules/@istanbuljs/load-nyc-config": {
       "version": "1.1.0",
       "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz",
@@ -1948,15 +1939,6 @@
         "node": ">=8"
       }
     },
-    "node_modules/babel-plugin-dynamic-import-node": {
-      "version": "2.3.3",
-      "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz",
-      "integrity": "sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==",
-      "dev": true,
-      "dependencies": {
-        "object.assign": "^4.1.0"
-      }
-    },
     "node_modules/babel-plugin-istanbul": {
       "version": "6.0.0",
       "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.0.0.tgz",
@@ -2239,19 +2221,6 @@
         "node": ">=0.10.0"
       }
     },
-    "node_modules/call-bind": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz",
-      "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==",
-      "dev": true,
-      "dependencies": {
-        "function-bind": "^1.1.1",
-        "get-intrinsic": "^1.0.2"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/ljharb"
-      }
-    },
     "node_modules/call-me-maybe": {
       "version": "1.0.1",
       "resolved": "https://registry.npmjs.org/call-me-maybe/-/call-me-maybe-1.0.1.tgz",
@@ -2669,18 +2638,6 @@
         "node": ">=0.10.0"
       }
     },
-    "node_modules/define-properties": {
-      "version": "1.1.3",
-      "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz",
-      "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==",
-      "dev": true,
-      "dependencies": {
-        "object-keys": "^1.0.12"
-      },
-      "engines": {
-        "node": ">= 0.4"
-      }
-    },
     "node_modules/define-property": {
       "version": "2.0.2",
       "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz",
@@ -4231,20 +4188,6 @@
       "dev": true,
       "license": "ISC"
     },
-    "node_modules/get-intrinsic": {
-      "version": "1.1.1",
-      "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz",
-      "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==",
-      "dev": true,
-      "dependencies": {
-        "function-bind": "^1.1.1",
-        "has": "^1.0.3",
-        "has-symbols": "^1.0.1"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/ljharb"
-      }
-    },
     "node_modules/get-package-type": {
       "version": "0.1.0",
       "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz",
@@ -4402,18 +4345,6 @@
         "node": ">=4"
       }
     },
-    "node_modules/has-symbols": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz",
-      "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==",
-      "dev": true,
-      "engines": {
-        "node": ">= 0.4"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/ljharb"
-      }
-    },
     "node_modules/has-value": {
       "version": "1.0.0",
       "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz",
@@ -8029,15 +7960,6 @@
         "node": ">=0.10.0"
       }
     },
-    "node_modules/object-keys": {
-      "version": "1.1.1",
-      "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz",
-      "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==",
-      "dev": true,
-      "engines": {
-        "node": ">= 0.4"
-      }
-    },
     "node_modules/object-visit": {
       "version": "1.0.1",
       "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz",
@@ -8051,24 +7973,6 @@
         "node": ">=0.10.0"
       }
     },
-    "node_modules/object.assign": {
-      "version": "4.1.2",
-      "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz",
-      "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==",
-      "dev": true,
-      "dependencies": {
-        "call-bind": "^1.0.0",
-        "define-properties": "^1.1.3",
-        "has-symbols": "^1.0.1",
-        "object-keys": "^1.1.1"
-      },
-      "engines": {
-        "node": ">= 0.4"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/ljharb"
-      }
-    },
     "node_modules/object.pick": {
       "version": "1.3.0",
       "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz",
@@ -10757,18 +10661,6 @@
         "@babel/helper-plugin-utils": "^7.12.13"
       }
     },
-    "@babel/plugin-transform-modules-commonjs": {
-      "version": "7.14.0",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.14.0.tgz",
-      "integrity": "sha512-EX4QePlsTaRZQmw9BsoPeyh5OCtRGIhwfLquhxGp5e32w+dyL8htOcDwamlitmNFK6xBZYlygjdye9dbd9rUlQ==",
-      "dev": true,
-      "requires": {
-        "@babel/helper-module-transforms": "^7.14.0",
-        "@babel/helper-plugin-utils": "^7.13.0",
-        "@babel/helper-simple-access": "^7.13.12",
-        "babel-plugin-dynamic-import-node": "^2.3.3"
-      }
-    },
     "@babel/template": {
       "version": "7.12.13",
       "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.12.13.tgz",
@@ -10829,6 +10721,12 @@
       "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==",
       "dev": true
     },
+    "@gouch/to-title-case": {
+      "version": "2.2.1",
+      "resolved": "https://registry.npmjs.org/@gouch/to-title-case/-/to-title-case-2.2.1.tgz",
+      "integrity": "sha512-i/Hj91LfiE2pxYdIT0Ttdc/fIzdBwojDNQe6S6/N/Uf3xMmn0lWO+iLkAd84zs/NUGfTLsMUacDZzSy6N4jkcw==",
+      "dev": true
+    },
     "@istanbuljs/load-nyc-config": {
       "version": "1.1.0",
       "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz",
@@ -11896,15 +11794,6 @@
         }
       }
     },
-    "babel-plugin-dynamic-import-node": {
-      "version": "2.3.3",
-      "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz",
-      "integrity": "sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==",
-      "dev": true,
-      "requires": {
-        "object.assign": "^4.1.0"
-      }
-    },
     "babel-plugin-istanbul": {
       "version": "6.0.0",
       "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.0.0.tgz",
@@ -12127,16 +12016,6 @@
         "unset-value": "^1.0.0"
       }
     },
-    "call-bind": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz",
-      "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==",
-      "dev": true,
-      "requires": {
-        "function-bind": "^1.1.1",
-        "get-intrinsic": "^1.0.2"
-      }
-    },
     "call-me-maybe": {
       "version": "1.0.1",
       "resolved": "https://registry.npmjs.org/call-me-maybe/-/call-me-maybe-1.0.1.tgz",
@@ -12465,15 +12344,6 @@
       "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==",
       "dev": true
     },
-    "define-properties": {
-      "version": "1.1.3",
-      "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz",
-      "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==",
-      "dev": true,
-      "requires": {
-        "object-keys": "^1.0.12"
-      }
-    },
     "define-property": {
       "version": "2.0.2",
       "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz",
@@ -13642,17 +13512,6 @@
       "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==",
       "dev": true
     },
-    "get-intrinsic": {
-      "version": "1.1.1",
-      "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz",
-      "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==",
-      "dev": true,
-      "requires": {
-        "function-bind": "^1.1.1",
-        "has": "^1.0.3",
-        "has-symbols": "^1.0.1"
-      }
-    },
     "get-package-type": {
       "version": "0.1.0",
       "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz",
@@ -13769,12 +13628,6 @@
       "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=",
       "dev": true
     },
-    "has-symbols": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz",
-      "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==",
-      "dev": true
-    },
     "has-value": {
       "version": "1.0.0",
       "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz",
@@ -16455,12 +16308,6 @@
         }
       }
     },
-    "object-keys": {
-      "version": "1.1.1",
-      "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz",
-      "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==",
-      "dev": true
-    },
     "object-visit": {
       "version": "1.0.1",
       "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz",
@@ -16470,18 +16317,6 @@
         "isobject": "^3.0.0"
       }
     },
-    "object.assign": {
-      "version": "4.1.2",
-      "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz",
-      "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==",
-      "dev": true,
-      "requires": {
-        "call-bind": "^1.0.0",
-        "define-properties": "^1.1.3",
-        "has-symbols": "^1.0.1",
-        "object-keys": "^1.1.1"
-      }
-    },
     "object.pick": {
       "version": "1.3.0",
       "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz",
diff --git a/site/package.json b/site/package.json
index c07fdc66..9fc15224 100644
--- a/site/package.json
+++ b/site/package.json
@@ -7,6 +7,7 @@
   },
   "devDependencies": {
     "@babel/plugin-proposal-optional-chaining": "^7.14.2",
+    "@gouch/to-title-case": "^2.2.1",
     "autoprefixer": "^9.7.4",
     "href-checker": "etefera/href-checker#docsify",
     "jest": "^27.0.4",
diff --git a/site/reference/cli/fn/eval/README.md b/site/reference/cli/fn/eval/README.md
index 353eb9ed..dd535b89 100644
--- a/site/reference/cli/fn/eval/README.md
+++ b/site/reference/cli/fn/eval/README.md
@@ -64,7 +64,7 @@ fn-args:
   container running the function. The value can be in `key=value` format or only
   the key of an already exported environment variable.
 
---exec-path:
+--exec:
   Path to the local executable binary to execute as a function. `eval` executes
   only one function, so do not use `--image` flag with this flag. This is useful
   for testing function locally during development. It enables faster dev iterations
@@ -75,7 +75,7 @@ fn-args:
 
 --image, i:
   Container image of the function to execute e.g. `gcr.io/kpt-fn/set-namespace:v0.1`.
-  `eval` executes only one function, so do not use `--exec-path` flag with this flag.
+  `eval` executes only one function, so do not use `--exec` flag with this flag.
 
 --image-pull-policy:
   If the image should be pulled before rendering the package(s). It can be set
@@ -142,7 +142,7 @@ $ kpt fn eval DIR -i gcr.io/example.com/my-fn:v1.0.0 -- foo=bar
 ```shell
 # execute executable my-fn on the resources in DIR directory and
 # write output back to DIR
-$ kpt fn eval DIR --exec-path ./my-fn
+$ kpt fn eval DIR --exec ./my-fn
 ```
 
 ```shell
diff --git a/site/reference/schema/function-result-list/README.md b/site/reference/schema/function-result-list/README.md
index d9c2a8c9..8df268e0 100644
--- a/site/reference/schema/function-result-list/README.md
+++ b/site/reference/schema/function-result-list/README.md
@@ -1,4 +1,4 @@
 # FunctionResultList
 
 See
-[definition here](https://github.com/GoogleContainerTools/kpt/blob/next/pkg/api/fnresult/v1alpha2/types.go#L50)
+[definition here](https://github.com/GoogleContainerTools/kpt/blob/next/pkg/api/fnresult/v1/types.go#L50)
diff --git a/site/reference/schema/kptfile/README.md b/site/reference/schema/kptfile/README.md
index 23285e37..869e8de2 100644
--- a/site/reference/schema/kptfile/README.md
+++ b/site/reference/schema/kptfile/README.md
@@ -1,4 +1,4 @@
 # Kptfile
 
 See
-[definition here](https://github.com/googlecontainertools/kpt/blob/next/pkg/api/kptfile/v1alpha2/types.go#L41)
+[definition here](https://github.com/googlecontainertools/kpt/blob/next/pkg/api/kptfile/v1/types.go#L41)
diff --git a/site/sdk/ts-guide.md b/site/sdk/ts-guide.md
index b2fe11a2..f9eb5289 100644
--- a/site/sdk/ts-guide.md
+++ b/site/sdk/ts-guide.md
@@ -162,7 +162,7 @@ runtime.
    using the exec runtime.
 
    ```shell
-   $ kpt fn eval DIR --exec-path ./my_func_run-macos
+   $ kpt fn eval DIR --exec ./my_func_run-macos
    ```
 
 ## Build and push container images
diff --git a/site/site_check.conf b/site/site_check.conf
index 9b206629..3dfdec10 100644
--- a/site/site_check.conf
+++ b/site/site_check.conf
@@ -3,12 +3,12 @@ server {
     server_name  localhost;
     add_header Cache-Control 'no-store, no-cache, must-revalidate, proxy-revalidate, max-age=0';
 
-    location ~* README.md$ {
+    location ~* \.md$ {
         root   /usr/share/nginx/html;
         try_files $uri =404;
     }
 
-    location / {
+    location ~* ^[\/\w\.-]+[^\.]?.?.?$  {
         root   /usr/share/nginx/html;
         index  index.html index.htm;
         try_files $uri /index.html;
diff --git a/site/static/js/plugins/book_page_title.js b/site/static/js/plugins/book_page_title.js
new file mode 100644
index 00000000..cba6d98f
--- /dev/null
+++ b/site/static/js/plugins/book_page_title.js
@@ -0,0 +1,33 @@
+// Add title to book Markdown pages based on directory structure.
+function processBookPageTitle(content) {
+  const pathname = window.location.pathname.toLowerCase();
+
+  const bookPathMatch = pathname.match(/^\/book\/(\d+)-(.+)\/(\d+)?-?(.+)?/);
+
+  if (content && !content.startsWith("<!DOCTYPE html>") && bookPathMatch) {
+    const pageNumber = parseInt(bookPathMatch[3]);
+
+    // Use chapter name if on intro page and page name otherwise.
+    const chapterNum = `# ${parseInt(bookPathMatch[1])}${
+      pageNumber > 0 ? `.${pageNumber}` : ""
+    }`;
+    const pageTitle = pageNumber > 0 ? bookPathMatch[4] : bookPathMatch[2];
+
+    content =
+      `${chapterNum} ${pageTitle.replace(/-/g, " ").toTitleCase()}\n` +
+      content;
+  }
+
+  return content;
+}
+
+// Load plugins into Docsify.
+window.$docsify = window.$docsify || {};
+window.$docsify.plugins = [
+  (hook) => hook.beforeEach(processBookPageTitle),
+].concat(window.$docsify.plugins || []);
+
+// Export functions for testing.
+if (typeof module !== "undefined") {
+  module.exports = { processBookPageTitle };
+}
diff --git a/site/static/js/plugins/plugins.js b/site/static/js/plugins/plugins.js
index 44dbb9a4..ebe6858f 100644
--- a/site/static/js/plugins/plugins.js
+++ b/site/static/js/plugins/plugins.js
@@ -91,28 +91,6 @@ function showBookPageFooters() {
   );
 }
 
-function processBookPageTitle(content) {
-  const pathname = window.location.pathname.toLowerCase();
-
-  const bookPathMatch = pathname.match(bookPath);
-
-  if (bookPathMatch) {
-    const pageNumber = parseInt(bookPathMatch[3]);
-
-    // Use chapter name if on intro page and page name otherwise.
-    const chapterNum = `# ${parseInt(bookPathMatch[1])}${
-      pageNumber > 0 ? `.${pageNumber}` : ""
-    }`;
-    const pageTitle = pageNumber > 0 ? bookPathMatch[4] : bookPathMatch[2];
-
-    content =
-      `${chapterNum} ${pageTitle.replaceAll("-", " ").toTitleCase()}\n` +
-      content;
-  }
-
-  return content;
-}
-
 function addSidebarCollapsibility(sidebar) {
   const tocLists = Array.from(sidebar?.getElementsByTagName("ul"));
 
@@ -173,9 +151,6 @@ function localPlugins(hook, _vm) {
     return content;
   });
 
-  // Add title to book Markdown pages based on directory structure.
-  hook.beforeEach(processBookPageTitle);
-
   hook.mounted(addVersionDropdown);
 
   // Show navigation footer for book pages.
diff --git a/thirdparty/cmdconfig/commands/cmdcat/cmdcat.go b/thirdparty/cmdconfig/commands/cmdcat/cmdcat.go
index d3f724a7..fd50ed6f 100644
--- a/thirdparty/cmdconfig/commands/cmdcat/cmdcat.go
+++ b/thirdparty/cmdconfig/commands/cmdcat/cmdcat.go
@@ -10,7 +10,7 @@ import (
 	"strings"
 
 	"github.com/GoogleContainerTools/kpt/internal/docs/generated/pkgdocs"
-	kptfilev1alpha2 "github.com/GoogleContainerTools/kpt/pkg/api/kptfile/v1alpha2"
+	kptfilev1 "github.com/GoogleContainerTools/kpt/pkg/api/kptfile/v1"
 	"github.com/GoogleContainerTools/kpt/thirdparty/cmdconfig/commands/runner"
 	"github.com/spf13/cobra"
 	"sigs.k8s.io/kustomize/kyaml/kio"
@@ -86,7 +86,7 @@ func (r *CatRunner) runE(c *cobra.Command, args []string) error {
 }
 
 func (r *CatRunner) ExecuteCmd(w io.Writer, pkgPath string) error {
-	input := kio.LocalPackageReader{PackagePath: pkgPath, PackageFileName: kptfilev1alpha2.KptFileName}
+	input := kio.LocalPackageReader{PackagePath: pkgPath, PackageFileName: kptfilev1.KptFileName}
 	out := &bytes.Buffer{}
 	err := kio.Pipeline{
 		Inputs:  []kio.Reader{input},
diff --git a/thirdparty/cmdconfig/commands/cmdeval/cmdeval.go b/thirdparty/cmdconfig/commands/cmdeval/cmdeval.go
index 2cfcbb30..bd56c0e0 100644
--- a/thirdparty/cmdconfig/commands/cmdeval/cmdeval.go
+++ b/thirdparty/cmdconfig/commands/cmdeval/cmdeval.go
@@ -42,7 +42,7 @@ func GetEvalFnRunner(ctx context.Context, parent string) *EvalFnRunner {
 	r.Command.Flags().StringVarP(
 		&r.Image, "image", "i", "", "run this image as a function")
 	r.Command.Flags().StringVar(
-		&r.ExecPath, "exec-path", "", "run an executable as a function.")
+		&r.ExecPath, "exec", "", "run an executable as a function.")
 	r.Command.Flags().StringVar(
 		&r.FnConfigPath, "fn-config", "", "path to the function config file")
 	r.Command.Flags().BoolVar(
@@ -232,7 +232,7 @@ func checkFnConfigPathExistence(path string) error {
 
 func (r *EvalFnRunner) preRunE(c *cobra.Command, args []string) error {
 	if r.Image == "" && r.ExecPath == "" {
-		return errors.Errorf("must specify --image or --exec-path")
+		return errors.Errorf("must specify --image or --exec")
 	}
 	if r.Image != "" {
 		err := cmdutil.DockerCmdAvailable()
diff --git a/thirdparty/cmdconfig/commands/cmdsource/cmdsource.go b/thirdparty/cmdconfig/commands/cmdsource/cmdsource.go
index b0ca6e53..59ba7f12 100644
--- a/thirdparty/cmdconfig/commands/cmdsource/cmdsource.go
+++ b/thirdparty/cmdconfig/commands/cmdsource/cmdsource.go
@@ -13,7 +13,7 @@ import (
 	"github.com/GoogleContainerTools/kpt/internal/printer"
 	"github.com/GoogleContainerTools/kpt/internal/types"
 	"github.com/GoogleContainerTools/kpt/internal/util/cmdutil"
-	kptfile "github.com/GoogleContainerTools/kpt/pkg/api/kptfile/v1alpha2"
+	kptfile "github.com/GoogleContainerTools/kpt/pkg/api/kptfile/v1"
 	"github.com/GoogleContainerTools/kpt/thirdparty/cmdconfig/commands/runner"
 	"github.com/spf13/cobra"
 	"sigs.k8s.io/kustomize/kyaml/kio"
diff --git a/thirdparty/cmdconfig/commands/cmdtree/cmdtree.go b/thirdparty/cmdconfig/commands/cmdtree/cmdtree.go
index 83f9b750..a962082a 100644
--- a/thirdparty/cmdconfig/commands/cmdtree/cmdtree.go
+++ b/thirdparty/cmdconfig/commands/cmdtree/cmdtree.go
@@ -9,7 +9,7 @@ import (
 
 	"github.com/GoogleContainerTools/kpt/internal/docs/generated/pkgdocs"
 	"github.com/GoogleContainerTools/kpt/internal/printer"
-	kptfilev1alpha2 "github.com/GoogleContainerTools/kpt/pkg/api/kptfile/v1alpha2"
+	kptfilev1 "github.com/GoogleContainerTools/kpt/pkg/api/kptfile/v1"
 	"github.com/GoogleContainerTools/kpt/thirdparty/cmdconfig/commands/runner"
 	"github.com/spf13/cobra"
 	"sigs.k8s.io/kustomize/kyaml/kio"
@@ -66,5 +66,5 @@ func (r *TreeRunner) runE(c *cobra.Command, args []string) error {
 }
 
 func (r *TreeRunner) getMatchFilesGlob() []string {
-	return append([]string{kptfilev1alpha2.KptFileName}, kio.DefaultMatch...)
+	return append([]string{kptfilev1.KptFileName}, kio.DefaultMatch...)
 }
diff --git a/thirdparty/cmdconfig/commands/cmdtree/tree.go b/thirdparty/cmdconfig/commands/cmdtree/tree.go
index 0450aa01..282ba1d7 100644
--- a/thirdparty/cmdconfig/commands/cmdtree/tree.go
+++ b/thirdparty/cmdconfig/commands/cmdtree/tree.go
@@ -11,7 +11,7 @@ import (
 	"sort"
 	"strings"
 
-	kptfilev1alpha2 "github.com/GoogleContainerTools/kpt/pkg/api/kptfile/v1alpha2"
+	kptfilev1 "github.com/GoogleContainerTools/kpt/pkg/api/kptfile/v1"
 	"github.com/xlab/treeprint"
 	"sigs.k8s.io/kustomize/kyaml/kio/kioutil"
 	"sigs.k8s.io/kustomize/kyaml/yaml"
@@ -94,7 +94,7 @@ func (p TreeWriter) packageStructure(nodes []*yaml.RNode) error {
 		}
 		p.Root = d
 	}
-	_, err := os.Stat(filepath.Join(p.Root, kptfilev1alpha2.KptFileName))
+	_, err := os.Stat(filepath.Join(p.Root, kptfilev1.KptFileName))
 	if !os.IsNotExist(err) {
 		// if Kptfile exists in the root directory, it is a kpt package
 		// print only package name and not entire path
@@ -113,7 +113,7 @@ func (p TreeWriter) packageStructure(nodes []*yaml.RNode) error {
 // and returns the branch name
 func branchName(root, dirRelPath string) string {
 	name := filepath.Base(dirRelPath)
-	_, err := os.Stat(filepath.Join(root, dirRelPath, kptfilev1alpha2.KptFileName))
+	_, err := os.Stat(filepath.Join(root, dirRelPath, kptfilev1.KptFileName))
 	if !os.IsNotExist(err) {
 		// add Package prefix indicating that it is a separate package as it has
 		// Kptfile
diff --git a/thirdparty/cmdconfig/commands/runner/runner.go b/thirdparty/cmdconfig/commands/runner/runner.go
index 981d9e53..7a813a32 100644
--- a/thirdparty/cmdconfig/commands/runner/runner.go
+++ b/thirdparty/cmdconfig/commands/runner/runner.go
@@ -11,7 +11,7 @@ import (
 	"strings"
 
 	"github.com/GoogleContainerTools/kpt/internal/printer"
-	kptfilev1alpha2 "github.com/GoogleContainerTools/kpt/pkg/api/kptfile/v1alpha2"
+	kptfilev1 "github.com/GoogleContainerTools/kpt/pkg/api/kptfile/v1"
 	"github.com/go-errors/errors"
 	"github.com/spf13/cobra"
 	"sigs.k8s.io/kustomize/kyaml/pathutil"
@@ -37,7 +37,7 @@ type ExecuteCmdOnPkgs struct {
 // ExecuteCmdOnPkgs takes the function definition for a command to be executed on single package, applies that definition
 // recursively on all the subpackages present in rootPkgPath if recurseSubPackages is true, else applies the command on rootPkgPath only
 func (e ExecuteCmdOnPkgs) Execute() error {
-	pkgsPaths, err := pathutil.DirsWithFile(e.RootPkgPath, kptfilev1alpha2.KptFileName, e.RecurseSubPackages)
+	pkgsPaths, err := pathutil.DirsWithFile(e.RootPkgPath, kptfilev1.KptFileName, e.RecurseSubPackages)
 	if err != nil {
 		return err
 	}
@@ -46,7 +46,7 @@ func (e ExecuteCmdOnPkgs) Execute() error {
 		// at this point, there are no openAPI files in the rootPkgPath
 		if e.NeedOpenAPI {
 			// few executions need openAPI file to be present(ex: setters commands), if true throw an error
-			return errors.Errorf("unable to find %q in package %q", kptfilev1alpha2.KptFileName, e.RootPkgPath)
+			return errors.Errorf("unable to find %q in package %q", kptfilev1.KptFileName, e.RootPkgPath)
 		}
 
 		// add root path for commands which doesn't need openAPI(ex: annotate, fmt)
diff --git a/thirdparty/kyaml/runfn/runfn.go b/thirdparty/kyaml/runfn/runfn.go
index f289ce3d..828183c6 100644
--- a/thirdparty/kyaml/runfn/runfn.go
+++ b/thirdparty/kyaml/runfn/runfn.go
@@ -27,8 +27,8 @@ import (
 	"github.com/GoogleContainerTools/kpt/internal/pkg"
 	"github.com/GoogleContainerTools/kpt/internal/types"
 	"github.com/GoogleContainerTools/kpt/internal/util/printerutil"
-	fnresult "github.com/GoogleContainerTools/kpt/pkg/api/fnresult/v1alpha2"
-	kptfile "github.com/GoogleContainerTools/kpt/pkg/api/kptfile/v1alpha2"
+	fnresult "github.com/GoogleContainerTools/kpt/pkg/api/fnresult/v1"
+	kptfile "github.com/GoogleContainerTools/kpt/pkg/api/kptfile/v1"
 )
 
 // RunFns runs the set of configuration functions in a local directory against


Test patch:
diff --git a/e2e/live/testdata/Kptfile b/e2e/live/testdata/Kptfile
index 219f1a41..09651424 100644
--- a/e2e/live/testdata/Kptfile
+++ b/e2e/live/testdata/Kptfile
@@ -1,4 +1,4 @@
-apiVersion: kpt.dev/v1alpha2
+apiVersion: kpt.dev/v1
 kind: Kptfile
 metadata:
   name: test1
diff --git a/e2e/live/testdata/continue-on-error/Kptfile b/e2e/live/testdata/continue-on-error/Kptfile
index 219f1a41..09651424 100644
--- a/e2e/live/testdata/continue-on-error/Kptfile
+++ b/e2e/live/testdata/continue-on-error/Kptfile
@@ -1,4 +1,4 @@
-apiVersion: kpt.dev/v1alpha2
+apiVersion: kpt.dev/v1
 kind: Kptfile
 metadata:
   name: test1
diff --git a/e2e/live/testdata/migrate-case-1a/Kptfile b/e2e/live/testdata/migrate-case-1a/Kptfile
index 219f1a41..09651424 100644
--- a/e2e/live/testdata/migrate-case-1a/Kptfile
+++ b/e2e/live/testdata/migrate-case-1a/Kptfile
@@ -1,4 +1,4 @@
-apiVersion: kpt.dev/v1alpha2
+apiVersion: kpt.dev/v1
 kind: Kptfile
 metadata:
   name: test1
diff --git a/e2e/live/testdata/migrate-case-1b/Kptfile b/e2e/live/testdata/migrate-case-1b/Kptfile
index 219f1a41..09651424 100644
--- a/e2e/live/testdata/migrate-case-1b/Kptfile
+++ b/e2e/live/testdata/migrate-case-1b/Kptfile
@@ -1,4 +1,4 @@
-apiVersion: kpt.dev/v1alpha2
+apiVersion: kpt.dev/v1
 kind: Kptfile
 metadata:
   name: test1
diff --git a/e2e/live/testdata/migrate-error/Kptfile b/e2e/live/testdata/migrate-error/Kptfile
index 219f1a41..09651424 100644
--- a/e2e/live/testdata/migrate-error/Kptfile
+++ b/e2e/live/testdata/migrate-error/Kptfile
@@ -1,4 +1,4 @@
-apiVersion: kpt.dev/v1alpha2
+apiVersion: kpt.dev/v1
 kind: Kptfile
 metadata:
   name: test1
diff --git a/e2e/live/testdata/rbac-error-step-2/Kptfile b/e2e/live/testdata/rbac-error-step-2/Kptfile
index b9e87b55..a189ddea 100644
--- a/e2e/live/testdata/rbac-error-step-2/Kptfile
+++ b/e2e/live/testdata/rbac-error-step-2/Kptfile
@@ -1,4 +1,4 @@
-apiVersion: kpt.dev/v1alpha2
+apiVersion: kpt.dev/v1
 kind: Kptfile
 metadata:
   name: test1
diff --git a/e2e/live/testdata/rg-test-case-1a/Kptfile b/e2e/live/testdata/rg-test-case-1a/Kptfile
index 219f1a41..09651424 100644
--- a/e2e/live/testdata/rg-test-case-1a/Kptfile
+++ b/e2e/live/testdata/rg-test-case-1a/Kptfile
@@ -1,4 +1,4 @@
-apiVersion: kpt.dev/v1alpha2
+apiVersion: kpt.dev/v1
 kind: Kptfile
 metadata:
   name: test1
diff --git a/e2e/live/testdata/rg-test-case-1b/Kptfile b/e2e/live/testdata/rg-test-case-1b/Kptfile
index 219f1a41..09651424 100644
--- a/e2e/live/testdata/rg-test-case-1b/Kptfile
+++ b/e2e/live/testdata/rg-test-case-1b/Kptfile
@@ -1,4 +1,4 @@
-apiVersion: kpt.dev/v1alpha2
+apiVersion: kpt.dev/v1
 kind: Kptfile
 metadata:
   name: test1
diff --git a/e2e/live/testdata/test-case-1a/Kptfile b/e2e/live/testdata/test-case-1a/Kptfile
index 219f1a41..09651424 100644
--- a/e2e/live/testdata/test-case-1a/Kptfile
+++ b/e2e/live/testdata/test-case-1a/Kptfile
@@ -1,4 +1,4 @@
-apiVersion: kpt.dev/v1alpha2
+apiVersion: kpt.dev/v1
 kind: Kptfile
 metadata:
   name: test1
diff --git a/e2e/live/testdata/test-case-1b/Kptfile b/e2e/live/testdata/test-case-1b/Kptfile
index 219f1a41..09651424 100644
--- a/e2e/live/testdata/test-case-1b/Kptfile
+++ b/e2e/live/testdata/test-case-1b/Kptfile
@@ -1,4 +1,4 @@
-apiVersion: kpt.dev/v1alpha2
+apiVersion: kpt.dev/v1
 kind: Kptfile
 metadata:
   name: test1
diff --git a/e2e/testdata/fn-eval/consistent-formatting/.expected/diff.patch b/e2e/testdata/fn-eval/consistent-formatting/.expected/diff.patch
index 82882346..b44f8e3d 100644
--- a/e2e/testdata/fn-eval/consistent-formatting/.expected/diff.patch
+++ b/e2e/testdata/fn-eval/consistent-formatting/.expected/diff.patch
@@ -1,8 +1,8 @@
 diff --git a/Kptfile b/Kptfile
-index fa1bd2d..dd352a8 100644
+index 1f982e2..d815cdb 100644
 --- a/Kptfile
 +++ b/Kptfile
-@@ -2,16 +2,7 @@ apiVersion: kpt.dev/v1alpha2
+@@ -2,16 +2,7 @@ apiVersion: kpt.dev/v1
  kind: Kptfile
  metadata:
    name: nginx
diff --git a/e2e/testdata/fn-eval/consistent-formatting/Kptfile b/e2e/testdata/fn-eval/consistent-formatting/Kptfile
index fa1bd2d0..1f982e28 100644
--- a/e2e/testdata/fn-eval/consistent-formatting/Kptfile
+++ b/e2e/testdata/fn-eval/consistent-formatting/Kptfile
@@ -1,4 +1,4 @@
-apiVersion: kpt.dev/v1alpha2
+apiVersion: kpt.dev/v1
 kind: Kptfile
 metadata:
   name: nginx
diff --git a/e2e/testdata/fn-eval/exclude-fn-config-by-default/Kptfile b/e2e/testdata/fn-eval/exclude-fn-config-by-default/Kptfile
index 39dec05b..f5bb2df7 100644
--- a/e2e/testdata/fn-eval/exclude-fn-config-by-default/Kptfile
+++ b/e2e/testdata/fn-eval/exclude-fn-config-by-default/Kptfile
@@ -1,4 +1,4 @@
-apiVersion: kpt.dev/v1alpha2
+apiVersion: kpt.dev/v1
 kind: Kptfile
 metadata:
   name: app
diff --git a/e2e/testdata/fn-eval/exclude-kptfile-by-default/Kptfile b/e2e/testdata/fn-eval/exclude-kptfile-by-default/Kptfile
index 883da19e..d9e2f05c 100644
--- a/e2e/testdata/fn-eval/exclude-kptfile-by-default/Kptfile
+++ b/e2e/testdata/fn-eval/exclude-kptfile-by-default/Kptfile
@@ -1,4 +1,4 @@
-apiVersion: kpt.dev/v1alpha2
+apiVersion: kpt.dev/v1
 kind: Kptfile
 metadata:
   name: app
diff --git a/e2e/testdata/fn-eval/fn-config-file-in-pkg/.expected/diff.patch b/e2e/testdata/fn-eval/fn-config-file-in-pkg/.expected/diff.patch
index 1e6774f0..d7a19516 100644
--- a/e2e/testdata/fn-eval/fn-config-file-in-pkg/.expected/diff.patch
+++ b/e2e/testdata/fn-eval/fn-config-file-in-pkg/.expected/diff.patch
@@ -27,4 +27,4 @@ index 7a494c9..254b9cd 100644
    name: custom
 +  namespace: staging
  spec:
-   image: nginx:1.2.3
\ No newline at end of file
+   image: nginx:1.2.3
diff --git a/e2e/testdata/fn-eval/fn-source/exclude-meta-resources-by-default-out-of-place/.expected/diff.patch b/e2e/testdata/fn-eval/fn-source/exclude-meta-resources-by-default-out-of-place/.expected/diff.patch
index 3a602303..08903691 100644
--- a/e2e/testdata/fn-eval/fn-source/exclude-meta-resources-by-default-out-of-place/.expected/diff.patch
+++ b/e2e/testdata/fn-eval/fn-source/exclude-meta-resources-by-default-out-of-place/.expected/diff.patch
@@ -1,10 +1,10 @@
 diff --git a/Kptfile b/Kptfile
 deleted file mode 100644
-index 39dec05..0000000
+index f5bb2df..0000000
 --- a/Kptfile
 +++ /dev/null
 @@ -1,8 +0,0 @@
--apiVersion: kpt.dev/v1alpha2
+-apiVersion: kpt.dev/v1
 -kind: Kptfile
 -metadata:
 -  name: app
diff --git a/e2e/testdata/fn-eval/fn-source/exclude-meta-resources-by-default-out-of-place/Kptfile b/e2e/testdata/fn-eval/fn-source/exclude-meta-resources-by-default-out-of-place/Kptfile
index 39dec05b..f5bb2df7 100644
--- a/e2e/testdata/fn-eval/fn-source/exclude-meta-resources-by-default-out-of-place/Kptfile
+++ b/e2e/testdata/fn-eval/fn-source/exclude-meta-resources-by-default-out-of-place/Kptfile
@@ -1,4 +1,4 @@
-apiVersion: kpt.dev/v1alpha2
+apiVersion: kpt.dev/v1
 kind: Kptfile
 metadata:
   name: app
diff --git a/e2e/testdata/fn-eval/fn-source/exclude-meta-resources-by-default/Kptfile b/e2e/testdata/fn-eval/fn-source/exclude-meta-resources-by-default/Kptfile
index 39dec05b..f5bb2df7 100644
--- a/e2e/testdata/fn-eval/fn-source/exclude-meta-resources-by-default/Kptfile
+++ b/e2e/testdata/fn-eval/fn-source/exclude-meta-resources-by-default/Kptfile
@@ -1,4 +1,4 @@
-apiVersion: kpt.dev/v1alpha2
+apiVersion: kpt.dev/v1
 kind: Kptfile
 metadata:
   name: app
diff --git a/e2e/testdata/fn-eval/fn-source/include-meta-resource-out-of-place/.expected/diff.patch b/e2e/testdata/fn-eval/fn-source/include-meta-resource-out-of-place/.expected/diff.patch
index 9352e170..6286e742 100644
--- a/e2e/testdata/fn-eval/fn-source/include-meta-resource-out-of-place/.expected/diff.patch
+++ b/e2e/testdata/fn-eval/fn-source/include-meta-resource-out-of-place/.expected/diff.patch
@@ -1,8 +1,8 @@
 diff --git a/Kptfile b/Kptfile
-index 39dec05..47f7bf4 100644
+index f5bb2df..4fad916 100644
 --- a/Kptfile
 +++ b/Kptfile
-@@ -2,6 +2,7 @@ apiVersion: kpt.dev/v1alpha2
+@@ -2,6 +2,7 @@ apiVersion: kpt.dev/v1
  kind: Kptfile
  metadata:
    name: app
diff --git a/e2e/testdata/fn-eval/fn-source/include-meta-resource-out-of-place/Kptfile b/e2e/testdata/fn-eval/fn-source/include-meta-resource-out-of-place/Kptfile
index 39dec05b..f5bb2df7 100644
--- a/e2e/testdata/fn-eval/fn-source/include-meta-resource-out-of-place/Kptfile
+++ b/e2e/testdata/fn-eval/fn-source/include-meta-resource-out-of-place/Kptfile
@@ -1,4 +1,4 @@
-apiVersion: kpt.dev/v1alpha2
+apiVersion: kpt.dev/v1
 kind: Kptfile
 metadata:
   name: app
diff --git a/e2e/testdata/fn-eval/fn-source/include-meta-resources/.expected/diff.patch b/e2e/testdata/fn-eval/fn-source/include-meta-resources/.expected/diff.patch
index 9352e170..6286e742 100644
--- a/e2e/testdata/fn-eval/fn-source/include-meta-resources/.expected/diff.patch
+++ b/e2e/testdata/fn-eval/fn-source/include-meta-resources/.expected/diff.patch
@@ -1,8 +1,8 @@
 diff --git a/Kptfile b/Kptfile
-index 39dec05..47f7bf4 100644
+index f5bb2df..4fad916 100644
 --- a/Kptfile
 +++ b/Kptfile
-@@ -2,6 +2,7 @@ apiVersion: kpt.dev/v1alpha2
+@@ -2,6 +2,7 @@ apiVersion: kpt.dev/v1
  kind: Kptfile
  metadata:
    name: app
diff --git a/e2e/testdata/fn-eval/fn-source/include-meta-resources/Kptfile b/e2e/testdata/fn-eval/fn-source/include-meta-resources/Kptfile
index 39dec05b..f5bb2df7 100644
--- a/e2e/testdata/fn-eval/fn-source/include-meta-resources/Kptfile
+++ b/e2e/testdata/fn-eval/fn-source/include-meta-resources/Kptfile
@@ -1,4 +1,4 @@
-apiVersion: kpt.dev/v1alpha2
+apiVersion: kpt.dev/v1
 kind: Kptfile
 metadata:
   name: app
diff --git a/e2e/testdata/fn-eval/fn-success-with-stderr/pkg/.expected/results.yaml b/e2e/testdata/fn-eval/fn-success-with-stderr/pkg/.expected/results.yaml
index dd344109..7afc0e42 100644
--- a/e2e/testdata/fn-eval/fn-success-with-stderr/pkg/.expected/results.yaml
+++ b/e2e/testdata/fn-eval/fn-success-with-stderr/pkg/.expected/results.yaml
@@ -1,4 +1,4 @@
-apiVersion: kpt.dev/v1alpha2
+apiVersion: kpt.dev/v1
 kind: FunctionResultList
 metadata:
   name: fnresults
diff --git a/e2e/testdata/fn-eval/include-meta-resources-v1alpha1/.expected/diff.patch b/e2e/testdata/fn-eval/include-meta-resources-v1alpha1/.expected/diff.patch
index f9c452d6..edb6f5f9 100644
--- a/e2e/testdata/fn-eval/include-meta-resources-v1alpha1/.expected/diff.patch
+++ b/e2e/testdata/fn-eval/include-meta-resources-v1alpha1/.expected/diff.patch
@@ -39,4 +39,4 @@ index 7a494c9..254b9cd 100644
    name: custom
 +  namespace: staging
  spec:
-   image: nginx:1.2.3
\ No newline at end of file
+   image: nginx:1.2.3
diff --git a/e2e/testdata/fn-eval/include-meta-resources-v1alpha2/.expected/config.yaml b/e2e/testdata/fn-eval/include-meta-resources-v1alpha2/.expected/config.yaml
new file mode 100644
index 00000000..691d0b7f
--- /dev/null
+++ b/e2e/testdata/fn-eval/include-meta-resources-v1alpha2/.expected/config.yaml
@@ -0,0 +1,20 @@
+# Copyright 2021 Google LLC
+#
+# 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.
+
+runCount: 2
+testType: eval
+image: gcr.io/kpt-fn/set-namespace:v0.1.3
+includeMetaResources: true
+args:
+  namespace: staging
diff --git a/e2e/testdata/fn-eval/include-meta-resources-v1alpha2/.expected/diff.patch b/e2e/testdata/fn-eval/include-meta-resources-v1alpha2/.expected/diff.patch
new file mode 100644
index 00000000..9352e170
--- /dev/null
+++ b/e2e/testdata/fn-eval/include-meta-resources-v1alpha2/.expected/diff.patch
@@ -0,0 +1,42 @@
+diff --git a/Kptfile b/Kptfile
+index 39dec05..47f7bf4 100644
+--- a/Kptfile
++++ b/Kptfile
+@@ -2,6 +2,7 @@ apiVersion: kpt.dev/v1alpha2
+ kind: Kptfile
+ metadata:
+   name: app
++  namespace: staging
+ pipeline:
+   mutators:
+     - image: gcr.io/kpt-fn/set-labels:v0.1.4
+diff --git a/labelconfig.yaml b/labelconfig.yaml
+index 7ef9890..f3a8b49 100644
+--- a/labelconfig.yaml
++++ b/labelconfig.yaml
+@@ -15,5 +15,6 @@ apiVersion: v1
+ kind: ConfigMap
+ metadata:
+   name: label-config
++  namespace: staging
+ data:
+   tier: app
+diff --git a/resources.yaml b/resources.yaml
+index 7a494c9..254b9cd 100644
+--- a/resources.yaml
++++ b/resources.yaml
+@@ -15,6 +15,7 @@ apiVersion: apps/v1
+ kind: Deployment
+ metadata:
+   name: nginx-deployment
++  namespace: staging
+ spec:
+   replicas: 3
+ ---
+@@ -22,5 +23,6 @@ apiVersion: custom.io/v1
+ kind: Custom
+ metadata:
+   name: custom
++  namespace: staging
+ spec:
+   image: nginx:1.2.3
diff --git a/e2e/testdata/fn-eval/include-meta-resources-v1alpha2/.krmignore b/e2e/testdata/fn-eval/include-meta-resources-v1alpha2/.krmignore
new file mode 100644
index 00000000..9d7a4007
--- /dev/null
+++ b/e2e/testdata/fn-eval/include-meta-resources-v1alpha2/.krmignore
@@ -0,0 +1,1 @@
+.expected
diff --git a/e2e/testdata/fn-eval/include-meta-resources-v1alpha2/Kptfile b/e2e/testdata/fn-eval/include-meta-resources-v1alpha2/Kptfile
new file mode 100644
index 00000000..39dec05b
--- /dev/null
+++ b/e2e/testdata/fn-eval/include-meta-resources-v1alpha2/Kptfile
@@ -0,0 +1,8 @@
+apiVersion: kpt.dev/v1alpha2
+kind: Kptfile
+metadata:
+  name: app
+pipeline:
+  mutators:
+    - image: gcr.io/kpt-fn/set-labels:v0.1.4
+      configPath: labelconfig.yaml
diff --git a/e2e/testdata/fn-eval/include-meta-resources-v1alpha2/labelconfig.yaml b/e2e/testdata/fn-eval/include-meta-resources-v1alpha2/labelconfig.yaml
new file mode 100644
index 00000000..7ef98902
--- /dev/null
+++ b/e2e/testdata/fn-eval/include-meta-resources-v1alpha2/labelconfig.yaml
@@ -0,0 +1,19 @@
+# Copyright 2021 Google LLC
+#
+# 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.
+apiVersion: v1
+kind: ConfigMap
+metadata:
+  name: label-config
+data:
+  tier: app
diff --git a/e2e/testdata/fn-eval/include-meta-resources-v1alpha2/resources.yaml b/e2e/testdata/fn-eval/include-meta-resources-v1alpha2/resources.yaml
new file mode 100644
index 00000000..7a494c9c
--- /dev/null
+++ b/e2e/testdata/fn-eval/include-meta-resources-v1alpha2/resources.yaml
@@ -0,0 +1,26 @@
+# Copyright 2021 Google LLC
+#
+# 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.
+apiVersion: apps/v1
+kind: Deployment
+metadata:
+  name: nginx-deployment
+spec:
+  replicas: 3
+---
+apiVersion: custom.io/v1
+kind: Custom
+metadata:
+  name: custom
+spec:
+  image: nginx:1.2.3
diff --git a/e2e/testdata/fn-eval/include-meta-resources/.expected/diff.patch b/e2e/testdata/fn-eval/include-meta-resources/.expected/diff.patch
index 9352e170..6286e742 100644
--- a/e2e/testdata/fn-eval/include-meta-resources/.expected/diff.patch
+++ b/e2e/testdata/fn-eval/include-meta-resources/.expected/diff.patch
@@ -1,8 +1,8 @@
 diff --git a/Kptfile b/Kptfile
-index 39dec05..47f7bf4 100644
+index f5bb2df..4fad916 100644
 --- a/Kptfile
 +++ b/Kptfile
-@@ -2,6 +2,7 @@ apiVersion: kpt.dev/v1alpha2
+@@ -2,6 +2,7 @@ apiVersion: kpt.dev/v1
  kind: Kptfile
  metadata:
    name: app
diff --git a/e2e/testdata/fn-eval/include-meta-resources/Kptfile b/e2e/testdata/fn-eval/include-meta-resources/Kptfile
index 39dec05b..f5bb2df7 100644
--- a/e2e/testdata/fn-eval/include-meta-resources/Kptfile
+++ b/e2e/testdata/fn-eval/include-meta-resources/Kptfile
@@ -1,4 +1,4 @@
-apiVersion: kpt.dev/v1alpha2
+apiVersion: kpt.dev/v1
 kind: Kptfile
 metadata:
   name: app
diff --git a/e2e/testdata/fn-eval/missing-fn-config/.expected/results.yaml b/e2e/testdata/fn-eval/missing-fn-config/.expected/results.yaml
index 7f356456..5e68116e 100644
--- a/e2e/testdata/fn-eval/missing-fn-config/.expected/results.yaml
+++ b/e2e/testdata/fn-eval/missing-fn-config/.expected/results.yaml
@@ -1,4 +1,4 @@
-apiVersion: kpt.dev/v1alpha2
+apiVersion: kpt.dev/v1
 kind: FunctionResultList
 metadata:
   name: fnresults
diff --git a/e2e/testdata/fn-eval/out-of-place-dir/.expected/diff.patch b/e2e/testdata/fn-eval/out-of-place-dir/.expected/diff.patch
index e27541d5..1ab5a71d 100644
--- a/e2e/testdata/fn-eval/out-of-place-dir/.expected/diff.patch
+++ b/e2e/testdata/fn-eval/out-of-place-dir/.expected/diff.patch
@@ -31,4 +31,4 @@ index 0000000..254b9cd
 +  name: custom
 +  namespace: staging
 +spec:
-+  image: nginx:1.2.3
\ No newline at end of file
++  image: nginx:1.2.3
diff --git a/e2e/testdata/fn-eval/out-of-place-fnchain-unwrap/Kptfile b/e2e/testdata/fn-eval/out-of-place-fnchain-unwrap/Kptfile
index 2d1b28a8..7fc6888b 100644
--- a/e2e/testdata/fn-eval/out-of-place-fnchain-unwrap/Kptfile
+++ b/e2e/testdata/fn-eval/out-of-place-fnchain-unwrap/Kptfile
@@ -1,4 +1,4 @@
-apiVersion: kpt.dev/v1alpha2
+apiVersion: kpt.dev/v1
 kind: Kptfile
 metadata:
   name: app
diff --git a/e2e/testdata/fn-eval/out-of-place-source-sink/.expected/diff.patch b/e2e/testdata/fn-eval/out-of-place-source-sink/.expected/diff.patch
index e27541d5..1ab5a71d 100644
--- a/e2e/testdata/fn-eval/out-of-place-source-sink/.expected/diff.patch
+++ b/e2e/testdata/fn-eval/out-of-place-source-sink/.expected/diff.patch
@@ -31,4 +31,4 @@ index 0000000..254b9cd
 +  name: custom
 +  namespace: staging
 +spec:
-+  image: nginx:1.2.3
\ No newline at end of file
++  image: nginx:1.2.3
diff --git a/e2e/testdata/fn-eval/structured-results-in-stdout/.expected/results.yaml b/e2e/testdata/fn-eval/structured-results-in-stdout/.expected/results.yaml
index 11f0d9e4..f09a6815 100755
--- a/e2e/testdata/fn-eval/structured-results-in-stdout/.expected/results.yaml
+++ b/e2e/testdata/fn-eval/structured-results-in-stdout/.expected/results.yaml
@@ -1,4 +1,4 @@
-apiVersion: kpt.dev/v1alpha2
+apiVersion: kpt.dev/v1
 kind: FunctionResultList
 metadata:
   name: fnresults
diff --git a/e2e/testdata/fn-eval/subpkg-exclude-fn-config-by-default/Kptfile b/e2e/testdata/fn-eval/subpkg-exclude-fn-config-by-default/Kptfile
index 39dec05b..f5bb2df7 100644
--- a/e2e/testdata/fn-eval/subpkg-exclude-fn-config-by-default/Kptfile
+++ b/e2e/testdata/fn-eval/subpkg-exclude-fn-config-by-default/Kptfile
@@ -1,4 +1,4 @@
-apiVersion: kpt.dev/v1alpha2
+apiVersion: kpt.dev/v1
 kind: Kptfile
 metadata:
   name: app
diff --git a/e2e/testdata/fn-eval/subpkg-exclude-fn-config-by-default/db/Kptfile b/e2e/testdata/fn-eval/subpkg-exclude-fn-config-by-default/db/Kptfile
index 268f4384..6218d66d 100644
--- a/e2e/testdata/fn-eval/subpkg-exclude-fn-config-by-default/db/Kptfile
+++ b/e2e/testdata/fn-eval/subpkg-exclude-fn-config-by-default/db/Kptfile
@@ -1,4 +1,4 @@
-apiVersion: kpt.dev/v1alpha2
+apiVersion: kpt.dev/v1
 kind: Kptfile
 metadata:
   name: db
diff --git a/e2e/testdata/fn-eval/subpkg-include-meta-resources/.expected/diff.patch b/e2e/testdata/fn-eval/subpkg-include-meta-resources/.expected/diff.patch
index a2ed2d76..77b7d179 100644
--- a/e2e/testdata/fn-eval/subpkg-include-meta-resources/.expected/diff.patch
+++ b/e2e/testdata/fn-eval/subpkg-include-meta-resources/.expected/diff.patch
@@ -1,8 +1,8 @@
 diff --git a/Kptfile b/Kptfile
-index 39dec05..47f7bf4 100644
+index f5bb2df..4fad916 100644
 --- a/Kptfile
 +++ b/Kptfile
-@@ -2,6 +2,7 @@ apiVersion: kpt.dev/v1alpha2
+@@ -2,6 +2,7 @@ apiVersion: kpt.dev/v1
  kind: Kptfile
  metadata:
    name: app
@@ -11,10 +11,10 @@ index 39dec05..47f7bf4 100644
    mutators:
      - image: gcr.io/kpt-fn/set-labels:v0.1.4
 diff --git a/db/Kptfile b/db/Kptfile
-index 268f438..ab19d9f 100644
+index 6218d66..b776983 100644
 --- a/db/Kptfile
 +++ b/db/Kptfile
-@@ -2,6 +2,7 @@ apiVersion: kpt.dev/v1alpha2
+@@ -2,6 +2,7 @@ apiVersion: kpt.dev/v1
  kind: Kptfile
  metadata:
    name: db
diff --git a/e2e/testdata/fn-eval/subpkg-include-meta-resources/Kptfile b/e2e/testdata/fn-eval/subpkg-include-meta-resources/Kptfile
index 39dec05b..f5bb2df7 100644
--- a/e2e/testdata/fn-eval/subpkg-include-meta-resources/Kptfile
+++ b/e2e/testdata/fn-eval/subpkg-include-meta-resources/Kptfile
@@ -1,4 +1,4 @@
-apiVersion: kpt.dev/v1alpha2
+apiVersion: kpt.dev/v1
 kind: Kptfile
 metadata:
   name: app
diff --git a/e2e/testdata/fn-eval/subpkg-include-meta-resources/db/Kptfile b/e2e/testdata/fn-eval/subpkg-include-meta-resources/db/Kptfile
index 268f4384..6218d66d 100644
--- a/e2e/testdata/fn-eval/subpkg-include-meta-resources/db/Kptfile
+++ b/e2e/testdata/fn-eval/subpkg-include-meta-resources/db/Kptfile
@@ -1,4 +1,4 @@
-apiVersion: kpt.dev/v1alpha2
+apiVersion: kpt.dev/v1
 kind: Kptfile
 metadata:
   name: db
diff --git a/e2e/testdata/fn-render/all-resource-deletion/.expected/diff.patch b/e2e/testdata/fn-render/all-resource-deletion/.expected/diff.patch
index 845feae6..4940b227 100644
--- a/e2e/testdata/fn-render/all-resource-deletion/.expected/diff.patch
+++ b/e2e/testdata/fn-render/all-resource-deletion/.expected/diff.patch
@@ -52,4 +52,4 @@ index 6590f6c..0000000
 -metadata:
 -  name: nginx-deployment
 -spec:
--  replicas: 3
\ No newline at end of file
+-  replicas: 3
diff --git a/e2e/testdata/fn-render/all-resource-deletion/Kptfile b/e2e/testdata/fn-render/all-resource-deletion/Kptfile
index f06fbae6..6a45343f 100644
--- a/e2e/testdata/fn-render/all-resource-deletion/Kptfile
+++ b/e2e/testdata/fn-render/all-resource-deletion/Kptfile
@@ -1,4 +1,4 @@
-apiVersion: kpt.dev/v1alpha2
+apiVersion: kpt.dev/v1
 kind: Kptfile
 metadata:
   name: app
diff --git a/e2e/testdata/fn-render/basicpipeline-out-of-place/Kptfile b/e2e/testdata/fn-render/basicpipeline-out-of-place/Kptfile
index 32bba40a..8e842410 100644
--- a/e2e/testdata/fn-render/basicpipeline-out-of-place/Kptfile
+++ b/e2e/testdata/fn-render/basicpipeline-out-of-place/Kptfile
@@ -1,4 +1,4 @@
-apiVersion: kpt.dev/v1alpha2
+apiVersion: kpt.dev/v1
 kind: Kptfile
 metadata:
   name: app
diff --git a/e2e/testdata/fn-render/basicpipeline-v1alpha1/.expected/config.yaml b/e2e/testdata/fn-render/basicpipeline-v1alpha1/.expected/config.yaml
new file mode 100644
index 00000000..297b94a4
--- /dev/null
+++ b/e2e/testdata/fn-render/basicpipeline-v1alpha1/.expected/config.yaml
@@ -0,0 +1,15 @@
+# Copyright 2021 Google LLC
+#
+# 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.
+exitCode: 1
+stdErr: 'has an old version ("v1alpha1") of the Kptfile schema'
diff --git a/e2e/testdata/fn-render/basicpipeline-v1alpha1/.krmignore b/e2e/testdata/fn-render/basicpipeline-v1alpha1/.krmignore
new file mode 100644
index 00000000..9d7a4007
--- /dev/null
+++ b/e2e/testdata/fn-render/basicpipeline-v1alpha1/.krmignore
@@ -0,0 +1,1 @@
+.expected
diff --git a/e2e/testdata/fn-render/basicpipeline-v1alpha1/Kptfile b/e2e/testdata/fn-render/basicpipeline-v1alpha1/Kptfile
new file mode 100644
index 00000000..54ce0ace
--- /dev/null
+++ b/e2e/testdata/fn-render/basicpipeline-v1alpha1/Kptfile
@@ -0,0 +1,101 @@
+apiVersion: kpt.dev/v1alpha1
+kind: Kptfile
+metadata:
+  name: nginx
+dependencies:
+  - name: hello-world
+    updateStrategy: fast-forward
+    stdin:
+      filenamePattern: foo*
+      original: bar
+    autoSet: false
+    ensureNotExists: false
+    functions:
+      - image: gcr.io/kpt-fn/my-func:v0.1
+        config:
+          apiVersion: v1
+          kind: ConfigMap
+          metadata:
+            name: function-config
+          data:
+            param1: value1
+    git:
+      directory: /package-examples/helloworld-set
+      ref: master
+      repo: https://github.com/GoogleContainerTools/kpt
+functions:
+  autoRunStarlark: true
+  starlarkFunctions:
+    - name: foo-star
+      path: path/to/foo-star.yaml
+inventory:
+  name: inventory-00933591
+  namespace: some-space
+  labels:
+    foo: bar
+  annotations:
+    abc: def
+  inventoryID: 92c234b7e9267815b0c3e17c9e4d7139a16c104f-1620493522822890000
+openAPI:
+  definitions:
+    io.k8s.cli.setters.image:
+      x-k8s-cli:
+        setter:
+          name: image
+          value: nginx
+    io.k8s.cli.setters.list:
+      type: array
+      x-k8s-cli:
+        setter:
+          name: list
+          value: ""
+          listValues:
+            - dev
+            - stage
+    io.k8s.cli.setters.namespace:
+      type: string
+      maxLength: 10
+      x-k8s-cli:
+        setter:
+          name: namespace
+          value: some-space
+    io.k8s.cli.setters.tag:
+      x-k8s-cli:
+        setter:
+          name: tag
+          value: 1.14.1
+    io.k8s.cli.substitutions.fullimage:
+      x-k8s-cli:
+        substitution:
+          name: fullimage
+          pattern: ${image}:${tag}
+          values:
+            - marker: ${image}
+              ref: '#/definitions/io.k8s.cli.setters.image'
+            - marker: ${tag}
+              ref: '#/definitions/io.k8s.cli.setters.tag'
+    io.k8s.cli.substitutions.imageidentifier:
+      x-k8s-cli:
+        substitution:
+          name: imageidentifier
+          pattern: deployment-${fullimage}
+          values:
+            - marker: ${fullimage}
+              ref: '#/definitions/io.k8s.cli.substitutions.fullimage'
+packageMetadata:
+  email: foo@gmail.com
+  license: license text
+  man: nginx man text
+  shortDescription: describe this package
+  tags:
+    - tag1
+    - tag2
+  url: https://github.com/GoogleContainerTools/kpt
+  version: v0.1
+upstream:
+  type: git
+  git:
+    commit: 4d2aa98b45ddee4b5fa45fbca16f2ff887de9efb
+    directory: package-examples/nginx
+    ref: v0.2
+    repo: https://github.com/GoogleContainerTools/kpt
diff --git a/e2e/testdata/fn-render/basicpipeline-v1alpha1/labelconfig.yaml b/e2e/testdata/fn-render/basicpipeline-v1alpha1/labelconfig.yaml
new file mode 100644
index 00000000..7ef98902
--- /dev/null
+++ b/e2e/testdata/fn-render/basicpipeline-v1alpha1/labelconfig.yaml
@@ -0,0 +1,19 @@
+# Copyright 2021 Google LLC
+#
+# 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.
+apiVersion: v1
+kind: ConfigMap
+metadata:
+  name: label-config
+data:
+  tier: app
diff --git a/e2e/testdata/fn-render/basicpipeline-v1alpha1/resources.yaml b/e2e/testdata/fn-render/basicpipeline-v1alpha1/resources.yaml
new file mode 100644
index 00000000..7a494c9c
--- /dev/null
+++ b/e2e/testdata/fn-render/basicpipeline-v1alpha1/resources.yaml
@@ -0,0 +1,26 @@
+# Copyright 2021 Google LLC
+#
+# 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.
+apiVersion: apps/v1
+kind: Deployment
+metadata:
+  name: nginx-deployment
+spec:
+  replicas: 3
+---
+apiVersion: custom.io/v1
+kind: Custom
+metadata:
+  name: custom
+spec:
+  image: nginx:1.2.3
diff --git a/e2e/testdata/fn-render/basicpipeline-v1alpha2/.expected/config.yaml b/e2e/testdata/fn-render/basicpipeline-v1alpha2/.expected/config.yaml
new file mode 100644
index 00000000..52b4a111
--- /dev/null
+++ b/e2e/testdata/fn-render/basicpipeline-v1alpha2/.expected/config.yaml
@@ -0,0 +1,15 @@
+# Copyright 2021 Google LLC
+#
+# 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.
+exitCode: 1
+stdErr: 'has an old version ("v1alpha2") of the Kptfile schema'
diff --git a/e2e/testdata/fn-render/basicpipeline-v1alpha2/.krmignore b/e2e/testdata/fn-render/basicpipeline-v1alpha2/.krmignore
new file mode 100644
index 00000000..9d7a4007
--- /dev/null
+++ b/e2e/testdata/fn-render/basicpipeline-v1alpha2/.krmignore
@@ -0,0 +1,1 @@
+.expected
diff --git a/e2e/testdata/fn-render/basicpipeline-v1alpha2/Kptfile b/e2e/testdata/fn-render/basicpipeline-v1alpha2/Kptfile
new file mode 100644
index 00000000..32bba40a
--- /dev/null
+++ b/e2e/testdata/fn-render/basicpipeline-v1alpha2/Kptfile
@@ -0,0 +1,12 @@
+apiVersion: kpt.dev/v1alpha2
+kind: Kptfile
+metadata:
+  name: app
+pipeline:
+  mutators:
+    - image: gcr.io/kpt-fn/set-namespace:v0.1.3
+      configMap:
+        namespace: staging
+    - image: gcr.io/kpt-fn/set-labels:v0.1.4
+      configMap:
+        tier: backend
diff --git a/e2e/testdata/fn-render/basicpipeline-v1alpha2/resources.yaml b/e2e/testdata/fn-render/basicpipeline-v1alpha2/resources.yaml
new file mode 100644
index 00000000..7a494c9c
--- /dev/null
+++ b/e2e/testdata/fn-render/basicpipeline-v1alpha2/resources.yaml
@@ -0,0 +1,26 @@
+# Copyright 2021 Google LLC
+#
+# 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.
+apiVersion: apps/v1
+kind: Deployment
+metadata:
+  name: nginx-deployment
+spec:
+  replicas: 3
+---
+apiVersion: custom.io/v1
+kind: Custom
+metadata:
+  name: custom
+spec:
+  image: nginx:1.2.3
diff --git a/e2e/testdata/fn-render/basicpipeline/Kptfile b/e2e/testdata/fn-render/basicpipeline/Kptfile
index 32bba40a..8e842410 100644
--- a/e2e/testdata/fn-render/basicpipeline/Kptfile
+++ b/e2e/testdata/fn-render/basicpipeline/Kptfile
@@ -1,4 +1,4 @@
-apiVersion: kpt.dev/v1alpha2
+apiVersion: kpt.dev/v1
 kind: Kptfile
 metadata:
   name: app
diff --git a/e2e/testdata/fn-render/empty-pipeline/Kptfile b/e2e/testdata/fn-render/empty-pipeline/Kptfile
index 30dcdc95..6371d397 100644
--- a/e2e/testdata/fn-render/empty-pipeline/Kptfile
+++ b/e2e/testdata/fn-render/empty-pipeline/Kptfile
@@ -1,4 +1,4 @@
-apiVersion: kpt.dev/v1alpha2
+apiVersion: kpt.dev/v1
 kind: Kptfile
 metadata:
   name: app
diff --git a/e2e/testdata/fn-render/fn-failure-output-no-truncate/Kptfile b/e2e/testdata/fn-render/fn-failure-output-no-truncate/Kptfile
index 4bad1873..f439fed6 100644
--- a/e2e/testdata/fn-render/fn-failure-output-no-truncate/Kptfile
+++ b/e2e/testdata/fn-render/fn-failure-output-no-truncate/Kptfile
@@ -1,4 +1,4 @@
-apiVersion: kpt.dev/v1alpha2
+apiVersion: kpt.dev/v1
 kind: Kptfile
 metadata:
   name: app
diff --git a/e2e/testdata/fn-render/fn-failure/Kptfile b/e2e/testdata/fn-render/fn-failure/Kptfile
index 2e675932..79cd86c1 100644
--- a/e2e/testdata/fn-render/fn-failure/Kptfile
+++ b/e2e/testdata/fn-render/fn-failure/Kptfile
@@ -1,4 +1,4 @@
-apiVersion: kpt.dev/v1alpha2
+apiVersion: kpt.dev/v1
 kind: Kptfile
 metadata:
   name: app
diff --git a/e2e/testdata/fn-render/fn-success-with-stderr/.expected/results.yaml b/e2e/testdata/fn-render/fn-success-with-stderr/.expected/results.yaml
index dd344109..7afc0e42 100644
--- a/e2e/testdata/fn-render/fn-success-with-stderr/.expected/results.yaml
+++ b/e2e/testdata/fn-render/fn-success-with-stderr/.expected/results.yaml
@@ -1,4 +1,4 @@
-apiVersion: kpt.dev/v1alpha2
+apiVersion: kpt.dev/v1
 kind: FunctionResultList
 metadata:
   name: fnresults
diff --git a/e2e/testdata/fn-render/fn-success-with-stderr/Kptfile b/e2e/testdata/fn-render/fn-success-with-stderr/Kptfile
index 3886601a..52ab42bb 100644
--- a/e2e/testdata/fn-render/fn-success-with-stderr/Kptfile
+++ b/e2e/testdata/fn-render/fn-success-with-stderr/Kptfile
@@ -1,4 +1,4 @@
-apiVersion: kpt.dev/v1alpha2
+apiVersion: kpt.dev/v1
 kind: Kptfile
 metadata:
   name: app
diff --git a/e2e/testdata/fn-render/fnconfig-ancestorfn-not-mutate-subpkg-config/Kptfile b/e2e/testdata/fn-render/fnconfig-ancestorfn-not-mutate-subpkg-config/Kptfile
index b4675527..b64764a7 100644
--- a/e2e/testdata/fn-render/fnconfig-ancestorfn-not-mutate-subpkg-config/Kptfile
+++ b/e2e/testdata/fn-render/fnconfig-ancestorfn-not-mutate-subpkg-config/Kptfile
@@ -1,4 +1,4 @@
-apiVersion: kpt.dev/v1alpha2
+apiVersion: kpt.dev/v1
 kind: Kptfile
 metadata:
   name: app-with-db
diff --git a/e2e/testdata/fn-render/fnconfig-ancestorfn-not-mutate-subpkg-config/db/Kptfile b/e2e/testdata/fn-render/fnconfig-ancestorfn-not-mutate-subpkg-config/db/Kptfile
index 268f4384..6218d66d 100644
--- a/e2e/testdata/fn-render/fnconfig-ancestorfn-not-mutate-subpkg-config/db/Kptfile
+++ b/e2e/testdata/fn-render/fnconfig-ancestorfn-not-mutate-subpkg-config/db/Kptfile
@@ -1,4 +1,4 @@
-apiVersion: kpt.dev/v1alpha2
+apiVersion: kpt.dev/v1
 kind: Kptfile
 metadata:
   name: db
diff --git a/e2e/testdata/fn-render/fnconfig-cannot-refer-subpkgs/Kptfile b/e2e/testdata/fn-render/fnconfig-cannot-refer-subpkgs/Kptfile
index e42d2c2f..fd29bd12 100644
--- a/e2e/testdata/fn-render/fnconfig-cannot-refer-subpkgs/Kptfile
+++ b/e2e/testdata/fn-render/fnconfig-cannot-refer-subpkgs/Kptfile
@@ -1,4 +1,4 @@
-apiVersion: kpt.dev/v1alpha2
+apiVersion: kpt.dev/v1
 kind: Kptfile
 metadata:
   name: app-with-db
diff --git a/e2e/testdata/fn-render/fnconfig-cannot-refer-subpkgs/db/Kptfile b/e2e/testdata/fn-render/fnconfig-cannot-refer-subpkgs/db/Kptfile
index 60f507d0..79b7a5a3 100644
--- a/e2e/testdata/fn-render/fnconfig-cannot-refer-subpkgs/db/Kptfile
+++ b/e2e/testdata/fn-render/fnconfig-cannot-refer-subpkgs/db/Kptfile
@@ -1,4 +1,4 @@
-apiVersion: kpt.dev/v1alpha2
+apiVersion: kpt.dev/v1
 kind: Kptfile
 metadata:
   name: db
diff --git a/e2e/testdata/fn-render/fnconfig-missing-name/Kptfile b/e2e/testdata/fn-render/fnconfig-missing-name/Kptfile
index c61850f6..2df71a94 100644
--- a/e2e/testdata/fn-render/fnconfig-missing-name/Kptfile
+++ b/e2e/testdata/fn-render/fnconfig-missing-name/Kptfile
@@ -1,4 +1,4 @@
-apiVersion: kpt.dev/v1alpha2
+apiVersion: kpt.dev/v1
 kind: Kptfile
 metadata:
   name: app-with-db
diff --git a/e2e/testdata/fn-render/fnconfig-multiple-config-one-file/Kptfile b/e2e/testdata/fn-render/fnconfig-multiple-config-one-file/Kptfile
index c1b18744..1aeaa2ca 100644
--- a/e2e/testdata/fn-render/fnconfig-multiple-config-one-file/Kptfile
+++ b/e2e/testdata/fn-render/fnconfig-multiple-config-one-file/Kptfile
@@ -1,8 +1,8 @@
-apiVersion: kpt.dev/v1alpha2
+apiVersion: kpt.dev/v1
 kind: Kptfile
 metadata:
   name: app-with-db
 pipeline:
   mutators:
     - image: gcr.io/kpt-fn/set-labels:v0.1.4
-      configPath: labelconfig.yaml
\ No newline at end of file
+      configPath: labelconfig.yaml
diff --git a/e2e/testdata/fn-render/fnconfig-not-relative/Kptfile b/e2e/testdata/fn-render/fnconfig-not-relative/Kptfile
index 406de845..4648a7c0 100644
--- a/e2e/testdata/fn-render/fnconfig-not-relative/Kptfile
+++ b/e2e/testdata/fn-render/fnconfig-not-relative/Kptfile
@@ -1,4 +1,4 @@
-apiVersion: kpt.dev/v1alpha2
+apiVersion: kpt.dev/v1
 kind: Kptfile
 metadata:
   name: app-with-db
diff --git a/e2e/testdata/fn-render/fnconfig-outside-package/Kptfile b/e2e/testdata/fn-render/fnconfig-outside-package/Kptfile
index 3b638833..7a03156f 100644
--- a/e2e/testdata/fn-render/fnconfig-outside-package/Kptfile
+++ b/e2e/testdata/fn-render/fnconfig-outside-package/Kptfile
@@ -1,4 +1,4 @@
-apiVersion: kpt.dev/v1alpha2
+apiVersion: kpt.dev/v1
 kind: Kptfile
 metadata:
   name: app-with-db
diff --git a/e2e/testdata/fn-render/fnconfig-pkgfn-refers-subdir/Kptfile b/e2e/testdata/fn-render/fnconfig-pkgfn-refers-subdir/Kptfile
index e3fb8f9c..acf4d0ac 100644
--- a/e2e/testdata/fn-render/fnconfig-pkgfn-refers-subdir/Kptfile
+++ b/e2e/testdata/fn-render/fnconfig-pkgfn-refers-subdir/Kptfile
@@ -1,4 +1,4 @@
-apiVersion: kpt.dev/v1alpha2
+apiVersion: kpt.dev/v1
 kind: Kptfile
 metadata:
   name: app-with-db
diff --git a/e2e/testdata/fn-render/fnconfig/Kptfile b/e2e/testdata/fn-render/fnconfig/Kptfile
index 398d6101..ae8c2d2d 100644
--- a/e2e/testdata/fn-render/fnconfig/Kptfile
+++ b/e2e/testdata/fn-render/fnconfig/Kptfile
@@ -1,4 +1,4 @@
-apiVersion: kpt.dev/v1alpha2
+apiVersion: kpt.dev/v1
 kind: Kptfile
 metadata:
   name: app-with-db
diff --git a/e2e/testdata/fn-render/fnconfig/db/Kptfile b/e2e/testdata/fn-render/fnconfig/db/Kptfile
index 530d4ad0..8c0fd517 100644
--- a/e2e/testdata/fn-render/fnconfig/db/Kptfile
+++ b/e2e/testdata/fn-render/fnconfig/db/Kptfile
@@ -1,4 +1,4 @@
-apiVersion: kpt.dev/v1alpha2
+apiVersion: kpt.dev/v1
 kind: Kptfile
 metadata:
   name: db
diff --git a/e2e/testdata/fn-render/fnresult-fn-failure/.expected/results.yaml b/e2e/testdata/fn-render/fnresult-fn-failure/.expected/results.yaml
index 46dfdadc..9fbcdc2b 100755
--- a/e2e/testdata/fn-render/fnresult-fn-failure/.expected/results.yaml
+++ b/e2e/testdata/fn-render/fnresult-fn-failure/.expected/results.yaml
@@ -1,4 +1,4 @@
-apiVersion: kpt.dev/v1alpha2
+apiVersion: kpt.dev/v1
 kind: FunctionResultList
 metadata:
   name: fnresults
diff --git a/e2e/testdata/fn-render/fnresult-fn-failure/Kptfile b/e2e/testdata/fn-render/fnresult-fn-failure/Kptfile
index 4bad1873..f439fed6 100644
--- a/e2e/testdata/fn-render/fnresult-fn-failure/Kptfile
+++ b/e2e/testdata/fn-render/fnresult-fn-failure/Kptfile
@@ -1,4 +1,4 @@
-apiVersion: kpt.dev/v1alpha2
+apiVersion: kpt.dev/v1
 kind: Kptfile
 metadata:
   name: app
diff --git a/e2e/testdata/fn-render/fnresult-fn-success/.expected/results.yaml b/e2e/testdata/fn-render/fnresult-fn-success/.expected/results.yaml
index 11f0d9e4..f09a6815 100755
--- a/e2e/testdata/fn-render/fnresult-fn-success/.expected/results.yaml
+++ b/e2e/testdata/fn-render/fnresult-fn-success/.expected/results.yaml
@@ -1,4 +1,4 @@
-apiVersion: kpt.dev/v1alpha2
+apiVersion: kpt.dev/v1
 kind: FunctionResultList
 metadata:
   name: fnresults
diff --git a/e2e/testdata/fn-render/fnresult-fn-success/Kptfile b/e2e/testdata/fn-render/fnresult-fn-success/Kptfile
index 4c98a1ae..e08489fe 100644
--- a/e2e/testdata/fn-render/fnresult-fn-success/Kptfile
+++ b/e2e/testdata/fn-render/fnresult-fn-success/Kptfile
@@ -1,4 +1,4 @@
-apiVersion: kpt.dev/v1alpha2
+apiVersion: kpt.dev/v1
 kind: Kptfile
 metadata:
   name: app
diff --git a/e2e/testdata/fn-render/format-on-success/Kptfile b/e2e/testdata/fn-render/format-on-success/Kptfile
index b4675527..b64764a7 100644
--- a/e2e/testdata/fn-render/format-on-success/Kptfile
+++ b/e2e/testdata/fn-render/format-on-success/Kptfile
@@ -1,4 +1,4 @@
-apiVersion: kpt.dev/v1alpha2
+apiVersion: kpt.dev/v1
 kind: Kptfile
 metadata:
   name: app-with-db
diff --git a/e2e/testdata/fn-render/format-on-success/db/Kptfile b/e2e/testdata/fn-render/format-on-success/db/Kptfile
index d080ef0d..51ef7cb1 100644
--- a/e2e/testdata/fn-render/format-on-success/db/Kptfile
+++ b/e2e/testdata/fn-render/format-on-success/db/Kptfile
@@ -1,4 +1,4 @@
-apiVersion: kpt.dev/v1alpha2
+apiVersion: kpt.dev/v1
 kind: Kptfile
 metadata:
   name: db
diff --git a/e2e/testdata/fn-render/generator-absolute-path/.expected/diff.patch b/e2e/testdata/fn-render/generator-absolute-path/.expected/diff.patch
index 18f40825..95ea29e1 100644
--- a/e2e/testdata/fn-render/generator-absolute-path/.expected/diff.patch
+++ b/e2e/testdata/fn-render/generator-absolute-path/.expected/diff.patch
@@ -16,4 +16,4 @@ index 0000000..fa83ef1
 +        - name: httpbin
 +          image: kennethreitz/httpbin
 +          ports:
-+            - containerPort: 9876
\ No newline at end of file
++            - containerPort: 9876
diff --git a/e2e/testdata/fn-render/generator-absolute-path/Kptfile b/e2e/testdata/fn-render/generator-absolute-path/Kptfile
index 9b361ff5..b65c9e30 100644
--- a/e2e/testdata/fn-render/generator-absolute-path/Kptfile
+++ b/e2e/testdata/fn-render/generator-absolute-path/Kptfile
@@ -1,4 +1,4 @@
-apiVersion: kpt.dev/v1alpha2
+apiVersion: kpt.dev/v1
 kind: Kptfile
 metadata:
   name: db
diff --git a/e2e/testdata/fn-render/generator-subpkgs/.expected/diff.patch b/e2e/testdata/fn-render/generator-subpkgs/.expected/diff.patch
index 50c85a58..bf9124bb 100644
--- a/e2e/testdata/fn-render/generator-subpkgs/.expected/diff.patch
+++ b/e2e/testdata/fn-render/generator-subpkgs/.expected/diff.patch
@@ -22,4 +22,4 @@ index 0000000..fd1e17d
 +  name: parent-map
 +  namespace: def
 +data:
-+  parent-key: parent-value
\ No newline at end of file
++  parent-key: parent-value
diff --git a/e2e/testdata/fn-render/generator-subpkgs/Kptfile b/e2e/testdata/fn-render/generator-subpkgs/Kptfile
index 9fa913c0..ea18e518 100644
--- a/e2e/testdata/fn-render/generator-subpkgs/Kptfile
+++ b/e2e/testdata/fn-render/generator-subpkgs/Kptfile
@@ -1,4 +1,4 @@
-apiVersion: kpt.dev/v1alpha2
+apiVersion: kpt.dev/v1
 kind: Kptfile
 metadata:
   name: app-with-generator
diff --git a/e2e/testdata/fn-render/generator-subpkgs/db/Kptfile b/e2e/testdata/fn-render/generator-subpkgs/db/Kptfile
index 020dc8ac..2d276947 100644
--- a/e2e/testdata/fn-render/generator-subpkgs/db/Kptfile
+++ b/e2e/testdata/fn-render/generator-subpkgs/db/Kptfile
@@ -1,4 +1,4 @@
-apiVersion: kpt.dev/v1alpha2
+apiVersion: kpt.dev/v1
 kind: Kptfile
 metadata:
   name: db
diff --git a/e2e/testdata/fn-render/generator/Kptfile b/e2e/testdata/fn-render/generator/Kptfile
index f72db760..8632ba72 100644
--- a/e2e/testdata/fn-render/generator/Kptfile
+++ b/e2e/testdata/fn-render/generator/Kptfile
@@ -1,4 +1,4 @@
-apiVersion: kpt.dev/v1alpha2
+apiVersion: kpt.dev/v1
 kind: Kptfile
 metadata:
   name: app-with-generator
diff --git a/e2e/testdata/fn-render/generator/db/Kptfile b/e2e/testdata/fn-render/generator/db/Kptfile
index ada9824b..fef15bed 100644
--- a/e2e/testdata/fn-render/generator/db/Kptfile
+++ b/e2e/testdata/fn-render/generator/db/Kptfile
@@ -1,4 +1,4 @@
-apiVersion: kpt.dev/v1alpha2
+apiVersion: kpt.dev/v1
 kind: Kptfile
 metadata:
   name: db
diff --git a/e2e/testdata/fn-render/image-pull-policy-always/Kptfile b/e2e/testdata/fn-render/image-pull-policy-always/Kptfile
index fabd1f9e..0d309935 100644
--- a/e2e/testdata/fn-render/image-pull-policy-always/Kptfile
+++ b/e2e/testdata/fn-render/image-pull-policy-always/Kptfile
@@ -1,4 +1,4 @@
-apiVersion: kpt.dev/v1alpha2
+apiVersion: kpt.dev/v1
 kind: Kptfile
 metadata:
   name: app
diff --git a/e2e/testdata/fn-render/image-pull-policy-if-not-present/Kptfile b/e2e/testdata/fn-render/image-pull-policy-if-not-present/Kptfile
index fabd1f9e..0d309935 100644
--- a/e2e/testdata/fn-render/image-pull-policy-if-not-present/Kptfile
+++ b/e2e/testdata/fn-render/image-pull-policy-if-not-present/Kptfile
@@ -1,4 +1,4 @@
-apiVersion: kpt.dev/v1alpha2
+apiVersion: kpt.dev/v1
 kind: Kptfile
 metadata:
   name: app
diff --git a/e2e/testdata/fn-render/image-pull-policy-never/Kptfile b/e2e/testdata/fn-render/image-pull-policy-never/Kptfile
index 75889211..f13f048b 100644
--- a/e2e/testdata/fn-render/image-pull-policy-never/Kptfile
+++ b/e2e/testdata/fn-render/image-pull-policy-never/Kptfile
@@ -1,4 +1,4 @@
-apiVersion: kpt.dev/v1alpha2
+apiVersion: kpt.dev/v1
 kind: Kptfile
 metadata:
   name: app
diff --git a/e2e/testdata/fn-render/invalid-configmap-fnconfig/Kptfile b/e2e/testdata/fn-render/invalid-configmap-fnconfig/Kptfile
index c4073eec..d4fb48fb 100644
--- a/e2e/testdata/fn-render/invalid-configmap-fnconfig/Kptfile
+++ b/e2e/testdata/fn-render/invalid-configmap-fnconfig/Kptfile
@@ -1,4 +1,4 @@
-apiVersion: kpt.dev/v1alpha2
+apiVersion: kpt.dev/v1
 kind: Kptfile
 metadata:
   name: app
diff --git a/e2e/testdata/fn-render/invalid-inline-fnconfig/Kptfile b/e2e/testdata/fn-render/invalid-inline-fnconfig/Kptfile
index ca07978e..acb21202 100644
--- a/e2e/testdata/fn-render/invalid-inline-fnconfig/Kptfile
+++ b/e2e/testdata/fn-render/invalid-inline-fnconfig/Kptfile
@@ -1,4 +1,4 @@
-apiVersion: kpt.dev/v1alpha2
+apiVersion: kpt.dev/v1
 kind: Kptfile
 metadata:
   name: app
diff --git a/e2e/testdata/fn-render/invalid-kptfile/Kptfile b/e2e/testdata/fn-render/invalid-kptfile/Kptfile
index b6c0cc3e..c8a8f899 100644
--- a/e2e/testdata/fn-render/invalid-kptfile/Kptfile
+++ b/e2e/testdata/fn-render/invalid-kptfile/Kptfile
@@ -1,4 +1,4 @@
 # Invalid Kptfile
-apiVersion: kpt.dev/v1alpha2
+apiVersion: kpt.dev/v1
 kslsls
 ;s;s;s
diff --git a/e2e/testdata/fn-render/krmignore/Kptfile b/e2e/testdata/fn-render/krmignore/Kptfile
index 2d1b28a8..7fc6888b 100644
--- a/e2e/testdata/fn-render/krmignore/Kptfile
+++ b/e2e/testdata/fn-render/krmignore/Kptfile
@@ -1,4 +1,4 @@
-apiVersion: kpt.dev/v1alpha2
+apiVersion: kpt.dev/v1
 kind: Kptfile
 metadata:
   name: app
diff --git a/e2e/testdata/fn-render/kubeval-failure/.expected/results.yaml b/e2e/testdata/fn-render/kubeval-failure/.expected/results.yaml
index 46dfdadc..9fbcdc2b 100755
--- a/e2e/testdata/fn-render/kubeval-failure/.expected/results.yaml
+++ b/e2e/testdata/fn-render/kubeval-failure/.expected/results.yaml
@@ -1,4 +1,4 @@
-apiVersion: kpt.dev/v1alpha2
+apiVersion: kpt.dev/v1
 kind: FunctionResultList
 metadata:
   name: fnresults
diff --git a/e2e/testdata/fn-render/kubeval-failure/Kptfile b/e2e/testdata/fn-render/kubeval-failure/Kptfile
index 58935f5c..f881c5c9 100644
--- a/e2e/testdata/fn-render/kubeval-failure/Kptfile
+++ b/e2e/testdata/fn-render/kubeval-failure/Kptfile
@@ -1,4 +1,4 @@
-apiVersion: kpt.dev/v1alpha2
+apiVersion: kpt.dev/v1
 kind: Kptfile
 metadata:
   name: app
diff --git a/e2e/testdata/fn-render/missing-fn-image/Kptfile b/e2e/testdata/fn-render/missing-fn-image/Kptfile
index 26fd1fbf..4894aeac 100644
--- a/e2e/testdata/fn-render/missing-fn-image/Kptfile
+++ b/e2e/testdata/fn-render/missing-fn-image/Kptfile
@@ -1,4 +1,4 @@
-apiVersion: kpt.dev/v1alpha2
+apiVersion: kpt.dev/v1
 kind: Kptfile
 metadata:
   name: app
diff --git a/e2e/testdata/fn-render/missing-fnconfig/Kptfile b/e2e/testdata/fn-render/missing-fnconfig/Kptfile
index 9792f074..a957d59d 100644
--- a/e2e/testdata/fn-render/missing-fnconfig/Kptfile
+++ b/e2e/testdata/fn-render/missing-fnconfig/Kptfile
@@ -1,4 +1,4 @@
-apiVersion: kpt.dev/v1alpha2
+apiVersion: kpt.dev/v1
 kind: Kptfile
 metadata:
   name: app-with-db
diff --git a/e2e/testdata/fn-render/missing-fnconfig/db/Kptfile b/e2e/testdata/fn-render/missing-fnconfig/db/Kptfile
index 530d4ad0..8c0fd517 100644
--- a/e2e/testdata/fn-render/missing-fnconfig/db/Kptfile
+++ b/e2e/testdata/fn-render/missing-fnconfig/db/Kptfile
@@ -1,4 +1,4 @@
-apiVersion: kpt.dev/v1alpha2
+apiVersion: kpt.dev/v1
 kind: Kptfile
 metadata:
   name: db
diff --git a/e2e/testdata/fn-render/multiple-fnconfig/Kptfile b/e2e/testdata/fn-render/multiple-fnconfig/Kptfile
index 1a792327..40a6e748 100644
--- a/e2e/testdata/fn-render/multiple-fnconfig/Kptfile
+++ b/e2e/testdata/fn-render/multiple-fnconfig/Kptfile
@@ -1,4 +1,4 @@
-apiVersion: kpt.dev/v1alpha2
+apiVersion: kpt.dev/v1
 kind: Kptfile
 metadata:
   name: app
diff --git a/e2e/testdata/fn-render/no-fnconfig/Kptfile b/e2e/testdata/fn-render/no-fnconfig/Kptfile
index 3d69f263..b5980bad 100644
--- a/e2e/testdata/fn-render/no-fnconfig/Kptfile
+++ b/e2e/testdata/fn-render/no-fnconfig/Kptfile
@@ -1,4 +1,4 @@
-apiVersion: kpt.dev/v1alpha2
+apiVersion: kpt.dev/v1
 kind: Kptfile
 metadata:
   name: app
diff --git a/e2e/testdata/fn-render/no-format-on-failure/Kptfile b/e2e/testdata/fn-render/no-format-on-failure/Kptfile
index 165cbeac..df692cbd 100644
--- a/e2e/testdata/fn-render/no-format-on-failure/Kptfile
+++ b/e2e/testdata/fn-render/no-format-on-failure/Kptfile
@@ -1,4 +1,4 @@
-apiVersion: kpt.dev/v1alpha2
+apiVersion: kpt.dev/v1
 kind: Kptfile
 metadata:
   name: app-with-db
diff --git a/e2e/testdata/fn-render/no-format-on-failure/db/Kptfile b/e2e/testdata/fn-render/no-format-on-failure/db/Kptfile
index d080ef0d..51ef7cb1 100644
--- a/e2e/testdata/fn-render/no-format-on-failure/db/Kptfile
+++ b/e2e/testdata/fn-render/no-format-on-failure/db/Kptfile
@@ -1,4 +1,4 @@
-apiVersion: kpt.dev/v1alpha2
+apiVersion: kpt.dev/v1
 kind: Kptfile
 metadata:
   name: db
diff --git a/e2e/testdata/fn-render/no-pipeline-in-subpackage/Kptfile b/e2e/testdata/fn-render/no-pipeline-in-subpackage/Kptfile
index 32bba40a..8e842410 100644
--- a/e2e/testdata/fn-render/no-pipeline-in-subpackage/Kptfile
+++ b/e2e/testdata/fn-render/no-pipeline-in-subpackage/Kptfile
@@ -1,4 +1,4 @@
-apiVersion: kpt.dev/v1alpha2
+apiVersion: kpt.dev/v1
 kind: Kptfile
 metadata:
   name: app
diff --git a/e2e/testdata/fn-render/no-pipeline-in-subpackage/db/Kptfile b/e2e/testdata/fn-render/no-pipeline-in-subpackage/db/Kptfile
index 883da19e..d9e2f05c 100644
--- a/e2e/testdata/fn-render/no-pipeline-in-subpackage/db/Kptfile
+++ b/e2e/testdata/fn-render/no-pipeline-in-subpackage/db/Kptfile
@@ -1,4 +1,4 @@
-apiVersion: kpt.dev/v1alpha2
+apiVersion: kpt.dev/v1
 kind: Kptfile
 metadata:
   name: app
diff --git a/e2e/testdata/fn-render/no-pipeline/Kptfile b/e2e/testdata/fn-render/no-pipeline/Kptfile
index 883da19e..d9e2f05c 100644
--- a/e2e/testdata/fn-render/no-pipeline/Kptfile
+++ b/e2e/testdata/fn-render/no-pipeline/Kptfile
@@ -1,4 +1,4 @@
-apiVersion: kpt.dev/v1alpha2
+apiVersion: kpt.dev/v1
 kind: Kptfile
 metadata:
   name: app
diff --git a/e2e/testdata/fn-render/non-krm-resource-no-pipeline/Kptfile b/e2e/testdata/fn-render/non-krm-resource-no-pipeline/Kptfile
index 883da19e..d9e2f05c 100644
--- a/e2e/testdata/fn-render/non-krm-resource-no-pipeline/Kptfile
+++ b/e2e/testdata/fn-render/non-krm-resource-no-pipeline/Kptfile
@@ -1,4 +1,4 @@
-apiVersion: kpt.dev/v1alpha2
+apiVersion: kpt.dev/v1
 kind: Kptfile
 metadata:
   name: app
diff --git a/e2e/testdata/fn-render/non-krm-resource/Kptfile b/e2e/testdata/fn-render/non-krm-resource/Kptfile
index 32bba40a..8e842410 100644
--- a/e2e/testdata/fn-render/non-krm-resource/Kptfile
+++ b/e2e/testdata/fn-render/non-krm-resource/Kptfile
@@ -1,4 +1,4 @@
-apiVersion: kpt.dev/v1alpha2
+apiVersion: kpt.dev/v1
 kind: Kptfile
 metadata:
   name: app
diff --git a/e2e/testdata/fn-render/out-of-place-dir/.expected/diff.patch b/e2e/testdata/fn-render/out-of-place-dir/.expected/diff.patch
index e27541d5..1ab5a71d 100644
--- a/e2e/testdata/fn-render/out-of-place-dir/.expected/diff.patch
+++ b/e2e/testdata/fn-render/out-of-place-dir/.expected/diff.patch
@@ -31,4 +31,4 @@ index 0000000..254b9cd
 +  name: custom
 +  namespace: staging
 +spec:
-+  image: nginx:1.2.3
\ No newline at end of file
++  image: nginx:1.2.3
diff --git a/e2e/testdata/fn-render/out-of-place-dir/Kptfile b/e2e/testdata/fn-render/out-of-place-dir/Kptfile
index 2d1b28a8..7fc6888b 100644
--- a/e2e/testdata/fn-render/out-of-place-dir/Kptfile
+++ b/e2e/testdata/fn-render/out-of-place-dir/Kptfile
@@ -1,4 +1,4 @@
-apiVersion: kpt.dev/v1alpha2
+apiVersion: kpt.dev/v1
 kind: Kptfile
 metadata:
   name: app
diff --git a/e2e/testdata/fn-render/out-of-place-fnchain-stdout-results/Kptfile b/e2e/testdata/fn-render/out-of-place-fnchain-stdout-results/Kptfile
index 2d1b28a8..7fc6888b 100644
--- a/e2e/testdata/fn-render/out-of-place-fnchain-stdout-results/Kptfile
+++ b/e2e/testdata/fn-render/out-of-place-fnchain-stdout-results/Kptfile
@@ -1,4 +1,4 @@
-apiVersion: kpt.dev/v1alpha2
+apiVersion: kpt.dev/v1
 kind: Kptfile
 metadata:
   name: app
diff --git a/e2e/testdata/fn-render/out-of-place-fnchain-stdout/Kptfile b/e2e/testdata/fn-render/out-of-place-fnchain-stdout/Kptfile
index 2d1b28a8..7fc6888b 100644
--- a/e2e/testdata/fn-render/out-of-place-fnchain-stdout/Kptfile
+++ b/e2e/testdata/fn-render/out-of-place-fnchain-stdout/Kptfile
@@ -1,4 +1,4 @@
-apiVersion: kpt.dev/v1alpha2
+apiVersion: kpt.dev/v1
 kind: Kptfile
 metadata:
   name: app
diff --git a/e2e/testdata/fn-render/out-of-place-fnchain-unwrap/Kptfile b/e2e/testdata/fn-render/out-of-place-fnchain-unwrap/Kptfile
index 2d1b28a8..7fc6888b 100644
--- a/e2e/testdata/fn-render/out-of-place-fnchain-unwrap/Kptfile
+++ b/e2e/testdata/fn-render/out-of-place-fnchain-unwrap/Kptfile
@@ -1,4 +1,4 @@
-apiVersion: kpt.dev/v1alpha2
+apiVersion: kpt.dev/v1
 kind: Kptfile
 metadata:
   name: app
diff --git a/e2e/testdata/fn-render/out-of-place-stdout/Kptfile b/e2e/testdata/fn-render/out-of-place-stdout/Kptfile
index 2d1b28a8..7fc6888b 100644
--- a/e2e/testdata/fn-render/out-of-place-stdout/Kptfile
+++ b/e2e/testdata/fn-render/out-of-place-stdout/Kptfile
@@ -1,4 +1,4 @@
-apiVersion: kpt.dev/v1alpha2
+apiVersion: kpt.dev/v1
 kind: Kptfile
 metadata:
   name: app
diff --git a/e2e/testdata/fn-render/out-of-place-unwrap/Kptfile b/e2e/testdata/fn-render/out-of-place-unwrap/Kptfile
index 2d1b28a8..7fc6888b 100644
--- a/e2e/testdata/fn-render/out-of-place-unwrap/Kptfile
+++ b/e2e/testdata/fn-render/out-of-place-unwrap/Kptfile
@@ -1,4 +1,4 @@
-apiVersion: kpt.dev/v1alpha2
+apiVersion: kpt.dev/v1
 kind: Kptfile
 metadata:
   name: app
diff --git a/e2e/testdata/fn-render/path-index-ancestor/Kptfile b/e2e/testdata/fn-render/path-index-ancestor/Kptfile
index 7b3bc56d..ac710dc0 100644
--- a/e2e/testdata/fn-render/path-index-ancestor/Kptfile
+++ b/e2e/testdata/fn-render/path-index-ancestor/Kptfile
@@ -1,4 +1,4 @@
-apiVersion: kpt.dev/v1alpha2
+apiVersion: kpt.dev/v1
 kind: Kptfile
 metadata:
   name: app-with-generator
diff --git a/e2e/testdata/fn-render/path-index-ancestor/db/Kptfile b/e2e/testdata/fn-render/path-index-ancestor/db/Kptfile
index b43c4f50..b00bc0ea 100644
--- a/e2e/testdata/fn-render/path-index-ancestor/db/Kptfile
+++ b/e2e/testdata/fn-render/path-index-ancestor/db/Kptfile
@@ -1,4 +1,4 @@
-apiVersion: kpt.dev/v1alpha2
+apiVersion: kpt.dev/v1
 kind: Kptfile
 metadata:
   name: db
diff --git a/e2e/testdata/fn-render/path-index-current/.expected/diff.patch b/e2e/testdata/fn-render/path-index-current/.expected/diff.patch
index 2b504552..10d977a8 100644
--- a/e2e/testdata/fn-render/path-index-current/.expected/diff.patch
+++ b/e2e/testdata/fn-render/path-index-current/.expected/diff.patch
@@ -16,4 +16,4 @@ index 0000000..fa83ef1
 +        - name: httpbin
 +          image: kennethreitz/httpbin
 +          ports:
-+            - containerPort: 9876
\ No newline at end of file
++            - containerPort: 9876
diff --git a/e2e/testdata/fn-render/path-index-current/Kptfile b/e2e/testdata/fn-render/path-index-current/Kptfile
index 15001aa3..96fe19c8 100644
--- a/e2e/testdata/fn-render/path-index-current/Kptfile
+++ b/e2e/testdata/fn-render/path-index-current/Kptfile
@@ -1,4 +1,4 @@
-apiVersion: kpt.dev/v1alpha2
+apiVersion: kpt.dev/v1
 kind: Kptfile
 metadata:
   name: app-with-generator
diff --git a/e2e/testdata/fn-render/path-index-descendent/.expected/diff.patch b/e2e/testdata/fn-render/path-index-descendent/.expected/diff.patch
index 6212e438..fcacf27f 100644
--- a/e2e/testdata/fn-render/path-index-descendent/.expected/diff.patch
+++ b/e2e/testdata/fn-render/path-index-descendent/.expected/diff.patch
@@ -16,4 +16,4 @@ index 0000000..fa83ef1
 +        - name: httpbin
 +          image: kennethreitz/httpbin
 +          ports:
-+            - containerPort: 9876
\ No newline at end of file
++            - containerPort: 9876
diff --git a/e2e/testdata/fn-render/path-index-descendent/Kptfile b/e2e/testdata/fn-render/path-index-descendent/Kptfile
index 15001aa3..96fe19c8 100644
--- a/e2e/testdata/fn-render/path-index-descendent/Kptfile
+++ b/e2e/testdata/fn-render/path-index-descendent/Kptfile
@@ -1,4 +1,4 @@
-apiVersion: kpt.dev/v1alpha2
+apiVersion: kpt.dev/v1
 kind: Kptfile
 metadata:
   name: app-with-generator
diff --git a/e2e/testdata/fn-render/path-index-descendent/db/Kptfile b/e2e/testdata/fn-render/path-index-descendent/db/Kptfile
index 60f507d0..79b7a5a3 100644
--- a/e2e/testdata/fn-render/path-index-descendent/db/Kptfile
+++ b/e2e/testdata/fn-render/path-index-descendent/db/Kptfile
@@ -1,4 +1,4 @@
-apiVersion: kpt.dev/v1alpha2
+apiVersion: kpt.dev/v1
 kind: Kptfile
 metadata:
   name: db
diff --git a/e2e/testdata/fn-render/path-index-duplicate/Kptfile b/e2e/testdata/fn-render/path-index-duplicate/Kptfile
index b9b08a35..b149d829 100644
--- a/e2e/testdata/fn-render/path-index-duplicate/Kptfile
+++ b/e2e/testdata/fn-render/path-index-duplicate/Kptfile
@@ -1,4 +1,4 @@
-apiVersion: kpt.dev/v1alpha2
+apiVersion: kpt.dev/v1
 kind: Kptfile
 metadata:
   name: db
diff --git a/e2e/testdata/fn-render/path-index-outofpackage/Kptfile b/e2e/testdata/fn-render/path-index-outofpackage/Kptfile
index 7b3bc56d..ac710dc0 100644
--- a/e2e/testdata/fn-render/path-index-outofpackage/Kptfile
+++ b/e2e/testdata/fn-render/path-index-outofpackage/Kptfile
@@ -1,4 +1,4 @@
-apiVersion: kpt.dev/v1alpha2
+apiVersion: kpt.dev/v1
 kind: Kptfile
 metadata:
   name: app-with-generator
diff --git a/e2e/testdata/fn-render/path-index-outofpackage/db/Kptfile b/e2e/testdata/fn-render/path-index-outofpackage/db/Kptfile
index b43c4f50..b00bc0ea 100644
--- a/e2e/testdata/fn-render/path-index-outofpackage/db/Kptfile
+++ b/e2e/testdata/fn-render/path-index-outofpackage/db/Kptfile
@@ -1,4 +1,4 @@
-apiVersion: kpt.dev/v1alpha2
+apiVersion: kpt.dev/v1
 kind: Kptfile
 metadata:
   name: db
diff --git a/e2e/testdata/fn-render/preserve-comments/Kptfile b/e2e/testdata/fn-render/preserve-comments/Kptfile
index 8bfd30bf..fc0cb6ef 100644
--- a/e2e/testdata/fn-render/preserve-comments/Kptfile
+++ b/e2e/testdata/fn-render/preserve-comments/Kptfile
@@ -1,4 +1,4 @@
-apiVersion: kpt.dev/v1alpha2
+apiVersion: kpt.dev/v1
 kind: Kptfile
 metadata:
   name: app
diff --git a/e2e/testdata/fn-render/resource-deletion/.expected/diff.patch b/e2e/testdata/fn-render/resource-deletion/.expected/diff.patch
index bb7dd818..10cdc51a 100644
--- a/e2e/testdata/fn-render/resource-deletion/.expected/diff.patch
+++ b/e2e/testdata/fn-render/resource-deletion/.expected/diff.patch
@@ -69,4 +69,4 @@ index 7a494c9..a9dd224 100644
 +  labels:
 +    tier: backend
  spec:
-   image: nginx:1.2.3
\ No newline at end of file
+   image: nginx:1.2.3
diff --git a/e2e/testdata/fn-render/resource-deletion/Kptfile b/e2e/testdata/fn-render/resource-deletion/Kptfile
index 990c9beb..df89375b 100644
--- a/e2e/testdata/fn-render/resource-deletion/Kptfile
+++ b/e2e/testdata/fn-render/resource-deletion/Kptfile
@@ -1,4 +1,4 @@
-apiVersion: kpt.dev/v1alpha2
+apiVersion: kpt.dev/v1
 kind: Kptfile
 metadata:
   name: app
diff --git a/e2e/testdata/fn-render/resource-has-pkgname-prefix/.expected/diff.patch b/e2e/testdata/fn-render/resource-has-pkgname-prefix/.expected/diff.patch
index 6f2d4b61..24d7dafb 100644
--- a/e2e/testdata/fn-render/resource-has-pkgname-prefix/.expected/diff.patch
+++ b/e2e/testdata/fn-render/resource-has-pkgname-prefix/.expected/diff.patch
@@ -99,4 +99,4 @@ index f7bdc2a..3cbda32 100644
 +        abc: def
      spec:
        containers:
-         - name: wordpress
\ No newline at end of file
+         - name: wordpress
diff --git a/e2e/testdata/fn-render/resource-has-pkgname-prefix/Kptfile b/e2e/testdata/fn-render/resource-has-pkgname-prefix/Kptfile
index ece2d280..0bcb8100 100644
--- a/e2e/testdata/fn-render/resource-has-pkgname-prefix/Kptfile
+++ b/e2e/testdata/fn-render/resource-has-pkgname-prefix/Kptfile
@@ -1,4 +1,4 @@
-apiVersion: kpt.dev/v1alpha2
+apiVersion: kpt.dev/v1
 kind: Kptfile
 metadata:
   name: wordpress
diff --git a/e2e/testdata/fn-render/resource-has-pkgname-prefix/mysql/Kptfile b/e2e/testdata/fn-render/resource-has-pkgname-prefix/mysql/Kptfile
index 13657029..78ee518f 100644
--- a/e2e/testdata/fn-render/resource-has-pkgname-prefix/mysql/Kptfile
+++ b/e2e/testdata/fn-render/resource-has-pkgname-prefix/mysql/Kptfile
@@ -1,4 +1,4 @@
-apiVersion: kpt.dev/v1alpha2
+apiVersion: kpt.dev/v1
 kind: Kptfile
 metadata:
   name: mysql
diff --git a/e2e/testdata/fn-render/structured-results-from-muiltiple-fns/.expected/results.yaml b/e2e/testdata/fn-render/structured-results-from-muiltiple-fns/.expected/results.yaml
index f09f19ad..9e173053 100755
--- a/e2e/testdata/fn-render/structured-results-from-muiltiple-fns/.expected/results.yaml
+++ b/e2e/testdata/fn-render/structured-results-from-muiltiple-fns/.expected/results.yaml
@@ -1,4 +1,4 @@
-apiVersion: kpt.dev/v1alpha2
+apiVersion: kpt.dev/v1
 kind: FunctionResultList
 metadata:
   name: fnresults
diff --git a/e2e/testdata/fn-render/structured-results-from-muiltiple-fns/Kptfile b/e2e/testdata/fn-render/structured-results-from-muiltiple-fns/Kptfile
index e37e8edb..351ba03f 100644
--- a/e2e/testdata/fn-render/structured-results-from-muiltiple-fns/Kptfile
+++ b/e2e/testdata/fn-render/structured-results-from-muiltiple-fns/Kptfile
@@ -1,4 +1,4 @@
-apiVersion: kpt.dev/v1alpha2
+apiVersion: kpt.dev/v1
 kind: Kptfile
 metadata:
   name: app
diff --git a/e2e/testdata/fn-render/subpkg-fn-failure/Kptfile b/e2e/testdata/fn-render/subpkg-fn-failure/Kptfile
index 990c9beb..df89375b 100644
--- a/e2e/testdata/fn-render/subpkg-fn-failure/Kptfile
+++ b/e2e/testdata/fn-render/subpkg-fn-failure/Kptfile
@@ -1,4 +1,4 @@
-apiVersion: kpt.dev/v1alpha2
+apiVersion: kpt.dev/v1
 kind: Kptfile
 metadata:
   name: app
diff --git a/e2e/testdata/fn-render/subpkg-fn-failure/db/Kptfile b/e2e/testdata/fn-render/subpkg-fn-failure/db/Kptfile
index 99cc82a1..335f069f 100644
--- a/e2e/testdata/fn-render/subpkg-fn-failure/db/Kptfile
+++ b/e2e/testdata/fn-render/subpkg-fn-failure/db/Kptfile
@@ -1,4 +1,4 @@
-apiVersion: kpt.dev/v1alpha2
+apiVersion: kpt.dev/v1
 kind: Kptfile
 metadata:
   name: db
diff --git a/e2e/testdata/fn-render/subpkg-has-invalid-kptfile/Kptfile b/e2e/testdata/fn-render/subpkg-has-invalid-kptfile/Kptfile
index 32bba40a..8e842410 100644
--- a/e2e/testdata/fn-render/subpkg-has-invalid-kptfile/Kptfile
+++ b/e2e/testdata/fn-render/subpkg-has-invalid-kptfile/Kptfile
@@ -1,4 +1,4 @@
-apiVersion: kpt.dev/v1alpha2
+apiVersion: kpt.dev/v1
 kind: Kptfile
 metadata:
   name: app
diff --git a/e2e/testdata/fn-render/subpkg-has-invalid-kptfile/db/Kptfile b/e2e/testdata/fn-render/subpkg-has-invalid-kptfile/db/Kptfile
index 7480fcea..273a535f 100644
--- a/e2e/testdata/fn-render/subpkg-has-invalid-kptfile/db/Kptfile
+++ b/e2e/testdata/fn-render/subpkg-has-invalid-kptfile/db/Kptfile
@@ -1,4 +1,4 @@
-apiVersion: kpt.dev/v1alpha2
+apiVersion: kpt.dev/v1
 kind: Kptfile
 metadata:
   name: db
diff --git a/e2e/testdata/fn-render/subpkg-resource-deletion/.expected/diff.patch b/e2e/testdata/fn-render/subpkg-resource-deletion/.expected/diff.patch
index a6dba647..da09d060 100644
--- a/e2e/testdata/fn-render/subpkg-resource-deletion/.expected/diff.patch
+++ b/e2e/testdata/fn-render/subpkg-resource-deletion/.expected/diff.patch
@@ -94,4 +94,4 @@ index 6590f6c..b5b54e0 100644
 +  template:
 +    metadata:
 +      labels:
-+        tier: backend
\ No newline at end of file
++        tier: backend
diff --git a/e2e/testdata/fn-render/subpkg-resource-deletion/Kptfile b/e2e/testdata/fn-render/subpkg-resource-deletion/Kptfile
index 990c9beb..df89375b 100644
--- a/e2e/testdata/fn-render/subpkg-resource-deletion/Kptfile
+++ b/e2e/testdata/fn-render/subpkg-resource-deletion/Kptfile
@@ -1,4 +1,4 @@
-apiVersion: kpt.dev/v1alpha2
+apiVersion: kpt.dev/v1
 kind: Kptfile
 metadata:
   name: app
diff --git a/e2e/testdata/fn-render/subpkg-resource-deletion/db/Kptfile b/e2e/testdata/fn-render/subpkg-resource-deletion/db/Kptfile
index 99cc82a1..335f069f 100644
--- a/e2e/testdata/fn-render/subpkg-resource-deletion/db/Kptfile
+++ b/e2e/testdata/fn-render/subpkg-resource-deletion/db/Kptfile
@@ -1,4 +1,4 @@
-apiVersion: kpt.dev/v1alpha2
+apiVersion: kpt.dev/v1
 kind: Kptfile
 metadata:
   name: db
diff --git a/e2e/testdata/fn-render/subpkgs/Kptfile b/e2e/testdata/fn-render/subpkgs/Kptfile
index 77e7beba..9092fbf7 100644
--- a/e2e/testdata/fn-render/subpkgs/Kptfile
+++ b/e2e/testdata/fn-render/subpkgs/Kptfile
@@ -1,4 +1,4 @@
-apiVersion: kpt.dev/v1alpha2
+apiVersion: kpt.dev/v1
 kind: Kptfile
 metadata:
   name: app-with-db
diff --git a/e2e/testdata/fn-render/subpkgs/db/Kptfile b/e2e/testdata/fn-render/subpkgs/db/Kptfile
index 530d4ad0..8c0fd517 100644
--- a/e2e/testdata/fn-render/subpkgs/db/Kptfile
+++ b/e2e/testdata/fn-render/subpkgs/db/Kptfile
@@ -1,4 +1,4 @@
-apiVersion: kpt.dev/v1alpha2
+apiVersion: kpt.dev/v1
 kind: Kptfile
 metadata:
   name: db
diff --git a/e2e/testdata/fn-render/success-stdout/Kptfile b/e2e/testdata/fn-render/success-stdout/Kptfile
index 32bba40a..8e842410 100644
--- a/e2e/testdata/fn-render/success-stdout/Kptfile
+++ b/e2e/testdata/fn-render/success-stdout/Kptfile
@@ -1,4 +1,4 @@
-apiVersion: kpt.dev/v1alpha2
+apiVersion: kpt.dev/v1
 kind: Kptfile
 metadata:
   name: app
diff --git a/e2e/testdata/fn-render/validate-generated-resource/Kptfile b/e2e/testdata/fn-render/validate-generated-resource/Kptfile
index 43f384f9..9d5a157a 100644
--- a/e2e/testdata/fn-render/validate-generated-resource/Kptfile
+++ b/e2e/testdata/fn-render/validate-generated-resource/Kptfile
@@ -1,4 +1,4 @@
-apiVersion: kpt.dev/v1alpha2
+apiVersion: kpt.dev/v1
 kind: Kptfile
 metadata:
   name: db
diff --git a/e2e/testdata/fn-render/validate-resource-failure/.expected/results.yaml b/e2e/testdata/fn-render/validate-resource-failure/.expected/results.yaml
index 02cfa602..c18e3162 100755
--- a/e2e/testdata/fn-render/validate-resource-failure/.expected/results.yaml
+++ b/e2e/testdata/fn-render/validate-resource-failure/.expected/results.yaml
@@ -1,4 +1,4 @@
-apiVersion: kpt.dev/v1alpha2
+apiVersion: kpt.dev/v1
 kind: FunctionResultList
 metadata:
   name: fnresults
diff --git a/e2e/testdata/fn-render/validate-resource-failure/Kptfile b/e2e/testdata/fn-render/validate-resource-failure/Kptfile
index a796a703..5dac137e 100644
--- a/e2e/testdata/fn-render/validate-resource-failure/Kptfile
+++ b/e2e/testdata/fn-render/validate-resource-failure/Kptfile
@@ -1,4 +1,4 @@
-apiVersion: kpt.dev/v1alpha2
+apiVersion: kpt.dev/v1
 kind: Kptfile
 metadata:
   name: db
diff --git a/e2e/testdata/fn-render/validator-mutates-resources/Kptfile b/e2e/testdata/fn-render/validator-mutates-resources/Kptfile
index 608e9e62..e5b6ece9 100644
--- a/e2e/testdata/fn-render/validator-mutates-resources/Kptfile
+++ b/e2e/testdata/fn-render/validator-mutates-resources/Kptfile
@@ -1,4 +1,4 @@
-apiVersion: kpt.dev/v1alpha2
+apiVersion: kpt.dev/v1
 kind: Kptfile
 metadata:
   name: app
diff --git a/internal/cmdapply/cmdapply_test.go b/internal/cmdapply/cmdapply_test.go
index 5a09d2f5..0872a86f 100644
--- a/internal/cmdapply/cmdapply_test.go
+++ b/internal/cmdapply/cmdapply_test.go
@@ -20,7 +20,7 @@ import (
 
 	"github.com/GoogleContainerTools/kpt/internal/printer/fake"
 	"github.com/GoogleContainerTools/kpt/internal/testutil"
-	kptfilev1alpha2 "github.com/GoogleContainerTools/kpt/pkg/api/kptfile/v1alpha2"
+	kptfilev1 "github.com/GoogleContainerTools/kpt/pkg/api/kptfile/v1"
 	"github.com/GoogleContainerTools/kpt/pkg/kptfile/kptfileutil"
 	"github.com/GoogleContainerTools/kpt/pkg/live"
 	"github.com/stretchr/testify/assert"
@@ -35,7 +35,7 @@ func TestCmd(t *testing.T) {
 	testCases := map[string]struct {
 		args              []string
 		namespace         string
-		inventory         *kptfilev1alpha2.Inventory
+		inventory         *kptfilev1.Inventory
 		applyCallbackFunc func(*testing.T, *Runner, inventory.InventoryInfo)
 		expectedErrorMsg  string
 	}{
@@ -64,7 +64,7 @@ func TestCmd(t *testing.T) {
 				"--inventory-policy", "adopt",
 				"--output", "events",
 			},
-			inventory: &kptfilev1alpha2.Inventory{
+			inventory: &kptfilev1.Inventory{
 				Namespace:   "my-ns",
 				Name:        "my-name",
 				InventoryID: "my-inv-id",
@@ -78,7 +78,7 @@ func TestCmd(t *testing.T) {
 		},
 		"install-resource-group flag defaults to true": {
 			args: []string{},
-			inventory: &kptfilev1alpha2.Inventory{
+			inventory: &kptfilev1.Inventory{
 				Namespace:   "my-ns",
 				Name:        "my-name",
 				InventoryID: "my-inv-id",
@@ -92,7 +92,7 @@ func TestCmd(t *testing.T) {
 			args: []string{
 				"--dry-run",
 			},
-			inventory: &kptfilev1alpha2.Inventory{
+			inventory: &kptfilev1.Inventory{
 				Namespace:   "my-ns",
 				Name:        "my-name",
 				InventoryID: "my-inv-id",
@@ -109,7 +109,7 @@ func TestCmd(t *testing.T) {
 				"--dry-run",
 				"--install-resource-group",
 			},
-			inventory: &kptfilev1alpha2.Inventory{
+			inventory: &kptfilev1.Inventory{
 				Namespace:   "my-ns",
 				Name:        "my-name",
 				InventoryID: "my-inv-id",
diff --git a/internal/cmddestroy/cmddestroy_test.go b/internal/cmddestroy/cmddestroy_test.go
index 953486d9..f2d0b825 100644
--- a/internal/cmddestroy/cmddestroy_test.go
+++ b/internal/cmddestroy/cmddestroy_test.go
@@ -20,7 +20,7 @@ import (
 
 	"github.com/GoogleContainerTools/kpt/internal/printer/fake"
 	"github.com/GoogleContainerTools/kpt/internal/testutil"
-	kptfilev1alpha2 "github.com/GoogleContainerTools/kpt/pkg/api/kptfile/v1alpha2"
+	kptfilev1 "github.com/GoogleContainerTools/kpt/pkg/api/kptfile/v1"
 	"github.com/GoogleContainerTools/kpt/pkg/kptfile/kptfileutil"
 	"github.com/GoogleContainerTools/kpt/pkg/live"
 	"github.com/stretchr/testify/assert"
@@ -34,7 +34,7 @@ func TestCmd(t *testing.T) {
 	testCases := map[string]struct {
 		args                []string
 		namespace           string
-		inventory           *kptfilev1alpha2.Inventory
+		inventory           *kptfilev1.Inventory
 		destroyCallbackFunc func(*testing.T, inventory.InventoryInfo)
 		expectedErrorMsg    string
 	}{
@@ -63,7 +63,7 @@ func TestCmd(t *testing.T) {
 				"--inventory-policy", "adopt",
 				"--output", "events",
 			},
-			inventory: &kptfilev1alpha2.Inventory{
+			inventory: &kptfilev1.Inventory{
 				Namespace:   "my-ns",
 				Name:        "my-name",
 				InventoryID: "my-inv-id",
diff --git a/internal/cmdget/cmdget_test.go b/internal/cmdget/cmdget_test.go
index 4c7fca2c..f16380d3 100644
--- a/internal/cmdget/cmdget_test.go
+++ b/internal/cmdget/cmdget_test.go
@@ -24,7 +24,7 @@ import (
 	"github.com/GoogleContainerTools/kpt/internal/cmdget"
 	"github.com/GoogleContainerTools/kpt/internal/printer/fake"
 	"github.com/GoogleContainerTools/kpt/internal/testutil"
-	kptfilev1alpha2 "github.com/GoogleContainerTools/kpt/pkg/api/kptfile/v1alpha2"
+	kptfilev1 "github.com/GoogleContainerTools/kpt/pkg/api/kptfile/v1"
 	"github.com/spf13/cobra"
 	"github.com/stretchr/testify/assert"
 	"sigs.k8s.io/kustomize/kyaml/yaml"
@@ -58,7 +58,7 @@ func TestCmd_execute(t *testing.T) {
 
 	commit, err := g.GetCommit()
 	assert.NoError(t, err)
-	g.AssertKptfile(t, dest, kptfilev1alpha2.KptFile{
+	g.AssertKptfile(t, dest, kptfilev1.KptFile{
 		ResourceMeta: yaml.ResourceMeta{
 			ObjectMeta: yaml.ObjectMeta{
 				NameMeta: yaml.NameMeta{
@@ -66,21 +66,21 @@ func TestCmd_execute(t *testing.T) {
 				},
 			},
 			TypeMeta: yaml.TypeMeta{
-				APIVersion: kptfilev1alpha2.KptFileAPIVersion,
-				Kind:       kptfilev1alpha2.KptFileName},
+				APIVersion: kptfilev1.KptFileAPIVersion,
+				Kind:       kptfilev1.KptFileName},
 		},
-		Upstream: &kptfilev1alpha2.Upstream{
-			Type: kptfilev1alpha2.GitOrigin,
-			Git: &kptfilev1alpha2.Git{
+		Upstream: &kptfilev1.Upstream{
+			Type: kptfilev1.GitOrigin,
+			Git: &kptfilev1.Git{
 				Directory: "/",
 				Repo:      "file://" + g.RepoDirectory,
 				Ref:       "master",
 			},
-			UpdateStrategy: kptfilev1alpha2.ResourceMerge,
+			UpdateStrategy: kptfilev1.ResourceMerge,
 		},
-		UpstreamLock: &kptfilev1alpha2.UpstreamLock{
-			Type: kptfilev1alpha2.GitOrigin,
-			Git: &kptfilev1alpha2.GitLock{
+		UpstreamLock: &kptfilev1.UpstreamLock{
+			Type: kptfilev1.GitOrigin,
+			Git: &kptfilev1.GitLock{
 				Directory: "/",
 				Repo:      "file://" + g.RepoDirectory,
 				Ref:       "master",
@@ -118,7 +118,7 @@ func TestCmdMainBranch_execute(t *testing.T) {
 
 	commit, err := g.GetCommit()
 	assert.NoError(t, err)
-	g.AssertKptfile(t, dest, kptfilev1alpha2.KptFile{
+	g.AssertKptfile(t, dest, kptfilev1.KptFile{
 		ResourceMeta: yaml.ResourceMeta{
 			ObjectMeta: yaml.ObjectMeta{
 				NameMeta: yaml.NameMeta{
@@ -126,21 +126,21 @@ func TestCmdMainBranch_execute(t *testing.T) {
 				},
 			},
 			TypeMeta: yaml.TypeMeta{
-				APIVersion: kptfilev1alpha2.KptFileAPIVersion,
-				Kind:       kptfilev1alpha2.KptFileName},
+				APIVersion: kptfilev1.KptFileAPIVersion,
+				Kind:       kptfilev1.KptFileName},
 		},
-		Upstream: &kptfilev1alpha2.Upstream{
-			Type: kptfilev1alpha2.GitOrigin,
-			Git: &kptfilev1alpha2.Git{
+		Upstream: &kptfilev1.Upstream{
+			Type: kptfilev1.GitOrigin,
+			Git: &kptfilev1.Git{
 				Directory: "/",
 				Repo:      "file://" + g.RepoDirectory,
 				Ref:       "main",
 			},
-			UpdateStrategy: kptfilev1alpha2.ResourceMerge,
+			UpdateStrategy: kptfilev1.ResourceMerge,
 		},
-		UpstreamLock: &kptfilev1alpha2.UpstreamLock{
-			Type: kptfilev1alpha2.GitOrigin,
-			Git: &kptfilev1alpha2.GitLock{
+		UpstreamLock: &kptfilev1.UpstreamLock{
+			Type: kptfilev1.GitOrigin,
+			Git: &kptfilev1.GitLock{
 				Directory: "/",
 				Repo:      "file://" + g.RepoDirectory,
 				Ref:       "main",
@@ -356,7 +356,7 @@ func TestCmd_Execute_flagAndArgParsing(t *testing.T) {
 				assert.Equal(t, fmt.Sprintf("file://%s", repo), r.Get.Git.Repo)
 				assert.Equal(t, "master", r.Get.Git.Ref)
 				assert.Equal(t, filepath.Join(dir, "package"), r.Get.Destination)
-				assert.Equal(t, kptfilev1alpha2.FastForward, r.Get.UpdateStrategy)
+				assert.Equal(t, kptfilev1.FastForward, r.Get.UpdateStrategy)
 			},
 		},
 		"invalid strategy provided": {
diff --git a/internal/cmdinit/cmdinit_test.go b/internal/cmdinit/cmdinit_test.go
index c05b67ef..0edc6cfb 100644
--- a/internal/cmdinit/cmdinit_test.go
+++ b/internal/cmdinit/cmdinit_test.go
@@ -46,7 +46,7 @@ func TestCmd(t *testing.T) {
 	// verify the contents
 	b, err := ioutil.ReadFile(filepath.Join(d, "my-pkg", "Kptfile"))
 	assert.NoError(t, err)
-	assert.Equal(t, `apiVersion: kpt.dev/v1alpha2
+	assert.Equal(t, `apiVersion: kpt.dev/v1
 kind: Kptfile
 metadata:
   name: my-pkg
@@ -108,7 +108,7 @@ func TestCmd_currentDir(t *testing.T) {
 	// verify the contents
 	b, err := ioutil.ReadFile(filepath.Join(packageDir, "Kptfile"))
 	assert.NoError(t, err)
-	assert.Equal(t, `apiVersion: kpt.dev/v1alpha2
+	assert.Equal(t, `apiVersion: kpt.dev/v1
 kind: Kptfile
 metadata:
   name: my-pkg
@@ -145,7 +145,7 @@ func TestCmd_DefaultToCurrentDir(t *testing.T) {
 	// verify the contents
 	b, err := ioutil.ReadFile(filepath.Join(packageDir, "Kptfile"))
 	assert.NoError(t, err)
-	assert.Equal(t, `apiVersion: kpt.dev/v1alpha2
+	assert.Equal(t, `apiVersion: kpt.dev/v1
 kind: Kptfile
 metadata:
   name: my-pkg
diff --git a/internal/cmdliveinit/cmdliveinit_test.go b/internal/cmdliveinit/cmdliveinit_test.go
index bac18bee..8fdee252 100644
--- a/internal/cmdliveinit/cmdliveinit_test.go
+++ b/internal/cmdliveinit/cmdliveinit_test.go
@@ -13,7 +13,7 @@ import (
 	"github.com/GoogleContainerTools/kpt/internal/pkg"
 	"github.com/GoogleContainerTools/kpt/internal/printer/fake"
 	"github.com/GoogleContainerTools/kpt/internal/testutil"
-	kptfilev1alpha2 "github.com/GoogleContainerTools/kpt/pkg/api/kptfile/v1alpha2"
+	kptfilev1 "github.com/GoogleContainerTools/kpt/pkg/api/kptfile/v1"
 	"github.com/stretchr/testify/assert"
 	"k8s.io/cli-runtime/pkg/genericclioptions"
 	cmdtesting "k8s.io/kubectl/pkg/cmd/testing"
@@ -26,7 +26,7 @@ var (
 )
 
 var kptFile = `
-apiVersion: kpt.dev/v1alpha2
+apiVersion: kpt.dev/v1
 kind: Kptfile
 metadata:
   name: test1
@@ -41,7 +41,7 @@ upstreamLock:
 const testInventoryID = "SSSSSSSSSS-RRRRR"
 
 var kptFileWithInventory = `
-apiVersion: kpt.dev/v1alpha2
+apiVersion: kpt.dev/v1
 kind: Kptfile
 metadata:
   name: test1
@@ -136,7 +136,7 @@ func TestCmd_Run(t *testing.T) {
 		force             bool
 		expectedErrorMsg  string
 		expectAutoGenID   bool
-		expectedInventory kptfilev1alpha2.Inventory
+		expectedInventory kptfilev1.Inventory
 	}{
 		"Fields are defaulted if not provided": {
 			kptfile:         kptFile,
@@ -144,7 +144,7 @@ func TestCmd_Run(t *testing.T) {
 			namespace:       "testns",
 			inventoryID:     "",
 			expectAutoGenID: true,
-			expectedInventory: kptfilev1alpha2.Inventory{
+			expectedInventory: kptfilev1.Inventory{
 				Namespace:   "testns",
 				Name:        "inventory-*",
 				InventoryID: "33ee4887f9638ef63efe71a9a9a632d3e9e2488e-*",
@@ -155,7 +155,7 @@ func TestCmd_Run(t *testing.T) {
 			name:        "my-pkg",
 			namespace:   "my-ns",
 			inventoryID: "my-inv-id",
-			expectedInventory: kptfilev1alpha2.Inventory{
+			expectedInventory: kptfilev1.Inventory{
 				Namespace:   "my-ns",
 				Name:        "my-pkg",
 				InventoryID: "my-inv-id",
@@ -175,7 +175,7 @@ func TestCmd_Run(t *testing.T) {
 			namespace:   inventoryNamespace,
 			inventoryID: inventoryID,
 			force:       true,
-			expectedInventory: kptfilev1alpha2.Inventory{
+			expectedInventory: kptfilev1.Inventory{
 				Namespace:   inventoryNamespace,
 				Name:        inventoryName,
 				InventoryID: inventoryID,
@@ -192,7 +192,7 @@ func TestCmd_Run(t *testing.T) {
 
 			w, clean := testutil.SetupWorkspace(t)
 			defer clean()
-			err := ioutil.WriteFile(filepath.Join(w.WorkspaceDirectory, kptfilev1alpha2.KptFileName),
+			err := ioutil.WriteFile(filepath.Join(w.WorkspaceDirectory, kptfilev1.KptFileName),
 				[]byte(tc.kptfile), 0600)
 			if !assert.NoError(t, err) {
 				t.FailNow()
diff --git a/internal/cmdmigrate/migratecmd_test.go b/internal/cmdmigrate/migratecmd_test.go
index 9b03db31..97a0e29d 100644
--- a/internal/cmdmigrate/migratecmd_test.go
+++ b/internal/cmdmigrate/migratecmd_test.go
@@ -27,7 +27,7 @@ var inventoryObjName = "test-inventory-obj"
 var testInventoryLabel = "test-inventory-label"
 
 var kptfileStr = `
-apiVersion: kpt.dev/v1alpha2
+apiVersion: kpt.dev/v1
 kind: Kptfile
 inventory:
   name: test-inventory-obj
@@ -345,7 +345,7 @@ func TestKptMigrate_migrateObjs(t *testing.T) {
 }
 
 var kptFileWithInventory = `
-apiVersion: kpt.dev/v1alpha2
+apiVersion: kpt.dev/v1
 kind: Kptfile
 metadata:
   name: test1
@@ -363,7 +363,7 @@ inventory:
 const testInventoryID = "SSSSSSSSSS-RRRRR"
 
 var kptFile = `
-apiVersion: kpt.dev/v1alpha2
+apiVersion: kpt.dev/v1
 kind: Kptfile
 metadata:
   name: test1
diff --git a/internal/cmdupdate/cmdupdate_test.go b/internal/cmdupdate/cmdupdate_test.go
index 1ee98f9e..8aec3f4d 100644
--- a/internal/cmdupdate/cmdupdate_test.go
+++ b/internal/cmdupdate/cmdupdate_test.go
@@ -31,7 +31,7 @@ import (
 	"github.com/GoogleContainerTools/kpt/internal/printer/fake"
 	"github.com/GoogleContainerTools/kpt/internal/testutil"
 	"github.com/GoogleContainerTools/kpt/internal/testutil/pkgbuilder"
-	kptfilev1alpha2 "github.com/GoogleContainerTools/kpt/pkg/api/kptfile/v1alpha2"
+	kptfilev1 "github.com/GoogleContainerTools/kpt/pkg/api/kptfile/v1"
 	"github.com/spf13/cobra"
 	"github.com/stretchr/testify/assert"
 	"sigs.k8s.io/kustomize/kyaml/yaml"
@@ -99,7 +99,7 @@ func TestCmd_execute(t *testing.T) {
 	if !assert.NoError(t, err) {
 		return
 	}
-	if !g.AssertKptfile(t, dest, kptfilev1alpha2.KptFile{
+	if !g.AssertKptfile(t, dest, kptfilev1.KptFile{
 		ResourceMeta: yaml.ResourceMeta{
 			ObjectMeta: yaml.ObjectMeta{
 				NameMeta: yaml.NameMeta{
@@ -107,21 +107,21 @@ func TestCmd_execute(t *testing.T) {
 				},
 			},
 			TypeMeta: yaml.TypeMeta{
-				APIVersion: kptfilev1alpha2.TypeMeta.APIVersion,
-				Kind:       kptfilev1alpha2.TypeMeta.Kind},
+				APIVersion: kptfilev1.TypeMeta.APIVersion,
+				Kind:       kptfilev1.TypeMeta.Kind},
 		},
-		Upstream: &kptfilev1alpha2.Upstream{
-			Type: kptfilev1alpha2.GitOrigin,
-			Git: &kptfilev1alpha2.Git{
+		Upstream: &kptfilev1.Upstream{
+			Type: kptfilev1.GitOrigin,
+			Git: &kptfilev1.Git{
 				Repo:      "file://" + g.RepoDirectory,
 				Ref:       "master",
 				Directory: "/",
 			},
-			UpdateStrategy: kptfilev1alpha2.FastForward,
+			UpdateStrategy: kptfilev1.FastForward,
 		},
-		UpstreamLock: &kptfilev1alpha2.UpstreamLock{
-			Type: kptfilev1alpha2.GitOrigin,
-			Git: &kptfilev1alpha2.GitLock{
+		UpstreamLock: &kptfilev1.UpstreamLock{
+			Type: kptfilev1.GitOrigin,
+			Git: &kptfilev1.GitLock{
 				Repo:      "file://" + g.RepoDirectory,
 				Ref:       "master",
 				Directory: "/",
@@ -204,7 +204,7 @@ func TestCmd_Execute_flagAndArgParsing(t *testing.T) {
 	err := r.Command.Execute()
 	assert.NoError(t, err)
 	assert.Equal(t, "", r.Update.Ref)
-	assert.Equal(t, kptfilev1alpha2.ResourceMerge, r.Update.Strategy)
+	assert.Equal(t, kptfilev1.ResourceMerge, r.Update.Strategy)
 
 	// verify an error is thrown if multiple paths are specified
 	r = cmdupdate.NewRunner(fake.CtxWithDefaultPrinter(), "kpt")
@@ -214,7 +214,7 @@ func TestCmd_Execute_flagAndArgParsing(t *testing.T) {
 	err = r.Command.Execute()
 	assert.EqualError(t, err, "accepts at most 1 arg(s), received 2")
 	assert.Equal(t, "", r.Update.Ref)
-	assert.Equal(t, kptfilev1alpha2.UpdateStrategyType(""), r.Update.Strategy)
+	assert.Equal(t, kptfilev1.UpdateStrategyType(""), r.Update.Strategy)
 
 	// verify the branch ref is set to the correct value
 	r = cmdupdate.NewRunner(fake.CtxWithDefaultPrinter(), "kpt")
@@ -223,7 +223,7 @@ func TestCmd_Execute_flagAndArgParsing(t *testing.T) {
 	err = r.Command.Execute()
 	assert.NoError(t, err)
 	assert.Equal(t, "refs/heads/foo", r.Update.Ref)
-	assert.Equal(t, kptfilev1alpha2.ResourceMerge, r.Update.Strategy)
+	assert.Equal(t, kptfilev1.ResourceMerge, r.Update.Strategy)
 
 	// verify the branch ref is set to the correct value
 	r = cmdupdate.NewRunner(fake.CtxWithDefaultPrinter(), "kpt")
@@ -231,7 +231,7 @@ func TestCmd_Execute_flagAndArgParsing(t *testing.T) {
 	r.Command.SetArgs([]string{"foo", "--strategy", "force-delete-replace"})
 	err = r.Command.Execute()
 	assert.NoError(t, err)
-	assert.Equal(t, kptfilev1alpha2.ForceDeleteReplace, r.Update.Strategy)
+	assert.Equal(t, kptfilev1.ForceDeleteReplace, r.Update.Strategy)
 	assert.Equal(t, "", r.Update.Ref)
 
 	r = cmdupdate.NewRunner(fake.CtxWithDefaultPrinter(), "kpt")
@@ -239,7 +239,7 @@ func TestCmd_Execute_flagAndArgParsing(t *testing.T) {
 	r.Command.SetArgs([]string{"foo", "--strategy", "resource-merge"})
 	err = r.Command.Execute()
 	assert.NoError(t, err)
-	assert.Equal(t, kptfilev1alpha2.ResourceMerge, r.Update.Strategy)
+	assert.Equal(t, kptfilev1.ResourceMerge, r.Update.Strategy)
 	assert.Equal(t, "", r.Update.Ref)
 }
 
diff --git a/internal/fnruntime/runner_test.go b/internal/fnruntime/runner_test.go
index 074871d6..0d71ce88 100644
--- a/internal/fnruntime/runner_test.go
+++ b/internal/fnruntime/runner_test.go
@@ -25,7 +25,7 @@ import (
 	"testing"
 
 	"github.com/GoogleContainerTools/kpt/internal/types"
-	kptfilev1alpha2 "github.com/GoogleContainerTools/kpt/pkg/api/kptfile/v1alpha2"
+	kptfilev1 "github.com/GoogleContainerTools/kpt/pkg/api/kptfile/v1"
 	"github.com/stretchr/testify/assert"
 	"sigs.k8s.io/kustomize/kyaml/fn/framework"
 	"sigs.k8s.io/kustomize/kyaml/kio"
@@ -35,7 +35,7 @@ import (
 func TestFunctionConfig(t *testing.T) {
 	type input struct {
 		name              string
-		fn                kptfilev1alpha2.Function
+		fn                kptfilev1.Function
 		configFileContent string
 		expected          string
 	}
@@ -43,12 +43,12 @@ func TestFunctionConfig(t *testing.T) {
 	cases := []input{
 		{
 			name:     "no config",
-			fn:       kptfilev1alpha2.Function{},
+			fn:       kptfilev1.Function{},
 			expected: "",
 		},
 		{
 			name: "file config",
-			fn:   kptfilev1alpha2.Function{},
+			fn:   kptfilev1.Function{},
 			configFileContent: `apiVersion: cft.dev/v1alpha1
 kind: ResourceHierarchy
 metadata:
@@ -63,7 +63,7 @@ metadata:
 		},
 		{
 			name: "map config",
-			fn: kptfilev1alpha2.Function{
+			fn: kptfilev1.Function{
 				ConfigMap: map[string]string{
 					"foo": "bar",
 				},
diff --git a/internal/pkg/pkg_test.go b/internal/pkg/pkg_test.go
index 17a1b656..44b68083 100644
--- a/internal/pkg/pkg_test.go
+++ b/internal/pkg/pkg_test.go
@@ -25,7 +25,7 @@ import (
 
 	"github.com/GoogleContainerTools/kpt/internal/testutil/pkgbuilder"
 	"github.com/GoogleContainerTools/kpt/internal/types"
-	kptfilev1alpha2 "github.com/GoogleContainerTools/kpt/pkg/api/kptfile/v1alpha2"
+	kptfilev1 "github.com/GoogleContainerTools/kpt/pkg/api/kptfile/v1"
 	"github.com/stretchr/testify/assert"
 	"sigs.k8s.io/kustomize/kyaml/yaml"
 )
@@ -249,7 +249,7 @@ kind: Custom
 spec:
   image: nginx:1.2.3`,
 				`
-apiVersion: kpt.dev/v1alpha2
+apiVersion: kpt.dev/v1
 kind: Kptfile
 metadata:
   name: mysql
@@ -260,7 +260,7 @@ pipeline:
         replicas: 5
 `,
 				`
-apiVersion: kpt.dev/v1alpha2
+apiVersion: kpt.dev/v1
 kind: Pipeline
 sources:
   - "."`,
@@ -327,7 +327,7 @@ func TestDirectSubpackages(t *testing.T) {
 						WithKptfile(
 							pkgbuilder.NewKptfile().
 								WithUpstream("github.com/GoogleContainerTools/kpt",
-									"/", "main", string(kptfilev1alpha2.ResourceMerge)),
+									"/", "main", string(kptfilev1.ResourceMerge)),
 						).
 						WithResource(pkgbuilder.ConfigMapResource),
 				),
@@ -361,7 +361,7 @@ func TestDirectSubpackages(t *testing.T) {
 						WithKptfile(
 							pkgbuilder.NewKptfile().
 								WithUpstream("github.com/GoogleContainerTools/kpt",
-									"/", "main", string(kptfilev1alpha2.ResourceMerge)),
+									"/", "main", string(kptfilev1.ResourceMerge)),
 						).
 						WithResource(pkgbuilder.ConfigMapResource).
 						WithSubPackages(
@@ -371,7 +371,7 @@ func TestDirectSubpackages(t *testing.T) {
 										WithKptfile(
 											pkgbuilder.NewKptfile().
 												WithUpstream("github.com/GoogleContainerTools/kpt",
-													"/", "main", string(kptfilev1alpha2.ResourceMerge)),
+													"/", "main", string(kptfilev1.ResourceMerge)),
 										).
 										WithResource(pkgbuilder.ConfigMapResource),
 								),
@@ -464,7 +464,7 @@ func TestSubpackages(t *testing.T) {
 						WithKptfile(
 							pkgbuilder.NewKptfile().
 								WithUpstream("github.com/GoogleContainerTools/kpt",
-									"/", "main", string(kptfilev1alpha2.ResourceMerge)),
+									"/", "main", string(kptfilev1.ResourceMerge)),
 						).
 						WithSubPackages(
 							pkgbuilder.NewSubPkg("directory").
@@ -473,7 +473,7 @@ func TestSubpackages(t *testing.T) {
 										WithKptfile(
 											pkgbuilder.NewKptfile().
 												WithUpstream("github.com/GoogleContainerTools/kpt",
-													"/", "main", string(kptfilev1alpha2.ResourceMerge)),
+													"/", "main", string(kptfilev1.ResourceMerge)),
 										),
 								),
 						),
@@ -486,7 +486,7 @@ func TestSubpackages(t *testing.T) {
 										WithKptfile(
 											pkgbuilder.NewKptfile().
 												WithUpstream("github.com/GoogleContainerTools/kpt",
-													"/", "main", string(kptfilev1alpha2.ResourceMerge)),
+													"/", "main", string(kptfilev1.ResourceMerge)),
 										),
 								),
 							pkgbuilder.NewSubPkg("local-sub2").
@@ -678,7 +678,7 @@ func TestFunctionConfigFilePaths(t *testing.T) {
 						WithKptfile(
 							pkgbuilder.NewKptfile().
 								WithUpstream("github.com/GoogleContainerTools/kpt",
-									"/", "main", string(kptfilev1alpha2.ResourceMerge)).
+									"/", "main", string(kptfilev1.ResourceMerge)).
 								WithPipeline(
 									pkgbuilder.NewFunction("image").
 										WithConfigPath("fn-config.yaml"),
@@ -692,7 +692,7 @@ func TestFunctionConfigFilePaths(t *testing.T) {
 										WithKptfile(
 											pkgbuilder.NewKptfile().
 												WithUpstream("github.com/GoogleContainerTools/kpt",
-													"/", "main", string(kptfilev1alpha2.ResourceMerge)).
+													"/", "main", string(kptfilev1.ResourceMerge)).
 												WithPipeline(
 													pkgbuilder.NewFunction("image").
 														WithConfigPath("fn-config1.yaml"),
@@ -718,7 +718,7 @@ func TestFunctionConfigFilePaths(t *testing.T) {
 										WithKptfile(
 											pkgbuilder.NewKptfile().
 												WithUpstream("github.com/GoogleContainerTools/kpt",
-													"/", "main", string(kptfilev1alpha2.ResourceMerge)),
+													"/", "main", string(kptfilev1.ResourceMerge)),
 										),
 								),
 							pkgbuilder.NewSubPkg("local-sub2").
diff --git a/internal/testutil/pkgbuilder/builder.go b/internal/testutil/pkgbuilder/builder.go
index 7939d7e3..4e1bfabe 100644
--- a/internal/testutil/pkgbuilder/builder.go
+++ b/internal/testutil/pkgbuilder/builder.go
@@ -25,7 +25,7 @@ import (
 	"testing"
 	"text/template"
 
-	kptfilev1alpha2 "github.com/GoogleContainerTools/kpt/pkg/api/kptfile/v1alpha2"
+	kptfilev1 "github.com/GoogleContainerTools/kpt/pkg/api/kptfile/v1"
 	"github.com/stretchr/testify/assert"
 	"sigs.k8s.io/kustomize/kyaml/yaml"
 )
@@ -469,7 +469,7 @@ func buildPkg(pkgPath string, pkg *pkg, pkgName string, reposInfo ReposInfo) err
 	if pkg.Kptfile != nil {
 		content := buildKptfile(pkg, pkgName, reposInfo)
 
-		err := ioutil.WriteFile(filepath.Join(pkgPath, kptfilev1alpha2.KptFileName),
+		err := ioutil.WriteFile(filepath.Join(pkgPath, kptfilev1.KptFileName),
 			[]byte(content), 0600)
 		if err != nil {
 			return err
@@ -511,7 +511,7 @@ func buildPkg(pkgPath string, pkg *pkg, pkgName string, reposInfo ReposInfo) err
 }
 
 // TODO: Consider using the Kptfile struct for this instead of a template.
-var kptfileTemplate = `apiVersion: kpt.dev/v1alpha2
+var kptfileTemplate = `apiVersion: kpt.dev/v1
 kind: Kptfile
 metadata:
   name: {{.PkgName}}
diff --git a/internal/testutil/setup_manager.go b/internal/testutil/setup_manager.go
index 0f077d07..915e6bc0 100644
--- a/internal/testutil/setup_manager.go
+++ b/internal/testutil/setup_manager.go
@@ -24,7 +24,7 @@ import (
 	"github.com/GoogleContainerTools/kpt/internal/printer/fake"
 	"github.com/GoogleContainerTools/kpt/internal/testutil/pkgbuilder"
 	"github.com/GoogleContainerTools/kpt/internal/util/get"
-	kptfilev1alpha2 "github.com/GoogleContainerTools/kpt/pkg/api/kptfile/v1alpha2"
+	kptfilev1 "github.com/GoogleContainerTools/kpt/pkg/api/kptfile/v1"
 	"github.com/stretchr/testify/assert"
 	"sigs.k8s.io/kustomize/kyaml/yaml"
 )
@@ -105,7 +105,7 @@ func (g *TestSetupManager) Init() bool {
 	// Get the content from the upstream repo into the local workspace.
 	if !assert.NoError(g.T, get.Command{
 		Destination: filepath.Join(g.LocalWorkspace.WorkspaceDirectory, g.targetDir),
-		Git: &kptfilev1alpha2.Git{
+		Git: &kptfilev1.Git{
 			Repo:      g.Repos[Upstream].RepoDirectory,
 			Ref:       g.GetRef,
 			Directory: g.GetSubDirectory,
@@ -197,8 +197,8 @@ func UpdateGitDir(t *testing.T, name string, gitDir GitDirectory, changes []Cont
 	return nil
 }
 
-func (g *TestSetupManager) AssertKptfile(name, commit, ref string, strategy kptfilev1alpha2.UpdateStrategyType) bool {
-	expectedKptfile := kptfilev1alpha2.KptFile{
+func (g *TestSetupManager) AssertKptfile(name, commit, ref string, strategy kptfilev1.UpdateStrategyType) bool {
+	expectedKptfile := kptfilev1.KptFile{
 		ResourceMeta: yaml.ResourceMeta{
 			ObjectMeta: yaml.ObjectMeta{
 				NameMeta: yaml.NameMeta{
@@ -206,21 +206,21 @@ func (g *TestSetupManager) AssertKptfile(name, commit, ref string, strategy kptf
 				},
 			},
 			TypeMeta: yaml.TypeMeta{
-				APIVersion: kptfilev1alpha2.TypeMeta.APIVersion,
-				Kind:       kptfilev1alpha2.TypeMeta.Kind},
+				APIVersion: kptfilev1.TypeMeta.APIVersion,
+				Kind:       kptfilev1.TypeMeta.Kind},
 		},
-		Upstream: &kptfilev1alpha2.Upstream{
+		Upstream: &kptfilev1.Upstream{
 			Type: "git",
-			Git: &kptfilev1alpha2.Git{
+			Git: &kptfilev1.Git{
 				Directory: g.GetSubDirectory,
 				Repo:      g.Repos[Upstream].RepoDirectory,
 				Ref:       ref,
 			},
 			UpdateStrategy: strategy,
 		},
-		UpstreamLock: &kptfilev1alpha2.UpstreamLock{
+		UpstreamLock: &kptfilev1.UpstreamLock{
 			Type: "git",
-			Git: &kptfilev1alpha2.GitLock{
+			Git: &kptfilev1.GitLock{
 				Directory: g.GetSubDirectory,
 				Repo:      g.Repos[Upstream].RepoDirectory,
 				Ref:       ref,
diff --git a/internal/testutil/testdata/updateMergeConflict/Kptfile b/internal/testutil/testdata/updateMergeConflict/Kptfile
index a766c8b3..50aa2916 100644
--- a/internal/testutil/testdata/updateMergeConflict/Kptfile
+++ b/internal/testutil/testdata/updateMergeConflict/Kptfile
@@ -1,4 +1,4 @@
-apiVersion: kpt.dev/v1alpha2
+apiVersion: kpt.dev/v1
 kind: Kptfile
 metadata:
     name: test-kpt-upstream-307571298
diff --git a/internal/testutil/testutil.go b/internal/testutil/testutil.go
index 885801a7..3fda094e 100644
--- a/internal/testutil/testutil.go
+++ b/internal/testutil/testutil.go
@@ -31,7 +31,7 @@ import (
 	"github.com/GoogleContainerTools/kpt/internal/printer/fake"
 	"github.com/GoogleContainerTools/kpt/internal/util/addmergecomment"
 	"github.com/GoogleContainerTools/kpt/internal/util/git"
-	kptfilev1alpha2 "github.com/GoogleContainerTools/kpt/pkg/api/kptfile/v1alpha2"
+	kptfilev1 "github.com/GoogleContainerTools/kpt/pkg/api/kptfile/v1"
 	"github.com/GoogleContainerTools/kpt/pkg/kptfile/kptfileutil"
 	toposort "github.com/philopon/go-toposort"
 	"github.com/stretchr/testify/assert"
@@ -75,7 +75,7 @@ type TestGitRepo struct {
 
 var AssertNoError = assertnow.NilError
 
-var KptfileSet = diffSet(kptfilev1alpha2.KptFileName)
+var KptfileSet = diffSet(kptfilev1.KptFileName)
 
 func diffSet(path string) sets.String {
 	s := sets.String{}
@@ -112,7 +112,7 @@ func KptfileAwarePkgEqual(t *testing.T, pkg1, pkg2 string, addMergeCommentsToSou
 	// TODO(mortent): See if we can avoid this. We just need to make sure
 	// we can compare Kptfiles without any formatting issues.
 	for _, s := range diff.List() {
-		if !strings.HasSuffix(s, kptfilev1alpha2.KptFileName) {
+		if !strings.HasSuffix(s, kptfilev1.KptFileName) {
 			continue
 		}
 
@@ -265,9 +265,9 @@ const trimPrefix = `# Copyright 2019 Google LLC
 # limitations under the License.`
 
 // AssertKptfile verifies the contents of the KptFile matches the provided value.
-func (g *TestGitRepo) AssertKptfile(t *testing.T, cloned string, kpkg kptfilev1alpha2.KptFile) bool {
+func (g *TestGitRepo) AssertKptfile(t *testing.T, cloned string, kpkg kptfilev1.KptFile) bool {
 	// read the actual generated KptFile
-	b, err := ioutil.ReadFile(filepath.Join(cloned, kptfilev1alpha2.KptFileName))
+	b, err := ioutil.ReadFile(filepath.Join(cloned, kptfilev1.KptFileName))
 	if !assert.NoError(t, err) {
 		return false
 	}
@@ -450,7 +450,7 @@ func SetupWorkspace(t *testing.T) (*TestWorkspace, func()) {
 
 // AddKptfileToWorkspace writes the provided Kptfile to the workspace
 // and makes a commit.
-func AddKptfileToWorkspace(t *testing.T, w *TestWorkspace, kf *kptfilev1alpha2.KptFile) {
+func AddKptfileToWorkspace(t *testing.T, w *TestWorkspace, kf *kptfilev1.KptFile) {
 	err := os.MkdirAll(w.FullPackagePath(), 0700)
 	if !assert.NoError(t, err) {
 		t.FailNow()
@@ -651,10 +651,10 @@ func replaceData(repo, data string) error {
 			}
 			// Only copy over the Upstream section from the existing
 			// Kptfile if other values hasn't been provided.
-			if dataKptfile.Upstream == nil || reflect.DeepEqual(dataKptfile.Upstream, kptfilev1alpha2.Upstream{}) {
+			if dataKptfile.Upstream == nil || reflect.DeepEqual(dataKptfile.Upstream, kptfilev1.Upstream{}) {
 				dataKptfile.Upstream = repoKptfile.Upstream
 			}
-			if dataKptfile.UpstreamLock == nil || reflect.DeepEqual(dataKptfile.UpstreamLock, kptfilev1alpha2.UpstreamLock{}) {
+			if dataKptfile.UpstreamLock == nil || reflect.DeepEqual(dataKptfile.UpstreamLock, kptfilev1.UpstreamLock{}) {
 				dataKptfile.UpstreamLock = repoKptfile.UpstreamLock
 			}
 			dataKptfile.Name = repoKptfile.Name
@@ -693,7 +693,7 @@ func replaceData(repo, data string) error {
 		}
 
 		// Never delete the Kptfile in the root package.
-		if rel == kptfilev1alpha2.KptFileName {
+		if rel == kptfilev1.KptFileName {
 			return nil
 		}
 
diff --git a/internal/util/fetch/fetch_test.go b/internal/util/fetch/fetch_test.go
index 96f64488..e7701100 100644
--- a/internal/util/fetch/fetch_test.go
+++ b/internal/util/fetch/fetch_test.go
@@ -25,7 +25,7 @@ import (
 	"github.com/GoogleContainerTools/kpt/internal/testutil"
 	"github.com/GoogleContainerTools/kpt/internal/testutil/pkgbuilder"
 	. "github.com/GoogleContainerTools/kpt/internal/util/fetch"
-	kptfilev1alpha2 "github.com/GoogleContainerTools/kpt/pkg/api/kptfile/v1alpha2"
+	kptfilev1 "github.com/GoogleContainerTools/kpt/pkg/api/kptfile/v1"
 	"github.com/GoogleContainerTools/kpt/pkg/kptfile/kptfileutil"
 	"github.com/stretchr/testify/assert"
 	"sigs.k8s.io/kustomize/kyaml/yaml"
@@ -49,10 +49,10 @@ func setupWorkspace(t *testing.T) (*testutil.TestGitRepo, *testutil.TestWorkspac
 	return g, w, clean
 }
 
-func createKptfile(workspace *testutil.TestWorkspace, git *kptfilev1alpha2.Git, strategy kptfilev1alpha2.UpdateStrategyType) error {
+func createKptfile(workspace *testutil.TestWorkspace, git *kptfilev1.Git, strategy kptfilev1.UpdateStrategyType) error {
 	kf := kptfileutil.DefaultKptfile(workspace.PackageDir)
-	kf.Upstream = &kptfilev1alpha2.Upstream{
-		Type:           kptfilev1alpha2.GitOrigin,
+	kf.Upstream = &kptfilev1.Upstream{
+		Type:           kptfilev1.GitOrigin,
 		Git:            git,
 		UpdateStrategy: strategy,
 	}
@@ -98,7 +98,7 @@ func TestCommand_Run_failNoGit(t *testing.T) {
 	_, w, clean := setupWorkspace(t)
 	defer clean()
 
-	err := createKptfile(w, nil, kptfilev1alpha2.ResourceMerge)
+	err := createKptfile(w, nil, kptfilev1.ResourceMerge)
 	if !assert.NoError(t, err) {
 		t.FailNow()
 	}
@@ -117,11 +117,11 @@ func TestCommand_Run_failEmptyRepo(t *testing.T) {
 	_, w, clean := setupWorkspace(t)
 	defer clean()
 
-	err := createKptfile(w, &kptfilev1alpha2.Git{
+	err := createKptfile(w, &kptfilev1.Git{
 		Repo:      "",
 		Directory: "/",
 		Ref:       "main",
-	}, kptfilev1alpha2.ResourceMerge)
+	}, kptfilev1.ResourceMerge)
 	if !assert.NoError(t, err) {
 		t.FailNow()
 	}
@@ -140,11 +140,11 @@ func TestCommand_Run_failNoRevision(t *testing.T) {
 	g, w, clean := setupWorkspace(t)
 	defer clean()
 
-	err := createKptfile(w, &kptfilev1alpha2.Git{
+	err := createKptfile(w, &kptfilev1.Git{
 		Repo:      "file://" + g.RepoDirectory,
 		Directory: "/",
 		Ref:       "",
-	}, kptfilev1alpha2.ResourceMerge)
+	}, kptfilev1.ResourceMerge)
 	if !assert.NoError(t, err) {
 		t.FailNow()
 	}
@@ -166,11 +166,11 @@ func TestCommand_Run(t *testing.T) {
 	g, w, clean := setupWorkspace(t)
 	defer clean()
 
-	err := createKptfile(w, &kptfilev1alpha2.Git{
+	err := createKptfile(w, &kptfilev1.Git{
 		Repo:      "file://" + g.RepoDirectory,
 		Directory: "/",
 		Ref:       "master",
-	}, kptfilev1alpha2.ResourceMerge)
+	}, kptfilev1.ResourceMerge)
 	if !assert.NoError(t, err) {
 		t.FailNow()
 	}
@@ -187,7 +187,7 @@ func TestCommand_Run(t *testing.T) {
 	// verify the KptFile contains the expected values
 	commit, err := g.GetCommit()
 	assert.NoError(t, err)
-	g.AssertKptfile(t, absPath, kptfilev1alpha2.KptFile{
+	g.AssertKptfile(t, absPath, kptfilev1.KptFile{
 		ResourceMeta: yaml.ResourceMeta{
 			ObjectMeta: yaml.ObjectMeta{
 				NameMeta: yaml.NameMeta{
@@ -195,21 +195,21 @@ func TestCommand_Run(t *testing.T) {
 				},
 			},
 			TypeMeta: yaml.TypeMeta{
-				APIVersion: kptfilev1alpha2.KptFileAPIVersion,
-				Kind:       kptfilev1alpha2.KptFileName},
+				APIVersion: kptfilev1.KptFileAPIVersion,
+				Kind:       kptfilev1.KptFileName},
 		},
-		Upstream: &kptfilev1alpha2.Upstream{
+		Upstream: &kptfilev1.Upstream{
 			Type: "git",
-			Git: &kptfilev1alpha2.Git{
+			Git: &kptfilev1.Git{
 				Directory: "/",
 				Repo:      "file://" + g.RepoDirectory,
 				Ref:       "master",
 			},
-			UpdateStrategy: kptfilev1alpha2.ResourceMerge,
+			UpdateStrategy: kptfilev1.ResourceMerge,
 		},
-		UpstreamLock: &kptfilev1alpha2.UpstreamLock{
+		UpstreamLock: &kptfilev1.UpstreamLock{
 			Type: "git",
-			Git: &kptfilev1alpha2.GitLock{
+			Git: &kptfilev1.GitLock{
 				Directory: "/",
 				Repo:      "file://" + g.RepoDirectory,
 				Ref:       "master",
@@ -228,11 +228,11 @@ func TestCommand_Run_subdir(t *testing.T) {
 	defer clean()
 
 	subdir := "java"
-	err := createKptfile(w, &kptfilev1alpha2.Git{
+	err := createKptfile(w, &kptfilev1.Git{
 		Repo:      g.RepoDirectory,
 		Directory: subdir,
 		Ref:       "refs/heads/master",
-	}, kptfilev1alpha2.ResourceMerge)
+	}, kptfilev1.ResourceMerge)
 	if !assert.NoError(t, err) {
 		t.FailNow()
 	}
@@ -249,7 +249,7 @@ func TestCommand_Run_subdir(t *testing.T) {
 	// verify the KptFile contains the expected values
 	commit, err := g.GetCommit()
 	assert.NoError(t, err)
-	g.AssertKptfile(t, absPath, kptfilev1alpha2.KptFile{
+	g.AssertKptfile(t, absPath, kptfilev1.KptFile{
 		ResourceMeta: yaml.ResourceMeta{
 			ObjectMeta: yaml.ObjectMeta{
 				NameMeta: yaml.NameMeta{
@@ -257,21 +257,21 @@ func TestCommand_Run_subdir(t *testing.T) {
 				},
 			},
 			TypeMeta: yaml.TypeMeta{
-				APIVersion: kptfilev1alpha2.KptFileAPIVersion,
-				Kind:       kptfilev1alpha2.KptFileName},
+				APIVersion: kptfilev1.KptFileAPIVersion,
+				Kind:       kptfilev1.KptFileName},
 		},
-		Upstream: &kptfilev1alpha2.Upstream{
-			Type: kptfilev1alpha2.GitOrigin,
-			Git: &kptfilev1alpha2.Git{
+		Upstream: &kptfilev1.Upstream{
+			Type: kptfilev1.GitOrigin,
+			Git: &kptfilev1.Git{
 				Directory: subdir,
 				Ref:       "refs/heads/master",
 				Repo:      g.RepoDirectory,
 			},
-			UpdateStrategy: kptfilev1alpha2.ResourceMerge,
+			UpdateStrategy: kptfilev1.ResourceMerge,
 		},
-		UpstreamLock: &kptfilev1alpha2.UpstreamLock{
-			Type: kptfilev1alpha2.GitOrigin,
-			Git: &kptfilev1alpha2.GitLock{
+		UpstreamLock: &kptfilev1.UpstreamLock{
+			Type: kptfilev1.GitOrigin,
+			Git: &kptfilev1.GitLock{
 				Commit:    commit,
 				Directory: subdir,
 				Ref:       "refs/heads/master",
@@ -307,11 +307,11 @@ func TestCommand_Run_branch(t *testing.T) {
 	assert.NoError(t, err)
 	assert.NotEqual(t, commit, commit2)
 
-	err = createKptfile(w, &kptfilev1alpha2.Git{
+	err = createKptfile(w, &kptfilev1.Git{
 		Repo:      g.RepoDirectory,
 		Directory: "/",
 		Ref:       "refs/heads/exp",
-	}, kptfilev1alpha2.ResourceMerge)
+	}, kptfilev1.ResourceMerge)
 	if !assert.NoError(t, err) {
 		t.FailNow()
 	}
@@ -325,7 +325,7 @@ func TestCommand_Run_branch(t *testing.T) {
 	g.AssertEqual(t, filepath.Join(g.DatasetDirectory, testutil.Dataset2), w.FullPackagePath(), false)
 
 	// verify the KptFile contains the expected values
-	g.AssertKptfile(t, w.FullPackagePath(), kptfilev1alpha2.KptFile{
+	g.AssertKptfile(t, w.FullPackagePath(), kptfilev1.KptFile{
 		ResourceMeta: yaml.ResourceMeta{
 			ObjectMeta: yaml.ObjectMeta{
 				NameMeta: yaml.NameMeta{
@@ -333,21 +333,21 @@ func TestCommand_Run_branch(t *testing.T) {
 				},
 			},
 			TypeMeta: yaml.TypeMeta{
-				APIVersion: kptfilev1alpha2.KptFileAPIVersion,
-				Kind:       kptfilev1alpha2.KptFileName},
+				APIVersion: kptfilev1.KptFileAPIVersion,
+				Kind:       kptfilev1.KptFileName},
 		},
-		Upstream: &kptfilev1alpha2.Upstream{
-			Type: kptfilev1alpha2.GitOrigin,
-			Git: &kptfilev1alpha2.Git{
+		Upstream: &kptfilev1.Upstream{
+			Type: kptfilev1.GitOrigin,
+			Git: &kptfilev1.Git{
 				Directory: "/",
 				Repo:      g.RepoDirectory,
 				Ref:       "refs/heads/exp",
 			},
-			UpdateStrategy: kptfilev1alpha2.ResourceMerge,
+			UpdateStrategy: kptfilev1.ResourceMerge,
 		},
-		UpstreamLock: &kptfilev1alpha2.UpstreamLock{
-			Type: kptfilev1alpha2.GitOrigin,
-			Git: &kptfilev1alpha2.GitLock{
+		UpstreamLock: &kptfilev1.UpstreamLock{
+			Type: kptfilev1.GitOrigin,
+			Git: &kptfilev1.GitLock{
 				Directory: "/",
 				Repo:      g.RepoDirectory,
 				Ref:       "refs/heads/exp",
@@ -388,11 +388,11 @@ func TestCommand_Run_tag(t *testing.T) {
 	assert.NotEqual(t, commit, commit0)
 	assert.NotEqual(t, commit, commit2)
 
-	err = createKptfile(w, &kptfilev1alpha2.Git{
+	err = createKptfile(w, &kptfilev1.Git{
 		Repo:      g.RepoDirectory,
 		Directory: "/",
 		Ref:       "refs/tags/v2",
-	}, kptfilev1alpha2.ResourceMerge)
+	}, kptfilev1.ResourceMerge)
 	if !assert.NoError(t, err) {
 		t.FailNow()
 	}
@@ -406,7 +406,7 @@ func TestCommand_Run_tag(t *testing.T) {
 	g.AssertEqual(t, filepath.Join(g.DatasetDirectory, testutil.Dataset2), w.FullPackagePath(), false)
 
 	// verify the KptFile contains the expected values
-	g.AssertKptfile(t, w.FullPackagePath(), kptfilev1alpha2.KptFile{
+	g.AssertKptfile(t, w.FullPackagePath(), kptfilev1.KptFile{
 		ResourceMeta: yaml.ResourceMeta{
 			ObjectMeta: yaml.ObjectMeta{
 				NameMeta: yaml.NameMeta{
@@ -414,21 +414,21 @@ func TestCommand_Run_tag(t *testing.T) {
 				},
 			},
 			TypeMeta: yaml.TypeMeta{
-				APIVersion: kptfilev1alpha2.KptFileAPIVersion,
-				Kind:       kptfilev1alpha2.KptFileName},
+				APIVersion: kptfilev1.KptFileAPIVersion,
+				Kind:       kptfilev1.KptFileName},
 		},
-		Upstream: &kptfilev1alpha2.Upstream{
+		Upstream: &kptfilev1.Upstream{
 			Type: "git",
-			Git: &kptfilev1alpha2.Git{
+			Git: &kptfilev1.Git{
 				Directory: "/",
 				Repo:      g.RepoDirectory,
 				Ref:       "refs/tags/v2",
 			},
-			UpdateStrategy: kptfilev1alpha2.ResourceMerge,
+			UpdateStrategy: kptfilev1.ResourceMerge,
 		},
-		UpstreamLock: &kptfilev1alpha2.UpstreamLock{
+		UpstreamLock: &kptfilev1.UpstreamLock{
 			Type: "git",
-			Git: &kptfilev1alpha2.GitLock{
+			Git: &kptfilev1.GitLock{
 				Directory: "/",
 				Repo:      g.RepoDirectory,
 				Ref:       "refs/tags/v2",
@@ -492,11 +492,11 @@ func TestCommand_Run_subdir_at_tag(t *testing.T) {
 			defer clean()
 
 			g := repos[testutil.Upstream]
-			err := createKptfile(rw, &kptfilev1alpha2.Git{
+			err := createKptfile(rw, &kptfilev1.Git{
 				Repo:      g.RepoDirectory,
 				Directory: tc.dir,
 				Ref:       tc.tag,
-			}, kptfilev1alpha2.ResourceMerge)
+			}, kptfilev1.ResourceMerge)
 			if !assert.NoError(t, err) {
 				t.FailNow()
 			}
@@ -550,11 +550,11 @@ func TestCommand_Run_no_subdir_at_valid_tag(t *testing.T) {
 	defer clean()
 
 	g := repos[testutil.Upstream]
-	err := createKptfile(rw, &kptfilev1alpha2.Git{
+	err := createKptfile(rw, &kptfilev1.Git{
 		Repo:      g.RepoDirectory,
 		Directory: dir,
 		Ref:       tag,
-	}, kptfilev1alpha2.ResourceMerge)
+	}, kptfilev1.ResourceMerge)
 	if !assert.NoError(t, err) {
 		t.FailNow()
 	}
@@ -595,11 +595,11 @@ func TestCommand_Run_no_subdir_at_invalid_tag(t *testing.T) {
 	defer clean()
 
 	g := repos[testutil.Upstream]
-	err := createKptfile(rw, &kptfilev1alpha2.Git{
+	err := createKptfile(rw, &kptfilev1.Git{
 		Repo:      g.RepoDirectory,
 		Directory: dir,
 		Ref:       nonexistentTag,
-	}, kptfilev1alpha2.ResourceMerge)
+	}, kptfilev1.ResourceMerge)
 	if !assert.NoError(t, err) {
 		t.FailNow()
 	}
@@ -623,11 +623,11 @@ func TestCommand_Run_failInvalidRepo(t *testing.T) {
 	_, w, clean := setupWorkspace(t)
 	defer clean()
 
-	err := createKptfile(w, &kptfilev1alpha2.Git{
+	err := createKptfile(w, &kptfilev1.Git{
 		Repo:      "foo",
 		Directory: "/",
 		Ref:       "refs/heads/master",
-	}, kptfilev1alpha2.ResourceMerge)
+	}, kptfilev1.ResourceMerge)
 	if !assert.NoError(t, err) {
 		t.FailNow()
 	}
@@ -647,11 +647,11 @@ func TestCommand_Run_failInvalidBranch(t *testing.T) {
 	g, w, clean := setupWorkspace(t)
 	defer clean()
 
-	err := createKptfile(w, &kptfilev1alpha2.Git{
+	err := createKptfile(w, &kptfilev1.Git{
 		Repo:      g.RepoDirectory,
 		Directory: "/",
 		Ref:       "refs/heads/foo",
-	}, kptfilev1alpha2.ResourceMerge)
+	}, kptfilev1.ResourceMerge)
 	if !assert.NoError(t, err) {
 		t.FailNow()
 	}
@@ -674,11 +674,11 @@ func TestCommand_Run_failInvalidTag(t *testing.T) {
 	g, w, clean := setupWorkspace(t)
 	defer clean()
 
-	err := createKptfile(w, &kptfilev1alpha2.Git{
+	err := createKptfile(w, &kptfilev1.Git{
 		Repo:      g.RepoDirectory,
 		Directory: "/",
 		Ref:       "refs/tags/foo",
-	}, kptfilev1alpha2.FastForward)
+	}, kptfilev1.FastForward)
 	if !assert.NoError(t, err) {
 		t.FailNow()
 	}
diff --git a/internal/util/get/example_test.go b/internal/util/get/example_test.go
index 65c625b4..6d0669e3 100644
--- a/internal/util/get/example_test.go
+++ b/internal/util/get/example_test.go
@@ -19,11 +19,11 @@ import (
 
 	"github.com/GoogleContainerTools/kpt/internal/printer/fake"
 	"github.com/GoogleContainerTools/kpt/internal/util/get"
-	kptfilev1alpha2 "github.com/GoogleContainerTools/kpt/pkg/api/kptfile/v1alpha2"
+	kptfilev1 "github.com/GoogleContainerTools/kpt/pkg/api/kptfile/v1"
 )
 
 func ExampleCommand() {
-	err := get.Command{Git: &kptfilev1alpha2.Git{
+	err := get.Command{Git: &kptfilev1.Git{
 		Repo: "https://github.com/example-org/example-repo",
 		Ref:  "v1.0",
 	}}.Run(fake.CtxWithDefaultPrinter())
@@ -33,7 +33,7 @@ func ExampleCommand() {
 }
 
 func ExampleCommand_branch() {
-	err := get.Command{Git: &kptfilev1alpha2.Git{
+	err := get.Command{Git: &kptfilev1.Git{
 		Repo: "https://github.com/example-org/example-repo",
 		Ref:  "refs/heads/v1.0",
 	}}.Run(fake.CtxWithDefaultPrinter())
@@ -43,7 +43,7 @@ func ExampleCommand_branch() {
 }
 
 func ExampleCommand_tag() {
-	err := get.Command{Git: &kptfilev1alpha2.Git{
+	err := get.Command{Git: &kptfilev1.Git{
 		Repo: "https://github.com/example-org/example-repo",
 		Ref:  "refs/tags/v1.0",
 	}}.Run(fake.CtxWithDefaultPrinter())
@@ -53,7 +53,7 @@ func ExampleCommand_tag() {
 }
 
 func ExampleCommand_commit() {
-	err := get.Command{Git: &kptfilev1alpha2.Git{
+	err := get.Command{Git: &kptfilev1.Git{
 		Repo: "https://github.com/example-org/example-repo",
 		Ref:  "8186bef8e5c0621bf80fa8106bd595aae8b62884",
 	}}.Run(fake.CtxWithDefaultPrinter())
@@ -64,7 +64,7 @@ func ExampleCommand_commit() {
 
 func ExampleCommand_subdir() {
 	err := get.Command{
-		Git: &kptfilev1alpha2.Git{
+		Git: &kptfilev1.Git{
 			Repo:      "https://github.com/example-org/example-repo",
 			Ref:       "v1.0",
 			Directory: filepath.Join("path", "to", "package"),
@@ -77,7 +77,7 @@ func ExampleCommand_subdir() {
 
 func ExampleCommand_destination() {
 	err := get.Command{
-		Git: &kptfilev1alpha2.Git{
+		Git: &kptfilev1.Git{
 			Repo: "https://github.com/example-org/example-repo",
 			Ref:  "v1.0",
 		},
diff --git a/internal/util/get/get_test.go b/internal/util/get/get_test.go
index 958d4597..664c8fe2 100644
--- a/internal/util/get/get_test.go
+++ b/internal/util/get/get_test.go
@@ -23,7 +23,7 @@ import (
 	"github.com/GoogleContainerTools/kpt/internal/testutil"
 	"github.com/GoogleContainerTools/kpt/internal/testutil/pkgbuilder"
 	. "github.com/GoogleContainerTools/kpt/internal/util/get"
-	kptfilev1alpha2 "github.com/GoogleContainerTools/kpt/pkg/api/kptfile/v1alpha2"
+	kptfilev1 "github.com/GoogleContainerTools/kpt/pkg/api/kptfile/v1"
 	"github.com/stretchr/testify/assert"
 	"sigs.k8s.io/kustomize/kyaml/kio"
 	"sigs.k8s.io/kustomize/kyaml/kio/filters"
@@ -54,7 +54,7 @@ func TestCommand_Run_failNoRevision(t *testing.T) {
 	defer clean()
 
 	err := Command{
-		Git: &kptfilev1alpha2.Git{
+		Git: &kptfilev1.Git{
 			Repo: "foo",
 		},
 		Destination: w.WorkspaceDirectory,
@@ -79,7 +79,7 @@ func TestCommand_Run(t *testing.T) {
 	defer testutil.Chdir(t, w.WorkspaceDirectory)()
 
 	absPath := filepath.Join(w.WorkspaceDirectory, g.RepoName)
-	err := Command{Git: &kptfilev1alpha2.Git{
+	err := Command{Git: &kptfilev1.Git{
 		Repo:      "file://" + g.RepoDirectory,
 		Ref:       "master",
 		Directory: "/",
@@ -93,7 +93,7 @@ func TestCommand_Run(t *testing.T) {
 	// verify the KptFile contains the expected values
 	commit, err := g.GetCommit()
 	assert.NoError(t, err)
-	g.AssertKptfile(t, absPath, kptfilev1alpha2.KptFile{
+	g.AssertKptfile(t, absPath, kptfilev1.KptFile{
 		ResourceMeta: yaml.ResourceMeta{
 			ObjectMeta: yaml.ObjectMeta{
 				NameMeta: yaml.NameMeta{
@@ -101,26 +101,26 @@ func TestCommand_Run(t *testing.T) {
 				},
 			},
 			TypeMeta: yaml.TypeMeta{
-				APIVersion: kptfilev1alpha2.TypeMeta.APIVersion,
-				Kind:       kptfilev1alpha2.TypeMeta.Kind},
+				APIVersion: kptfilev1.TypeMeta.APIVersion,
+				Kind:       kptfilev1.TypeMeta.Kind},
 		},
-		UpstreamLock: &kptfilev1alpha2.UpstreamLock{
-			Type: kptfilev1alpha2.GitOrigin,
-			Git: &kptfilev1alpha2.GitLock{
+		UpstreamLock: &kptfilev1.UpstreamLock{
+			Type: kptfilev1.GitOrigin,
+			Git: &kptfilev1.GitLock{
 				Directory: "/",
 				Repo:      "file://" + g.RepoDirectory,
 				Ref:       "master",
 				Commit:    commit, // verify the commit matches the repo
 			},
 		},
-		Upstream: &kptfilev1alpha2.Upstream{
-			Type: kptfilev1alpha2.GitOrigin,
-			Git: &kptfilev1alpha2.Git{
+		Upstream: &kptfilev1.Upstream{
+			Type: kptfilev1.GitOrigin,
+			Git: &kptfilev1.Git{
 				Directory: "/",
 				Repo:      "file://" + g.RepoDirectory,
 				Ref:       "master",
 			},
-			UpdateStrategy: kptfilev1alpha2.ResourceMerge,
+			UpdateStrategy: kptfilev1.ResourceMerge,
 		},
 	})
 }
@@ -140,7 +140,7 @@ func TestCommand_Run_subdir(t *testing.T) {
 	defer testutil.Chdir(t, w.WorkspaceDirectory)()
 
 	absPath := filepath.Join(w.WorkspaceDirectory, subdir)
-	err := Command{Git: &kptfilev1alpha2.Git{
+	err := Command{Git: &kptfilev1.Git{
 		Repo: g.RepoDirectory, Ref: "refs/heads/master", Directory: subdir},
 		Destination: absPath,
 	}.Run(fake.CtxWithDefaultPrinter())
@@ -152,7 +152,7 @@ func TestCommand_Run_subdir(t *testing.T) {
 	// verify the KptFile contains the expected values
 	commit, err := g.GetCommit()
 	assert.NoError(t, err)
-	g.AssertKptfile(t, absPath, kptfilev1alpha2.KptFile{
+	g.AssertKptfile(t, absPath, kptfilev1.KptFile{
 		ResourceMeta: yaml.ResourceMeta{
 			ObjectMeta: yaml.ObjectMeta{
 				NameMeta: yaml.NameMeta{
@@ -160,26 +160,26 @@ func TestCommand_Run_subdir(t *testing.T) {
 				},
 			},
 			TypeMeta: yaml.TypeMeta{
-				APIVersion: kptfilev1alpha2.TypeMeta.APIVersion,
-				Kind:       kptfilev1alpha2.TypeMeta.Kind},
+				APIVersion: kptfilev1.TypeMeta.APIVersion,
+				Kind:       kptfilev1.TypeMeta.Kind},
 		},
-		UpstreamLock: &kptfilev1alpha2.UpstreamLock{
+		UpstreamLock: &kptfilev1.UpstreamLock{
 			Type: "git",
-			Git: &kptfilev1alpha2.GitLock{
+			Git: &kptfilev1.GitLock{
 				Commit:    commit,
 				Directory: subdir,
 				Ref:       "refs/heads/master",
 				Repo:      g.RepoDirectory,
 			},
 		},
-		Upstream: &kptfilev1alpha2.Upstream{
+		Upstream: &kptfilev1.Upstream{
 			Type: "git",
-			Git: &kptfilev1alpha2.Git{
+			Git: &kptfilev1.Git{
 				Directory: subdir,
 				Ref:       "refs/heads/master",
 				Repo:      g.RepoDirectory,
 			},
-			UpdateStrategy: kptfilev1alpha2.ResourceMerge,
+			UpdateStrategy: kptfilev1.ResourceMerge,
 		},
 	})
 }
@@ -198,7 +198,7 @@ func TestCommand_Run_destination(t *testing.T) {
 
 	absPath := filepath.Join(w.WorkspaceDirectory, dest)
 	err := Command{
-		Git: &kptfilev1alpha2.Git{
+		Git: &kptfilev1.Git{
 			Repo:      g.RepoDirectory,
 			Ref:       "master",
 			Directory: "/",
@@ -213,7 +213,7 @@ func TestCommand_Run_destination(t *testing.T) {
 	// verify the KptFile contains the expected values
 	commit, err := g.GetCommit()
 	assert.NoError(t, err)
-	g.AssertKptfile(t, absPath, kptfilev1alpha2.KptFile{
+	g.AssertKptfile(t, absPath, kptfilev1.KptFile{
 		ResourceMeta: yaml.ResourceMeta{
 			ObjectMeta: yaml.ObjectMeta{
 				NameMeta: yaml.NameMeta{
@@ -221,26 +221,26 @@ func TestCommand_Run_destination(t *testing.T) {
 				},
 			},
 			TypeMeta: yaml.TypeMeta{
-				APIVersion: kptfilev1alpha2.TypeMeta.APIVersion,
-				Kind:       kptfilev1alpha2.TypeMeta.Kind},
+				APIVersion: kptfilev1.TypeMeta.APIVersion,
+				Kind:       kptfilev1.TypeMeta.Kind},
 		},
-		UpstreamLock: &kptfilev1alpha2.UpstreamLock{
-			Type: kptfilev1alpha2.GitOrigin,
-			Git: &kptfilev1alpha2.GitLock{
+		UpstreamLock: &kptfilev1.UpstreamLock{
+			Type: kptfilev1.GitOrigin,
+			Git: &kptfilev1.GitLock{
 				Directory: "/",
 				Repo:      g.RepoDirectory,
 				Ref:       "master",
 				Commit:    commit,
 			},
 		},
-		Upstream: &kptfilev1alpha2.Upstream{
-			Type: kptfilev1alpha2.GitOrigin,
-			Git: &kptfilev1alpha2.Git{
+		Upstream: &kptfilev1.Upstream{
+			Type: kptfilev1.GitOrigin,
+			Git: &kptfilev1.Git{
 				Directory: "/",
 				Repo:      g.RepoDirectory,
 				Ref:       "master",
 			},
-			UpdateStrategy: kptfilev1alpha2.ResourceMerge,
+			UpdateStrategy: kptfilev1.ResourceMerge,
 		},
 	})
 }
@@ -262,7 +262,7 @@ func TestCommand_Run_subdirAndDestination(t *testing.T) {
 
 	absPath := filepath.Join(w.WorkspaceDirectory, dest)
 	err := Command{
-		Git: &kptfilev1alpha2.Git{
+		Git: &kptfilev1.Git{
 			Repo:      g.RepoDirectory,
 			Ref:       "master",
 			Directory: subdir,
@@ -277,7 +277,7 @@ func TestCommand_Run_subdirAndDestination(t *testing.T) {
 	// verify the KptFile contains the expected values
 	commit, err := g.GetCommit()
 	assert.NoError(t, err)
-	g.AssertKptfile(t, absPath, kptfilev1alpha2.KptFile{
+	g.AssertKptfile(t, absPath, kptfilev1.KptFile{
 		ResourceMeta: yaml.ResourceMeta{
 			ObjectMeta: yaml.ObjectMeta{
 				NameMeta: yaml.NameMeta{
@@ -285,26 +285,26 @@ func TestCommand_Run_subdirAndDestination(t *testing.T) {
 				},
 			},
 			TypeMeta: yaml.TypeMeta{
-				APIVersion: kptfilev1alpha2.TypeMeta.APIVersion,
-				Kind:       kptfilev1alpha2.TypeMeta.Kind},
+				APIVersion: kptfilev1.TypeMeta.APIVersion,
+				Kind:       kptfilev1.TypeMeta.Kind},
 		},
-		UpstreamLock: &kptfilev1alpha2.UpstreamLock{
-			Type: kptfilev1alpha2.GitOrigin,
-			Git: &kptfilev1alpha2.GitLock{
+		UpstreamLock: &kptfilev1.UpstreamLock{
+			Type: kptfilev1.GitOrigin,
+			Git: &kptfilev1.GitLock{
 				Commit:    commit,
 				Directory: subdir,
 				Ref:       "master",
 				Repo:      g.RepoDirectory,
 			},
 		},
-		Upstream: &kptfilev1alpha2.Upstream{
-			Type: kptfilev1alpha2.GitOrigin,
-			Git: &kptfilev1alpha2.Git{
+		Upstream: &kptfilev1.Upstream{
+			Type: kptfilev1.GitOrigin,
+			Git: &kptfilev1.Git{
 				Directory: subdir,
 				Ref:       "master",
 				Repo:      g.RepoDirectory,
 			},
-			UpdateStrategy: kptfilev1alpha2.ResourceMerge,
+			UpdateStrategy: kptfilev1.ResourceMerge,
 		},
 	})
 }
@@ -342,7 +342,7 @@ func TestCommand_Run_branch(t *testing.T) {
 
 	absPath := filepath.Join(w.WorkspaceDirectory, g.RepoName)
 	err = Command{
-		Git: &kptfilev1alpha2.Git{
+		Git: &kptfilev1.Git{
 			Repo:      g.RepoDirectory,
 			Ref:       "refs/heads/exp",
 			Directory: "/",
@@ -355,7 +355,7 @@ func TestCommand_Run_branch(t *testing.T) {
 	g.AssertEqual(t, filepath.Join(g.DatasetDirectory, testutil.Dataset2), absPath, true)
 
 	// verify the KptFile contains the expected values
-	g.AssertKptfile(t, absPath, kptfilev1alpha2.KptFile{
+	g.AssertKptfile(t, absPath, kptfilev1.KptFile{
 		ResourceMeta: yaml.ResourceMeta{
 			ObjectMeta: yaml.ObjectMeta{
 				NameMeta: yaml.NameMeta{
@@ -363,26 +363,26 @@ func TestCommand_Run_branch(t *testing.T) {
 				},
 			},
 			TypeMeta: yaml.TypeMeta{
-				APIVersion: kptfilev1alpha2.TypeMeta.APIVersion,
-				Kind:       kptfilev1alpha2.TypeMeta.Kind},
+				APIVersion: kptfilev1.TypeMeta.APIVersion,
+				Kind:       kptfilev1.TypeMeta.Kind},
 		},
-		UpstreamLock: &kptfilev1alpha2.UpstreamLock{
-			Type: kptfilev1alpha2.GitOrigin,
-			Git: &kptfilev1alpha2.GitLock{
+		UpstreamLock: &kptfilev1.UpstreamLock{
+			Type: kptfilev1.GitOrigin,
+			Git: &kptfilev1.GitLock{
 				Directory: "/",
 				Repo:      g.RepoDirectory,
 				Ref:       "refs/heads/exp",
 				Commit:    commit,
 			},
 		},
-		Upstream: &kptfilev1alpha2.Upstream{
-			Type: kptfilev1alpha2.GitOrigin,
-			Git: &kptfilev1alpha2.Git{
+		Upstream: &kptfilev1.Upstream{
+			Type: kptfilev1.GitOrigin,
+			Git: &kptfilev1.Git{
 				Directory: "/",
 				Repo:      g.RepoDirectory,
 				Ref:       "refs/heads/exp",
 			},
-			UpdateStrategy: kptfilev1alpha2.ResourceMerge,
+			UpdateStrategy: kptfilev1.ResourceMerge,
 		},
 	})
 }
@@ -425,7 +425,7 @@ func TestCommand_Run_tag(t *testing.T) {
 
 	absPath := filepath.Join(w.WorkspaceDirectory, g.RepoName)
 	err = Command{
-		Git: &kptfilev1alpha2.Git{
+		Git: &kptfilev1.Git{
 			Repo:      g.RepoDirectory,
 			Ref:       "refs/tags/v2",
 			Directory: "/",
@@ -438,7 +438,7 @@ func TestCommand_Run_tag(t *testing.T) {
 	g.AssertEqual(t, filepath.Join(g.DatasetDirectory, testutil.Dataset2), absPath, true)
 
 	// verify the KptFile contains the expected values
-	g.AssertKptfile(t, absPath, kptfilev1alpha2.KptFile{
+	g.AssertKptfile(t, absPath, kptfilev1.KptFile{
 		ResourceMeta: yaml.ResourceMeta{
 			ObjectMeta: yaml.ObjectMeta{
 				NameMeta: yaml.NameMeta{
@@ -446,26 +446,26 @@ func TestCommand_Run_tag(t *testing.T) {
 				},
 			},
 			TypeMeta: yaml.TypeMeta{
-				APIVersion: kptfilev1alpha2.TypeMeta.APIVersion,
-				Kind:       kptfilev1alpha2.TypeMeta.Kind},
+				APIVersion: kptfilev1.TypeMeta.APIVersion,
+				Kind:       kptfilev1.TypeMeta.Kind},
 		},
-		UpstreamLock: &kptfilev1alpha2.UpstreamLock{
-			Type: kptfilev1alpha2.GitOrigin,
-			Git: &kptfilev1alpha2.GitLock{
+		UpstreamLock: &kptfilev1.UpstreamLock{
+			Type: kptfilev1.GitOrigin,
+			Git: &kptfilev1.GitLock{
 				Directory: "/",
 				Repo:      g.RepoDirectory,
 				Ref:       "refs/tags/v2",
 				Commit:    commit,
 			},
 		},
-		Upstream: &kptfilev1alpha2.Upstream{
-			Type: kptfilev1alpha2.GitOrigin,
-			Git: &kptfilev1alpha2.Git{
+		Upstream: &kptfilev1.Upstream{
+			Type: kptfilev1.GitOrigin,
+			Git: &kptfilev1.Git{
 				Directory: "/",
 				Repo:      g.RepoDirectory,
 				Ref:       "refs/tags/v2",
 			},
-			UpdateStrategy: kptfilev1alpha2.ResourceMerge,
+			UpdateStrategy: kptfilev1.ResourceMerge,
 		},
 	})
 }
@@ -566,7 +566,7 @@ func TestCommand_Run_ref(t *testing.T) {
 
 			absPath := filepath.Join(w.WorkspaceDirectory, repos[testutil.Upstream].RepoName)
 			err = Command{
-				Git: &kptfilev1alpha2.Git{
+				Git: &kptfilev1.Git{
 					Repo:      repos[testutil.Upstream].RepoDirectory,
 					Ref:       ref,
 					Directory: tc.directory,
@@ -595,7 +595,7 @@ func TestCommand_Run_failExistingDir(t *testing.T) {
 
 	absPath := filepath.Join(w.WorkspaceDirectory, g.RepoName)
 	err := Command{
-		Git: &kptfilev1alpha2.Git{
+		Git: &kptfilev1.Git{
 			Repo:      g.RepoDirectory,
 			Ref:       "master",
 			Directory: "/",
@@ -610,7 +610,7 @@ func TestCommand_Run_failExistingDir(t *testing.T) {
 
 	// verify the cloned contents matches the repository
 	g.AssertEqual(t, filepath.Join(g.DatasetDirectory, testutil.Dataset1), absPath, true)
-	g.AssertKptfile(t, absPath, kptfilev1alpha2.KptFile{
+	g.AssertKptfile(t, absPath, kptfilev1.KptFile{
 		ResourceMeta: yaml.ResourceMeta{
 			ObjectMeta: yaml.ObjectMeta{
 				NameMeta: yaml.NameMeta{
@@ -618,26 +618,26 @@ func TestCommand_Run_failExistingDir(t *testing.T) {
 				},
 			},
 			TypeMeta: yaml.TypeMeta{
-				APIVersion: kptfilev1alpha2.TypeMeta.APIVersion,
-				Kind:       kptfilev1alpha2.TypeMeta.Kind},
+				APIVersion: kptfilev1.TypeMeta.APIVersion,
+				Kind:       kptfilev1.TypeMeta.Kind},
 		},
-		UpstreamLock: &kptfilev1alpha2.UpstreamLock{
-			Type: kptfilev1alpha2.GitOrigin,
-			Git: &kptfilev1alpha2.GitLock{
+		UpstreamLock: &kptfilev1.UpstreamLock{
+			Type: kptfilev1.GitOrigin,
+			Git: &kptfilev1.GitLock{
 				Directory: "/",
 				Repo:      g.RepoDirectory,
 				Ref:       "master",
 				Commit:    commit, // verify the commit matches the repo
 			},
 		},
-		Upstream: &kptfilev1alpha2.Upstream{
-			Type: kptfilev1alpha2.GitOrigin,
-			Git: &kptfilev1alpha2.Git{
+		Upstream: &kptfilev1.Upstream{
+			Type: kptfilev1.GitOrigin,
+			Git: &kptfilev1.Git{
 				Directory: "/",
 				Repo:      g.RepoDirectory,
 				Ref:       "master",
 			},
-			UpdateStrategy: kptfilev1alpha2.ResourceMerge,
+			UpdateStrategy: kptfilev1.ResourceMerge,
 		},
 	})
 
@@ -649,7 +649,7 @@ func TestCommand_Run_failExistingDir(t *testing.T) {
 
 	// try to clone and expect a failure
 	err = Command{
-		Git: &kptfilev1alpha2.Git{
+		Git: &kptfilev1.Git{
 			Repo:      g.RepoDirectory,
 			Ref:       "master",
 			Directory: "/",
@@ -663,7 +663,7 @@ func TestCommand_Run_failExistingDir(t *testing.T) {
 
 	// verify files are unchanged
 	g.AssertEqual(t, filepath.Join(g.DatasetDirectory, testutil.Dataset1), absPath, true)
-	g.AssertKptfile(t, absPath, kptfilev1alpha2.KptFile{
+	g.AssertKptfile(t, absPath, kptfilev1.KptFile{
 		ResourceMeta: yaml.ResourceMeta{
 			ObjectMeta: yaml.ObjectMeta{
 				NameMeta: yaml.NameMeta{
@@ -671,26 +671,26 @@ func TestCommand_Run_failExistingDir(t *testing.T) {
 				},
 			},
 			TypeMeta: yaml.TypeMeta{
-				APIVersion: kptfilev1alpha2.TypeMeta.APIVersion,
-				Kind:       kptfilev1alpha2.TypeMeta.Kind},
+				APIVersion: kptfilev1.TypeMeta.APIVersion,
+				Kind:       kptfilev1.TypeMeta.Kind},
 		},
-		UpstreamLock: &kptfilev1alpha2.UpstreamLock{
-			Type: kptfilev1alpha2.GitOrigin,
-			Git: &kptfilev1alpha2.GitLock{
+		UpstreamLock: &kptfilev1.UpstreamLock{
+			Type: kptfilev1.GitOrigin,
+			Git: &kptfilev1.GitLock{
 				Directory: "/",
 				Repo:      g.RepoDirectory,
 				Ref:       "master",
 				Commit:    commit, // verify the commit matches the repo
 			},
 		},
-		Upstream: &kptfilev1alpha2.Upstream{
-			Type: kptfilev1alpha2.GitOrigin,
-			Git: &kptfilev1alpha2.Git{
+		Upstream: &kptfilev1.Upstream{
+			Type: kptfilev1.GitOrigin,
+			Git: &kptfilev1.Git{
 				Directory: "/",
 				Repo:      g.RepoDirectory,
 				Ref:       "master",
 			},
-			UpdateStrategy: kptfilev1alpha2.ResourceMerge,
+			UpdateStrategy: kptfilev1.ResourceMerge,
 		},
 	})
 }
@@ -706,7 +706,7 @@ func TestCommand_Run_nonexistingParentDir(t *testing.T) {
 
 	absPath := filepath.Join(w.WorkspaceDirectory, "more", "dirs", g.RepoName)
 	err := Command{
-		Git: &kptfilev1alpha2.Git{
+		Git: &kptfilev1.Git{
 			Repo:      g.RepoDirectory,
 			Ref:       "master",
 			Directory: "/",
@@ -726,7 +726,7 @@ func TestCommand_Run_failInvalidRepo(t *testing.T) {
 
 	absPath := filepath.Join(w.WorkspaceDirectory, "foo")
 	err := Command{
-		Git: &kptfilev1alpha2.Git{
+		Git: &kptfilev1.Git{
 			Repo:      "foo",
 			Directory: "/",
 			Ref:       "refs/heads/master",
@@ -750,7 +750,7 @@ func TestCommand_Run_failInvalidBranch(t *testing.T) {
 
 	absPath := filepath.Join(w.WorkspaceDirectory, g.RepoDirectory)
 	err := Command{
-		Git: &kptfilev1alpha2.Git{
+		Git: &kptfilev1.Git{
 			Repo:      g.RepoDirectory,
 			Directory: "/",
 			Ref:       "refs/heads/foo",
@@ -776,7 +776,7 @@ func TestCommand_Run_failInvalidTag(t *testing.T) {
 	defer clean()
 
 	err := Command{
-		Git: &kptfilev1alpha2.Git{
+		Git: &kptfilev1.Git{
 			Repo:      g.RepoDirectory,
 			Directory: "/",
 			Ref:       "refs/tags/foo",
@@ -798,7 +798,7 @@ func TestCommand_Run_subpackages(t *testing.T) {
 	testCases := map[string]struct {
 		directory      string
 		ref            string
-		updateStrategy kptfilev1alpha2.UpdateStrategyType
+		updateStrategy kptfilev1.UpdateStrategyType
 		reposContent   map[string][]testutil.Content
 		expectedResult *pkgbuilder.RootPkg
 		expectedErrMsg string
@@ -898,7 +898,7 @@ func TestCommand_Run_subpackages(t *testing.T) {
 		"basic package with explicit update strategy": {
 			directory:      "/",
 			ref:            "master",
-			updateStrategy: kptfilev1alpha2.FastForward,
+			updateStrategy: kptfilev1.FastForward,
 			reposContent: map[string][]testutil.Content{
 				testutil.Upstream: {
 					{
@@ -1295,7 +1295,7 @@ func TestCommand_Run_subpackages(t *testing.T) {
 			destinationDir := filepath.Join(w.WorkspaceDirectory, targetDir)
 
 			err = Command{
-				Git: &kptfilev1alpha2.Git{
+				Git: &kptfilev1.Git{
 					Repo:      upstreamRepo.RepoDirectory,
 					Directory: tc.directory,
 					Ref:       tc.ref,
@@ -1321,7 +1321,7 @@ func TestCommand_Run_subpackages(t *testing.T) {
 			rw := &kio.LocalPackageReadWriter{
 				NoDeleteFiles:  true,
 				PackagePath:    w.FullPackagePath(),
-				MatchFilesGlob: []string{kptfilev1alpha2.KptFileName},
+				MatchFilesGlob: []string{kptfilev1.KptFileName},
 			}
 			err = kio.Pipeline{
 				Inputs:  []kio.Reader{rw},
@@ -1364,7 +1364,7 @@ func TestCommand_Run_symlinks(t *testing.T) {
 
 	destinationDir := filepath.Join(w.WorkspaceDirectory, upstreamRepo.RepoName)
 	err := Command{
-		Git: &kptfilev1alpha2.Git{
+		Git: &kptfilev1.Git{
 			Repo:      upstreamRepo.RepoDirectory,
 			Directory: "/",
 			Ref:       "master",
diff --git a/internal/util/man/man_test.go b/internal/util/man/man_test.go
index 11888551..8a62dc2d 100644
--- a/internal/util/man/man_test.go
+++ b/internal/util/man/man_test.go
@@ -23,7 +23,7 @@ import (
 	"testing"
 
 	. "github.com/GoogleContainerTools/kpt/internal/util/man"
-	kptfilev1alpha2 "github.com/GoogleContainerTools/kpt/pkg/api/kptfile/v1alpha2"
+	kptfilev1 "github.com/GoogleContainerTools/kpt/pkg/api/kptfile/v1"
 	"github.com/stretchr/testify/assert"
 )
 
@@ -34,8 +34,8 @@ func TestMan_Execute(t *testing.T) {
 	assert.NoError(t, err)
 
 	// write the KptFile
-	err = ioutil.WriteFile(filepath.Join(d, kptfilev1alpha2.KptFileName), []byte(`
-apiVersion: kpt.dev/v1alpha2
+	err = ioutil.WriteFile(filepath.Join(d, kptfilev1.KptFileName), []byte(`
+apiVersion: kpt.dev/v1
 kind: Kptfile
 metadata:
   name: java
@@ -196,8 +196,8 @@ func TestMan_Execute_failNoManPage(t *testing.T) {
 	}
 
 	// write the KptFile
-	err = ioutil.WriteFile(filepath.Join(d, kptfilev1alpha2.KptFileName), []byte(`
-apiVersion: kpt.dev/v1alpha2
+	err = ioutil.WriteFile(filepath.Join(d, kptfilev1.KptFileName), []byte(`
+apiVersion: kpt.dev/v1
 kind: Kptfile
 metadata:
   name: java
@@ -229,8 +229,8 @@ func TestMan_Execute_failBadPath(t *testing.T) {
 	assert.NoError(t, err)
 
 	// write the KptFile
-	err = ioutil.WriteFile(filepath.Join(d, kptfilev1alpha2.KptFileName), []byte(`
-apiVersion: kpt.dev/v1alpha2
+	err = ioutil.WriteFile(filepath.Join(d, kptfilev1.KptFileName), []byte(`
+apiVersion: kpt.dev/v1
 kind: Kptfile
 metadata:
   name: java
@@ -258,8 +258,8 @@ func TestMan_Execute_failLocation(t *testing.T) {
 	assert.NoError(t, err)
 
 	// write the KptFile
-	err = ioutil.WriteFile(filepath.Join(d, kptfilev1alpha2.KptFileName), []byte(`
-apiVersion: kpt.dev/v1alpha2
+	err = ioutil.WriteFile(filepath.Join(d, kptfilev1.KptFileName), []byte(`
+apiVersion: kpt.dev/v1
 kind: Kptfile
 metadata:
   name: java
diff --git a/internal/util/pkgutil/pkgutil_test.go b/internal/util/pkgutil/pkgutil_test.go
index 868cf327..8373c2b3 100644
--- a/internal/util/pkgutil/pkgutil_test.go
+++ b/internal/util/pkgutil/pkgutil_test.go
@@ -25,7 +25,7 @@ import (
 	"github.com/GoogleContainerTools/kpt/internal/testutil"
 	"github.com/GoogleContainerTools/kpt/internal/testutil/pkgbuilder"
 	"github.com/GoogleContainerTools/kpt/internal/util/pkgutil"
-	kptfilev1alpha2 "github.com/GoogleContainerTools/kpt/pkg/api/kptfile/v1alpha2"
+	kptfilev1 "github.com/GoogleContainerTools/kpt/pkg/api/kptfile/v1"
 	"github.com/stretchr/testify/assert"
 )
 
@@ -411,7 +411,7 @@ func TestFindLocalRecursiveSubpackagesForPaths(t *testing.T) {
 							WithKptfile(
 								pkgbuilder.NewKptfile().
 									WithUpstream("github.com/GoogleContainerTools/kpt",
-										"/", "main", string(kptfilev1alpha2.ResourceMerge)),
+										"/", "main", string(kptfilev1.ResourceMerge)),
 							).
 							WithResource(pkgbuilder.ConfigMapResource),
 					),
@@ -449,7 +449,7 @@ func TestFindLocalRecursiveSubpackagesForPaths(t *testing.T) {
 							WithKptfile(
 								pkgbuilder.NewKptfile().
 									WithUpstream("github.com/GoogleContainerTools/kpt",
-										"/", "main", string(kptfilev1alpha2.ResourceMerge)),
+										"/", "main", string(kptfilev1.ResourceMerge)),
 							).
 							WithResource(pkgbuilder.ConfigMapResource).
 							WithSubPackages(
@@ -459,7 +459,7 @@ func TestFindLocalRecursiveSubpackagesForPaths(t *testing.T) {
 											WithKptfile(
 												pkgbuilder.NewKptfile().
 													WithUpstream("github.com/GoogleContainerTools/kpt",
-														"/", "main", string(kptfilev1alpha2.ResourceMerge)),
+														"/", "main", string(kptfilev1.ResourceMerge)),
 											).
 											WithResource(pkgbuilder.ConfigMapResource),
 									),
@@ -522,7 +522,7 @@ func TestFindLocalRecursiveSubpackagesForPaths(t *testing.T) {
 							WithKptfile(
 								pkgbuilder.NewKptfile().
 									WithUpstream("github.com/GoogleContainerTools/kpt",
-										"/", "main", string(kptfilev1alpha2.ResourceMerge)),
+										"/", "main", string(kptfilev1.ResourceMerge)),
 							),
 					),
 			},
diff --git a/internal/util/update/update_test.go b/internal/util/update/update_test.go
index a56e20eb..e76bb52d 100644
--- a/internal/util/update/update_test.go
+++ b/internal/util/update/update_test.go
@@ -28,7 +28,7 @@ import (
 	"github.com/GoogleContainerTools/kpt/internal/testutil"
 	"github.com/GoogleContainerTools/kpt/internal/testutil/pkgbuilder"
 	. "github.com/GoogleContainerTools/kpt/internal/util/update"
-	kptfilev1alpha2 "github.com/GoogleContainerTools/kpt/pkg/api/kptfile/v1alpha2"
+	kptfilev1 "github.com/GoogleContainerTools/kpt/pkg/api/kptfile/v1"
 	"github.com/GoogleContainerTools/kpt/pkg/kptfile/kptfileutil"
 	"github.com/stretchr/testify/assert"
 	"sigs.k8s.io/kustomize/kyaml/copyutil"
@@ -51,8 +51,8 @@ func TestMain(m *testing.M) {
 // - Modify upstream with new content
 // - Update the local package to fetch the upstream content
 func TestCommand_Run_noRefChanges(t *testing.T) {
-	for i := range kptfilev1alpha2.UpdateStrategies {
-		strategy := kptfilev1alpha2.UpdateStrategies[i]
+	for i := range kptfilev1.UpdateStrategies {
+		strategy := kptfilev1.UpdateStrategies[i]
 		t.Run(string(strategy), func(t *testing.T) {
 			// Setup the test upstream and local packages
 			g := &testutil.TestSetupManager{
@@ -100,8 +100,8 @@ func TestCommand_Run_noRefChanges(t *testing.T) {
 }
 
 func TestCommand_Run_subDir(t *testing.T) {
-	for i := range kptfilev1alpha2.UpdateStrategies {
-		strategy := kptfilev1alpha2.UpdateStrategies[i]
+	for i := range kptfilev1.UpdateStrategies {
+		strategy := kptfilev1.UpdateStrategies[i]
 		t.Run(string(strategy), func(t *testing.T) {
 			// Setup the test upstream and local packages
 			g := &testutil.TestSetupManager{
@@ -153,13 +153,13 @@ func TestCommand_Run_subDir(t *testing.T) {
 
 func TestCommand_Run_noChanges(t *testing.T) {
 	updates := []struct {
-		updater kptfilev1alpha2.UpdateStrategyType
+		updater kptfilev1.UpdateStrategyType
 		err     string
 	}{
-		{kptfilev1alpha2.FastForward, ""},
-		{kptfilev1alpha2.ForceDeleteReplace, ""},
+		{kptfilev1.FastForward, ""},
+		{kptfilev1.ForceDeleteReplace, ""},
 		// {AlphaGitPatch, "no updates"},
-		{kptfilev1alpha2.ResourceMerge, ""},
+		{kptfilev1.ResourceMerge, ""},
 	}
 	for i := range updates {
 		u := updates[i]
@@ -212,8 +212,8 @@ func TestCommand_Run_noChanges(t *testing.T) {
 }
 
 func TestCommand_Run_noCommit(t *testing.T) {
-	for i := range kptfilev1alpha2.UpdateStrategies {
-		strategy := kptfilev1alpha2.UpdateStrategies[i]
+	for i := range kptfilev1.UpdateStrategies {
+		strategy := kptfilev1.UpdateStrategies[i]
 		t.Run(string(strategy), func(t *testing.T) {
 			// Setup the test upstream and local packages
 			g := &testutil.TestSetupManager{
@@ -259,8 +259,8 @@ func TestCommand_Run_noCommit(t *testing.T) {
 }
 
 func TestCommand_Run_noAdd(t *testing.T) {
-	for i := range kptfilev1alpha2.UpdateStrategies {
-		strategy := kptfilev1alpha2.UpdateStrategies[i]
+	for i := range kptfilev1.UpdateStrategies {
+		strategy := kptfilev1.UpdateStrategies[i]
 		t.Run(string(strategy), func(t *testing.T) {
 			// Setup the test upstream and local packages
 			g := &testutil.TestSetupManager{
@@ -309,18 +309,18 @@ func TestCommand_Run_noGitRepo(t *testing.T) {
 	defer os.RemoveAll(d)
 
 	kf := kptfileutil.DefaultKptfile(filepath.Base(d))
-	kf.Upstream = &kptfilev1alpha2.Upstream{
-		Type: kptfilev1alpha2.GitOrigin,
-		Git: &kptfilev1alpha2.Git{
+	kf.Upstream = &kptfilev1.Upstream{
+		Type: kptfilev1.GitOrigin,
+		Git: &kptfilev1.Git{
 			Repo:      "https://github.com/GoogleContainerTools/kpt",
 			Directory: "/",
 			Ref:       "main",
 		},
-		UpdateStrategy: kptfilev1alpha2.ResourceMerge,
+		UpdateStrategy: kptfilev1.ResourceMerge,
 	}
-	kf.UpstreamLock = &kptfilev1alpha2.UpstreamLock{
-		Type: kptfilev1alpha2.GitOrigin,
-		Git: &kptfilev1alpha2.GitLock{
+	kf.UpstreamLock = &kptfilev1.UpstreamLock{
+		Type: kptfilev1.GitOrigin,
+		Git: &kptfilev1.GitLock{
 			Repo:      "https://github.com/GoogleContainerTools/kpt",
 			Directory: "/",
 			Ref:       "main",
@@ -339,7 +339,7 @@ func TestCommand_Run_noGitRepo(t *testing.T) {
 
 func TestCommand_Run_localPackageChanges(t *testing.T) {
 	testCases := map[string]struct {
-		strategy        kptfilev1alpha2.UpdateStrategyType
+		strategy        kptfilev1.UpdateStrategyType
 		initialUpstream testutil.Content
 		updatedUpstream testutil.Content
 		updatedLocal    testutil.Content
@@ -348,7 +348,7 @@ func TestCommand_Run_localPackageChanges(t *testing.T) {
 		expectedCommit  func(writer *testutil.TestSetupManager) (string, error)
 	}{
 		"update using resource-merge strategy with local changes": {
-			strategy: kptfilev1alpha2.ResourceMerge,
+			strategy: kptfilev1.ResourceMerge,
 			initialUpstream: testutil.Content{
 				Data:   testutil.Dataset1,
 				Branch: masterBranch,
@@ -367,7 +367,7 @@ func TestCommand_Run_localPackageChanges(t *testing.T) {
 			},
 		},
 		"update using fast-forward strategy with local changes": {
-			strategy: kptfilev1alpha2.FastForward,
+			strategy: kptfilev1.FastForward,
 			initialUpstream: testutil.Content{
 				Data:   testutil.Dataset1,
 				Branch: masterBranch,
@@ -392,7 +392,7 @@ func TestCommand_Run_localPackageChanges(t *testing.T) {
 			},
 		},
 		"update using force-delete-replace strategy with local changes": {
-			strategy: kptfilev1alpha2.ForceDeleteReplace,
+			strategy: kptfilev1.ForceDeleteReplace,
 			initialUpstream: testutil.Content{
 				Data:   testutil.Dataset1,
 				Branch: masterBranch,
@@ -411,7 +411,7 @@ func TestCommand_Run_localPackageChanges(t *testing.T) {
 			},
 		},
 		"conflicting field with resource-merge strategy": {
-			strategy: kptfilev1alpha2.ResourceMerge,
+			strategy: kptfilev1.ResourceMerge,
 			initialUpstream: testutil.Content{
 				Pkg: pkgbuilder.NewRootPkg().
 					WithResource(pkgbuilder.DeploymentResource),
@@ -437,7 +437,7 @@ func TestCommand_Run_localPackageChanges(t *testing.T) {
 			},
 		},
 		"conflicting field with force-delete-replace strategy": {
-			strategy: kptfilev1alpha2.ForceDeleteReplace,
+			strategy: kptfilev1.ForceDeleteReplace,
 			initialUpstream: testutil.Content{
 				Pkg: pkgbuilder.NewRootPkg().
 					WithResource(pkgbuilder.DeploymentResource),
@@ -531,8 +531,8 @@ func TestCommand_Run_localPackageChanges(t *testing.T) {
 // TestCommand_Run_toBranchRef verifies the package contents are set to the contents of the branch
 // it was updated to.
 func TestCommand_Run_toBranchRef(t *testing.T) {
-	for i := range kptfilev1alpha2.UpdateStrategies {
-		strategy := kptfilev1alpha2.UpdateStrategies[i]
+	for i := range kptfilev1.UpdateStrategies {
+		strategy := kptfilev1.UpdateStrategies[i]
 		t.Run(string(strategy), func(t *testing.T) {
 			// Setup the test upstream and local packages
 			g := &testutil.TestSetupManager{
@@ -592,8 +592,8 @@ func TestCommand_Run_toBranchRef(t *testing.T) {
 // TestCommand_Run_toTagRef verifies the package contents are set to the contents of the tag
 // it was updated to.
 func TestCommand_Run_toTagRef(t *testing.T) {
-	for i := range kptfilev1alpha2.UpdateStrategies {
-		strategy := kptfilev1alpha2.UpdateStrategies[i]
+	for i := range kptfilev1.UpdateStrategies {
+		strategy := kptfilev1.UpdateStrategies[i]
 		t.Run(string(strategy), func(t *testing.T) {
 			// Setup the test upstream and local packages
 			g := &testutil.TestSetupManager{
@@ -651,7 +651,7 @@ func TestCommand_Run_toTagRef(t *testing.T) {
 
 // TestCommand_ResourceMerge_NonKRMUpdates tests if the local non KRM files are updated
 func TestCommand_ResourceMerge_NonKRMUpdates(t *testing.T) {
-	strategies := []kptfilev1alpha2.UpdateStrategyType{kptfilev1alpha2.ResourceMerge}
+	strategies := []kptfilev1.UpdateStrategyType{kptfilev1.ResourceMerge}
 	for i := range strategies {
 		strategy := strategies[i]
 		t.Run(string(strategy), func(t *testing.T) {
@@ -731,8 +731,8 @@ func TestCommand_Run_noUpstreamReference(t *testing.T) {
 
 // TestCommand_Run_failInvalidPath verifies Run fails if the path is invalid
 func TestCommand_Run_failInvalidPath(t *testing.T) {
-	for i := range kptfilev1alpha2.UpdateStrategies {
-		strategy := kptfilev1alpha2.UpdateStrategies[i]
+	for i := range kptfilev1.UpdateStrategies {
+		strategy := kptfilev1.UpdateStrategies[i]
 		t.Run(string(strategy), func(t *testing.T) {
 			path := filepath.Join("fake", "path")
 			err := Command{
@@ -813,8 +813,8 @@ func TestCommand_Run_badUpstreamLock(t *testing.T) {
 
 // TestCommand_Run_failInvalidRef verifies Run fails if the ref is invalid
 func TestCommand_Run_failInvalidRef(t *testing.T) {
-	for i := range kptfilev1alpha2.UpdateStrategies {
-		strategy := kptfilev1alpha2.UpdateStrategies[i]
+	for i := range kptfilev1.UpdateStrategies {
+		strategy := kptfilev1.UpdateStrategies[i]
 		t.Run(string(strategy), func(t *testing.T) {
 			g := &testutil.TestSetupManager{
 				T: t,
@@ -972,7 +972,7 @@ func TestCommand_Run_symlinks(t *testing.T) {
 }
 
 func TestCommand_Run_badStrategy(t *testing.T) {
-	strategy := kptfilev1alpha2.UpdateStrategyType("foo")
+	strategy := kptfilev1.UpdateStrategyType("foo")
 
 	// Setup the test upstream and local packages
 	g := &testutil.TestSetupManager{
@@ -1043,10 +1043,10 @@ func TestCommand_Run_local_subpackages(t *testing.T) {
 			},
 			expectedResults: []resultForStrategy{
 				{
-					strategies: []kptfilev1alpha2.UpdateStrategyType{
-						kptfilev1alpha2.ResourceMerge,
-						kptfilev1alpha2.FastForward,
-						kptfilev1alpha2.ForceDeleteReplace,
+					strategies: []kptfilev1.UpdateStrategyType{
+						kptfilev1.ResourceMerge,
+						kptfilev1.FastForward,
+						kptfilev1.ForceDeleteReplace,
 					},
 					expectedLocal: pkgbuilder.NewRootPkg().
 						WithKptfile(
@@ -1094,8 +1094,8 @@ func TestCommand_Run_local_subpackages(t *testing.T) {
 			},
 			expectedResults: []resultForStrategy{
 				{
-					strategies: []kptfilev1alpha2.UpdateStrategyType{
-						kptfilev1alpha2.ResourceMerge,
+					strategies: []kptfilev1.UpdateStrategyType{
+						kptfilev1.ResourceMerge,
 					},
 					expectedLocal: pkgbuilder.NewRootPkg().
 						WithKptfile(
@@ -1111,14 +1111,14 @@ func TestCommand_Run_local_subpackages(t *testing.T) {
 						),
 				},
 				{
-					strategies: []kptfilev1alpha2.UpdateStrategyType{
-						kptfilev1alpha2.FastForward,
+					strategies: []kptfilev1.UpdateStrategyType{
+						kptfilev1.FastForward,
 					},
 					expectedErrMsg: "use a different update --strategy",
 				},
 				{
-					strategies: []kptfilev1alpha2.UpdateStrategyType{
-						kptfilev1alpha2.ForceDeleteReplace,
+					strategies: []kptfilev1.UpdateStrategyType{
+						kptfilev1.ForceDeleteReplace,
 					},
 					expectedLocal: pkgbuilder.NewRootPkg().
 						WithKptfile(
@@ -1170,8 +1170,8 @@ func TestCommand_Run_local_subpackages(t *testing.T) {
 			},
 			expectedResults: []resultForStrategy{
 				{
-					strategies: []kptfilev1alpha2.UpdateStrategyType{
-						kptfilev1alpha2.ResourceMerge,
+					strategies: []kptfilev1.UpdateStrategyType{
+						kptfilev1.ResourceMerge,
 					},
 					expectedLocal: pkgbuilder.NewRootPkg().
 						WithKptfile(
@@ -1189,14 +1189,14 @@ func TestCommand_Run_local_subpackages(t *testing.T) {
 						),
 				},
 				{
-					strategies: []kptfilev1alpha2.UpdateStrategyType{
-						kptfilev1alpha2.FastForward,
+					strategies: []kptfilev1.UpdateStrategyType{
+						kptfilev1.FastForward,
 					},
 					expectedErrMsg: "use a different update --strategy",
 				},
 				{
-					strategies: []kptfilev1alpha2.UpdateStrategyType{
-						kptfilev1alpha2.ForceDeleteReplace,
+					strategies: []kptfilev1.UpdateStrategyType{
+						kptfilev1.ForceDeleteReplace,
 					},
 					expectedLocal: pkgbuilder.NewRootPkg().
 						WithKptfile(
@@ -1250,20 +1250,20 @@ func TestCommand_Run_local_subpackages(t *testing.T) {
 			},
 			expectedResults: []resultForStrategy{
 				{
-					strategies: []kptfilev1alpha2.UpdateStrategyType{
-						kptfilev1alpha2.ResourceMerge,
+					strategies: []kptfilev1.UpdateStrategyType{
+						kptfilev1.ResourceMerge,
 					},
 					expectedErrMsg: "subpackage \"abc\" added in both upstream and local",
 				},
 				{
-					strategies: []kptfilev1alpha2.UpdateStrategyType{
-						kptfilev1alpha2.FastForward,
+					strategies: []kptfilev1.UpdateStrategyType{
+						kptfilev1.FastForward,
 					},
 					expectedErrMsg: "use a different update --strategy",
 				},
 				{
-					strategies: []kptfilev1alpha2.UpdateStrategyType{
-						kptfilev1alpha2.ForceDeleteReplace,
+					strategies: []kptfilev1.UpdateStrategyType{
+						kptfilev1.ForceDeleteReplace,
 					},
 					expectedLocal: pkgbuilder.NewRootPkg().
 						WithKptfile(
@@ -1301,10 +1301,10 @@ func TestCommand_Run_local_subpackages(t *testing.T) {
 			},
 			expectedResults: []resultForStrategy{
 				{
-					strategies: []kptfilev1alpha2.UpdateStrategyType{
-						kptfilev1alpha2.ResourceMerge,
-						kptfilev1alpha2.FastForward,
-						kptfilev1alpha2.ForceDeleteReplace,
+					strategies: []kptfilev1.UpdateStrategyType{
+						kptfilev1.ResourceMerge,
+						kptfilev1.FastForward,
+						kptfilev1.ForceDeleteReplace,
 					},
 					expectedLocal: pkgbuilder.NewRootPkg().
 						WithKptfile(
@@ -1340,10 +1340,10 @@ func TestCommand_Run_local_subpackages(t *testing.T) {
 			},
 			expectedResults: []resultForStrategy{
 				{
-					strategies: []kptfilev1alpha2.UpdateStrategyType{
-						kptfilev1alpha2.ResourceMerge,
-						kptfilev1alpha2.FastForward,
-						kptfilev1alpha2.ForceDeleteReplace,
+					strategies: []kptfilev1.UpdateStrategyType{
+						kptfilev1.ResourceMerge,
+						kptfilev1.FastForward,
+						kptfilev1.ForceDeleteReplace,
 					},
 					expectedLocal: pkgbuilder.NewRootPkg().
 						WithKptfile(
@@ -1391,8 +1391,8 @@ func TestCommand_Run_local_subpackages(t *testing.T) {
 				// shouldn't be deleted here since it doesn't really have any
 				// local changes.
 				{
-					strategies: []kptfilev1alpha2.UpdateStrategyType{
-						kptfilev1alpha2.ResourceMerge,
+					strategies: []kptfilev1.UpdateStrategyType{
+						kptfilev1.ResourceMerge,
 					},
 					expectedLocal: pkgbuilder.NewRootPkg().
 						WithKptfile(
@@ -1407,9 +1407,9 @@ func TestCommand_Run_local_subpackages(t *testing.T) {
 						),
 				},
 				{
-					strategies: []kptfilev1alpha2.UpdateStrategyType{
-						kptfilev1alpha2.FastForward,
-						kptfilev1alpha2.ForceDeleteReplace,
+					strategies: []kptfilev1.UpdateStrategyType{
+						kptfilev1.FastForward,
+						kptfilev1.ForceDeleteReplace,
 					},
 					expectedLocal: pkgbuilder.NewRootPkg().
 						WithKptfile(
@@ -1459,8 +1459,8 @@ func TestCommand_Run_local_subpackages(t *testing.T) {
 			},
 			expectedResults: []resultForStrategy{
 				{
-					strategies: []kptfilev1alpha2.UpdateStrategyType{
-						kptfilev1alpha2.ResourceMerge,
+					strategies: []kptfilev1.UpdateStrategyType{
+						kptfilev1.ResourceMerge,
 					},
 					expectedLocal: pkgbuilder.NewRootPkg().
 						WithKptfile(
@@ -1476,14 +1476,14 @@ func TestCommand_Run_local_subpackages(t *testing.T) {
 						),
 				},
 				{
-					strategies: []kptfilev1alpha2.UpdateStrategyType{
-						kptfilev1alpha2.FastForward,
+					strategies: []kptfilev1.UpdateStrategyType{
+						kptfilev1.FastForward,
 					},
 					expectedErrMsg: "use a different update --strategy",
 				},
 				{
-					strategies: []kptfilev1alpha2.UpdateStrategyType{
-						kptfilev1alpha2.ForceDeleteReplace,
+					strategies: []kptfilev1.UpdateStrategyType{
+						kptfilev1.ForceDeleteReplace,
 					},
 					expectedLocal: pkgbuilder.NewRootPkg().
 						WithKptfile(
@@ -1521,10 +1521,10 @@ func TestCommand_Run_local_subpackages(t *testing.T) {
 			},
 			expectedResults: []resultForStrategy{
 				{
-					strategies: []kptfilev1alpha2.UpdateStrategyType{
-						kptfilev1alpha2.ResourceMerge,
-						kptfilev1alpha2.FastForward,
-						kptfilev1alpha2.ForceDeleteReplace,
+					strategies: []kptfilev1.UpdateStrategyType{
+						kptfilev1.ResourceMerge,
+						kptfilev1.FastForward,
+						kptfilev1.ForceDeleteReplace,
 					},
 					expectedLocal: pkgbuilder.NewRootPkg().
 						WithKptfile(
@@ -1567,8 +1567,8 @@ func TestCommand_Run_local_subpackages(t *testing.T) {
 			},
 			expectedResults: []resultForStrategy{
 				{
-					strategies: []kptfilev1alpha2.UpdateStrategyType{
-						kptfilev1alpha2.ResourceMerge,
+					strategies: []kptfilev1.UpdateStrategyType{
+						kptfilev1.ResourceMerge,
 					},
 					expectedLocal: pkgbuilder.NewRootPkg().
 						WithKptfile(
@@ -1584,14 +1584,14 @@ func TestCommand_Run_local_subpackages(t *testing.T) {
 						),
 				},
 				{
-					strategies: []kptfilev1alpha2.UpdateStrategyType{
-						kptfilev1alpha2.FastForward,
+					strategies: []kptfilev1.UpdateStrategyType{
+						kptfilev1.FastForward,
 					},
 					expectedErrMsg: "use a different update --strategy",
 				},
 				{
-					strategies: []kptfilev1alpha2.UpdateStrategyType{
-						kptfilev1alpha2.ForceDeleteReplace,
+					strategies: []kptfilev1.UpdateStrategyType{
+						kptfilev1.ForceDeleteReplace,
 					},
 					expectedLocal: pkgbuilder.NewRootPkg().
 						WithKptfile(
@@ -1628,10 +1628,10 @@ func TestCommand_Run_local_subpackages(t *testing.T) {
 			},
 			expectedResults: []resultForStrategy{
 				{
-					strategies: []kptfilev1alpha2.UpdateStrategyType{
-						kptfilev1alpha2.ResourceMerge,
-						kptfilev1alpha2.FastForward,
-						kptfilev1alpha2.ForceDeleteReplace,
+					strategies: []kptfilev1.UpdateStrategyType{
+						kptfilev1.ResourceMerge,
+						kptfilev1.FastForward,
+						kptfilev1.ForceDeleteReplace,
 					},
 					expectedLocal: pkgbuilder.NewRootPkg().
 						WithKptfile(
@@ -1677,10 +1677,10 @@ func TestCommand_Run_local_subpackages(t *testing.T) {
 			},
 			expectedResults: []resultForStrategy{
 				{
-					strategies: []kptfilev1alpha2.UpdateStrategyType{
-						kptfilev1alpha2.ResourceMerge,
-						kptfilev1alpha2.FastForward,
-						kptfilev1alpha2.ForceDeleteReplace,
+					strategies: []kptfilev1.UpdateStrategyType{
+						kptfilev1.ResourceMerge,
+						kptfilev1.FastForward,
+						kptfilev1.ForceDeleteReplace,
 					},
 					expectedLocal: pkgbuilder.NewRootPkg().
 						WithKptfile(
@@ -1721,8 +1721,8 @@ func TestCommand_Run_local_subpackages(t *testing.T) {
 			},
 			expectedResults: []resultForStrategy{
 				{
-					strategies: []kptfilev1alpha2.UpdateStrategyType{
-						kptfilev1alpha2.ResourceMerge,
+					strategies: []kptfilev1.UpdateStrategyType{
+						kptfilev1.ResourceMerge,
 					},
 					expectedLocal: pkgbuilder.NewRootPkg().
 						WithKptfile(
@@ -1733,14 +1733,14 @@ func TestCommand_Run_local_subpackages(t *testing.T) {
 						WithFile("data.txt", "local content"),
 				},
 				{
-					strategies: []kptfilev1alpha2.UpdateStrategyType{
-						kptfilev1alpha2.FastForward,
+					strategies: []kptfilev1.UpdateStrategyType{
+						kptfilev1.FastForward,
 					},
 					expectedErrMsg: "use a different update --strategy",
 				},
 				{
-					strategies: []kptfilev1alpha2.UpdateStrategyType{
-						kptfilev1alpha2.ForceDeleteReplace,
+					strategies: []kptfilev1.UpdateStrategyType{
+						kptfilev1.ForceDeleteReplace,
 					},
 					expectedLocal: pkgbuilder.NewRootPkg().
 						WithKptfile(
@@ -1797,7 +1797,7 @@ func TestCommand_Run_local_subpackages(t *testing.T) {
 				rw := &kio.LocalPackageReadWriter{
 					NoDeleteFiles:  true,
 					PackagePath:    g.LocalWorkspace.FullPackagePath(),
-					MatchFilesGlob: []string{kptfilev1alpha2.KptFileName},
+					MatchFilesGlob: []string{kptfilev1.KptFileName},
 				}
 				err = kio.Pipeline{
 					Inputs:  []kio.Reader{rw},
@@ -1827,13 +1827,13 @@ func TestCommand_Run_local_subpackages(t *testing.T) {
 }
 
 type resultForStrategy struct {
-	strategies     []kptfilev1alpha2.UpdateStrategyType
+	strategies     []kptfilev1.UpdateStrategyType
 	expectedLocal  *pkgbuilder.RootPkg
 	expectedErrMsg string
 }
 
-func findStrategiesForTestCase(expectedResults []resultForStrategy) []kptfilev1alpha2.UpdateStrategyType {
-	var strategies []kptfilev1alpha2.UpdateStrategyType
+func findStrategiesForTestCase(expectedResults []resultForStrategy) []kptfilev1.UpdateStrategyType {
+	var strategies []kptfilev1.UpdateStrategyType
 	for _, er := range expectedResults {
 		strategies = append(strategies, er.strategies...)
 	}
@@ -1841,7 +1841,7 @@ func findStrategiesForTestCase(expectedResults []resultForStrategy) []kptfilev1a
 }
 
 func findExpectedResultForStrategy(strategyResults []resultForStrategy,
-	strategy kptfilev1alpha2.UpdateStrategyType) resultForStrategy {
+	strategy kptfilev1.UpdateStrategyType) resultForStrategy {
 	for _, sr := range strategyResults {
 		for _, s := range sr.strategies {
 			if s == strategy {
@@ -3329,7 +3329,7 @@ func TestRun_remote_subpackages(t *testing.T) {
 			rw := &kio.LocalPackageReadWriter{
 				NoDeleteFiles:  true,
 				PackagePath:    g.LocalWorkspace.FullPackagePath(),
-				MatchFilesGlob: []string{kptfilev1alpha2.KptFileName},
+				MatchFilesGlob: []string{kptfilev1.KptFileName},
 			}
 			err = kio.Pipeline{
 				Inputs:  []kio.Reader{rw},
@@ -3441,14 +3441,14 @@ func TestRootPackageIsUnfetched(t *testing.T) {
 
 			w.PackageDir = testPackageName
 			kf := kptfileutil.DefaultKptfile(testPackageName)
-			kf.Upstream = &kptfilev1alpha2.Upstream{
-				Type: kptfilev1alpha2.GitOrigin,
-				Git: &kptfilev1alpha2.Git{
+			kf.Upstream = &kptfilev1.Upstream{
+				Type: kptfilev1.GitOrigin,
+				Git: &kptfilev1.Git{
 					Repo:      repos[testutil.Upstream].RepoDirectory,
 					Directory: tc.directory,
 					Ref:       tc.ref,
 				},
-				UpdateStrategy: kptfilev1alpha2.ResourceMerge,
+				UpdateStrategy: kptfilev1.ResourceMerge,
 			}
 			testutil.AddKptfileToWorkspace(t, w, kf)
 
diff --git a/pkg/api/kptfile/v1alpha2/validation_test.go b/pkg/api/kptfile/v1/validation_test.go
similarity index 99%
rename from pkg/api/kptfile/v1alpha2/validation_test.go
rename to pkg/api/kptfile/v1/validation_test.go
index 8bc5c5fa..db2042f8 100644
--- a/pkg/api/kptfile/v1alpha2/validation_test.go
+++ b/pkg/api/kptfile/v1/validation_test.go
@@ -11,7 +11,7 @@
 // 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 v1alpha2
+package v1
 
 import (
 	"testing"
diff --git a/pkg/kptfile/kptfileutil/util_test.go b/pkg/kptfile/kptfileutil/util_test.go
index 79798a6b..6116b478 100644
--- a/pkg/kptfile/kptfileutil/util_test.go
+++ b/pkg/kptfile/kptfileutil/util_test.go
@@ -21,7 +21,7 @@ import (
 	"strings"
 	"testing"
 
-	kptfilev1alpha2 "github.com/GoogleContainerTools/kpt/pkg/api/kptfile/v1alpha2"
+	kptfilev1 "github.com/GoogleContainerTools/kpt/pkg/api/kptfile/v1"
 	"github.com/stretchr/testify/assert"
 )
 
@@ -33,13 +33,13 @@ func TestValidateInventory(t *testing.T) {
 		t.Errorf("nil inventory should not validate")
 	}
 	// Empty inventory should not validate
-	inv := &kptfilev1alpha2.Inventory{}
+	inv := &kptfilev1.Inventory{}
 	isValid, err = ValidateInventory(inv)
 	if isValid || err == nil {
 		t.Errorf("empty inventory should not validate")
 	}
 	// Empty inventory parameters strings should not validate
-	inv = &kptfilev1alpha2.Inventory{
+	inv = &kptfilev1.Inventory{
 		Namespace:   "",
 		Name:        "",
 		InventoryID: "",
@@ -49,7 +49,7 @@ func TestValidateInventory(t *testing.T) {
 		t.Errorf("empty inventory parameters strings should not validate")
 	}
 	// Inventory with non-empty namespace, name, and id should validate.
-	inv = &kptfilev1alpha2.Inventory{
+	inv = &kptfilev1.Inventory{
 		Namespace:   "test-namespace",
 		Name:        "test-name",
 		InventoryID: "test-id",
@@ -66,7 +66,7 @@ func TestUpdateKptfile(t *testing.T) {
 		if !assert.NoError(t, err) {
 			t.FailNow()
 		}
-		err = ioutil.WriteFile(filepath.Join(dir, kptfilev1alpha2.KptFileName), []byte(content), 0600)
+		err = ioutil.WriteFile(filepath.Join(dir, kptfilev1.KptFileName), []byte(content), 0600)
 		if !assert.NoError(t, err) {
 			t.FailNow()
 		}
@@ -82,26 +82,26 @@ func TestUpdateKptfile(t *testing.T) {
 	}{
 		"no pipeline and no upstream info": {
 			origin: `
-apiVersion: kpt.dev/v1alpha2
+apiVersion: kpt.dev/v1
 kind: Kptfile
 metadata:
   name: base
 `,
 			updated: `
-apiVersion: kpt.dev/v1alpha2
+apiVersion: kpt.dev/v1
 kind: Kptfile
 metadata:
   name: base
 `,
 			local: `
-apiVersion: kpt.dev/v1alpha2
+apiVersion: kpt.dev/v1
 kind: Kptfile
 metadata:
   name: foo
 `,
 			updateUpstream: false,
 			expected: `
-apiVersion: kpt.dev/v1alpha2
+apiVersion: kpt.dev/v1
 kind: Kptfile
 metadata:
   name: foo
@@ -110,7 +110,7 @@ metadata:
 
 		"upstream information is not copied from upstream unless updateUpstream is true": {
 			origin: `
-apiVersion: kpt.dev/v1alpha2
+apiVersion: kpt.dev/v1
 kind: Kptfile
 metadata:
   name: foo
@@ -122,7 +122,7 @@ upstream:
     ref: v1
 `,
 			updated: `
-apiVersion: kpt.dev/v1alpha2
+apiVersion: kpt.dev/v1
 kind: Kptfile
 metadata:
   name: foo
@@ -134,14 +134,14 @@ upstream:
     ref: v2
 `,
 			local: `
-apiVersion: kpt.dev/v1alpha2
+apiVersion: kpt.dev/v1
 kind: Kptfile
 metadata:
   name: foo
 `,
 			updateUpstream: false,
 			expected: `
-apiVersion: kpt.dev/v1alpha2
+apiVersion: kpt.dev/v1
 kind: Kptfile
 metadata:
   name: foo
@@ -150,7 +150,7 @@ metadata:
 
 		"upstream information is copied from upstream when updateUpstream is true": {
 			origin: `
-apiVersion: kpt.dev/v1alpha2
+apiVersion: kpt.dev/v1
 kind: Kptfile
 metadata:
   name: foo
@@ -162,7 +162,7 @@ upstream:
     ref: v1
 `,
 			updated: `
-apiVersion: kpt.dev/v1alpha2
+apiVersion: kpt.dev/v1
 kind: Kptfile
 metadata:
   name: foo
@@ -181,14 +181,14 @@ upstreamLock:
     commit: abc123
 `,
 			local: `
-apiVersion: kpt.dev/v1alpha2
+apiVersion: kpt.dev/v1
 kind: Kptfile
 metadata:
   name: foo
 `,
 			updateUpstream: true,
 			expected: `
-apiVersion: kpt.dev/v1alpha2
+apiVersion: kpt.dev/v1
 kind: Kptfile
 metadata:
   name: foo
@@ -210,7 +210,7 @@ upstreamLock:
 
 		"pipeline in upstream replaces local": {
 			origin: `
-apiVersion: kpt.dev/v1alpha2
+apiVersion: kpt.dev/v1
 kind: Kptfile
 metadata:
   name: foo
@@ -219,7 +219,7 @@ pipeline:
     - image: foo:bar
 `,
 			updated: `
-apiVersion: kpt.dev/v1alpha2
+apiVersion: kpt.dev/v1
 kind: Kptfile
 metadata:
   name: foo
@@ -231,7 +231,7 @@ pipeline:
     - image: some:image
 `,
 			local: `
-apiVersion: kpt.dev/v1alpha2
+apiVersion: kpt.dev/v1
 kind: Kptfile
 metadata:
   name: foo
@@ -244,7 +244,7 @@ pipeline:
 `,
 			updateUpstream: true,
 			expected: `
-apiVersion: kpt.dev/v1alpha2
+apiVersion: kpt.dev/v1
 kind: Kptfile
 metadata:
   name: foo
@@ -259,7 +259,7 @@ pipeline:
 
 		"pipeline in local remains if there are no changes in upstream": {
 			origin: `
-apiVersion: kpt.dev/v1alpha2
+apiVersion: kpt.dev/v1
 kind: Kptfile
 metadata:
   name: foo
@@ -268,7 +268,7 @@ pipeline:
     - image: foo:bar
 `,
 			updated: `
-apiVersion: kpt.dev/v1alpha2
+apiVersion: kpt.dev/v1
 kind: Kptfile
 metadata:
   name: foo
@@ -277,7 +277,7 @@ pipeline:
     - image: foo:bar
 `,
 			local: `
-apiVersion: kpt.dev/v1alpha2
+apiVersion: kpt.dev/v1
 kind: Kptfile
 metadata:
   name: foo
@@ -290,7 +290,7 @@ pipeline:
 `,
 			updateUpstream: true,
 			expected: `
-apiVersion: kpt.dev/v1alpha2
+apiVersion: kpt.dev/v1
 kind: Kptfile
 metadata:
   name: foo
@@ -305,19 +305,19 @@ pipeline:
 
 		"pipeline remains if it is only added locally": {
 			origin: `
-apiVersion: kpt.dev/v1alpha2
+apiVersion: kpt.dev/v1
 kind: Kptfile
 metadata:
   name: foo
 `,
 			updated: `
-apiVersion: kpt.dev/v1alpha2
+apiVersion: kpt.dev/v1
 kind: Kptfile
 metadata:
   name: foo
 `,
 			local: `
-apiVersion: kpt.dev/v1alpha2
+apiVersion: kpt.dev/v1
 kind: Kptfile
 metadata:
   name: foo
@@ -328,7 +328,7 @@ pipeline:
 `,
 			updateUpstream: true,
 			expected: `
-apiVersion: kpt.dev/v1alpha2
+apiVersion: kpt.dev/v1
 kind: Kptfile
 metadata:
   name: foo
@@ -341,7 +341,7 @@ pipeline:
 
 		"pipeline in local is emptied if it is gone from upstream": {
 			origin: `
-apiVersion: kpt.dev/v1alpha2
+apiVersion: kpt.dev/v1
 kind: Kptfile
 metadata:
   name: foo
@@ -350,13 +350,13 @@ pipeline:
     - image: foo:bar
 `,
 			updated: `
-apiVersion: kpt.dev/v1alpha2
+apiVersion: kpt.dev/v1
 kind: Kptfile
 metadata:
   name: foo
 `,
 			local: `
-apiVersion: kpt.dev/v1alpha2
+apiVersion: kpt.dev/v1
 kind: Kptfile
 metadata:
   name: foo
@@ -367,7 +367,7 @@ pipeline:
 `,
 			updateUpstream: false,
 			expected: `
-apiVersion: kpt.dev/v1alpha2
+apiVersion: kpt.dev/v1
 kind: Kptfile
 metadata:
   name: foo
@@ -399,7 +399,7 @@ pipeline: {}
 				t.FailNow()
 			}
 
-			c, err := ioutil.ReadFile(filepath.Join(dirs["local"], kptfilev1alpha2.KptFileName))
+			c, err := ioutil.ReadFile(filepath.Join(dirs["local"], kptfilev1.KptFileName))
 			if !assert.NoError(t, err) {
 				t.FailNow()
 			}
diff --git a/pkg/live/helpers_test.go b/pkg/live/helpers_test.go
index c0388c0c..a62b49aa 100644
--- a/pkg/live/helpers_test.go
+++ b/pkg/live/helpers_test.go
@@ -16,7 +16,7 @@ package live
 
 var (
 	kptFile = `
-apiVersion: kpt.dev/v1alpha2
+apiVersion: kpt.dev/v1
 kind: Kptfile
 metadata:
   name: test1
@@ -33,7 +33,7 @@ inventory:
   inventoryID: XXXXXXXXXX-FOOOOOO
 `
 	kptFileWithPipeline = `
-apiVersion: kpt.dev/v1alpha2
+apiVersion: kpt.dev/v1
 kind: Kptfile
 metadata:
   name: kptfileWithPipeline
@@ -86,7 +86,7 @@ spec:
     singular: custom
   scope: Cluster
   versions:
-  - name: v1alpha2
+  - name: v1
     schema:
       openAPIV3Schema:
         description: This is for testing
@@ -96,7 +96,7 @@ spec:
     subresources: {}
 `
 	cr = `
-apiVersion: custom.io/v1alpha2
+apiVersion: custom.io/v1
 kind: Custom
 metadata:
   name: cr
diff --git a/pkg/live/load_test.go b/pkg/live/load_test.go
index 4653fc85..7765bdc8 100644
--- a/pkg/live/load_test.go
+++ b/pkg/live/load_test.go
@@ -21,7 +21,7 @@ import (
 	"testing"
 
 	"github.com/GoogleContainerTools/kpt/internal/testutil/pkgbuilder"
-	kptfile "github.com/GoogleContainerTools/kpt/pkg/api/kptfile/v1alpha2"
+	kptfile "github.com/GoogleContainerTools/kpt/pkg/api/kptfile/v1"
 	"github.com/stretchr/testify/assert"
 	"k8s.io/apimachinery/pkg/runtime/schema"
 	cmdtesting "k8s.io/kubectl/pkg/cmd/testing"
diff --git a/pkg/live/rgstream_test.go b/pkg/live/rgstream_test.go
index 61767b3a..c1cce7ec 100644
--- a/pkg/live/rgstream_test.go
+++ b/pkg/live/rgstream_test.go
@@ -176,7 +176,7 @@ metadata:
 		},
 		"Kptfile with wrong kind is invalid": {
 			kptfile: `
-apiVersion: kpt.dev/v1alpha2
+apiVersion: kpt.dev/v1
 kind: foo
 metadata:
   name: test1
@@ -196,7 +196,7 @@ spec:
 		},
 		"Wrong fields (foo/bar) in kptfile is invalid": {
 			kptfile: `
-apiVersion: kpt.dev/v1alpha2
+apiVersion: kpt.dev/v1
 kind: Kptfile
 foo: bar
 `,
@@ -204,7 +204,7 @@ foo: bar
 		},
 		"Kptfile with deployment/replicas fields is invalid": {
 			kptfile: `
-apiVersion: kpt.dev/v1alpha2
+apiVersion: kpt.dev/v1
 kind: Kptfile
 metadata:
   name: test-deployment
@@ -215,7 +215,7 @@ spec:
 		},
 		"Wrong fields (foo/bar) in kptfile inventory is invalid": {
 			kptfile: `
-apiVersion: kpt.dev/v1alpha2
+apiVersion: kpt.dev/v1
 kind: Kptfile
 metadata:
   name: test1
@@ -232,14 +232,14 @@ inventory:
 		},
 		"Kptfile with only GVK is valid": {
 			kptfile: `
-apiVersion: kpt.dev/v1alpha2
+apiVersion: kpt.dev/v1
 kind: Kptfile
 `,
 			expected: true,
 		},
 		"Kptfile missing optional inventory is still valid": {
 			kptfile: `
-apiVersion: kpt.dev/v1alpha2
+apiVersion: kpt.dev/v1
 kind: Kptfile
 metadata:
   name: test1
diff --git a/pkg/test/runner/runner.go b/pkg/test/runner/runner.go
index ea0cfefe..ef40121c 100644
--- a/pkg/test/runner/runner.go
+++ b/pkg/test/runner/runner.go
@@ -193,7 +193,7 @@ func (r *Runner) runFnEval() error {
 			if r.testCase.Config.EvalConfig.Image != "" {
 				kptArgs = append(kptArgs, "--image", r.testCase.Config.EvalConfig.Image)
 			} else if !r.testCase.Config.EvalConfig.execUniquePath.Empty() {
-				kptArgs = append(kptArgs, "--exec-path", string(r.testCase.Config.EvalConfig.execUniquePath))
+				kptArgs = append(kptArgs, "--exec", string(r.testCase.Config.EvalConfig.execUniquePath))
 			}
 			if !r.testCase.Config.EvalConfig.fnConfigUniquePath.Empty() {
 				kptArgs = append(kptArgs, "--fn-config", string(r.testCase.Config.EvalConfig.fnConfigUniquePath))
diff --git a/site/static/js/plugins/book_page_title.test.js b/site/static/js/plugins/book_page_title.test.js
new file mode 100644
index 00000000..ea722b4c
--- /dev/null
+++ b/site/static/js/plugins/book_page_title.test.js
@@ -0,0 +1,55 @@
+/**
+ * @jest-environment jsdom
+ */
+
+const plugins = require("./book_page_title");
+require("@gouch/to-title-case");
+
+test.each([
+  ["1 The Chapter Title", "book/01-the-chapter-title/"],
+  ["1.1 First Title", "book/01-anything/01-first-title"],
+  [
+    "1.2 A Much Longer Page Title",
+    "book/01-anything/02-a-much-longer-page-title",
+  ],
+])("title is correct on book pages", (expectedTitle, path) => {
+  delete window.location;
+  window.location = new URL(path, "https://test.test");
+  const transformedContent = plugins.processBookPageTitle(
+    "Placeholder content"
+  );
+  expect(transformedContent.split("\n")[0]).toBe(`# ${expectedTitle}`);
+});
+
+test("title is not set on non-book pages", () => {
+  delete window.location;
+  window.location = new URL("non-book/url", "https://test.test");
+  const originalContent = "Placeholder content";
+  const transformedContent = plugins.processBookPageTitle(
+    originalContent
+  );
+  expect(transformedContent).toBe(originalContent);
+});
+
+
+test("title is not set on pages without content", () => {
+  delete window.location;
+  window.location = new URL("book/01-book-chapter/01-book-page", "https://test.test");
+  const originalContent = "";
+  const transformedContent = plugins.processBookPageTitle(
+    originalContent
+  );
+  expect(transformedContent).toBe(originalContent);
+});
+
+
+
+test("title is not set on pages that return default HTML", () => {
+  delete window.location;
+  window.location = new URL("book/01-book-chapter/01-book-page", "https://test.test");
+  const originalContent = "<!DOCTYPE html><html></html>";
+  const transformedContent = plugins.processBookPageTitle(
+    originalContent
+  );
+  expect(transformedContent).toBe(originalContent);
+});
\ No newline at end of file
diff --git a/thirdparty/cli-utils/status/cmdstatus_test.go b/thirdparty/cli-utils/status/cmdstatus_test.go
index e400ec83..a94bc850 100644
--- a/thirdparty/cli-utils/status/cmdstatus_test.go
+++ b/thirdparty/cli-utils/status/cmdstatus_test.go
@@ -12,7 +12,7 @@ import (
 
 	"github.com/GoogleContainerTools/kpt/internal/printer/fake"
 	"github.com/GoogleContainerTools/kpt/internal/testutil"
-	kptfilev1alpha2 "github.com/GoogleContainerTools/kpt/pkg/api/kptfile/v1alpha2"
+	kptfilev1 "github.com/GoogleContainerTools/kpt/pkg/api/kptfile/v1"
 	"github.com/GoogleContainerTools/kpt/pkg/kptfile/kptfileutil"
 	"github.com/GoogleContainerTools/kpt/pkg/live"
 	"github.com/stretchr/testify/assert"
@@ -52,7 +52,7 @@ func TestStatusCommand(t *testing.T) {
 		pollUntil      string
 		printer        string
 		timeout        time.Duration
-		kptfileInv     *kptfilev1alpha2.Inventory
+		kptfileInv     *kptfilev1.Inventory
 		inventory      []object.ObjMetadata
 		events         []pollevent.Event
 		expectedErrMsg string
@@ -67,7 +67,7 @@ func TestStatusCommand(t *testing.T) {
 			expectedErrMsg: "pollUntil must be one of \"known\", \"current\", \"deleted\", \"forever\"",
 		},
 		"no inventory in live state": {
-			kptfileInv: &kptfilev1alpha2.Inventory{
+			kptfileInv: &kptfilev1.Inventory{
 				Name:        "foo",
 				Namespace:   "default",
 				InventoryID: "test",
@@ -77,7 +77,7 @@ func TestStatusCommand(t *testing.T) {
 		"wait for all known": {
 			pollUntil: "known",
 			printer:   "events",
-			kptfileInv: &kptfilev1alpha2.Inventory{
+			kptfileInv: &kptfilev1.Inventory{
 				Name:        "foo",
 				Namespace:   "default",
 				InventoryID: "test",
@@ -112,7 +112,7 @@ statefulset.apps/bar is Current: current
 		"wait for all current": {
 			pollUntil: "current",
 			printer:   "events",
-			kptfileInv: &kptfilev1alpha2.Inventory{
+			kptfileInv: &kptfilev1.Inventory{
 				Name:        "foo",
 				Namespace:   "default",
 				InventoryID: "test",
@@ -165,7 +165,7 @@ deployment.apps/foo is Current: current
 		"wait for all deleted": {
 			pollUntil: "deleted",
 			printer:   "events",
-			kptfileInv: &kptfilev1alpha2.Inventory{
+			kptfileInv: &kptfilev1.Inventory{
 				Name:        "foo",
 				Namespace:   "default",
 				InventoryID: "test",
@@ -201,7 +201,7 @@ deployment.apps/foo is NotFound: notFound
 			pollUntil: "forever",
 			printer:   "events",
 			timeout:   2 * time.Second,
-			kptfileInv: &kptfilev1alpha2.Inventory{
+			kptfileInv: &kptfilev1.Inventory{
 				Name:        "foo",
 				Namespace:   "default",
 				InventoryID: "test",
diff --git a/thirdparty/cmdconfig/commands/cmdtree/cmdtree_test.go b/thirdparty/cmdconfig/commands/cmdtree/cmdtree_test.go
index 9f9f0fbd..017c118a 100644
--- a/thirdparty/cmdconfig/commands/cmdtree/cmdtree_test.go
+++ b/thirdparty/cmdconfig/commands/cmdtree/cmdtree_test.go
@@ -276,7 +276,7 @@ spec:
 		return
 	}
 
-	err = ioutil.WriteFile(filepath.Join(d, "Kptfile"), []byte(`apiVersion: kpt.dev/v1alpha2
+	err = ioutil.WriteFile(filepath.Join(d, "Kptfile"), []byte(`apiVersion: kpt.dev/v1
 kind: Kptfile
 metadata:
   name: mainpkg
@@ -286,7 +286,7 @@ openAPI:
 	if !assert.NoError(t, err) {
 		return
 	}
-	err = ioutil.WriteFile(filepath.Join(d, "subpkg", "Kptfile"), []byte(`apiVersion: kpt.dev/v1alpha2
+	err = ioutil.WriteFile(filepath.Join(d, "subpkg", "Kptfile"), []byte(`apiVersion: kpt.dev/v1
 kind: Kptfile
 metadata:
   name: subpkg
@@ -364,7 +364,7 @@ spec:
 		return
 	}
 
-	err = ioutil.WriteFile(filepath.Join(d, "Mainpkg", "Kptfile"), []byte(`apiVersion: kpt.dev/v1alpha2
+	err = ioutil.WriteFile(filepath.Join(d, "Mainpkg", "Kptfile"), []byte(`apiVersion: kpt.dev/v1
 kind: Kptfile
 metadata:
   name: Mainpkg
@@ -372,7 +372,7 @@ metadata:
 	if !assert.NoError(t, err) {
 		return
 	}
-	err = ioutil.WriteFile(filepath.Join(d, "Mainpkg", "Subpkg", "Kptfile"), []byte(`apiVersion: kpt.dev/v1alpha2
+	err = ioutil.WriteFile(filepath.Join(d, "Mainpkg", "Subpkg", "Kptfile"), []byte(`apiVersion: kpt.dev/v1
 kind: Kptfile
 metadata:
   name: Subpkg
diff --git a/thirdparty/kyaml/runfn/runfn_test.go b/thirdparty/kyaml/runfn/runfn_test.go
index 0475ad56..66727b2c 100644
--- a/thirdparty/kyaml/runfn/runfn_test.go
+++ b/thirdparty/kyaml/runfn/runfn_test.go
@@ -12,8 +12,8 @@ import (
 	"testing"
 
 	"github.com/GoogleContainerTools/kpt/internal/printer/fake"
-	fnresult "github.com/GoogleContainerTools/kpt/pkg/api/fnresult/v1alpha2"
-	"github.com/GoogleContainerTools/kpt/pkg/api/kptfile/v1alpha2"
+	fnresult "github.com/GoogleContainerTools/kpt/pkg/api/fnresult/v1"
+	v1 "github.com/GoogleContainerTools/kpt/pkg/api/kptfile/v1"
 	"github.com/stretchr/testify/assert"
 
 	"sigs.k8s.io/kustomize/kyaml/copyutil"
@@ -44,7 +44,7 @@ stringMatch: Deployment
 replace: ReplicaSet
 `
 
-	KptfileData = `apiVersion: kpt.dev/v1alpha2
+	KptfileData = `apiVersion: kpt.dev/v1
 kind: Kptfile
 metadata:
   name: kptfile
@@ -253,7 +253,7 @@ func TestCmd_Execute_includeMetaResources(t *testing.T) {
 
 	// write a Kptfile to the directory of configuration
 	if !assert.NoError(t, ioutil.WriteFile(
-		filepath.Join(dir, v1alpha2.KptFileName), []byte(KptfileData), 0600)) {
+		filepath.Join(dir, v1.KptFileName), []byte(KptfileData), 0600)) {
 		return
 	}
 
@@ -269,7 +269,7 @@ func TestCmd_Execute_includeMetaResources(t *testing.T) {
 		t.FailNow()
 	}
 	b, err := ioutil.ReadFile(
-		filepath.Join(dir, v1alpha2.KptFileName))
+		filepath.Join(dir, v1.KptFileName))
 	if !assert.NoError(t, err) {
 		t.FailNow()
 	}
@@ -288,7 +288,7 @@ func TestCmd_Execute_notIncludeMetaResources(t *testing.T) {
 
 	// write a Kptfile to the directory of configuration
 	if !assert.NoError(t, ioutil.WriteFile(
-		filepath.Join(dir, v1alpha2.KptFileName), []byte(KptfileData), 0600)) {
+		filepath.Join(dir, v1.KptFileName), []byte(KptfileData), 0600)) {
 		return
 	}
 
@@ -302,7 +302,7 @@ func TestCmd_Execute_notIncludeMetaResources(t *testing.T) {
 		t.FailNow()
 	}
 	b, err := ioutil.ReadFile(
-		filepath.Join(dir, v1alpha2.KptFileName))
+		filepath.Join(dir, v1.KptFileName))
 	if !assert.NoError(t, err) {
 		t.FailNow()
 	}