欢迎关注我的公众号:
目前刚开始写一个月,一共写了18篇原创文章,文章目录如下:
istio多集群探秘,部署了50次多集群后我得出的结论
istio多集群链路追踪,附实操视频
istio防故障利器,你知道几个,istio新手不要读,太难!
istio业务权限控制,原来可以这么玩
istio实现非侵入压缩,微服务之间如何实现压缩
不懂envoyfilter也敢说精通istio系列-http-rbac-不要只会用AuthorizationPolicy配置权限
不懂envoyfilter也敢说精通istio系列-02-http-corsFilter-不要只会vs
不懂envoyfilter也敢说精通istio系列-03-http-csrf filter-再也不用再代码里写csrf逻辑了
不懂envoyfilter也敢说精通istio系列http-jwt_authn-不要只会RequestAuthorization
不懂envoyfilter也敢说精通istio系列-05-fault-filter-故障注入不止是vs
不懂envoyfilter也敢说精通istio系列-06-http-match-配置路由不只是vs
不懂envoyfilter也敢说精通istio系列-07-负载均衡配置不止是dr
不懂envoyfilter也敢说精通istio系列-08-连接池和断路器
不懂envoyfilter也敢说精通istio系列-09-http-route filter
不懂envoyfilter也敢说精通istio系列-network filter-redis proxy
不懂envoyfilter也敢说精通istio系列-network filter-HttpConnectionManager
不懂envoyfilter也敢说精通istio系列-ratelimit-istio ratelimit完全手册
————————————————
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
}