当前位置: 首页 > news >正文

建设银网站/站长工具使用方法

建设银网站,站长工具使用方法,湖南智能网站建设平台,如何做php分页网站欢迎关注我的公众号: 目前刚开始写一个月,一共写了18篇原创文章,文章目录如下: istio多集群探秘,部署了50次多集群后我得出的结论 istio多集群链路追踪,附实操视频 istio防故障利器,你知道几…

 欢迎关注我的公众号:

 目前刚开始写一个月,一共写了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完全手册

 

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

//创建auth命令
func NewCmdAuth(f cmdutil.Factory, streams genericclioptions.IOStreams) *cobra.Command {// Parent command to which all subcommands are added.cmds := &cobra.Command{//创建cobra命令Use:   "auth",Short: "Inspect authorization",Long:  `Inspect authorization`,Run:   cmdutil.DefaultSubCommandRun(streams.ErrOut),}cmds.AddCommand(NewCmdCanI(f, streams))//添加can-i子命令cmds.AddCommand(NewCmdReconcile(f, streams))//添加reconcile子命令return cmds
}
type CanIOptions struct {//can-i结构体AllNamespaces   boolQuiet           boolNoHeaders       boolNamespace       stringAuthClient      authorizationv1client.AuthorizationV1InterfaceDiscoveryClient discovery.DiscoveryInterfaceVerb           stringResource       schema.GroupVersionResourceNonResourceURL stringSubresource    stringResourceName   stringList           boolgenericclioptions.IOStreams
}
//创建can-i命令
func NewCmdCanI(f cmdutil.Factory, streams genericclioptions.IOStreams) *cobra.Command {o := &CanIOptions{//初始化结构体IOStreams: streams,}cmd := &cobra.Command{//创建cobra命令Use:                   "can-i VERB [TYPE | TYPE/NAME | NONRESOURCEURL]",DisableFlagsInUseLine: true,Short:                 "Check whether an action is allowed",Long:                  canILong,Example:               canIExample,Run: func(cmd *cobra.Command, args []string) {cmdutil.CheckErr(o.Complete(f, args))//准备cmdutil.CheckErr(o.Validate())//校验var err errorif o.List {//如果指定--listerr = o.RunAccessList()//运行list} else {var allowed boolallowed, err = o.RunAccessCheck()//运行checkif err == nil {if !allowed {os.Exit(1)}}}cmdutil.CheckErr(err)},}cmd.Flags().BoolVarP(&o.AllNamespaces, "all-namespaces", "A", o.AllNamespaces, "If true, check the specified action in all namespaces.")//all-namespaces选项cmd.Flags().BoolVarP(&o.Quiet, "quiet", "q", o.Quiet, "If true, suppress output and just return the exit code.")//quiet选项cmd.Flags().StringVar(&o.Subresource, "subresource", o.Subresource, "SubResource such as pod/log or deployment/scale")//subresource选项cmd.Flags().BoolVar(&o.List, "list", o.List, "If true, prints all allowed actions.")//list选项cmd.Flags().BoolVar(&o.NoHeaders, "no-headers", o.NoHeaders, "If true, prints allowed actions without headers")//no-headers选项return cmd
}
//准备
func (o *CanIOptions) Complete(f cmdutil.Factory, args []string) error {if o.List {//如果指定了--listif len(args) != 0 {//参数不等于0个报错return errors.New("list option must be specified with no arguments")}} else {if o.Quiet {//指定了quieto.Out = ioutil.Discard//设置out}switch len(args) {//判断参数个数case 2://为2个o.Verb = args[0]//第0个位动作if strings.HasPrefix(args[1], "/") {//第1个参数有/开头o.NonResourceURL = args[1]//设置非资源urlbreak}resourceTokens := strings.SplitN(args[1], "/", 2)//用/分割restMapper, err := f.ToRESTMapper()//获取restMapperif err != nil {return err}o.Resource = o.resourceFor(restMapper, resourceTokens[0])//设置资源if len(resourceTokens) > 1 {o.ResourceName = resourceTokens[1]//设置资源名称}default:return errors.New("you must specify two or three arguments: verb, resource, and optional resourceName")//报错}}var err errorclient, err := f.KubernetesClientSet()//获取clientsetif err != nil {return err}o.AuthClient = client.AuthorizationV1()//从clientset获取authCliento.DiscoveryClient = client.Discovery()//从clientset获取discoberyCliento.Namespace = ""//设置namespace为空if !o.AllNamespaces {//没有指定all-namespaceso.Namespace, _, err = f.ToRawKubeConfigLoader().Namespace()//设置namespaceif err != nil {return err}}return nil
}
//校验
func (o *CanIOptions) Validate() error {if o.List {//指定了listif o.Quiet || o.AllNamespaces || o.Subresource != "" {//list不能和这三个同时指定return errors.New("list option can't be specified with neither quiet, all-namespaces nor subresource options")}return nil}if o.NonResourceURL != "" {//指定了非资源urlif o.Subresource != "" {//不能同时指定子资源return fmt.Errorf("--subresource can not be used with NonResourceURL")}if o.Resource != (schema.GroupVersionResource{}) || o.ResourceName != "" {//不能同时指定资源名称return fmt.Errorf("NonResourceURL and ResourceName can not specified together")}} else if !o.Resource.Empty() && !o.AllNamespaces && o.DiscoveryClient != nil {if namespaced, err := isNamespaced(o.Resource, o.DiscoveryClient); err == nil && !namespaced {//判断资源是否集群范围if len(o.Resource.Group) == 0 {//输出告警fmt.Fprintf(o.ErrOut, "Warning: resource '%s' is not namespace scoped\n", o.Resource.Resource)} else {fmt.Fprintf(o.ErrOut, "Warning: resource '%s' is not namespace scoped in group '%s'\n", o.Resource.Resource, o.Resource.Group)}}}if o.NoHeaders {//no-headers必须和list同时指定return fmt.Errorf("--no-headers cannot be set without --list specified")}return nil
}
//执行list
func (o *CanIOptions) RunAccessList() error {sar := &authorizationv1.SelfSubjectRulesReview{//创建SelfSubjectRulesReviewSpec: authorizationv1.SelfSubjectRulesReviewSpec{Namespace: o.Namespace,},}response, err := o.AuthClient.SelfSubjectRulesReviews().Create(sar)//应用SelfSubjectRulesReview到服务端if err != nil {return err}return o.printStatus(response.Status)//输出结果
}
//执行check
func (o *CanIOptions) RunAccessCheck() (bool, error) {var sar *authorizationv1.SelfSubjectAccessReview//定义SelfSubjectAccessReviewif o.NonResourceURL == "" {//非资源url为空sar = &authorizationv1.SelfSubjectAccessReview{//创建SelfSubjectAccessReviewSpec: authorizationv1.SelfSubjectAccessReviewSpec{ResourceAttributes: &authorizationv1.ResourceAttributes{Namespace:   o.Namespace,Verb:        o.Verb,Group:       o.Resource.Group,Resource:    o.Resource.Resource,Subresource: o.Subresource,Name:        o.ResourceName,},},}} else {sar = &authorizationv1.SelfSubjectAccessReview{//创建SelfSubjectAccessReviewSpec: authorizationv1.SelfSubjectAccessReviewSpec{NonResourceAttributes: &authorizationv1.NonResourceAttributes{Verb: o.Verb,Path: o.NonResourceURL,},},}}response, err := o.AuthClient.SelfSubjectAccessReviews().Create(sar)//应用SelfSubjectAccessReview到服务端if err != nil {return false, err}if response.Status.Allowed {//结果为allowed打印yesfmt.Fprintln(o.Out, "yes")} else {fmt.Fprint(o.Out, "no")//打印noif len(response.Status.Reason) > 0 {//打印reasonfmt.Fprintf(o.Out, " - %v", response.Status.Reason)}if len(response.Status.EvaluationError) > 0 {//打印EvaluationErrorfmt.Fprintf(o.Out, " - %v", response.Status.EvaluationError)}fmt.Fprintln(o.Out)}return response.Status.Allowed, nil
}

http://www.lbrq.cn/news/1591597.html

相关文章:

  • 做网站主机要求/网站底部友情链接代码
  • 沧州网络公司科技/seowhy官网
  • 北京电商购物网站开发/郑州网站开发公司
  • 深圳H5网站开发/百度竞价推广关键词优化
  • 南宁做棋牌网站的公司/软文写作技巧
  • 苹果做ppt模板下载网站有哪些/正规网络推广服务
  • 网站页面怎么做的好看/seo课程培训班费用
  • 网站怎么做短信营销/网络营销系统
  • 成都网站建设zmcms/seo网站快排
  • 网站右键禁止/谷歌推广怎么做
  • 南昌网站建设模板下载网址/抖音企业推广
  • 网站建设外包价格/百度手机快速排名点击软件
  • 广州做网站 timhi/网络营销平台的主要功能
  • 上传到网站/苏州企业网站关键词优化
  • 建设路第3小学网站电话/贴吧推广400一个月
  • 怎么创建公司网站空间/运用搜索引擎营销的案例
  • 专业的微网站哪家好/快速网站排名提升工具
  • 广州易网外贸网站建设/最近三天的新闻大事国内
  • 虚拟网站建设/企业网站建设公司
  • 网站开发需要用到哪些软件有哪些/营业推广方式
  • 营销型网站设计特点/太原网站建设优化
  • 做购物网站哪家公司好/北京seo收费
  • mac做网站/商业计划书
  • 网络文化经营许可证申请/seo外链友情链接
  • 专业做商铺的网站/百度指数工具
  • 影视播放网站建设/免费网站大全下载
  • 我国政府门户网站的建设情况/关键词指数查询
  • 美橙网站注册/网上商城建设
  • vue开发自适应网站/长春关键词优化排名
  • 长沙网站免费建站/青岛百度整站优化服务
  • VC6800智能相机:赋能智能制造,开启AI视觉新纪元
  • UE5多人MOBA+GAS 39、制作角色上半身UI
  • 大数据存储域——HDFS存储系统
  • Linux基础命令的生产常用命令及其示例简单解释
  • Apache OFBiz Scrum 组件命令注入漏洞
  • 从exec到Shell:深度解析Linux进程等待,程序替换与自主Shell实现