kubectl源码分析之kustomize
  TEZNKK3IfmPf 2023年11月15日 20 0

————————————————

type kustomizeOptions struct {//kustomize结构体
  kustomizationDir string
}
//创建kustomize命令
func NewCmdKustomize(streams genericclioptions.IOStreams) *cobra.Command {
  var o kustomizeOptions

  cmd := &cobra.Command{//创建cobra命令
    Use:     "kustomize <dir>",
    Short:   i18n.T("Build a kustomization target from a directory or a remote url."),
    Long:    kustomizeLong,
    Example: kustomizeExample,

    RunE: func(cmd *cobra.Command, args []string) error {
      err := o.Validate(args)//校验
      if err != nil {
        return err
      }
      return kustomize.RunKustomizeBuild(streams.Out, fs.MakeRealFS(), o.kustomizationDir)//运行
    },
  }

  return cmd
}
func (o *kustomizeOptions) Validate(args []string) error {//校验
  if len(args) > 1 {//参数不能大于1个
    return errors.New("specify one path to a kustomization directory")
  }
  if len(args) == 0 {//如果参数是0个,则目录为当前目录
    o.kustomizationDir = "./"
  } else {
    o.kustomizationDir = args[0]//设置目录
  }

  return nil
}
//运行kustomize build
func RunKustomizeBuild(out io.Writer, fSys fs.FileSystem, path string) error {
  f := k8sdeps.NewFactory()
  o := build.NewOptions(path, "")
  return o.RunBuild(out, fSys, f.ResmapF, f.TransformerF)
}
func (o *Options) RunBuild(
  out io.Writer, fSys fs.FileSystem,
  rf *resmap.Factory, ptf transformer.Factory) error {//运行build
  ldr, err := loader.NewLoader(o.kustomizationPath, fSys)//创建loader
  if err != nil {
    return err
  }
  defer ldr.Cleanup()
  kt, err := target.NewKustTarget(ldr, rf, ptf)//创建target
  if err != nil {
    return err
  }
  allResources, err := kt.MakeCustomizedResMap()//构建customize资源
  if err != nil {
    return err
  }
  // Output the objects.
  res, err := allResources.EncodeAsYaml()//把资源转成yaml
  if err != nil {
    return err
  }
  if o.outputPath != "" {
    return fSys.WriteFile(o.outputPath, res)
  }
  _, err = out.Write(res)//输出yaml资源
  return err
}
【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月15日 0

暂无评论

推荐阅读
  TEZNKK3IfmPf   2024年05月17日   42   0   0 golanghttps
  TEZNKK3IfmPf   2024年05月31日   23   0   0 后端golang开发语言
  TEZNKK3IfmPf   2024年05月17日   51   0   0 算法javagolang
  TEZNKK3IfmPf   2024年03月30日   24   0   0 ios
TEZNKK3IfmPf