[{"data":1,"prerenderedAt":326},["ShallowReactive",2],{"site-data":3,"article-118":143,"article-show-hot-118":171,"article-show-new-118":261},{"settings":4,"categorys":35,"tree":97,"models":118,"search_model_select":128,"nav_list":130},{"changefreq":5,"changyan_app_id":6,"changyan_app_key":6,"copy":7,"description":8,"editor":9,"file":6,"guest_feedback":10,"head_html":6,"icp":11,"index_banner":12,"index_banner_bg":13,"is_excel":14,"is_watermark":10,"keywords":15,"links":16,"logo":17,"lzcms_banner":6,"lzcms_banner_link":18,"member_register_enabled":14,"qq_app_id":6,"qq_app_key":6,"qr_code":6,"search_model":19,"site_closedreason":6,"site_idea":6,"site_idea1":20,"site_idea2":21,"site_idea3":22,"site_name":23,"site_statistice":6,"site_status":14,"site_url":18,"sitemap_model":19,"stationmaster_motto":24,"stationmaster_name":25,"stationmaster_occupation":26,"stationmaster_qq":27,"stationmaster_qqnet":28,"stationmaster_qqnet_code":29,"threshold":14,"title_add":30,"watermark":6,"watermark_alpha":31,"watermark_height":32,"watermark_locate":33,"watermark_width":34},"weekly","","版权所有 © \u003Ca class=\"site_url\" href=\"https://zhl123.com\">2026 zhl123.com\u003C/a>","linux、Python、mysql、docker、k8s技术交流","layedit","0","粤ICP备15054664号-1","/uploads/images/20181109/7a86191de8b8bb60e9c6b54d8b27c5cc.jpg","#xe604","1","linux、Python、mysql、docker、k8s","{\"1\":{\"id\":\"1\",\"link_url\":\"https://linux.org\",\"logo\":\"\",\"name\":\"linux\",\"sort\":\"0\",\"status\":\"1\"}}","/uploads/images/20181109/e7305012448aed257176dd591846f50a.png","https://zhl123.com","2","学无止境\n学习，探索，研究，从不了解到了解，从无知到掌握，到灵活运用，在不断的学习中加深认识。由浅入深，由表及里。","业精于勤\n“业精于勤荒于嬉”，精深的业技靠的是勤学、刻苦努力，靠的是争分夺秒的勤学苦练才会有精深的技术。得在认真，失在随便。","工匠精神\n精益求精，注重细节，追求完美和极致，不惜花费时间精力，孜孜不倦，反复改进产品，把99%提高到99.99%。","linux","业精于勤、学无止境、工匠精神","廖地金","高级Linux运维工程师","1256636645","592958303","\u003Ca target=\"_blank\" href=\"//shang.qq.com/wpa/qunwpa?idkey=09be7d1a682073783fd636102e666393169b8a8aac8f3393da1de57bcaa821a0\">\u003Cimg border=\"0\" src=\"//pub.idqqimg.com/wpa/images/group.png\" alt=\"Linux技术\" title=\"Linux技术\">\u003C/a>"," | Python | mysql | docker | k8s 技术交流","100","300","9","500",{"0":36,"17":51,"18":60,"19":63,"20":67,"21":71,"22":76,"25":80,"26":83,"27":89,"29":94},{"children":37},{"0":38,"25":43,"26":48},[39,40,41,42],25,21,22,26,[44,45,46,47],17,18,19,20,[49,50],27,29,{"create_time":6,"description":6,"id":44,"image_url":6,"index_template":52,"is_cover":53,"is_menu":53,"keywords":6,"list_template":54,"model_code":55,"model_id":56,"model_name":57,"name":23,"parent_id":39,"seo_description":6,"seo_keywords":6,"seo_title":6,"show_template":58,"sort":53,"subtitle":6,"update_time":6,"url":59},"index",1,"list","article",2,"文章模型","show","/article/lists?category_id=17",{"create_time":6,"description":6,"id":45,"image_url":6,"index_template":52,"is_cover":53,"is_menu":53,"keywords":6,"list_template":54,"model_code":55,"model_id":56,"model_name":57,"name":61,"parent_id":39,"seo_description":6,"seo_keywords":6,"seo_title":6,"show_template":58,"sort":56,"subtitle":6,"update_time":6,"url":62},"python","/article/lists?category_id=18",{"create_time":6,"description":6,"id":46,"image_url":6,"index_template":52,"is_cover":53,"is_menu":53,"keywords":6,"list_template":54,"model_code":55,"model_id":56,"model_name":57,"name":64,"parent_id":39,"seo_description":6,"seo_keywords":6,"seo_title":6,"show_template":58,"sort":65,"subtitle":6,"update_time":6,"url":66},"容器技术",3,"/article/lists?category_id=19",{"create_time":6,"description":6,"id":47,"image_url":6,"index_template":52,"is_cover":53,"is_menu":53,"keywords":6,"list_template":54,"model_code":55,"model_id":56,"model_name":57,"name":68,"parent_id":39,"seo_description":6,"seo_keywords":6,"seo_title":6,"show_template":58,"sort":69,"subtitle":6,"update_time":6,"url":70},"负载均衡",4,"/article/lists?category_id=20",{"create_time":6,"description":6,"id":40,"image_url":6,"index_template":52,"is_cover":53,"is_menu":53,"keywords":6,"list_template":54,"model_code":55,"model_id":56,"model_name":57,"name":72,"parent_id":73,"seo_description":6,"seo_keywords":6,"seo_title":6,"show_template":58,"sort":74,"subtitle":6,"update_time":6,"url":75},"分享无价",0,5,"/article/lists?category_id=21",{"create_time":6,"description":6,"id":41,"image_url":6,"index_template":52,"is_cover":53,"is_menu":53,"keywords":6,"list_template":54,"model_code":55,"model_id":56,"model_name":57,"name":77,"parent_id":73,"seo_description":6,"seo_keywords":6,"seo_title":6,"show_template":58,"sort":78,"subtitle":6,"update_time":6,"url":79},"随笔",6,"/article/lists?category_id=22",{"create_time":6,"description":6,"id":39,"image_url":6,"index_template":52,"is_cover":53,"is_menu":53,"keywords":6,"list_template":54,"model_code":55,"model_id":56,"model_name":57,"name":81,"parent_id":73,"seo_description":6,"seo_keywords":6,"seo_title":6,"show_template":58,"sort":73,"subtitle":6,"update_time":6,"url":82},"学无止境","/article/lists?category_id=25",{"create_time":6,"description":6,"id":42,"image_url":6,"index_template":52,"is_cover":53,"is_menu":53,"keywords":6,"list_template":54,"model_code":84,"model_id":65,"model_name":85,"name":86,"parent_id":73,"seo_description":6,"seo_keywords":6,"seo_title":6,"show_template":58,"sort":87,"subtitle":6,"update_time":6,"url":88},"picture","图集模型","关于",8,"/picture/lists?category_id=26",{"create_time":6,"description":6,"id":49,"image_url":6,"index_template":52,"is_cover":53,"is_menu":73,"keywords":6,"list_template":54,"model_code":90,"model_id":53,"model_name":91,"name":92,"parent_id":42,"seo_description":6,"seo_keywords":6,"seo_title":6,"show_template":58,"sort":47,"subtitle":6,"update_time":6,"url":93},"page","单页模型","关于博主","/page/27",{"create_time":6,"description":6,"id":50,"image_url":6,"index_template":52,"is_cover":73,"is_menu":73,"keywords":6,"list_template":54,"model_id":73,"name":95,"parent_id":42,"seo_description":6,"seo_keywords":6,"seo_title":6,"show_template":58,"sort":47,"subtitle":6,"update_time":6,"url":96},"留言","/feedback",[98,108,110,112],{"children":99,"create_time":6,"description":6,"id":39,"image_url":6,"index_template":52,"is_cover":53,"is_menu":53,"keywords":6,"list_template":54,"model_code":55,"model_id":56,"model_name":57,"name":81,"parent_id":73,"seo_description":6,"seo_keywords":6,"seo_title":6,"show_template":58,"sort":73,"subtitle":6,"update_time":6,"url":82},[100,102,104,106],{"children":101,"create_time":6,"description":6,"id":44,"image_url":6,"index_template":52,"is_cover":53,"is_menu":53,"keywords":6,"list_template":54,"model_code":55,"model_id":56,"model_name":57,"name":23,"parent_id":39,"seo_description":6,"seo_keywords":6,"seo_title":6,"show_template":58,"sort":53,"subtitle":6,"update_time":6,"url":59},[],{"children":103,"create_time":6,"description":6,"id":45,"image_url":6,"index_template":52,"is_cover":53,"is_menu":53,"keywords":6,"list_template":54,"model_code":55,"model_id":56,"model_name":57,"name":61,"parent_id":39,"seo_description":6,"seo_keywords":6,"seo_title":6,"show_template":58,"sort":56,"subtitle":6,"update_time":6,"url":62},[],{"children":105,"create_time":6,"description":6,"id":46,"image_url":6,"index_template":52,"is_cover":53,"is_menu":53,"keywords":6,"list_template":54,"model_code":55,"model_id":56,"model_name":57,"name":64,"parent_id":39,"seo_description":6,"seo_keywords":6,"seo_title":6,"show_template":58,"sort":65,"subtitle":6,"update_time":6,"url":66},[],{"children":107,"create_time":6,"description":6,"id":47,"image_url":6,"index_template":52,"is_cover":53,"is_menu":53,"keywords":6,"list_template":54,"model_code":55,"model_id":56,"model_name":57,"name":68,"parent_id":39,"seo_description":6,"seo_keywords":6,"seo_title":6,"show_template":58,"sort":69,"subtitle":6,"update_time":6,"url":70},[],{"children":109,"create_time":6,"description":6,"id":40,"image_url":6,"index_template":52,"is_cover":53,"is_menu":53,"keywords":6,"list_template":54,"model_code":55,"model_id":56,"model_name":57,"name":72,"parent_id":73,"seo_description":6,"seo_keywords":6,"seo_title":6,"show_template":58,"sort":74,"subtitle":6,"update_time":6,"url":75},[],{"children":111,"create_time":6,"description":6,"id":41,"image_url":6,"index_template":52,"is_cover":53,"is_menu":53,"keywords":6,"list_template":54,"model_code":55,"model_id":56,"model_name":57,"name":77,"parent_id":73,"seo_description":6,"seo_keywords":6,"seo_title":6,"show_template":58,"sort":78,"subtitle":6,"update_time":6,"url":79},[],{"children":113,"create_time":6,"description":6,"id":42,"image_url":6,"index_template":52,"is_cover":53,"is_menu":53,"keywords":6,"list_template":54,"model_code":84,"model_id":65,"model_name":85,"name":86,"parent_id":73,"seo_description":6,"seo_keywords":6,"seo_title":6,"show_template":58,"sort":87,"subtitle":6,"update_time":6,"url":88},[114,116],{"children":115,"create_time":6,"description":6,"id":49,"image_url":6,"index_template":52,"is_cover":53,"is_menu":73,"keywords":6,"list_template":54,"model_code":90,"model_id":53,"model_name":91,"name":92,"parent_id":42,"seo_description":6,"seo_keywords":6,"seo_title":6,"show_template":58,"sort":47,"subtitle":6,"update_time":6,"url":93},[],{"children":117,"create_time":6,"description":6,"id":50,"image_url":6,"index_template":52,"is_cover":73,"is_menu":73,"keywords":6,"list_template":54,"model_id":73,"name":95,"parent_id":42,"seo_description":6,"seo_keywords":6,"seo_title":6,"show_template":58,"sort":47,"subtitle":6,"update_time":6,"url":96},[],{"1":119,"2":120,"3":121,"4":122,"5":125},{"id":53,"index_template":52,"list_template":54,"name":91,"show_template":58,"status":73,"tablename":90},{"id":56,"index_template":52,"list_template":54,"name":57,"show_template":58,"status":73,"tablename":55},{"id":65,"index_template":52,"list_template":54,"name":85,"show_template":58,"status":73,"tablename":84},{"id":69,"index_template":52,"list_template":54,"name":123,"show_template":58,"status":73,"tablename":124},"链接模型","link",{"id":74,"index_template":52,"list_template":54,"name":126,"show_template":58,"status":73,"tablename":127},"下载模型","download",[129],{"id":56,"name":57,"tablename":55},[131,137,139,141],{"children":132,"create_time":6,"description":6,"id":39,"image_url":6,"index_template":52,"is_cover":53,"is_menu":53,"keywords":6,"list_template":54,"model_code":55,"model_id":56,"model_name":57,"name":81,"parent_id":73,"seo_description":6,"seo_keywords":6,"seo_title":6,"show_template":58,"sort":73,"subtitle":6,"update_time":6,"url":82},[133,134,135,136],{"create_time":6,"description":6,"id":44,"image_url":6,"index_template":52,"is_cover":53,"is_menu":53,"keywords":6,"list_template":54,"model_code":55,"model_id":56,"model_name":57,"name":23,"parent_id":39,"seo_description":6,"seo_keywords":6,"seo_title":6,"show_template":58,"sort":53,"subtitle":6,"update_time":6,"url":59},{"create_time":6,"description":6,"id":45,"image_url":6,"index_template":52,"is_cover":53,"is_menu":53,"keywords":6,"list_template":54,"model_code":55,"model_id":56,"model_name":57,"name":61,"parent_id":39,"seo_description":6,"seo_keywords":6,"seo_title":6,"show_template":58,"sort":56,"subtitle":6,"update_time":6,"url":62},{"create_time":6,"description":6,"id":46,"image_url":6,"index_template":52,"is_cover":53,"is_menu":53,"keywords":6,"list_template":54,"model_code":55,"model_id":56,"model_name":57,"name":64,"parent_id":39,"seo_description":6,"seo_keywords":6,"seo_title":6,"show_template":58,"sort":65,"subtitle":6,"update_time":6,"url":66},{"create_time":6,"description":6,"id":47,"image_url":6,"index_template":52,"is_cover":53,"is_menu":53,"keywords":6,"list_template":54,"model_code":55,"model_id":56,"model_name":57,"name":68,"parent_id":39,"seo_description":6,"seo_keywords":6,"seo_title":6,"show_template":58,"sort":69,"subtitle":6,"update_time":6,"url":70},{"children":138,"create_time":6,"description":6,"id":40,"image_url":6,"index_template":52,"is_cover":53,"is_menu":53,"keywords":6,"list_template":54,"model_code":55,"model_id":56,"model_name":57,"name":72,"parent_id":73,"seo_description":6,"seo_keywords":6,"seo_title":6,"show_template":58,"sort":74,"subtitle":6,"update_time":6,"url":75},[],{"children":140,"create_time":6,"description":6,"id":41,"image_url":6,"index_template":52,"is_cover":53,"is_menu":53,"keywords":6,"list_template":54,"model_code":55,"model_id":56,"model_name":57,"name":77,"parent_id":73,"seo_description":6,"seo_keywords":6,"seo_title":6,"show_template":58,"sort":78,"subtitle":6,"update_time":6,"url":79},[],{"children":142,"create_time":6,"description":6,"id":42,"image_url":6,"index_template":52,"is_cover":53,"is_menu":53,"keywords":6,"list_template":54,"model_code":84,"model_id":65,"model_name":85,"name":86,"parent_id":73,"seo_description":6,"seo_keywords":6,"seo_title":6,"show_template":58,"sort":87,"subtitle":6,"update_time":6,"url":88},[],{"article":144,"breadcrumb":154,"category":158,"next":159,"prev":162,"second_categorys":165,"seo":170},{"id":145,"category_id":44,"title":146,"keywords":6,"description":147,"image_url":6,"content":148,"content_md":149,"url":150,"hits":151,"is_recommend":73,"is_top":73,"create_time":152,"update_time":153},118,"GitOps 落地实践：ArgoCD + Kustomize 实现声明式基础设施管理(二)","四、最佳实践和注意事项4.1 最佳实践4.1.1 性能优化优化点一：减少 Git 轮询频率# argocd-cm ConfigMapapiVersion:&nbsp;v1kind:&nbsp;ConfigMapmetadata:&nbsp;&nbsp;name:&nbsp;argocd-cm&nbsp;&nbsp;namespace:&nbsp;argocddata:&nbsp;&nbsp;timeout.reconciliation:&nbsp;300s&nbsp;&nbsp;# 默认 180","\u003Ch2 data-tool=\"mdnice编辑器\">\u003Cspan class=\"js_darkmode__224\">\u003Cspan leaf=\"\">四、最佳实践和注意事项\u003C/span>\u003C/span>\u003C/h2>\u003Ch3 data-tool=\"mdnice编辑器\">\u003Cspan class=\"js_darkmode__225\">\u003Cspan leaf=\"\">4.1 最佳实践\u003C/span>\u003C/span>\u003C/h3>\u003Ch4 data-tool=\"mdnice编辑器\">\u003Cspan class=\"js_darkmode__226\">\u003Cspan leaf=\"\">4.1.1 性能优化\u003C/span>\u003C/span>\u003C/h4>\u003Cul class=\"list-paddingleft-1 js_darkmode__227\">\u003Cli>\u003Csection class=\"js_darkmode__228\">\u003Cp class=\"js_darkmode__229\">\u003Cstrong class=\"js_darkmode__230\">优化点一：减少 Git 轮询频率\u003C/strong>\u003C/p>\u003Cpre class=\"js_darkmode__231\">\u003Cspan data-cacheurl=\"\" data-remoteid=\"\" data-lazy-bgimg=\"https://mmbiz.qpic.cn/mmbiz_svg/vtnuMBibofcZATzCe7PsSEv0icicaBiccYwMleH3MZcNOqopQtIiauqbyba8ibOgZMWh5pATeHUkXz3zPZCRJTiaSpQ5RGLEGvJtxlD/640?wx_fmt=svg&amp;from=appmsg\" class=\"js_darkmode__bg__20 js_darkmode__232\" data-fail=\"0\">\u003C/span>\u003Ccode class=\"js_darkmode__233\">\u003Cspan class=\"js_darkmode__234\"># argocd-cm ConfigMap\u003C/span>\u003Cbr>\u003Cspan>apiVersion:\u003C/span>\u003Cspan leaf=\"\">&nbsp;\u003C/span>\u003Cspan>v1\u003C/span>\u003Cbr>\u003Cspan>kind:\u003C/span>\u003Cspan leaf=\"\">&nbsp;\u003C/span>\u003Cspan>ConfigMap\u003C/span>\u003Cbr>\u003Cspan>metadata:\u003C/span>\u003Cbr>\u003Cspan leaf=\"\">&nbsp;&nbsp;\u003C/span>\u003Cspan>name:\u003C/span>\u003Cspan leaf=\"\">&nbsp;\u003C/span>\u003Cspan>argocd-cm\u003C/span>\u003Cbr>\u003Cspan leaf=\"\">&nbsp;&nbsp;\u003C/span>\u003Cspan>namespace:\u003C/span>\u003Cspan leaf=\"\">&nbsp;\u003C/span>\u003Cspan>argocd\u003C/span>\u003Cbr>\u003Cspan>data:\u003C/span>\u003Cbr>\u003Cspan leaf=\"\">&nbsp;&nbsp;\u003C/span>\u003Cspan>timeout.reconciliation:\u003C/span>\u003Cspan leaf=\"\">&nbsp;\u003C/span>\u003Cspan>300s\u003C/span>\u003Cspan leaf=\"\">&nbsp;&nbsp;\u003C/span>\u003Cspan class=\"js_darkmode__235\"># 默认 180s，大规模集群建议 300s+\u003C/span>\u003Cbr>\u003Cspan leaf=\"\">&nbsp;&nbsp;\u003C/span>\u003Cspan>timeout.reconciliation.jitter:\u003C/span>\u003Cspan leaf=\"\">&nbsp;\u003C/span>\u003Cspan>30s\u003C/span>\u003Cbr>\u003C/code>\u003C/pre>\u003Cp class=\"js_darkmode__236\">\u003Cspan leaf=\"\">说明：默认每 3 分钟轮询一次 Git 仓库，大规模部署建议延长间隔并配置 Webhook 实现事件驱动同步。\u003C/span>\u003C/p>\u003C/section>\u003C/li>\u003Cli>\u003Csection class=\"js_darkmode__237\">\u003Cp class=\"js_darkmode__238\">\u003Cstrong class=\"js_darkmode__239\">优化点二：启用资源缓存\u003C/strong>\u003C/p>\u003Cpre class=\"js_darkmode__240\">\u003Cspan data-cacheurl=\"\" data-remoteid=\"\" data-lazy-bgimg=\"https://mmbiz.qpic.cn/mmbiz_svg/vtnuMBibofcZATzCe7PsSEv0icicaBiccYwMleH3MZcNOqopQtIiauqbyba8ibOgZMWh5pATeHUkXz3zPZCRJTiaSpQ5RGLEGvJtxlD/640?wx_fmt=svg&amp;from=appmsg\" class=\"js_darkmode__bg__21 js_darkmode__241\" data-fail=\"0\">\u003C/span>\u003Ccode class=\"js_darkmode__242\">\u003Cspan class=\"js_darkmode__243\"># 编辑 argocd-application-controller StatefulSet\u003C/span>\u003Cbr>\u003Cspan leaf=\"\">kubectl edit statefulset argocd-application-controller -n argocd\u003C/span>\u003Cbr>\u003Cspan class=\"js_darkmode__244\"># 添加环境变量\u003C/span>\u003Cbr>\u003Cspan leaf=\"\">env:\u003C/span>\u003Cbr>\u003Cspan leaf=\"\">- name: ARGOCD_APPLICATION_CONTROLLER_REPLICAS\u003C/span>\u003Cbr>\u003Cspan leaf=\"\">&nbsp; value:&nbsp;\u003C/span>\u003Cspan>\"3\"\u003C/span>\u003Cbr>\u003Cspan leaf=\"\">- name: ARGOCD_APPLICATION_CONTROLLER_SHARD\u003C/span>\u003Cbr>\u003Cspan leaf=\"\">&nbsp; valueFrom:\u003C/span>\u003Cbr>\u003Cspan leaf=\"\">&nbsp; &nbsp; fieldRef:\u003C/span>\u003Cbr>\u003Cspan leaf=\"\">&nbsp; &nbsp; &nbsp; fieldPath: metadata.name\u003C/span>\u003Cbr>\u003C/code>\u003C/pre>\u003C/section>\u003C/li>\u003Cul class=\"list-paddingleft-1 js_darkmode__245\">\u003Cli>\u003Csection class=\"js_darkmode__246\">\u003Cspan leaf=\"\">配置 Redis HA 提升缓存性能\u003C/span>\u003C/section>\u003C/li>\u003Cli>\u003Csection class=\"js_darkmode__247\">\u003Cspan leaf=\"\">启用 Application Controller 分片（处理 1000+ Application）\u003C/span>\u003C/section>\u003C/li>\u003C/ul>\u003Cli>\u003Csection class=\"js_darkmode__248\">\u003Cp class=\"js_darkmode__249\">\u003Cstrong class=\"js_darkmode__250\">优化点三：优化 Diff 计算\u003C/strong>\u003C/p>\u003Cpre class=\"js_darkmode__251\">\u003Cspan data-cacheurl=\"\" data-remoteid=\"\" data-lazy-bgimg=\"https://mmbiz.qpic.cn/mmbiz_svg/vtnuMBibofcZATzCe7PsSEv0icicaBiccYwMleH3MZcNOqopQtIiauqbyba8ibOgZMWh5pATeHUkXz3zPZCRJTiaSpQ5RGLEGvJtxlD/640?wx_fmt=svg&amp;from=appmsg\" class=\"js_darkmode__bg__22 js_darkmode__252\" data-fail=\"0\">\u003C/span>\u003Ccode class=\"js_darkmode__253\">\u003Cspan class=\"js_darkmode__254\"># Application 配置\u003C/span>\u003Cbr>\u003Cspan>spec:\u003C/span>\u003Cbr>\u003Cspan leaf=\"\">&nbsp;&nbsp;\u003C/span>\u003Cspan>ignoreDifferences:\u003C/span>\u003Cbr>\u003Cspan leaf=\"\">&nbsp;&nbsp;\u003C/span>\u003Cspan>-\u003C/span>\u003Cspan leaf=\"\">&nbsp;\u003C/span>\u003Cspan>group:\u003C/span>\u003Cspan leaf=\"\">&nbsp;\u003C/span>\u003Cspan>apps\u003C/span>\u003Cbr>\u003Cspan leaf=\"\">&nbsp; &nbsp;&nbsp;\u003C/span>\u003Cspan>kind:\u003C/span>\u003Cspan leaf=\"\">&nbsp;\u003C/span>\u003Cspan>Deployment\u003C/span>\u003Cbr>\u003Cspan leaf=\"\">&nbsp; &nbsp;&nbsp;\u003C/span>\u003Cspan>jsonPointers:\u003C/span>\u003Cbr>\u003Cspan leaf=\"\">&nbsp; &nbsp;&nbsp;\u003C/span>\u003Cspan>-\u003C/span>\u003Cspan leaf=\"\">&nbsp;\u003C/span>\u003Cspan>/spec/replicas\u003C/span>\u003Cspan leaf=\"\">&nbsp;&nbsp;\u003C/span>\u003Cspan class=\"js_darkmode__255\"># 忽略 HPA 自动调整的副本数\u003C/span>\u003Cbr>\u003Cspan leaf=\"\">&nbsp;&nbsp;\u003C/span>\u003Cspan>-\u003C/span>\u003Cspan leaf=\"\">&nbsp;\u003C/span>\u003Cspan>group:\u003C/span>\u003Cspan leaf=\"\">&nbsp;\u003C/span>\u003Cspan>\"\"\u003C/span>\u003Cbr>\u003Cspan leaf=\"\">&nbsp; &nbsp;&nbsp;\u003C/span>\u003Cspan>kind:\u003C/span>\u003Cspan leaf=\"\">&nbsp;\u003C/span>\u003Cspan>Secret\u003C/span>\u003Cbr>\u003Cspan leaf=\"\">&nbsp; &nbsp;&nbsp;\u003C/span>\u003Cspan>jsonPointers:\u003C/span>\u003Cbr>\u003Cspan leaf=\"\">&nbsp; &nbsp;&nbsp;\u003C/span>\u003Cspan>-\u003C/span>\u003Cspan leaf=\"\">&nbsp;\u003C/span>\u003Cspan>/data\u003C/span>\u003Cspan leaf=\"\">&nbsp;&nbsp;\u003C/span>\u003Cspan class=\"js_darkmode__256\"># 忽略 External Secrets Operator 动态更新\u003C/span>\u003Cbr>\u003C/code>\u003C/pre>\u003C/section>\u003C/li>\u003C/ul>\u003Ch4 data-tool=\"mdnice编辑器\">\u003Cspan class=\"js_darkmode__257\">\u003Cspan leaf=\"\">4.1.2 安全加固\u003C/span>\u003C/span>\u003C/h4>\u003Cul class=\"list-paddingleft-1 js_darkmode__258\">\u003Cli>\u003Csection class=\"js_darkmode__259\">\u003Cp class=\"js_darkmode__260\">\u003Cstrong class=\"js_darkmode__261\">安全措施一：限制资源权限\u003C/strong>\u003C/p>\u003Cpre class=\"js_darkmode__262\">\u003Cspan data-cacheurl=\"\" data-remoteid=\"\" data-lazy-bgimg=\"https://mmbiz.qpic.cn/mmbiz_svg/vtnuMBibofcZATzCe7PsSEv0icicaBiccYwMleH3MZcNOqopQtIiauqbyba8ibOgZMWh5pATeHUkXz3zPZCRJTiaSpQ5RGLEGvJtxlD/640?wx_fmt=svg&amp;from=appmsg\" class=\"js_darkmode__bg__23 js_darkmode__263\" data-fail=\"0\">\u003C/span>\u003Ccode class=\"js_darkmode__264\">\u003Cspan class=\"js_darkmode__265\"># AppProject 白名单机制\u003C/span>\u003Cbr>\u003Cspan>spec:\u003C/span>\u003Cbr>\u003Cspan leaf=\"\">&nbsp;&nbsp;\u003C/span>\u003Cspan>clusterResourceWhitelist:\u003C/span>\u003Cbr>\u003Cspan leaf=\"\">&nbsp;&nbsp;\u003C/span>\u003Cspan>-\u003C/span>\u003Cspan leaf=\"\">&nbsp;\u003C/span>\u003Cspan>group:\u003C/span>\u003Cspan leaf=\"\">&nbsp;\u003C/span>\u003Cspan>''\u003C/span>\u003Cbr>\u003Cspan leaf=\"\">&nbsp; &nbsp;&nbsp;\u003C/span>\u003Cspan>kind:\u003C/span>\u003Cspan leaf=\"\">&nbsp;\u003C/span>\u003Cspan>Namespace\u003C/span>\u003Cbr>\u003Cspan leaf=\"\">&nbsp;&nbsp;\u003C/span>\u003Cspan>clusterResourceBlacklist:\u003C/span>\u003Cbr>\u003Cspan leaf=\"\">&nbsp;&nbsp;\u003C/span>\u003Cspan>-\u003C/span>\u003Cspan leaf=\"\">&nbsp;\u003C/span>\u003Cspan>group:\u003C/span>\u003Cspan leaf=\"\">&nbsp;\u003C/span>\u003Cspan>''\u003C/span>\u003Cbr>\u003Cspan leaf=\"\">&nbsp; &nbsp;&nbsp;\u003C/span>\u003Cspan>kind:\u003C/span>\u003Cspan leaf=\"\">&nbsp;\u003C/span>\u003Cspan>ResourceQuota\u003C/span>\u003Cbr>\u003Cspan leaf=\"\">&nbsp;&nbsp;\u003C/span>\u003Cspan>-\u003C/span>\u003Cspan leaf=\"\">&nbsp;\u003C/span>\u003Cspan>group:\u003C/span>\u003Cspan leaf=\"\">&nbsp;\u003C/span>\u003Cspan>'rbac.authorization.k8s.io'\u003C/span>\u003Cbr>\u003Cspan leaf=\"\">&nbsp; &nbsp;&nbsp;\u003C/span>\u003Cspan>kind:\u003C/span>\u003Cspan leaf=\"\">&nbsp;\u003C/span>\u003Cspan>ClusterRole\u003C/span>\u003Cbr>\u003C/code>\u003C/pre>\u003Cp class=\"js_darkmode__266\">\u003Cspan leaf=\"\">说明：禁止应用创建 ClusterRole、PersistentVolume 等集群级资源，防止权限提升。\u003C/span>\u003C/p>\u003C/section>\u003C/li>\u003Cli>\u003Csection class=\"js_darkmode__267\">\u003Cp class=\"js_darkmode__268\">\u003Cstrong class=\"js_darkmode__269\">安全措施二：启用 Admission Webhook\u003C/strong>\u003C/p>\u003Cpre class=\"js_darkmode__270\">\u003Cspan data-cacheurl=\"\" data-remoteid=\"\" data-lazy-bgimg=\"https://mmbiz.qpic.cn/mmbiz_svg/vtnuMBibofcZATzCe7PsSEv0icicaBiccYwMleH3MZcNOqopQtIiauqbyba8ibOgZMWh5pATeHUkXz3zPZCRJTiaSpQ5RGLEGvJtxlD/640?wx_fmt=svg&amp;from=appmsg\" class=\"js_darkmode__bg__24 js_darkmode__271\" data-fail=\"0\">\u003C/span>\u003Ccode class=\"js_darkmode__272\">\u003Cspan class=\"js_darkmode__273\"># argocd-cm ConfigMap\u003C/span>\u003Cbr>\u003Cspan>data:\u003C/span>\u003Cbr>\u003Cspan leaf=\"\">&nbsp;&nbsp;\u003C/span>\u003Cspan>resource.customizations:\u003C/span>\u003Cspan leaf=\"\">&nbsp;\u003C/span>\u003Cspan>\u003Cspan leaf=\"\">|\u003C/span>\u003Cbr>\u003Cspan leaf=\"\">&nbsp; &nbsp; admissionregistration.k8s.io/MutatingWebhookConfiguration:\u003C/span>\u003Cbr>\u003Cspan leaf=\"\">&nbsp; &nbsp; &nbsp; health.lua: |\u003C/span>\u003Cbr>\u003Cspan leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp; hs = {}\u003C/span>\u003Cbr>\u003Cspan leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp; hs.status = \"Healthy\"\u003C/span>\u003Cbr>\u003Cspan leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp; return hs\u003C/span>\u003Cbr>\u003C/span>\u003C/code>\u003C/pre>\u003Cp class=\"js_darkmode__274\">\u003Cspan leaf=\"\">配合 OPA Gatekeeper 或 Kyverno 实现策略即代码，拦截不合规资源。\u003C/span>\u003C/p>\u003C/section>\u003C/li>\u003Cli>\u003Csection class=\"js_darkmode__275\">\u003Cp class=\"js_darkmode__276\">\u003Cstrong class=\"js_darkmode__277\">安全措施三：Git 签名验证\u003C/strong>\u003C/p>\u003Cpre class=\"js_darkmode__278\">\u003Cspan data-cacheurl=\"\" data-remoteid=\"\" data-lazy-bgimg=\"https://mmbiz.qpic.cn/mmbiz_svg/vtnuMBibofcZATzCe7PsSEv0icicaBiccYwMleH3MZcNOqopQtIiauqbyba8ibOgZMWh5pATeHUkXz3zPZCRJTiaSpQ5RGLEGvJtxlD/640?wx_fmt=svg&amp;from=appmsg\" class=\"js_darkmode__bg__25 js_darkmode__279\" data-fail=\"0\">\u003C/span>\u003Ccode class=\"js_darkmode__280\">\u003Cspan class=\"js_darkmode__281\"># 启用 GPG 签名验证\u003C/span>\u003Cbr>\u003Cspan leaf=\"\">argocd repo add https://github.com/your-org/your-repo.git \\\u003C/span>\u003Cbr>\u003Cspan leaf=\"\">&nbsp; --username git \\\u003C/span>\u003Cbr>\u003Cspan leaf=\"\">&nbsp; --password&nbsp;\u003C/span>\u003Cspan>$TOKEN\u003C/span>\u003Cspan leaf=\"\">&nbsp;\\\u003C/span>\u003Cbr>\u003Cspan leaf=\"\">&nbsp; --\u003C/span>\u003Cspan>enable\u003C/span>\u003Cspan leaf=\"\">-lfs \\\u003C/span>\u003Cbr>\u003Cspan leaf=\"\">&nbsp; --gpg-key-id 0x1234567890ABCDEF\u003C/span>\u003Cbr>\u003C/code>\u003C/pre>\u003C/section>\u003C/li>\u003C/ul>\u003Ch4 data-tool=\"mdnice编辑器\">\u003Cspan class=\"js_darkmode__282\">\u003Cspan leaf=\"\">4.1.3 高可用配置\u003C/span>\u003C/span>\u003C/h4>\u003Cul class=\"list-paddingleft-1 js_darkmode__283\">\u003Cli>\u003Csection class=\"js_darkmode__284\">\u003Cp class=\"js_darkmode__285\">\u003Cstrong class=\"js_darkmode__286\">HA方案一：组件多副本部署\u003C/strong>\u003C/p>\u003Cpre class=\"js_darkmode__287\">\u003Cspan data-cacheurl=\"\" data-remoteid=\"\" data-lazy-bgimg=\"https://mmbiz.qpic.cn/mmbiz_svg/vtnuMBibofcZATzCe7PsSEv0icicaBiccYwMleH3MZcNOqopQtIiauqbyba8ibOgZMWh5pATeHUkXz3zPZCRJTiaSpQ5RGLEGvJtxlD/640?wx_fmt=svg&amp;from=appmsg\" class=\"js_darkmode__bg__26 js_darkmode__288\" data-fail=\"0\">\u003C/span>\u003Ccode class=\"js_darkmode__289\">\u003Cspan class=\"js_darkmode__290\"># argocd-server 副本数调整\u003C/span>\u003Cbr>\u003Cspan>kubectl\u003C/span>\u003Cspan leaf=\"\">&nbsp;\u003C/span>\u003Cspan>scale\u003C/span>\u003Cspan leaf=\"\">&nbsp;\u003C/span>\u003Cspan>deployment\u003C/span>\u003Cspan leaf=\"\">&nbsp;\u003C/span>\u003Cspan>argocd-server\u003C/span>\u003Cspan leaf=\"\">&nbsp;\u003C/span>\u003Cspan>-n\u003C/span>\u003Cspan leaf=\"\">&nbsp;\u003C/span>\u003Cspan>argocd\u003C/span>\u003Cspan leaf=\"\">&nbsp;\u003C/span>\u003Cspan>--replicas=3\u003C/span>\u003Cbr>\u003Cspan>kubectl\u003C/span>\u003Cspan leaf=\"\">&nbsp;\u003C/span>\u003Cspan>scale\u003C/span>\u003Cspan leaf=\"\">&nbsp;\u003C/span>\u003Cspan>deployment\u003C/span>\u003Cspan leaf=\"\">&nbsp;\u003C/span>\u003Cspan>argocd-repo-server\u003C/span>\u003Cspan leaf=\"\">&nbsp;\u003C/span>\u003Cspan>-n\u003C/span>\u003Cspan leaf=\"\">&nbsp;\u003C/span>\u003Cspan>argocd\u003C/span>\u003Cspan leaf=\"\">&nbsp;\u003C/span>\u003Cspan>--replicas=3\u003C/span>\u003Cbr>\u003Cbr>\u003Cspan class=\"js_darkmode__291\"># Application Controller 使用 StatefulSet，启用分片\u003C/span>\u003Cbr>\u003Cspan>kubectl\u003C/span>\u003Cspan leaf=\"\">&nbsp;\u003C/span>\u003Cspan>scale\u003C/span>\u003Cspan leaf=\"\">&nbsp;\u003C/span>\u003Cspan>statefulset\u003C/span>\u003Cspan leaf=\"\">&nbsp;\u003C/span>\u003Cspan>argocd-application-controller\u003C/span>\u003Cspan leaf=\"\">&nbsp;\u003C/span>\u003Cspan>-n\u003C/span>\u003Cspan leaf=\"\">&nbsp;\u003C/span>\u003Cspan>argocd\u003C/span>\u003Cspan leaf=\"\">&nbsp;\u003C/span>\u003Cspan>--replicas=3\u003C/span>\u003Cbr>\u003C/code>\u003C/pre>\u003C/section>\u003C/li>\u003Cli>\u003Csection class=\"js_darkmode__292\">\u003Cp class=\"js_darkmode__293\">\u003Cstrong class=\"js_darkmode__294\">HA方案二：Redis Sentinel 部署\u003C/strong>\u003C/p>\u003Cpre class=\"js_darkmode__295\">\u003Cspan data-cacheurl=\"\" data-remoteid=\"\" data-lazy-bgimg=\"https://mmbiz.qpic.cn/mmbiz_svg/vtnuMBibofcZATzCe7PsSEv0icicaBiccYwMleH3MZcNOqopQtIiauqbyba8ibOgZMWh5pATeHUkXz3zPZCRJTiaSpQ5RGLEGvJtxlD/640?wx_fmt=svg&amp;from=appmsg\" class=\"js_darkmode__bg__27 js_darkmode__296\" data-fail=\"0\">\u003C/span>\u003Ccode class=\"js_darkmode__297\">\u003Cspan class=\"js_darkmode__298\"># 使用 Redis HA 替代单实例 Redis\u003C/span>\u003Cbr>\u003Cspan class=\"js_darkmode__299\"># 安装 Redis Sentinel\u003C/span>\u003Cbr>\u003Cspan>kubectl\u003C/span>\u003Cspan leaf=\"\">&nbsp;\u003C/span>\u003Cspan>apply\u003C/span>\u003Cspan leaf=\"\">&nbsp;\u003C/span>\u003Cspan>-n\u003C/span>\u003Cspan leaf=\"\">&nbsp;\u003C/span>\u003Cspan>argocd\u003C/span>\u003Cspan leaf=\"\">&nbsp;\u003C/span>\u003Cspan>-f\u003C/span>\u003Cspan leaf=\"\">&nbsp;\u003C/span>\u003Cspan>https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/ha/redis-ha/redis-ha.yaml\u003C/span>\u003Cbr>\u003C/code>\u003C/pre>\u003C/section>\u003C/li>\u003Cli>\u003Csection class=\"js_darkmode__300\">\u003Cp class=\"js_darkmode__301\">\u003Cstrong class=\"js_darkmode__302\">备份策略\u003C/strong>\u003Cspan leaf=\"\">：\u003C/span>\u003C/p>\u003Cpre class=\"js_darkmode__303\">\u003Cspan data-cacheurl=\"\" data-remoteid=\"\" data-lazy-bgimg=\"https://mmbiz.qpic.cn/mmbiz_svg/vtnuMBibofcZATzCe7PsSEv0icicaBiccYwMleH3MZcNOqopQtIiauqbyba8ibOgZMWh5pATeHUkXz3zPZCRJTiaSpQ5RGLEGvJtxlD/640?wx_fmt=svg&amp;from=appmsg\" class=\"js_darkmode__bg__28 js_darkmode__304\" data-fail=\"0\">\u003C/span>\u003Ccode class=\"js_darkmode__305\">\u003Cspan>#!/bin/bash\u003C/span>\u003Cbr>\u003Cspan class=\"js_darkmode__306\"># 备份所有 Application 定义\u003C/span>\u003Cbr>\u003Cspan leaf=\"\">kubectl get applications -n argocd -o yaml &gt; applications-backup.yaml\u003C/span>\u003Cbr>\u003Cbr>\u003Cspan class=\"js_darkmode__307\"># 备份所有 AppProject 定义\u003C/span>\u003Cbr>\u003Cspan leaf=\"\">kubectl get appprojects -n argocd -o yaml &gt; appprojects-backup.yaml\u003C/span>\u003Cbr>\u003Cbr>\u003Cspan class=\"js_darkmode__308\"># 备份配置\u003C/span>\u003Cbr>\u003Cspan leaf=\"\">kubectl get cm argocd-cm argocd-rbac-cm argocd-cmd-params-cm -n argocd -o yaml &gt; argocd-config-backup.yaml\u003C/span>\u003Cbr>\u003C/code>\u003C/pre>\u003C/section>\u003C/li>\u003C/ul>\u003Ch3 data-tool=\"mdnice编辑器\">\u003Cspan class=\"js_darkmode__309\">\u003Cspan leaf=\"\">4.2 注意事项\u003C/span>\u003C/span>\u003C/h3>\u003Ch4 data-tool=\"mdnice编辑器\">\u003Cspan class=\"js_darkmode__310\">\u003Cspan leaf=\"\">4.2.1 配置注意事项\u003C/span>\u003C/span>\u003C/h4>\u003Cp data-tool=\"mdnice编辑器\" class=\"js_darkmode__311\">\u003Cspan leaf=\"\">⚠️&nbsp;\u003C/span>\u003Cstrong class=\"js_darkmode__312\">警告\u003C/strong>\u003Cspan leaf=\"\">：生产环境必须禁用 admin 账户，强制使用 SSO 认证，所有操作可追溯到个人账户。\u003C/span>\u003C/p>\u003Cul class=\"list-paddingleft-1 js_darkmode__313\">\u003Cli>\u003Csection class=\"js_darkmode__314\">\u003Cspan leaf=\"\">❗ 注意事项一：syncPolicy.automated 慎用于生产环境，建议仅对基础设施组件启用自动同步，业务应用采用手动审批\u003C/span>\u003C/section>\u003C/li>\u003Cli>\u003Csection class=\"js_darkmode__315\">\u003Cspan leaf=\"\">❗ 注意事项二：prune 和 selfHeal 同时启用可能导致误删资源，务必配置 ignoreDifferences 排除动态字段\u003C/span>\u003C/section>\u003C/li>\u003Cli>\u003Csection class=\"js_darkmode__316\">\u003Cspan leaf=\"\">❗ 注意事项三：Kustomize 的 namespace 字段会覆盖所有资源的 namespace，使用 overlay 时需注意命名空间冲突\u003C/span>\u003C/section>\u003C/li>\u003C/ul>\u003Ch4 data-tool=\"mdnice编辑器\">\u003Cspan class=\"js_darkmode__317\">\u003Cspan leaf=\"\">4.2.2 常见错误\u003C/span>\u003C/span>\u003C/h4>\u003Csection data-tool=\"mdnice编辑器\">\u003Ctable class=\"layui-table\">\u003Cthead>\u003Ctr>\u003Cth class=\"js_darkmode__318\" style=\"text-align: left;\">\u003Csection>\u003Cspan leaf=\"\">错误现象\u003C/span>\u003C/section>\u003C/th>\u003Cth class=\"js_darkmode__319\" style=\"text-align: left;\">\u003Csection>\u003Cspan leaf=\"\">原因分析\u003C/span>\u003C/section>\u003C/th>\u003Cth class=\"js_darkmode__320\" style=\"text-align: left;\">\u003Csection>\u003Cspan leaf=\"\">解决方案\u003C/span>\u003C/section>\u003C/th>\u003C/tr>\u003C/thead>\u003Ctbody>\u003Ctr class=\"js_darkmode__321\">\u003Ctd class=\"js_darkmode__322\">\u003Csection>\u003Cspan leaf=\"\">ComparisonError: failed to unmarshal\u003C/span>\u003C/section>\u003C/td>\u003Ctd class=\"js_darkmode__323\">\u003Csection>\u003Cspan leaf=\"\">Kustomize 构建失败，语法错误\u003C/span>\u003C/section>\u003C/td>\u003Ctd class=\"js_darkmode__324\">\u003Csection>\u003Cspan leaf=\"\">本地执行&nbsp;\u003C/span>\u003Ccode>kubectl kustomize overlays/prod\u003C/code>\u003Cspan leaf=\"\">&nbsp;验证配置\u003C/span>\u003C/section>\u003C/td>\u003C/tr>\u003Ctr class=\"js_darkmode__325\">\u003Ctd class=\"js_darkmode__326\">\u003Csection>\u003Cspan leaf=\"\">SyncFailed: PermissionDenied\u003C/span>\u003C/section>\u003C/td>\u003Ctd class=\"js_darkmode__327\">\u003Csection>\u003Cspan leaf=\"\">ServiceAccount 权限不足\u003C/span>\u003C/section>\u003C/td>\u003Ctd class=\"js_darkmode__328\">\u003Csection>\u003Cspan leaf=\"\">检查 AppProject 的 clusterResourceWhitelist 配置\u003C/span>\u003C/section>\u003C/td>\u003C/tr>\u003Ctr class=\"js_darkmode__329\">\u003Ctd class=\"js_darkmode__330\">\u003Csection>\u003Cspan leaf=\"\">OutOfSync 但实际已同步\u003C/span>\u003C/section>\u003C/td>\u003Ctd class=\"js_darkmode__331\">\u003Csection>\u003Cspan leaf=\"\">ignoreDifferences 配置不当\u003C/span>\u003C/section>\u003C/td>\u003Ctd class=\"js_darkmode__332\">\u003Csection>\u003Cspan leaf=\"\">添加动态字段到 ignoreDifferences 列表\u003C/span>\u003C/section>\u003C/td>\u003C/tr>\u003Ctr class=\"js_darkmode__333\">\u003Ctd class=\"js_darkmode__334\">\u003Csection>\u003Cspan leaf=\"\">Health status: Progressing\u003C/span>\u003C/section>\u003C/td>\u003Ctd class=\"js_darkmode__335\">\u003Csection>\u003Cspan leaf=\"\">资源健康检查超时\u003C/span>\u003C/section>\u003C/td>\u003Ctd class=\"js_darkmode__336\">\u003Csection>\u003Cspan leaf=\"\">检查 Pod 日志，调整 health check 参数\u003C/span>\u003C/section>\u003C/td>\u003C/tr>\u003Ctr class=\"js_darkmode__337\">\u003Ctd class=\"js_darkmode__338\">\u003Csection>\u003Cspan leaf=\"\">Webhook trigger failed\u003C/span>\u003C/section>\u003C/td>\u003Ctd class=\"js_darkmode__339\">\u003Csection>\u003Cspan leaf=\"\">Webhook Secret 不匹配\u003C/span>\u003C/section>\u003C/td>\u003Ctd class=\"js_darkmode__340\">\u003Csection>\u003Cspan leaf=\"\">重新生成 Webhook URL，更新 Git 仓库配置\u003C/span>\u003C/section>\u003C/td>\u003C/tr>\u003C/tbody>\u003C/table>\u003C/section>\u003Ch4 data-tool=\"mdnice编辑器\">\u003Cspan class=\"js_darkmode__341\">\u003Cspan leaf=\"\">4.2.3 兼容性问题\u003C/span>\u003C/span>\u003C/h4>\u003Cul class=\"list-paddingleft-1 js_darkmode__342\">\u003Cli>\u003Csection class=\"js_darkmode__343\">\u003Cstrong class=\"js_darkmode__344\">版本兼容\u003C/strong>\u003Cspan leaf=\"\">：ArgoCD 2.9+ 要求 Kubernetes 1.24+，使用旧版 K8s 需安装 ArgoCD 2.7 LTS\u003C/span>\u003C/section>\u003C/li>\u003Cli>\u003Csection class=\"js_darkmode__345\">\u003Cstrong class=\"js_darkmode__346\">平台兼容\u003C/strong>\u003Cspan leaf=\"\">：Helm Chart 需启用&nbsp;\u003C/span>\u003Ccode class=\"js_darkmode__347\">\u003Cspan leaf=\"\">--enable-helm\u003C/span>\u003C/code>\u003Cspan leaf=\"\">，Jsonnet 需安装&nbsp;\u003C/span>\u003Ccode class=\"js_darkmode__348\">\u003Cspan leaf=\"\">argocd-jsonnet\u003C/span>\u003C/code>\u003C/section>\u003C/li>\u003Cli>\u003Csection class=\"js_darkmode__349\">\u003Cstrong class=\"js_darkmode__350\">组件依赖\u003C/strong>\u003Cspan leaf=\"\">：Kustomize 版本与 kubectl 绑定，使用高级特性（replacements）需确保 Kustomize 5.0+\u003C/span>\u003C/section>\u003C/li>\u003C/ul>\u003Chr class=\"js_darkmode__351\">\u003Ch2 data-tool=\"mdnice编辑器\">\u003Cspan class=\"js_darkmode__352\">\u003Cspan leaf=\"\">五、故障排查和监控\u003C/span>\u003C/span>\u003C/h2>\u003Ch3 data-tool=\"mdnice编辑器\">\u003Cspan class=\"js_darkmode__353\">\u003Cspan leaf=\"\">5.1 故障排查\u003C/span>\u003C/span>\u003C/h3>\u003Ch4 data-tool=\"mdnice编辑器\">\u003Cspan class=\"js_darkmode__354\">\u003Cspan leaf=\"\">5.1.1 日志查看\u003C/span>\u003C/span>\u003C/h4>\u003Cpre data-tool=\"mdnice编辑器\" class=\"js_darkmode__355\">\u003Cspan data-cacheurl=\"\" data-remoteid=\"\" data-lazy-bgimg=\"https://mmbiz.qpic.cn/mmbiz_svg/vtnuMBibofcZATzCe7PsSEv0icicaBiccYwMleH3MZcNOqopQtIiauqbyba8ibOgZMWh5pATeHUkXz3zPZCRJTiaSpQ5RGLEGvJtxlD/640?wx_fmt=svg&amp;from=appmsg\" class=\"js_darkmode__bg__29 js_darkmode__356\" data-fail=\"0\">\u003C/span>\u003Ccode class=\"js_darkmode__357\">\u003Cspan class=\"js_darkmode__358\"># 查看 Application Controller 日志（核心组件）\u003C/span>\u003Cbr>\u003Cspan leaf=\"\">kubectl logs -n argocd deployment/argocd-application-controller --tail=100 -f\u003C/span>\u003Cbr>\u003Cbr>\u003Cspan class=\"js_darkmode__359\"># 查看 Repo Server 日志（Git 拉取和 Kustomize 构建）\u003C/span>\u003Cbr>\u003Cspan leaf=\"\">kubectl logs -n argocd deployment/argocd-repo-server --tail=100 -f\u003C/span>\u003Cbr>\u003Cbr>\u003Cspan class=\"js_darkmode__360\"># 查看 Server 日志（API 请求）\u003C/span>\u003Cbr>\u003Cspan leaf=\"\">kubectl logs -n argocd deployment/argocd-server --tail=100 -f\u003C/span>\u003Cbr>\u003Cbr>\u003Cspan class=\"js_darkmode__361\"># 查看特定 Application 的同步日志\u003C/span>\u003Cbr>\u003Cspan leaf=\"\">argocd app logs myapp --follow\u003C/span>\u003Cbr>\u003Cbr>\u003Cspan class=\"js_darkmode__362\"># 查看详细错误信息\u003C/span>\u003Cbr>\u003Cspan leaf=\"\">kubectl describe application myapp -n argocd\u003C/span>\u003Cbr>\u003C/code>\u003C/pre>\u003Ch4 data-tool=\"mdnice编辑器\">\u003Cspan class=\"js_darkmode__363\">\u003Cspan leaf=\"\">5.1.2 常见问题排查\u003C/span>\u003C/span>\u003C/h4>\u003Cp data-tool=\"mdnice编辑器\" class=\"js_darkmode__364\">\u003Cstrong class=\"js_darkmode__365\">问题一：Git 仓库连接失败\u003C/strong>\u003C/p>\u003Cpre data-tool=\"mdnice编辑器\" class=\"js_darkmode__366\">\u003Cspan data-cacheurl=\"\" data-remoteid=\"\" data-lazy-bgimg=\"https://mmbiz.qpic.cn/mmbiz_svg/vtnuMBibofcZATzCe7PsSEv0icicaBiccYwMleH3MZcNOqopQtIiauqbyba8ibOgZMWh5pATeHUkXz3zPZCRJTiaSpQ5RGLEGvJtxlD/640?wx_fmt=svg&amp;from=appmsg\" class=\"js_darkmode__bg__30 js_darkmode__367\" data-fail=\"0\">\u003C/span>\u003Ccode class=\"js_darkmode__368\">\u003Cspan class=\"js_darkmode__369\"># 诊断命令\u003C/span>\u003Cbr>\u003Cspan leaf=\"\">argocd repo list\u003C/span>\u003Cbr>\u003Cspan leaf=\"\">kubectl get secret -n argocd -l argocd.argoproj.io/secret-type=repository\u003C/span>\u003Cbr>\u003Cbr>\u003Cspan class=\"js_darkmode__370\"># 测试 Git 连接\u003C/span>\u003Cbr>\u003Cspan leaf=\"\">kubectl&nbsp;\u003C/span>\u003Cspan>exec\u003C/span>\u003Cspan leaf=\"\">&nbsp;-it deployment/argocd-repo-server -n argocd -- sh\u003C/span>\u003Cbr>\u003Cspan leaf=\"\">git ls-remote https://github.com/your-org/your-repo.git\u003C/span>\u003Cbr>\u003C/code>\u003C/pre>\u003Cp data-tool=\"mdnice编辑器\" class=\"js_darkmode__371\">\u003Cstrong class=\"js_darkmode__372\">解决方案\u003C/strong>\u003Cspan leaf=\"\">：\u003C/span>\u003C/p>\u003Col class=\"list-paddingleft-1 js_darkmode__373\">\u003Cli>\u003Csection class=\"js_darkmode__374\">\u003Cspan leaf=\"\">检查凭证是否过期（PAT、SSH Key）\u003C/span>\u003C/section>\u003C/li>\u003Cli>\u003Csection class=\"js_darkmode__375\">\u003Cspan leaf=\"\">验证网络连通性（代理、防火墙）\u003C/span>\u003C/section>\u003C/li>\u003Cli>\u003Csection class=\"js_darkmode__376\">\u003Cspan leaf=\"\">查看 Repo Server 日志确认具体错误\u003C/span>\u003C/section>\u003C/li>\u003C/ol>\u003Cp data-tool=\"mdnice编辑器\" class=\"js_darkmode__377\">\u003Cstrong class=\"js_darkmode__378\">问题二：Application 一直处于 Progressing 状态\u003C/strong>\u003C/p>\u003Cpre data-tool=\"mdnice编辑器\" class=\"js_darkmode__379\">\u003Cspan data-cacheurl=\"\" data-remoteid=\"\" data-lazy-bgimg=\"https://mmbiz.qpic.cn/mmbiz_svg/vtnuMBibofcZATzCe7PsSEv0icicaBiccYwMleH3MZcNOqopQtIiauqbyba8ibOgZMWh5pATeHUkXz3zPZCRJTiaSpQ5RGLEGvJtxlD/640?wx_fmt=svg&amp;from=appmsg\" class=\"js_darkmode__bg__31 js_darkmode__380\" data-fail=\"0\">\u003C/span>\u003Ccode class=\"js_darkmode__381\">\u003Cspan class=\"js_darkmode__382\"># 诊断命令\u003C/span>\u003Cbr>\u003Cspan leaf=\"\">argocd app get myapp --refresh\u003C/span>\u003Cbr>\u003Cspan leaf=\"\">kubectl get pods -n myapp -o wide\u003C/span>\u003Cbr>\u003Cspan leaf=\"\">kubectl describe pod &lt;pod-name&gt; -n myapp\u003C/span>\u003Cbr>\u003C/code>\u003C/pre>\u003Cp data-tool=\"mdnice编辑器\" class=\"js_darkmode__383\">\u003Cstrong class=\"js_darkmode__384\">解决方案\u003C/strong>\u003Cspan leaf=\"\">：\u003C/span>\u003C/p>\u003Col class=\"list-paddingleft-1 js_darkmode__385\">\u003Cli>\u003Csection class=\"js_darkmode__386\">\u003Cspan leaf=\"\">检查 Pod 事件（镜像拉取失败、资源不足）\u003C/span>\u003C/section>\u003C/li>\u003Cli>\u003Csection class=\"js_darkmode__387\">\u003Cspan leaf=\"\">验证健康检查配置（存活探针、就绪探针）\u003C/span>\u003C/section>\u003C/li>\u003Cli>\u003Csection class=\"js_darkmode__388\">\u003Cspan leaf=\"\">调整 Application 的健康检查超时时间\u003C/span>\u003C/section>\u003C/li>\u003C/ol>\u003Cp data-tool=\"mdnice编辑器\" class=\"js_darkmode__389\">\u003Cstrong class=\"js_darkmode__390\">问题三：Kustomize 构建失败\u003C/strong>\u003C/p>\u003Cul class=\"list-paddingleft-1 js_darkmode__391\">\u003Cli>\u003Csection class=\"js_darkmode__392\">\u003Cp class=\"js_darkmode__393\">\u003Cstrong class=\"js_darkmode__394\">症状\u003C/strong>\u003Cspan leaf=\"\">：Application 状态显示 ComparisonError\u003C/span>\u003C/p>\u003C/section>\u003C/li>\u003Cli>\u003Csection class=\"js_darkmode__395\">\u003Cp class=\"js_darkmode__396\">\u003Cstrong class=\"js_darkmode__397\">排查\u003C/strong>\u003Cspan leaf=\"\">：\u003C/span>\u003C/p>\u003Cpre class=\"js_darkmode__398\">\u003Cspan data-cacheurl=\"\" data-remoteid=\"\" data-lazy-bgimg=\"https://mmbiz.qpic.cn/mmbiz_svg/vtnuMBibofcZATzCe7PsSEv0icicaBiccYwMleH3MZcNOqopQtIiauqbyba8ibOgZMWh5pATeHUkXz3zPZCRJTiaSpQ5RGLEGvJtxlD/640?wx_fmt=svg&amp;from=appmsg\" class=\"js_darkmode__bg__32 js_darkmode__399\" data-fail=\"0\">\u003C/span>\u003Ccode class=\"js_darkmode__400\">\u003Cspan class=\"js_darkmode__401\"># 本地复现问题\u003C/span>\u003Cbr>\u003Cspan leaf=\"\">git&nbsp;\u003C/span>\u003Cspan>clone\u003C/span>\u003Cspan leaf=\"\">&nbsp;&lt;repo-url&gt;\u003C/span>\u003Cbr>\u003Cspan>cd\u003C/span>\u003Cspan leaf=\"\">&nbsp;overlays/prod\u003C/span>\u003Cbr>\u003Cspan leaf=\"\">kubectl kustomize . --\u003C/span>\u003Cspan>enable\u003C/span>\u003Cspan leaf=\"\">-helm\u003C/span>\u003Cbr>\u003C/code>\u003C/pre>\u003C/section>\u003C/li>\u003Cli>\u003Csection class=\"js_darkmode__402\">\u003Cp class=\"js_darkmode__403\">\u003Cstrong class=\"js_darkmode__404\">解决\u003C/strong>\u003Cspan leaf=\"\">：修复 kustomization.yaml 语法错误，验证资源引用路径\u003C/span>\u003C/p>\u003C/section>\u003C/li>\u003C/ul>\u003Ch4 data-tool=\"mdnice编辑器\">\u003Cspan class=\"js_darkmode__405\">\u003Cspan leaf=\"\">5.1.3 调试模式\u003C/span>\u003C/span>\u003C/h4>\u003Cpre data-tool=\"mdnice编辑器\" class=\"js_darkmode__406\">\u003Cspan data-cacheurl=\"\" data-remoteid=\"\" data-lazy-bgimg=\"https://mmbiz.qpic.cn/mmbiz_svg/vtnuMBibofcZATzCe7PsSEv0icicaBiccYwMleH3MZcNOqopQtIiauqbyba8ibOgZMWh5pATeHUkXz3zPZCRJTiaSpQ5RGLEGvJtxlD/640?wx_fmt=svg&amp;from=appmsg\" class=\"js_darkmode__bg__33 js_darkmode__407\" data-fail=\"0\">\u003C/span>\u003Ccode class=\"js_darkmode__408\">\u003Cspan class=\"js_darkmode__409\"># 开启 Application Controller 调试日志\u003C/span>\u003Cbr>\u003Cspan leaf=\"\">kubectl&nbsp;\u003C/span>\u003Cspan>set\u003C/span>\u003Cspan leaf=\"\">&nbsp;env deployment/argocd-application-controller \\\u003C/span>\u003Cbr>\u003Cspan leaf=\"\">&nbsp; -n argocd \\\u003C/span>\u003Cbr>\u003Cspan leaf=\"\">&nbsp; ARGOCD_LOG_LEVEL=debug\u003C/span>\u003Cbr>\u003Cbr>\u003Cspan class=\"js_darkmode__410\"># 开启 Repo Server 详细日志\u003C/span>\u003Cbr>\u003Cspan leaf=\"\">kubectl&nbsp;\u003C/span>\u003Cspan>set\u003C/span>\u003Cspan leaf=\"\">&nbsp;env deployment/argocd-repo-server \\\u003C/span>\u003Cbr>\u003Cspan leaf=\"\">&nbsp; -n argocd \\\u003C/span>\u003Cbr>\u003Cspan leaf=\"\">&nbsp; ARGOCD_LOG_LEVEL=debug \\\u003C/span>\u003Cbr>\u003Cspan leaf=\"\">&nbsp; ARGOCD_EXEC_TIMEOUT=180s\u003C/span>\u003Cbr>\u003Cbr>\u003Cspan class=\"js_darkmode__411\"># 禁用缓存强制重新构建\u003C/span>\u003Cbr>\u003Cspan leaf=\"\">argocd app get myapp --hard-refresh\u003C/span>\u003Cbr>\u003C/code>\u003C/pre>\u003Ch3 data-tool=\"mdnice编辑器\">\u003Cspan class=\"js_darkmode__412\">\u003Cspan leaf=\"\">5.2 性能监控\u003C/span>\u003C/span>\u003C/h3>\u003Ch4 data-tool=\"mdnice编辑器\">\u003Cspan class=\"js_darkmode__413\">\u003Cspan leaf=\"\">5.2.1 关键指标监控\u003C/span>\u003C/span>\u003C/h4>\u003Cpre data-tool=\"mdnice编辑器\" class=\"js_darkmode__414\">\u003Cspan data-cacheurl=\"\" data-remoteid=\"\" data-lazy-bgimg=\"https://mmbiz.qpic.cn/mmbiz_svg/vtnuMBibofcZATzCe7PsSEv0icicaBiccYwMleH3MZcNOqopQtIiauqbyba8ibOgZMWh5pATeHUkXz3zPZCRJTiaSpQ5RGLEGvJtxlD/640?wx_fmt=svg&amp;from=appmsg\" class=\"js_darkmode__bg__34 js_darkmode__415\" data-fail=\"0\">\u003C/span>\u003Ccode class=\"js_darkmode__416\">\u003Cspan class=\"js_darkmode__417\"># Application 同步时长\u003C/span>\u003Cbr>\u003Cspan leaf=\"\">argocd app list -o json | jq&nbsp;\u003C/span>\u003Cspan>'.[] | {name: .metadata.name, syncTime: .status.operationState.finishedAt}'\u003C/span>\u003Cbr>\u003Cbr>\u003Cspan class=\"js_darkmode__418\"># Repo Server CPU/内存使用\u003C/span>\u003Cbr>\u003Cspan leaf=\"\">kubectl top pod -n argocd -l app.kubernetes.io/name=argocd-repo-server\u003C/span>\u003Cbr>\u003Cbr>\u003Cspan class=\"js_darkmode__419\"># Application Controller 处理队列长度\u003C/span>\u003Cbr>\u003Cspan leaf=\"\">kubectl logs -n argocd deployment/argocd-application-controller | grep&nbsp;\u003C/span>\u003Cspan>\"app reconciliation\"\u003C/span>\u003Cbr>\u003Cbr>\u003Cspan class=\"js_darkmode__420\"># Redis 连接数\u003C/span>\u003Cbr>\u003Cspan leaf=\"\">kubectl&nbsp;\u003C/span>\u003Cspan>exec\u003C/span>\u003Cspan leaf=\"\">&nbsp;-n argocd deployment/argocd-redis -- redis-cli info clients\u003C/span>\u003Cbr>\u003C/code>\u003C/pre>\u003Ch4 data-tool=\"mdnice编辑器\">\u003Cspan class=\"js_darkmode__421\">\u003Cspan leaf=\"\">5.2.2 监控指标说明\u003C/span>\u003C/span>\u003C/h4>\u003Csection data-tool=\"mdnice编辑器\">\u003Ctable class=\"layui-table\">\u003Cthead>\u003Ctr>\u003Cth class=\"js_darkmode__422\" style=\"text-align: left;\">\u003Csection>\u003Cspan leaf=\"\">指标名称\u003C/span>\u003C/section>\u003C/th>\u003Cth class=\"js_darkmode__423\" style=\"text-align: left;\">\u003Csection>\u003Cspan leaf=\"\">正常范围\u003C/span>\u003C/section>\u003C/th>\u003Cth class=\"js_darkmode__424\" style=\"text-align: left;\">\u003Csection>\u003Cspan leaf=\"\">告警阈值\u003C/span>\u003C/section>\u003C/th>\u003Cth class=\"js_darkmode__425\" style=\"text-align: left;\">\u003Csection>\u003Cspan leaf=\"\">说明\u003C/span>\u003C/section>\u003C/th>\u003C/tr>\u003C/thead>\u003Ctbody>\u003Ctr class=\"js_darkmode__426\">\u003Ctd class=\"js_darkmode__427\">\u003Csection>\u003Cspan leaf=\"\">argocd_app_sync_total\u003C/span>\u003C/section>\u003C/td>\u003Ctd class=\"js_darkmode__428\">\u003Csection>\u003Cspan leaf=\"\">-\u003C/span>\u003C/section>\u003C/td>\u003Ctd class=\"js_darkmode__429\">\u003Csection>\u003Cspan leaf=\"\">失败率 &gt;5%\u003C/span>\u003C/section>\u003C/td>\u003Ctd class=\"js_darkmode__430\">\u003Csection>\u003Cspan leaf=\"\">同步成功率，区分成功/失败\u003C/span>\u003C/section>\u003C/td>\u003C/tr>\u003Ctr class=\"js_darkmode__431\">\u003Ctd class=\"js_darkmode__432\">\u003Csection>\u003Cspan leaf=\"\">argocd_app_reconcile_duration\u003C/span>\u003C/section>\u003C/td>\u003Ctd class=\"js_darkmode__433\">\u003Csection>\u003Cspan leaf=\"\">&lt;30s\u003C/span>\u003C/section>\u003C/td>\u003Ctd class=\"js_darkmode__434\">\u003Csection>\u003Cspan leaf=\"\">&gt;60s\u003C/span>\u003C/section>\u003C/td>\u003Ctd class=\"js_darkmode__435\">\u003Csection>\u003Cspan leaf=\"\">应用对账耗时，反映性能瓶颈\u003C/span>\u003C/section>\u003C/td>\u003C/tr>\u003Ctr class=\"js_darkmode__436\">\u003Ctd class=\"js_darkmode__437\">\u003Csection>\u003Cspan leaf=\"\">argocd_git_request_duration\u003C/span>\u003C/section>\u003C/td>\u003Ctd class=\"js_darkmode__438\">\u003Csection>\u003Cspan leaf=\"\">&lt;5s\u003C/span>\u003C/section>\u003C/td>\u003Ctd class=\"js_darkmode__439\">\u003Csection>\u003Cspan leaf=\"\">&gt;15s\u003C/span>\u003C/section>\u003C/td>\u003Ctd class=\"js_darkmode__440\">\u003Csection>\u003Cspan leaf=\"\">Git 操作耗时，检测网络问题\u003C/span>\u003C/section>\u003C/td>\u003C/tr>\u003Ctr class=\"js_darkmode__441\">\u003Ctd class=\"js_darkmode__442\">\u003Csection>\u003Cspan leaf=\"\">argocd_kubectl_exec_pending\u003C/span>\u003C/section>\u003C/td>\u003Ctd class=\"js_darkmode__443\">\u003Csection>\u003Cspan leaf=\"\">&lt;10\u003C/span>\u003C/section>\u003C/td>\u003Ctd class=\"js_darkmode__444\">\u003Csection>\u003Cspan leaf=\"\">&gt;50\u003C/span>\u003C/section>\u003C/td>\u003Ctd class=\"js_darkmode__445\">\u003Csection>\u003Cspan leaf=\"\">kubectl 执行队列长度\u003C/span>\u003C/section>\u003C/td>\u003C/tr>\u003Ctr class=\"js_darkmode__446\">\u003Ctd class=\"js_darkmode__447\">\u003Csection>\u003Cspan leaf=\"\">argocd_redis_request_total\u003C/span>\u003C/section>\u003C/td>\u003Ctd class=\"js_darkmode__448\">\u003Csection>\u003Cspan leaf=\"\">-\u003C/span>\u003C/section>\u003C/td>\u003Ctd class=\"js_darkmode__449\">\u003Csection>\u003Cspan leaf=\"\">错误率 &gt;1%\u003C/span>\u003C/section>\u003C/td>\u003Ctd class=\"js_darkmode__450\">\u003Csection>\u003Cspan leaf=\"\">Redis 请求统计\u003C/span>\u003C/section>\u003C/td>\u003C/tr>\u003C/tbody>\u003C/table>\u003C/section>\u003Ch4 data-tool=\"mdnice编辑器\">\u003Cspan class=\"js_darkmode__451\">\u003Cspan leaf=\"\">5.2.3 监控告警配置\u003C/span>\u003C/span>\u003C/h4>\u003Cpre data-tool=\"mdnice编辑器\" class=\"js_darkmode__452\">\u003Cspan data-cacheurl=\"\" data-remoteid=\"\" data-lazy-bgimg=\"https://mmbiz.qpic.cn/mmbiz_svg/vtnuMBibofcZATzCe7PsSEv0icicaBiccYwMleH3MZcNOqopQtIiauqbyba8ibOgZMWh5pATeHUkXz3zPZCRJTiaSpQ5RGLEGvJtxlD/640?wx_fmt=svg&amp;from=appmsg\" class=\"js_darkmode__bg__35 js_darkmode__453\" data-fail=\"0\">\u003C/span>\u003Ccode class=\"js_darkmode__454\">\u003Cspan class=\"js_darkmode__455\"># Prometheus PrometheusRule\u003C/span>\u003Cbr>\u003Cspan>apiVersion:\u003C/span>\u003Cspan leaf=\"\">&nbsp;\u003C/span>\u003Cspan>monitoring.coreos.com/v1\u003C/span>\u003Cbr>\u003Cspan>kind:\u003C/span>\u003Cspan leaf=\"\">&nbsp;\u003C/span>\u003Cspan>PrometheusRule\u003C/span>\u003Cbr>\u003Cspan>metadata:\u003C/span>\u003Cbr>\u003Cspan leaf=\"\">&nbsp;&nbsp;\u003C/span>\u003Cspan>name:\u003C/span>\u003Cspan leaf=\"\">&nbsp;\u003C/span>\u003Cspan>argocd-alerts\u003C/span>\u003Cbr>\u003Cspan leaf=\"\">&nbsp;&nbsp;\u003C/span>\u003Cspan>namespace:\u003C/span>\u003Cspan leaf=\"\">&nbsp;\u003C/span>\u003Cspan>argocd\u003C/span>\u003Cbr>\u003Cspan>spec:\u003C/span>\u003Cbr>\u003Cspan leaf=\"\">&nbsp;&nbsp;\u003C/span>\u003Cspan>groups:\u003C/span>\u003Cbr>\u003Cspan leaf=\"\">&nbsp;&nbsp;\u003C/span>\u003Cspan>-\u003C/span>\u003Cspan leaf=\"\">&nbsp;\u003C/span>\u003Cspan>name:\u003C/span>\u003Cspan leaf=\"\">&nbsp;\u003C/span>\u003Cspan>argocd\u003C/span>\u003Cbr>\u003Cspan leaf=\"\">&nbsp; &nbsp;&nbsp;\u003C/span>\u003Cspan>interval:\u003C/span>\u003Cspan leaf=\"\">&nbsp;\u003C/span>\u003Cspan>30s\u003C/span>\u003Cbr>\u003Cspan leaf=\"\">&nbsp; &nbsp;&nbsp;\u003C/span>\u003Cspan>rules:\u003C/span>\u003Cbr>\u003Cspan leaf=\"\">&nbsp; &nbsp;&nbsp;\u003C/span>\u003Cspan>-\u003C/span>\u003Cspan leaf=\"\">&nbsp;\u003C/span>\u003Cspan>alert:\u003C/span>\u003Cspan leaf=\"\">&nbsp;\u003C/span>\u003Cspan>ArgoCDAppSyncFailed\u003C/span>\u003Cbr>\u003Cspan leaf=\"\">&nbsp; &nbsp; &nbsp;&nbsp;\u003C/span>\u003Cspan>expr:\u003C/span>\u003Cspan leaf=\"\">&nbsp;\u003C/span>\u003Cspan>\u003Cspan leaf=\"\">|\u003C/span>\u003Cbr>\u003Cspan leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp; sum(increase(argocd_app_sync_total{phase=\"Failed\"}[5m])) &gt; 3\u003C/span>\u003Cbr>\u003C/span>\u003Cspan leaf=\"\">&nbsp; &nbsp; &nbsp;&nbsp;\u003C/span>\u003Cspan>for:\u003C/span>\u003Cspan leaf=\"\">&nbsp;\u003C/span>\u003Cspan>5m\u003C/span>\u003Cbr>\u003Cspan leaf=\"\">&nbsp; &nbsp; &nbsp;&nbsp;\u003C/span>\u003Cspan>labels:\u003C/span>\u003Cbr>\u003Cspan leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;\u003C/span>\u003Cspan>severity:\u003C/span>\u003Cspan leaf=\"\">&nbsp;\u003C/span>\u003Cspan>warning\u003C/span>\u003Cbr>\u003Cspan leaf=\"\">&nbsp; &nbsp; &nbsp;&nbsp;\u003C/span>\u003Cspan>annotations:\u003C/span>\u003Cbr>\u003Cspan leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;\u003C/span>\u003Cspan>summary:\u003C/span>\u003Cspan leaf=\"\">&nbsp;\u003C/span>\u003Cspan>\"ArgoCD Application 同步失败过多\"\u003C/span>\u003Cbr>\u003Cspan leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;\u003C/span>\u003Cspan>description:\u003C/span>\u003Cspan leaf=\"\">&nbsp;\u003C/span>\u003Cspan>\u003Cspan leaf=\"\">\"Application&nbsp;\u003C/span>\u003Cspan>\u003Cspan leaf=\"\">{{ $labels.name }}\u003C/span>\u003C/span>\u003Cspan leaf=\"\">&nbsp;同步失败次数&nbsp;\u003C/span>\u003Cspan>\u003Cspan leaf=\"\">{{ $value }}\u003C/span>\u003C/span>\u003Cspan leaf=\"\">\"\u003C/span>\u003C/span>\u003Cbr>\u003Cbr>\u003Cspan leaf=\"\">&nbsp; &nbsp;&nbsp;\u003C/span>\u003Cspan>-\u003C/span>\u003Cspan leaf=\"\">&nbsp;\u003C/span>\u003Cspan>alert:\u003C/span>\u003Cspan leaf=\"\">&nbsp;\u003C/span>\u003Cspan>ArgoCDAppOutOfSync\u003C/span>\u003Cbr>\u003Cspan leaf=\"\">&nbsp; &nbsp; &nbsp;&nbsp;\u003C/span>\u003Cspan>expr:\u003C/span>\u003Cspan leaf=\"\">&nbsp;\u003C/span>\u003Cspan>\u003Cspan leaf=\"\">|\u003C/span>\u003Cbr>\u003Cspan leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp; argocd_app_info{sync_status=\"OutOfSync\"} == 1\u003C/span>\u003Cbr>\u003C/span>\u003Cspan leaf=\"\">&nbsp; &nbsp; &nbsp;&nbsp;\u003C/span>\u003Cspan>for:\u003C/span>\u003Cspan leaf=\"\">&nbsp;\u003C/span>\u003Cspan>10m\u003C/span>\u003Cbr>\u003Cspan leaf=\"\">&nbsp; &nbsp; &nbsp;&nbsp;\u003C/span>\u003Cspan>labels:\u003C/span>\u003Cbr>\u003Cspan leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;\u003C/span>\u003Cspan>severity:\u003C/span>\u003Cspan leaf=\"\">&nbsp;\u003C/span>\u003Cspan>warning\u003C/span>\u003Cbr>\u003Cspan leaf=\"\">&nbsp; &nbsp; &nbsp;&nbsp;\u003C/span>\u003Cspan>annotations:\u003C/span>\u003Cbr>\u003Cspan leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;\u003C/span>\u003Cspan>summary:\u003C/span>\u003Cspan leaf=\"\">&nbsp;\u003C/span>\u003Cspan>\"Application 长时间未同步\"\u003C/span>\u003Cbr>\u003Cspan leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;\u003C/span>\u003Cspan>description:\u003C/span>\u003Cspan leaf=\"\">&nbsp;\u003C/span>\u003Cspan>\u003Cspan leaf=\"\">\"\u003C/span>\u003Cspan>\u003Cspan leaf=\"\">{{ $labels.name }}\u003C/span>\u003C/span>\u003Cspan leaf=\"\">&nbsp;已超过 10 分钟未同步\"\u003C/span>\u003C/span>\u003Cbr>\u003Cbr>\u003Cspan leaf=\"\">&nbsp; &nbsp;&nbsp;\u003C/span>\u003Cspan>-\u003C/span>\u003Cspan leaf=\"\">&nbsp;\u003C/span>\u003Cspan>alert:\u003C/span>\u003Cspan leaf=\"\">&nbsp;\u003C/span>\u003Cspan>ArgoCDRepoServerDown\u003C/span>\u003Cbr>\u003Cspan leaf=\"\">&nbsp; &nbsp; &nbsp;&nbsp;\u003C/span>\u003Cspan>expr:\u003C/span>\u003Cspan leaf=\"\">&nbsp;\u003C/span>\u003Cspan>\u003Cspan leaf=\"\">|\u003C/span>\u003Cbr>\u003Cspan leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp; up{job=\"argocd-repo-server\"} == 0\u003C/span>\u003Cbr>\u003C/span>\u003Cspan leaf=\"\">&nbsp; &nbsp; &nbsp;&nbsp;\u003C/span>\u003Cspan>for:\u003C/span>\u003Cspan leaf=\"\">&nbsp;\u003C/span>\u003Cspan>2m\u003C/span>\u003Cbr>\u003Cspan leaf=\"\">&nbsp; &nbsp; &nbsp;&nbsp;\u003C/span>\u003Cspan>labels:\u003C/span>\u003Cbr>\u003Cspan leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;\u003C/span>\u003Cspan>severity:\u003C/span>\u003Cspan leaf=\"\">&nbsp;\u003C/span>\u003Cspan>critical\u003C/span>\u003Cbr>\u003Cspan leaf=\"\">&nbsp; &nbsp; &nbsp;&nbsp;\u003C/span>\u003Cspan>annotations:\u003C/span>\u003Cbr>\u003Cspan leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;\u003C/span>\u003Cspan>summary:\u003C/span>\u003Cspan leaf=\"\">&nbsp;\u003C/span>\u003Cspan>\"ArgoCD Repo Server 不可用\"\u003C/span>\u003Cbr>\u003C/code>\u003C/pre>\u003Ch3 data-tool=\"mdnice编辑器\">\u003Cspan class=\"js_darkmode__456\">\u003Cspan leaf=\"\">5.3 备份与恢复\u003C/span>\u003C/span>\u003C/h3>\u003Ch4 data-tool=\"mdnice编辑器\">\u003Cspan class=\"js_darkmode__457\">\u003Cspan leaf=\"\">5.3.1 备份策略\u003C/span>\u003C/span>\u003C/h4>\u003Cpre data-tool=\"mdnice编辑器\" class=\"js_darkmode__458\">\u003Cspan data-cacheurl=\"\" data-remoteid=\"\" data-lazy-bgimg=\"https://mmbiz.qpic.cn/mmbiz_svg/vtnuMBibofcZATzCe7PsSEv0icicaBiccYwMleH3MZcNOqopQtIiauqbyba8ibOgZMWh5pATeHUkXz3zPZCRJTiaSpQ5RGLEGvJtxlD/640?wx_fmt=svg&amp;from=appmsg\" class=\"js_darkmode__bg__36 js_darkmode__459\" data-fail=\"0\">\u003C/span>\u003Ccode class=\"js_darkmode__460\">\u003Cspan>#!/bin/bash\u003C/span>\u003Cbr>\u003Cspan class=\"js_darkmode__461\"># 文件名：argocd-backup.sh\u003C/span>\u003Cbr>\u003Cspan class=\"js_darkmode__462\"># 功能：备份 ArgoCD 所有配置\u003C/span>\u003Cbr>\u003Cbr>\u003Cspan leaf=\"\">BACKUP_DIR=\u003C/span>\u003Cspan>\u003Cspan leaf=\"\">\"/backup/argocd/\u003C/span>\u003Cspan>\u003Cspan leaf=\"\">$(date +%Y%m%d)\u003C/span>\u003C/span>\u003Cspan leaf=\"\">\"\u003C/span>\u003C/span>\u003Cbr>\u003Cspan leaf=\"\">mkdir -p&nbsp;\u003C/span>\u003Cspan>\u003Cspan leaf=\"\">\"\u003C/span>\u003Cspan>\u003Cspan leaf=\"\">${BACKUP_DIR}\u003C/span>\u003C/span>\u003Cspan leaf=\"\">\"\u003C/span>\u003C/span>\u003Cbr>\u003Cbr>\u003Cspan class=\"js_darkmode__463\"># 备份 Application\u003C/span>\u003Cbr>\u003Cspan leaf=\"\">kubectl get applications -n argocd -o yaml &gt;&nbsp;\u003C/span>\u003Cspan>\u003Cspan leaf=\"\">\"\u003C/span>\u003Cspan>\u003Cspan leaf=\"\">${BACKUP_DIR}\u003C/span>\u003C/span>\u003Cspan leaf=\"\">/applications.yaml\"\u003C/span>\u003C/span>\u003Cbr>\u003Cbr>\u003Cspan class=\"js_darkmode__464\"># 备份 AppProject\u003C/span>\u003Cbr>\u003Cspan leaf=\"\">kubectl get appprojects -n argocd -o yaml &gt;&nbsp;\u003C/span>\u003Cspan>\u003Cspan leaf=\"\">\"\u003C/span>\u003Cspan>\u003Cspan leaf=\"\">${BACKUP_DIR}\u003C/span>\u003C/span>\u003Cspan leaf=\"\">/appprojects.yaml\"\u003C/span>\u003C/span>\u003Cbr>\u003Cbr>\u003Cspan class=\"js_darkmode__465\"># 备份 ApplicationSet\u003C/span>\u003Cbr>\u003Cspan leaf=\"\">kubectl get applicationsets -n argocd -o yaml &gt;&nbsp;\u003C/span>\u003Cspan>\u003Cspan leaf=\"\">\"\u003C/span>\u003Cspan>\u003Cspan leaf=\"\">${BACKUP_DIR}\u003C/span>\u003C/span>\u003Cspan leaf=\"\">/applicationsets.yaml\"\u003C/span>\u003C/span>\u003Cbr>\u003Cbr>\u003Cspan class=\"js_darkmode__466\"># 备份配置 ConfigMap\u003C/span>\u003Cbr>\u003Cspan leaf=\"\">kubectl get cm -n argocd argocd-cm argocd-rbac-cm argocd-cmd-params-cm -o yaml &gt;&nbsp;\u003C/span>\u003Cspan>\u003Cspan leaf=\"\">\"\u003C/span>\u003Cspan>\u003Cspan leaf=\"\">${BACKUP_DIR}\u003C/span>\u003C/span>\u003Cspan leaf=\"\">/configmaps.yaml\"\u003C/span>\u003C/span>\u003Cbr>\u003Cbr>\u003Cspan class=\"js_darkmode__467\"># 备份 Secret（不含敏感数据）\u003C/span>\u003Cbr>\u003Cspan leaf=\"\">kubectl get secrets -n argocd -l argocd.argoproj.io/secret-type -o yaml &gt;&nbsp;\u003C/span>\u003Cspan>\u003Cspan leaf=\"\">\"\u003C/span>\u003Cspan>\u003Cspan leaf=\"\">${BACKUP_DIR}\u003C/span>\u003C/span>\u003Cspan leaf=\"\">/secrets.yaml\"\u003C/span>\u003C/span>\u003Cbr>\u003Cbr>\u003Cspan class=\"js_darkmode__468\"># 备份到远程存储\u003C/span>\u003Cbr>\u003Cspan leaf=\"\">tar -czf&nbsp;\u003C/span>\u003Cspan>\u003Cspan leaf=\"\">\"\u003C/span>\u003Cspan>\u003Cspan leaf=\"\">${BACKUP_DIR}\u003C/span>\u003C/span>\u003Cspan leaf=\"\">.tar.gz\"\u003C/span>\u003C/span>\u003Cspan leaf=\"\">&nbsp;\u003C/span>\u003Cspan>\u003Cspan leaf=\"\">\"\u003C/span>\u003Cspan>\u003Cspan leaf=\"\">${BACKUP_DIR}\u003C/span>\u003C/span>\u003Cspan leaf=\"\">\"\u003C/span>\u003C/span>\u003Cbr>\u003Cspan leaf=\"\">aws s3 cp&nbsp;\u003C/span>\u003Cspan>\u003Cspan leaf=\"\">\"\u003C/span>\u003Cspan>\u003Cspan leaf=\"\">${BACKUP_DIR}\u003C/span>\u003C/span>\u003Cspan leaf=\"\">.tar.gz\"\u003C/span>\u003C/span>\u003Cspan leaf=\"\">&nbsp;s3://backups/argocd/\u003C/span>\u003Cbr>\u003Cbr>\u003Cspan class=\"js_darkmode__469\"># 清理 7 天前的备份\u003C/span>\u003Cbr>\u003Cspan leaf=\"\">find /backup/argocd -name&nbsp;\u003C/span>\u003Cspan>\"*.tar.gz\"\u003C/span>\u003Cspan leaf=\"\">&nbsp;-mtime +7 -delete\u003C/span>\u003Cbr>\u003Cbr>\u003Cspan>echo\u003C/span>\u003Cspan leaf=\"\">&nbsp;\u003C/span>\u003Cspan>\u003Cspan leaf=\"\">\"Backup completed:&nbsp;\u003C/span>\u003Cspan>\u003Cspan leaf=\"\">${BACKUP_DIR}\u003C/span>\u003C/span>\u003Cspan leaf=\"\">.tar.gz\"\u003C/span>\u003C/span>\u003Cbr>\u003C/code>\u003C/pre>\u003Ch4 data-tool=\"mdnice编辑器\">\u003Cspan class=\"js_darkmode__470\">\u003Cspan leaf=\"\">5.3.2 恢复流程\u003C/span>\u003C/span>\u003C/h4>\u003Col class=\"list-paddingleft-1 js_darkmode__471\">\u003Cli>\u003Csection class=\"js_darkmode__472\">\u003Cstrong class=\"js_darkmode__473\">停止 ArgoCD 同步\u003C/strong>\u003C/section>\u003C/li>\u003C/ol>\u003Cpre data-tool=\"mdnice编辑器\" class=\"js_darkmode__474\">\u003Cspan data-cacheurl=\"\" data-remoteid=\"\" data-lazy-bgimg=\"https://mmbiz.qpic.cn/mmbiz_svg/vtnuMBibofcZATzCe7PsSEv0icicaBiccYwMleH3MZcNOqopQtIiauqbyba8ibOgZMWh5pATeHUkXz3zPZCRJTiaSpQ5RGLEGvJtxlD/640?wx_fmt=svg&amp;from=appmsg\" class=\"js_darkmode__bg__37 js_darkmode__475\" data-fail=\"0\">\u003C/span>\u003Ccode class=\"js_darkmode__476\">\u003Cspan class=\"js_darkmode__477\"># 暂停所有 Application 自动同步\u003C/span>\u003Cbr>\u003Cspan>for\u003C/span>\u003Cspan leaf=\"\">&nbsp;app&nbsp;\u003C/span>\u003Cspan>in\u003C/span>\u003Cspan leaf=\"\">&nbsp;$(argocd app list -o name);&nbsp;\u003C/span>\u003Cspan>do\u003C/span>\u003Cbr>\u003Cspan leaf=\"\">&nbsp; argocd app&nbsp;\u003C/span>\u003Cspan>set\u003C/span>\u003Cspan leaf=\"\">&nbsp;\u003C/span>\u003Cspan>$app\u003C/span>\u003Cspan leaf=\"\">&nbsp;--sync-policy none\u003C/span>\u003Cbr>\u003Cspan>done\u003C/span>\u003Cbr>\u003C/code>\u003C/pre>\u003Col class=\"list-paddingleft-1 js_darkmode__478\" start=\"2\">\u003Cli>\u003Csection class=\"js_darkmode__479\">\u003Cstrong class=\"js_darkmode__480\">恢复配置\u003C/strong>\u003C/section>\u003C/li>\u003C/ol>\u003Cpre data-tool=\"mdnice编辑器\" class=\"js_darkmode__481\">\u003Cspan data-cacheurl=\"\" data-remoteid=\"\" data-lazy-bgimg=\"https://mmbiz.qpic.cn/mmbiz_svg/vtnuMBibofcZATzCe7PsSEv0icicaBiccYwMleH3MZcNOqopQtIiauqbyba8ibOgZMWh5pATeHUkXz3zPZCRJTiaSpQ5RGLEGvJtxlD/640?wx_fmt=svg&amp;from=appmsg\" class=\"js_darkmode__bg__38 js_darkmode__482\" data-fail=\"0\">\u003C/span>\u003Ccode class=\"js_darkmode__483\">\u003Cspan class=\"js_darkmode__484\"># 解压备份\u003C/span>\u003Cbr>\u003Cspan leaf=\"\">tar -xzf /backup/argocd/20240315.tar.gz -C /tmp\u003C/span>\u003Cbr>\u003Cbr>\u003Cspan class=\"js_darkmode__485\"># 恢复 AppProject\u003C/span>\u003Cbr>\u003Cspan leaf=\"\">kubectl apply -f /tmp/20240315/appprojects.yaml\u003C/span>\u003Cbr>\u003Cbr>\u003Cspan class=\"js_darkmode__486\"># 恢复 Application\u003C/span>\u003Cbr>\u003Cspan leaf=\"\">kubectl apply -f /tmp/20240315/applications.yaml\u003C/span>\u003Cbr>\u003Cbr>\u003Cspan class=\"js_darkmode__487\"># 恢复配置\u003C/span>\u003Cbr>\u003Cspan leaf=\"\">kubectl apply -f /tmp/20240315/configmaps.yaml\u003C/span>\u003Cbr>\u003C/code>\u003C/pre>\u003Col class=\"list-paddingleft-1 js_darkmode__488\" start=\"3\">\u003Cli>\u003Csection class=\"js_darkmode__489\">\u003Cstrong class=\"js_darkmode__490\">验证恢复\u003C/strong>\u003C/section>\u003C/li>\u003C/ol>\u003Cpre data-tool=\"mdnice编辑器\" class=\"js_darkmode__491\">\u003Cspan data-cacheurl=\"\" data-remoteid=\"\" data-lazy-bgimg=\"https://mmbiz.qpic.cn/mmbiz_svg/vtnuMBibofcZATzCe7PsSEv0icicaBiccYwMleH3MZcNOqopQtIiauqbyba8ibOgZMWh5pATeHUkXz3zPZCRJTiaSpQ5RGLEGvJtxlD/640?wx_fmt=svg&amp;from=appmsg\" class=\"js_darkmode__bg__39 js_darkmode__492\" data-fail=\"0\">\u003C/span>\u003Ccode class=\"js_darkmode__493\">\u003Cspan class=\"js_darkmode__494\"># 检查 Application 状态\u003C/span>\u003Cbr>\u003Cspan leaf=\"\">argocd app list\u003C/span>\u003Cbr>\u003Cbr>\u003Cspan class=\"js_darkmode__495\"># 触发同步验证\u003C/span>\u003Cbr>\u003Cspan leaf=\"\">argocd app sync --dry-run guestbook\u003C/span>\u003Cbr>\u003C/code>\u003C/pre>\u003Col class=\"list-paddingleft-1 js_darkmode__496\" start=\"4\">\u003Cli>\u003Csection class=\"js_darkmode__497\">\u003Cstrong class=\"js_darkmode__498\">重启服务\u003C/strong>\u003C/section>\u003C/li>\u003C/ol>\u003Cpre data-tool=\"mdnice编辑器\" class=\"js_darkmode__499\">\u003Cspan data-cacheurl=\"\" data-remoteid=\"\" data-lazy-bgimg=\"https://mmbiz.qpic.cn/mmbiz_svg/vtnuMBibofcZATzCe7PsSEv0icicaBiccYwMleH3MZcNOqopQtIiauqbyba8ibOgZMWh5pATeHUkXz3zPZCRJTiaSpQ5RGLEGvJtxlD/640?wx_fmt=svg&amp;from=appmsg\" class=\"js_darkmode__bg__40 js_darkmode__500\" data-fail=\"0\">\u003C/span>\u003Ccode class=\"js_darkmode__501\">\u003Cspan class=\"js_darkmode__502\"># 重启 ArgoCD 组件\u003C/span>\u003Cbr>\u003Cspan leaf=\"\">kubectl rollout restart deployment -n argocd argocd-server\u003C/span>\u003Cbr>\u003Cspan leaf=\"\">kubectl rollout restart deployment -n argocd argocd-repo-server\u003C/span>\u003Cbr>\u003Cspan leaf=\"\">kubectl rollout restart statefulset -n argocd argocd-application-controller\u003C/span>\u003Cbr>\u003C/code>\u003C/pre>\u003Chr class=\"js_darkmode__503\">\u003Ch2 data-tool=\"mdnice编辑器\">\u003Cspan class=\"js_darkmode__504\">\u003Cspan leaf=\"\">六、总结\u003C/span>\u003C/span>\u003C/h2>\u003Ch3 data-tool=\"mdnice编辑器\">\u003Cspan class=\"js_darkmode__505\">\u003Cspan leaf=\"\">6.1 技术要点回顾\u003C/span>\u003C/span>\u003C/h3>\u003Cul class=\"list-paddingleft-1 js_darkmode__506\">\u003Cli>\u003Csection class=\"js_darkmode__507\">\u003Cspan leaf=\"\">✅&nbsp;\u003C/span>\u003Cstrong class=\"js_darkmode__508\">GitOps 核心价值\u003C/strong>\u003Cspan leaf=\"\">：Git 作为单一事实来源，实现配置的版本化、可审计、快速回滚，降低人为操作风险\u003C/span>\u003C/section>\u003C/li>\u003Cli>\u003Csection class=\"js_darkmode__509\">\u003Cspan leaf=\"\">✅&nbsp;\u003C/span>\u003Cstrong class=\"js_darkmode__510\">ArgoCD 架构\u003C/strong>\u003Cspan leaf=\"\">：拉模式实现持续同步，Application Controller 负责状态对账，Repo Server 处理 Git 和配置工具集成\u003C/span>\u003C/section>\u003C/li>\u003Cli>\u003Csection class=\"js_darkmode__511\">\u003Cspan leaf=\"\">✅&nbsp;\u003C/span>\u003Cstrong class=\"js_darkmode__512\">Kustomize 配置管理\u003C/strong>\u003Cspan leaf=\"\">：通过 base + overlay 机制优雅解决多环境配置差异，避免重复维护\u003C/span>\u003C/section>\u003C/li>\u003Cli>\u003Csection class=\"js_darkmode__513\">\u003Cspan leaf=\"\">✅&nbsp;\u003C/span>\u003Cstrong class=\"js_darkmode__514\">安全与权限\u003C/strong>\u003Cspan leaf=\"\">：AppProject 实现资源隔离，RBAC 配置细粒度权限控制，SSO 集成企业认证体系\u003C/span>\u003C/section>\u003C/li>\u003Cli>\u003Csection class=\"js_darkmode__515\">\u003Cspan leaf=\"\">✅&nbsp;\u003C/span>\u003Cstrong class=\"js_darkmode__516\">高可用与性能\u003C/strong>\u003Cspan leaf=\"\">：多副本部署、Redis HA、Application Controller 分片支持大规模集群管理\u003C/span>\u003C/section>\u003C/li>\u003C/ul>\u003Ch3 data-tool=\"mdnice编辑器\">\u003Cspan class=\"js_darkmode__517\">\u003Cspan leaf=\"\">6.2 进阶学习方向\u003C/span>\u003C/span>\u003C/h3>\u003Col class=\"list-paddingleft-1 js_darkmode__518\">\u003Cli>\u003Csection class=\"js_darkmode__519\">\u003Cp class=\"js_darkmode__520\">\u003Cstrong class=\"js_darkmode__521\">Argo Rollouts 渐进式交付\u003C/strong>\u003Cspan leaf=\"\">：实现蓝绿部署、金丝雀发布，结合 Istio/Nginx 实现流量分析和自动回滚\u003C/span>\u003C/p>\u003C/section>\u003C/li>\u003Cul class=\"list-paddingleft-1 js_darkmode__522\">\u003Cli>\u003Csection class=\"js_darkmode__523\">\u003Cspan leaf=\"\">学习资源：https://argo-rollouts.readthedocs.io\u003C/span>\u003C/section>\u003C/li>\u003Cli>\u003Csection class=\"js_darkmode__524\">\u003Cspan leaf=\"\">实践建议：从蓝绿部署开始，逐步过渡到基于指标的自动化金丝雀发布\u003C/span>\u003C/section>\u003C/li>\u003C/ul>\u003Cli>\u003Csection class=\"js_darkmode__525\">\u003Cp class=\"js_darkmode__526\">\u003Cstrong class=\"js_darkmode__527\">多租户与多集群管理\u003C/strong>\u003Cspan leaf=\"\">：使用 Cluster Secret、ApplicationSet 矩阵生成器管理数百个集群\u003C/span>\u003C/p>\u003C/section>\u003C/li>\u003Cul class=\"list-paddingleft-1 js_darkmode__528\">\u003Cli>\u003Csection class=\"js_darkmode__529\">\u003Cspan leaf=\"\">学习资源：https://argo-cd.readthedocs.io/en/stable/operator-manual/applicationset/\u003C/span>\u003C/section>\u003C/li>\u003Cli>\u003Csection class=\"js_darkmode__530\">\u003Cspan leaf=\"\">实践建议：设计租户隔离方案，配置跨集群资源配额和网络策略\u003C/span>\u003C/section>\u003C/li>\u003C/ul>\u003Cli>\u003Csection class=\"js_darkmode__531\">\u003Cp class=\"js_darkmode__532\">\u003Cstrong class=\"js_darkmode__533\">策略即代码\u003C/strong>\u003Cspan leaf=\"\">：集成 OPA Gatekeeper 或 Kyverno 实现准入控制、镜像扫描、资源配额自动化\u003C/span>\u003C/p>\u003C/section>\u003C/li>\u003Cul class=\"list-paddingleft-1 js_darkmode__534\">\u003Cli>\u003Csection class=\"js_darkmode__535\">\u003Cspan leaf=\"\">学习资源：https://www.openpolicyagent.org/docs/latest/kubernetes-introduction/\u003C/span>\u003C/section>\u003C/li>\u003Cli>\u003Csection class=\"js_darkmode__536\">\u003Cspan leaf=\"\">实践建议：从镜像白名单、Label 强制策略开始，逐步覆盖安全基线\u003C/span>\u003C/section>\u003C/li>\u003C/ul>\u003C/ol>\u003Ch3 data-tool=\"mdnice编辑器\">\u003Cspan class=\"js_darkmode__537\">\u003Cspan leaf=\"\">6.3 参考资料\u003C/span>\u003C/span>\u003C/h3>\u003Cul class=\"list-paddingleft-1 js_darkmode__538\">\u003Cli>\u003Csection class=\"js_darkmode__539\">\u003Cspan leaf=\"\">ArgoCD 官方文档&nbsp;- 完整的安装、配置、操作指南\u003C/span>\u003C/section>\u003C/li>\u003Cli>\u003Csection class=\"js_darkmode__540\">\u003Cspan leaf=\"\">Kustomize 官方文档&nbsp;- 配置管理最佳实践和高级特性\u003C/span>\u003C/section>\u003C/li>\u003Cli>\u003Csection class=\"js_darkmode__541\">\u003Cspan leaf=\"\">GitOps Working Group&nbsp;- CNCF GitOps 标准和原则\u003C/span>\u003C/section>\u003C/li>\u003Cli>\u003Csection class=\"js_darkmode__542\">\u003Cspan leaf=\"\">Argo CD Operator&nbsp;- Operator 方式管理 ArgoCD 生命周期\u003C/span>\u003C/section>\u003C/li>\u003Cli>\u003Csection class=\"js_darkmode__543\">\u003Cspan leaf=\"\">ArgoCD 最佳实践&nbsp;- 官方推荐的生产环境配置\u003C/span>\u003C/section>\u003C/li>\u003C/ul>\u003Chr class=\"js_darkmode__544\">\u003Ch2 data-tool=\"mdnice编辑器\">\u003Cspan class=\"js_darkmode__545\">\u003Cspan leaf=\"\">附录\u003C/span>\u003C/span>\u003C/h2>\u003Ch3 data-tool=\"mdnice编辑器\">\u003Cspan class=\"js_darkmode__546\">\u003Cspan leaf=\"\">A. 命令速查表\u003C/span>\u003C/span>\u003C/h3>\u003Cpre data-tool=\"mdnice编辑器\" class=\"js_darkmode__547\">\u003Cspan data-cacheurl=\"\" data-remoteid=\"\" data-lazy-bgimg=\"https://mmbiz.qpic.cn/mmbiz_svg/vtnuMBibofcZATzCe7PsSEv0icicaBiccYwMleH3MZcNOqopQtIiauqbyba8ibOgZMWh5pATeHUkXz3zPZCRJTiaSpQ5RGLEGvJtxlD/640?wx_fmt=svg&amp;from=appmsg\" class=\"js_darkmode__bg__41 js_darkmode__548\" data-fail=\"0\">\u003C/span>\u003Ccode class=\"js_darkmode__549\">\u003Cspan class=\"js_darkmode__550\"># Application 管理\u003C/span>\u003Cbr>\u003Cspan leaf=\"\">argocd app create &lt;name&gt; --repo &lt;url&gt; --path &lt;path&gt; --dest-server &lt;server&gt; --dest-namespace &lt;ns&gt;\u003C/span>\u003Cbr>\u003Cspan leaf=\"\">argocd app get &lt;name&gt; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;\u003C/span>\u003Cspan class=\"js_darkmode__551\"># 查看应用详情\u003C/span>\u003Cbr>\u003Cspan leaf=\"\">argocd app sync &lt;name&gt; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;\u003C/span>\u003Cspan class=\"js_darkmode__552\"># 手动同步\u003C/span>\u003Cbr>\u003Cspan leaf=\"\">argocd app diff &lt;name&gt; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;\u003C/span>\u003Cspan class=\"js_darkmode__553\"># 查看配置差异\u003C/span>\u003Cbr>\u003Cspan leaf=\"\">argocd app&nbsp;\u003C/span>\u003Cspan>history\u003C/span>\u003Cspan leaf=\"\">&nbsp;&lt;name&gt; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;\u003C/span>\u003Cspan class=\"js_darkmode__554\"># 查看同步历史\u003C/span>\u003Cbr>\u003Cspan leaf=\"\">argocd app rollback &lt;name&gt; &lt;revision&gt; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;\u003C/span>\u003Cspan class=\"js_darkmode__555\"># 回滚到指定版本\u003C/span>\u003Cbr>\u003Cspan leaf=\"\">argocd app delete &lt;name&gt; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;\u003C/span>\u003Cspan class=\"js_darkmode__556\"># 删除应用\u003C/span>\u003Cbr>\u003Cspan leaf=\"\">argocd app&nbsp;\u003C/span>\u003Cspan>set\u003C/span>\u003Cspan leaf=\"\">&nbsp;&lt;name&gt; --sync-policy automated &nbsp;\u003C/span>\u003Cspan class=\"js_darkmode__557\"># 配置自动同步\u003C/span>\u003Cbr>\u003Cbr>\u003Cspan class=\"js_darkmode__558\"># 仓库管理\u003C/span>\u003Cbr>\u003Cspan leaf=\"\">argocd repo add &lt;url&gt; --username &lt;user&gt; --password &lt;pass&gt;\u003C/span>\u003Cbr>\u003Cspan leaf=\"\">argocd repo list &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;\u003C/span>\u003Cspan class=\"js_darkmode__559\"># 列出所有仓库\u003C/span>\u003Cbr>\u003Cspan leaf=\"\">argocd repo rm &lt;url&gt; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;\u003C/span>\u003Cspan class=\"js_darkmode__560\"># 删除仓库\u003C/span>\u003Cbr>\u003Cbr>\u003Cspan class=\"js_darkmode__561\"># 集群管理\u003C/span>\u003Cbr>\u003Cspan leaf=\"\">argocd cluster add &lt;context-name&gt; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;\u003C/span>\u003Cspan class=\"js_darkmode__562\"># 添加集群\u003C/span>\u003Cbr>\u003Cspan leaf=\"\">argocd cluster list &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;\u003C/span>\u003Cspan class=\"js_darkmode__563\"># 列出所有集群\u003C/span>\u003Cbr>\u003Cspan leaf=\"\">argocd cluster get &lt;server-url&gt; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;\u003C/span>\u003Cspan class=\"js_darkmode__564\"># 查看集群信息\u003C/span>\u003Cbr>\u003Cbr>\u003Cspan class=\"js_darkmode__565\"># 项目管理\u003C/span>\u003Cbr>\u003Cspan leaf=\"\">argocd proj create &lt;name&gt; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;\u003C/span>\u003Cspan class=\"js_darkmode__566\"># 创建项目\u003C/span>\u003Cbr>\u003Cspan leaf=\"\">argocd proj add-source &lt;proj&gt; &lt;repo&gt; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;\u003C/span>\u003Cspan class=\"js_darkmode__567\"># 添加源仓库\u003C/span>\u003Cbr>\u003Cspan leaf=\"\">argocd proj add-destination &lt;proj&gt; &lt;server&gt; &lt;ns&gt; &nbsp;\u003C/span>\u003Cspan class=\"js_darkmode__568\"># 添加目标集群\u003C/span>\u003Cbr>\u003C/code>\u003C/pre>\u003Ch3 data-tool=\"mdnice编辑器\">\u003Cspan class=\"js_darkmode__569\">\u003Cspan leaf=\"\">B. 配置参数详解\u003C/span>\u003C/span>\u003C/h3>\u003Cp data-tool=\"mdnice编辑器\" class=\"js_darkmode__570\">\u003Cstrong class=\"js_darkmode__571\">Application 核心参数\u003C/strong>\u003Cspan leaf=\"\">：\u003C/span>\u003C/p>\u003Cul class=\"list-paddingleft-1 js_darkmode__572\">\u003Cli>\u003Csection class=\"js_darkmode__573\">\u003Ccode class=\"js_darkmode__574\">\u003Cspan leaf=\"\">source.repoURL\u003C/span>\u003C/code>\u003Cspan leaf=\"\">：Git 仓库地址，支持 HTTPS/SSH 协议\u003C/span>\u003C/section>\u003C/li>\u003Cli>\u003Csection class=\"js_darkmode__575\">\u003Ccode class=\"js_darkmode__576\">\u003Cspan leaf=\"\">source.targetRevision\u003C/span>\u003C/code>\u003Cspan leaf=\"\">：分支/标签/Commit SHA，HEAD 表示默认分支\u003C/span>\u003C/section>\u003C/li>\u003Cli>\u003Csection class=\"js_darkmode__577\">\u003Ccode class=\"js_darkmode__578\">\u003Cspan leaf=\"\">source.path\u003C/span>\u003C/code>\u003Cspan leaf=\"\">：仓库内配置文件路径，支持 Kustomize/Helm/Plain YAML\u003C/span>\u003C/section>\u003C/li>\u003Cli>\u003Csection class=\"js_darkmode__579\">\u003Ccode class=\"js_darkmode__580\">\u003Cspan leaf=\"\">destination.server\u003C/span>\u003C/code>\u003Cspan leaf=\"\">：目标集群 API Server 地址，\u003C/span>\u003Ccode class=\"js_darkmode__581\">\u003Cspan leaf=\"\">https://kubernetes.default.svc\u003C/span>\u003C/code>\u003Cspan leaf=\"\">&nbsp;表示当前集群\u003C/span>\u003C/section>\u003C/li>\u003Cli>\u003Csection class=\"js_darkmode__582\">\u003Ccode class=\"js_darkmode__583\">\u003Cspan leaf=\"\">syncPolicy.automated.prune\u003C/span>\u003C/code>\u003Cspan leaf=\"\">：自动删除 Git 中不存在的资源\u003C/span>\u003C/section>\u003C/li>\u003Cli>\u003Csection class=\"js_darkmode__584\">\u003Ccode class=\"js_darkmode__585\">\u003Cspan leaf=\"\">syncPolicy.automated.selfHeal\u003C/span>\u003C/code>\u003Cspan leaf=\"\">：自动修复手动修改（每 5 秒检测一次）\u003C/span>\u003C/section>\u003C/li>\u003Cli>\u003Csection class=\"js_darkmode__586\">\u003Ccode class=\"js_darkmode__587\">\u003Cspan leaf=\"\">syncPolicy.syncOptions\u003C/span>\u003C/code>\u003Cspan leaf=\"\">：同步选项，如 CreateNamespace、PruneLast、RespectIgnoreDifferences\u003C/span>\u003C/section>\u003C/li>\u003C/ul>\u003Cp data-tool=\"mdnice编辑器\" class=\"js_darkmode__588\">\u003Cstrong class=\"js_darkmode__589\">AppProject 权限控制\u003C/strong>\u003Cspan leaf=\"\">：\u003C/span>\u003C/p>\u003Cul class=\"list-paddingleft-1 js_darkmode__590\">\u003Cli>\u003Csection class=\"js_darkmode__591\">\u003Ccode class=\"js_darkmode__592\">\u003Cspan leaf=\"\">sourceRepos\u003C/span>\u003C/code>\u003Cspan leaf=\"\">：允许的 Git 仓库白名单，支持通配符\u003C/span>\u003C/section>\u003C/li>\u003Cli>\u003Csection class=\"js_darkmode__593\">\u003Ccode class=\"js_darkmode__594\">\u003Cspan leaf=\"\">destinations\u003C/span>\u003C/code>\u003Cspan leaf=\"\">：允许部署的目标集群和命名空间\u003C/span>\u003C/section>\u003C/li>\u003Cli>\u003Csection class=\"js_darkmode__595\">\u003Ccode class=\"js_darkmode__596\">\u003Cspan leaf=\"\">clusterResourceWhitelist\u003C/span>\u003C/code>\u003Cspan leaf=\"\">：允许创建的集群级资源（空数组表示禁止所有）\u003C/span>\u003C/section>\u003C/li>\u003Cli>\u003Csection class=\"js_darkmode__597\">\u003Ccode class=\"js_darkmode__598\">\u003Cspan leaf=\"\">namespaceResourceWhitelist\u003C/span>\u003C/code>\u003Cspan leaf=\"\">：允许创建的命名空间级资源\u003C/span>\u003C/section>\u003C/li>\u003C/ul>\u003Ch3 data-tool=\"mdnice编辑器\">\u003Cspan class=\"js_darkmode__599\">\u003Cspan leaf=\"\">C. 术语表\u003C/span>\u003C/span>\u003C/h3>\u003Csection data-tool=\"mdnice编辑器\">\u003Ctable class=\"layui-table\">\u003Cthead>\u003Ctr>\u003Cth class=\"js_darkmode__600\" style=\"text-align: left;\">\u003Csection>\u003Cspan leaf=\"\">术语\u003C/span>\u003C/section>\u003C/th>\u003Cth class=\"js_darkmode__601\" style=\"text-align: left;\">\u003Csection>\u003Cspan leaf=\"\">英文\u003C/span>\u003C/section>\u003C/th>\u003Cth class=\"js_darkmode__602\" style=\"text-align: left;\">\u003Csection>\u003Cspan leaf=\"\">解释\u003C/span>\u003C/section>\u003C/th>\u003C/tr>\u003C/thead>\u003Ctbody>\u003Ctr class=\"js_darkmode__603\">\u003Ctd class=\"js_darkmode__604\">\u003Csection>\u003Cspan leaf=\"\">声明式配置\u003C/span>\u003C/section>\u003C/td>\u003Ctd class=\"js_darkmode__605\">\u003Csection>\u003Cspan leaf=\"\">Declarative Configuration\u003C/span>\u003C/section>\u003C/td>\u003Ctd class=\"js_darkmode__606\">\u003Csection>\u003Cspan leaf=\"\">描述期望状态而非操作步骤，系统自动消除偏差\u003C/span>\u003C/section>\u003C/td>\u003C/tr>\u003Ctr class=\"js_darkmode__607\">\u003Ctd class=\"js_darkmode__608\">\u003Csection>\u003Cspan leaf=\"\">同步\u003C/span>\u003C/section>\u003C/td>\u003Ctd class=\"js_darkmode__609\">\u003Csection>\u003Cspan leaf=\"\">Sync\u003C/span>\u003C/section>\u003C/td>\u003Ctd class=\"js_darkmode__610\">\u003Csection>\u003Cspan leaf=\"\">将 Git 中的期望状态应用到 Kubernetes 集群\u003C/span>\u003C/section>\u003C/td>\u003C/tr>\u003Ctr class=\"js_darkmode__611\">\u003Ctd class=\"js_darkmode__612\">\u003Csection>\u003Cspan leaf=\"\">对账\u003C/span>\u003C/section>\u003C/td>\u003Ctd class=\"js_darkmode__613\">\u003Csection>\u003Cspan leaf=\"\">Reconciliation\u003C/span>\u003C/section>\u003C/td>\u003Ctd class=\"js_darkmode__614\">\u003Csection>\u003Cspan leaf=\"\">周期性比较实际状态与期望状态，检测漂移\u003C/span>\u003C/section>\u003C/td>\u003C/tr>\u003Ctr class=\"js_darkmode__615\">\u003Ctd class=\"js_darkmode__616\">\u003Csection>\u003Cspan leaf=\"\">修剪\u003C/span>\u003C/section>\u003C/td>\u003Ctd class=\"js_darkmode__617\">\u003Csection>\u003Cspan leaf=\"\">Prune\u003C/span>\u003C/section>\u003C/td>\u003Ctd class=\"js_darkmode__618\">\u003Csection>\u003Cspan leaf=\"\">删除 Git 中不存在但集群中存在的资源\u003C/span>\u003C/section>\u003C/td>\u003C/tr>\u003Ctr class=\"js_darkmode__619\">\u003Ctd class=\"js_darkmode__620\">\u003Csection>\u003Cspan leaf=\"\">自愈\u003C/span>\u003C/section>\u003C/td>\u003Ctd class=\"js_darkmode__621\">\u003Csection>\u003Cspan leaf=\"\">Self-Heal\u003C/span>\u003C/section>\u003C/td>\u003Ctd class=\"js_darkmode__622\">\u003Csection>\u003Cspan leaf=\"\">自动撤销手动修改，恢复到 Git 定义的状态\u003C/span>\u003C/section>\u003C/td>\u003C/tr>\u003Ctr class=\"js_darkmode__623\">\u003Ctd class=\"js_darkmode__624\">\u003Csection>\u003Cspan leaf=\"\">健康状态\u003C/span>\u003C/section>\u003C/td>\u003Ctd class=\"js_darkmode__625\">\u003Csection>\u003Cspan leaf=\"\">Health Status\u003C/span>\u003C/section>\u003C/td>\u003Ctd class=\"js_darkmode__626\">\u003Csection>\u003Cspan leaf=\"\">资源的运行状态（Healthy/Progressing/Degraded/Suspended）\u003C/span>\u003C/section>\u003C/td>\u003C/tr>\u003Ctr class=\"js_darkmode__627\">\u003Ctd class=\"js_darkmode__628\">\u003Csection>\u003Cspan leaf=\"\">同步状态\u003C/span>\u003C/section>\u003C/td>\u003Ctd class=\"js_darkmode__629\">\u003Csection>\u003Cspan leaf=\"\">Sync Status\u003C/span>\u003C/section>\u003C/td>\u003Ctd class=\"js_darkmode__630\">\u003Csection>\u003Cspan leaf=\"\">配置的同步状态（Synced/OutOfSync）\u003C/span>\u003C/section>\u003C/td>\u003C/tr>\u003Ctr class=\"js_darkmode__631\">\u003Ctd class=\"js_darkmode__632\">\u003Csection>\u003Cspan leaf=\"\">应用集\u003C/span>\u003C/section>\u003C/td>\u003Ctd class=\"js_darkmode__633\">\u003Csection>\u003Cspan leaf=\"\">ApplicationSet\u003C/span>\u003C/section>\u003C/td>\u003Ctd class=\"js_darkmode__634\">\u003Csection>\u003Cspan leaf=\"\">批量生成 Application，支持多集群/多租户场景\u003C/span>\u003C/section>\u003C/td>\u003C/tr>\u003C/tbody>\u003C/table>\u003C/section>","## 四、最佳实践和注意事项\n\n### 4.1 最佳实践\n\n#### 4.1.1 性能优化\n\n- 优化点一：减少 Git 轮询频率\n```\n# argocd-cm ConfigMapapiVersion: v1kind: ConfigMapmetadata:  name: argocd-cm  namespace: argocddata:  timeout.reconciliation: 300s  # 默认 180s，大规模集群建议 300s+  timeout.reconciliation.jitter: 30s\n```\n说明：默认每 3 分钟轮询一次 Git 仓库，大规模部署建议延长间隔并配置 Webhook 实现事件驱动同步。\n- 优化点二：启用资源缓存\n```\n# 编辑 argocd-application-controller StatefulSetkubectl edit statefulset argocd-application-controller -n argocd# 添加环境变量env:- name: ARGOCD_APPLICATION_CONTROLLER_REPLICAS  value: \"3\"- name: ARGOCD_APPLICATION_CONTROLLER_SHARD  valueFrom:    fieldRef:      fieldPath: metadata.name\n```\n- 配置 Redis HA 提升缓存性能\n- 启用 Application Controller 分片（处理 1000+ Application）\n\n**优化点三：优化 Diff 计算**\n\n```\n# Application 配置spec:  ignoreDifferences:  - group: apps    kind: Deployment    jsonPointers:    - /spec/replicas  # 忽略 HPA 自动调整的副本数  - group: \"\"    kind: Secret    jsonPointers:    - /data  # 忽略 External Secrets Operator 动态更新\n```\n\n#### 4.1.2 安全加固\n\n- 安全措施一：限制资源权限\n```\n# AppProject 白名单机制spec:  clusterResourceWhitelist:  - group: ''    kind: Namespace  clusterResourceBlacklist:  - group: ''    kind: ResourceQuota  - group: 'rbac.authorization.k8s.io'    kind: ClusterRole\n```\n说明：禁止应用创建 ClusterRole、PersistentVolume 等集群级资源，防止权限提升。\n- 安全措施二：启用 Admission Webhook\n```\n# argocd-cm ConfigMapdata:  resource.customizations: |    admissionregistration.k8s.io/MutatingWebhookConfiguration:      health.lua: |        hs = {}        hs.status = \"Healthy\"        return hs\n```\n配合 OPA Gatekeeper 或 Kyverno 实现策略即代码，拦截不合规资源。\n- 安全措施三：Git 签名验证\n```\n# 启用 GPG 签名验证argocd repo add https://github.com/your-org/your-repo.git \\  --username git \\  --password $TOKEN \\  --enable-lfs \\  --gpg-key-id 0x1234567890ABCDEF\n```\n\n#### 4.1.3 高可用配置\n\n- HA方案一：组件多副本部署\n```\n# argocd-server 副本数调整kubectl scale deployment argocd-server -n argocd --replicas=3kubectl scale deployment argocd-repo-server -n argocd --replicas=3# Application Controller 使用 StatefulSet，启用分片kubectl scale statefulset argocd-application-controller -n argocd --replicas=3\n```\n- HA方案二：Redis Sentinel 部署\n```\n# 使用 Redis HA 替代单实例 Redis# 安装 Redis Sentinelkubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/ha/redis-ha/redis-ha.yaml\n```\n- 备份策略：\n```\n#!/bin/bash# 备份所有 Application 定义kubectl get applications -n argocd -o yaml > applications-backup.yaml# 备份所有 AppProject 定义kubectl get appprojects -n argocd -o yaml > appprojects-backup.yaml# 备份配置kubectl get cm argocd-cm argocd-rbac-cm argocd-cmd-params-cm -n argocd -o yaml > argocd-config-backup.yaml\n```\n\n### 4.2 注意事项\n\n#### 4.2.1 配置注意事项\n\n⚠️ \n**警告**\n：生产环境必须禁用 admin 账户，强制使用 SSO 认证，所有操作可追溯到个人账户。\n\n- ❗ 注意事项一：syncPolicy.automated 慎用于生产环境，建议仅对基础设施组件启用自动同步，业务应用采用手动审批\n- ❗ 注意事项二：prune 和 selfHeal 同时启用可能导致误删资源，务必配置 ignoreDifferences 排除动态字段\n- ❗ 注意事项三：Kustomize 的 namespace 字段会覆盖所有资源的 namespace，使用 overlay 时需注意命名空间冲突\n\n#### 4.2.2 常见错误\n\n错误现象\n\n原因分析\n\n解决方案\n\nComparisonError: failed to unmarshal\n\nKustomize 构建失败，语法错误\n\n本地执行 \n`kubectl kustomize overlays/prod`\n 验证配置\n\nSyncFailed: PermissionDenied\n\nServiceAccount 权限不足\n\n检查 AppProject 的 clusterResourceWhitelist 配置\n\nOutOfSync 但实际已同步\n\nignoreDifferences 配置不当\n\n添加动态字段到 ignoreDifferences 列表\n\nHealth status: Progressing\n\n资源健康检查超时\n\n检查 Pod 日志，调整 health check 参数\n\nWebhook trigger failed\n\nWebhook Secret 不匹配\n\n重新生成 Webhook URL，更新 Git 仓库配置\n\n#### 4.2.3 兼容性问题\n\n- 版本兼容：ArgoCD 2.9+ 要求 Kubernetes 1.24+，使用旧版 K8s 需安装 ArgoCD 2.7 LTS\n- 平台兼容：Helm Chart 需启用 --enable-helm，Jsonnet 需安装 argocd-jsonnet\n- 组件依赖：Kustomize 版本与 kubectl 绑定，使用高级特性（replacements）需确保 Kustomize 5.0+\n\n---\n\n## 五、故障排查和监控\n\n### 5.1 故障排查\n\n#### 5.1.1 日志查看\n\n```\n# 查看 Application Controller 日志（核心组件）kubectl logs -n argocd deployment/argocd-application-controller --tail=100 -f# 查看 Repo Server 日志（Git 拉取和 Kustomize 构建）kubectl logs -n argocd deployment/argocd-repo-server --tail=100 -f# 查看 Server 日志（API 请求）kubectl logs -n argocd deployment/argocd-server --tail=100 -f# 查看特定 Application 的同步日志argocd app logs myapp --follow# 查看详细错误信息kubectl describe application myapp -n argocd\n```\n\n#### 5.1.2 常见问题排查\n\n**问题一：Git 仓库连接失败**\n\n```\n# 诊断命令argocd repo listkubectl get secret -n argocd -l argocd.argoproj.io/secret-type=repository# 测试 Git 连接kubectl exec -it deployment/argocd-repo-server -n argocd -- shgit ls-remote https://github.com/your-org/your-repo.git\n```\n\n**解决方案**\n：\n\n1. 检查凭证是否过期（PAT、SSH Key）\n2. 验证网络连通性（代理、防火墙）\n3. 查看 Repo Server 日志确认具体错误\n\n**问题二：Application 一直处于 Progressing 状态**\n\n```\n# 诊断命令argocd app get myapp --refreshkubectl get pods -n myapp -o widekubectl describe pod  -n myapp\n```\n\n**解决方案**\n：\n\n1. 检查 Pod 事件（镜像拉取失败、资源不足）\n2. 验证健康检查配置（存活探针、就绪探针）\n3. 调整 Application 的健康检查超时时间\n\n**问题三：Kustomize 构建失败**\n\n- 症状：Application 状态显示 ComparisonError\n- 排查：\n```\n# 本地复现问题git clone cd overlays/prodkubectl kustomize . --enable-helm\n```\n- 解决：修复 kustomization.yaml 语法错误，验证资源引用路径\n\n#### 5.1.3 调试模式\n\n```\n# 开启 Application Controller 调试日志kubectl set env deployment/argocd-application-controller \\  -n argocd \\  ARGOCD_LOG_LEVEL=debug# 开启 Repo Server 详细日志kubectl set env deployment/argocd-repo-server \\  -n argocd \\  ARGOCD_LOG_LEVEL=debug \\  ARGOCD_EXEC_TIMEOUT=180s# 禁用缓存强制重新构建argocd app get myapp --hard-refresh\n```\n\n### 5.2 性能监控\n\n#### 5.2.1 关键指标监控\n\n```\n# Application 同步时长argocd app list -o json | jq '.[] | {name: .metadata.name, syncTime: .status.operationState.finishedAt}'# Repo Server CPU/内存使用kubectl top pod -n argocd -l app.kubernetes.io/name=argocd-repo-server# Application Controller 处理队列长度kubectl logs -n argocd deployment/argocd-application-controller | grep \"app reconciliation\"# Redis 连接数kubectl exec -n argocd deployment/argocd-redis -- redis-cli info clients\n```\n\n#### 5.2.2 监控指标说明\n\n指标名称\n\n正常范围\n\n告警阈值\n\n说明\n\nargocd_app_sync_total\n\n-\n\n失败率 >5%\n\n同步成功率，区分成功/失败\n\nargocd_app_reconcile_duration\n\n60s\n\n应用对账耗时，反映性能瓶颈\n\nargocd_git_request_duration\n\n15s\n\nGit 操作耗时，检测网络问题\n\nargocd_kubectl_exec_pending\n\n50\n\nkubectl 执行队列长度\n\nargocd_redis_request_total\n\n-\n\n错误率 >1%\n\nRedis 请求统计\n\n#### 5.2.3 监控告警配置\n\n```\n# Prometheus PrometheusRuleapiVersion: monitoring.coreos.com/v1kind: PrometheusRulemetadata:  name: argocd-alerts  namespace: argocdspec:  groups:  - name: argocd    interval: 30s    rules:    - alert: ArgoCDAppSyncFailed      expr: |        sum(increase(argocd_app_sync_total{phase=\"Failed\"}[5m])) > 3      for: 5m      labels:        severity: warning      annotations:        summary: \"ArgoCD Application 同步失败过多\"        description: \"Application {{ $labels.name }} 同步失败次数 {{ $value }}\"    - alert: ArgoCDAppOutOfSync      expr: |        argocd_app_info{sync_status=\"OutOfSync\"} == 1      for: 10m      labels:        severity: warning      annotations:        summary: \"Application 长时间未同步\"        description: \"{{ $labels.name }} 已超过 10 分钟未同步\"    - alert: ArgoCDRepoServerDown      expr: |        up{job=\"argocd-repo-server\"} == 0      for: 2m      labels:        severity: critical      annotations:        summary: \"ArgoCD Repo Server 不可用\"\n```\n\n### 5.3 备份与恢复\n\n#### 5.3.1 备份策略\n\n```\n#!/bin/bash# 文件名：argocd-backup.sh# 功能：备份 ArgoCD 所有配置BACKUP_DIR=\"/backup/argocd/$(date +%Y%m%d)\"mkdir -p \"${BACKUP_DIR}\"# 备份 Applicationkubectl get applications -n argocd -o yaml > \"${BACKUP_DIR}/applications.yaml\"# 备份 AppProjectkubectl get appprojects -n argocd -o yaml > \"${BACKUP_DIR}/appprojects.yaml\"# 备份 ApplicationSetkubectl get applicationsets -n argocd -o yaml > \"${BACKUP_DIR}/applicationsets.yaml\"# 备份配置 ConfigMapkubectl get cm -n argocd argocd-cm argocd-rbac-cm argocd-cmd-params-cm -o yaml > \"${BACKUP_DIR}/configmaps.yaml\"# 备份 Secret（不含敏感数据）kubectl get secrets -n argocd -l argocd.argoproj.io/secret-type -o yaml > \"${BACKUP_DIR}/secrets.yaml\"# 备份到远程存储tar -czf \"${BACKUP_DIR}.tar.gz\" \"${BACKUP_DIR}\"aws s3 cp \"${BACKUP_DIR}.tar.gz\" s3://backups/argocd/# 清理 7 天前的备份find /backup/argocd -name \"*.tar.gz\" -mtime +7 -deleteecho \"Backup completed: ${BACKUP_DIR}.tar.gz\"\n```\n\n#### 5.3.2 恢复流程\n\n1. 停止 ArgoCD 同步\n\n```\n# 暂停所有 Application 自动同步for app in $(argocd app list -o name); do  argocd app set $app --sync-policy nonedone\n```\n\n1. 恢复配置\n\n```\n# 解压备份tar -xzf /backup/argocd/20240315.tar.gz -C /tmp# 恢复 AppProjectkubectl apply -f /tmp/20240315/appprojects.yaml# 恢复 Applicationkubectl apply -f /tmp/20240315/applications.yaml# 恢复配置kubectl apply -f /tmp/20240315/configmaps.yaml\n```\n\n1. 验证恢复\n\n```\n# 检查 Application 状态argocd app list# 触发同步验证argocd app sync --dry-run guestbook\n```\n\n1. 重启服务\n\n```\n# 重启 ArgoCD 组件kubectl rollout restart deployment -n argocd argocd-serverkubectl rollout restart deployment -n argocd argocd-repo-serverkubectl rollout restart statefulset -n argocd argocd-application-controller\n```\n\n---\n\n## 六、总结\n\n### 6.1 技术要点回顾\n\n- ✅ GitOps 核心价值：Git 作为单一事实来源，实现配置的版本化、可审计、快速回滚，降低人为操作风险\n- ✅ ArgoCD 架构：拉模式实现持续同步，Application Controller 负责状态对账，Repo Server 处理 Git 和配置工具集成\n- ✅ Kustomize 配置管理：通过 base + overlay 机制优雅解决多环境配置差异，避免重复维护\n- ✅ 安全与权限：AppProject 实现资源隔离，RBAC 配置细粒度权限控制，SSO 集成企业认证体系\n- ✅ 高可用与性能：多副本部署、Redis HA、Application Controller 分片支持大规模集群管理\n\n### 6.2 进阶学习方向\n\n1. Argo Rollouts 渐进式交付：实现蓝绿部署、金丝雀发布，结合 Istio/Nginx 实现流量分析和自动回滚\n2. 多租户与多集群管理：使用 Cluster Secret、ApplicationSet 矩阵生成器管理数百个集群\n3. 策略即代码：集成 OPA Gatekeeper 或 Kyverno 实现准入控制、镜像扫描、资源配额自动化\n\n### 6.3 参考资料\n\n- ArgoCD 官方文档 - 完整的安装、配置、操作指南\n- Kustomize 官方文档 - 配置管理最佳实践和高级特性\n- GitOps Working Group - CNCF GitOps 标准和原则\n- Argo CD Operator - Operator 方式管理 ArgoCD 生命周期\n- ArgoCD 最佳实践 - 官方推荐的生产环境配置\n\n---\n\n## 附录\n\n### A. 命令速查表\n\n```\n# Application 管理argocd app create  --repo  --path  --dest-server  --dest-namespace argocd app get                           # 查看应用详情argocd app sync                          # 手动同步argocd app diff                          # 查看配置差异argocd app history                       # 查看同步历史argocd app rollback            # 回滚到指定版本argocd app delete                        # 删除应用argocd app set  --sync-policy automated  # 配置自动同步# 仓库管理argocd repo add  --username  --password argocd repo list                               # 列出所有仓库argocd repo rm                            # 删除仓库# 集群管理argocd cluster add               # 添加集群argocd cluster list                            # 列出所有集群argocd cluster get                 # 查看集群信息# 项目管理argocd proj create                       # 创建项目argocd proj add-source             # 添加源仓库argocd proj add-destination     # 添加目标集群\n```\n\n### B. 配置参数详解\n\n**Application 核心参数**\n：\n\n- source.repoURL：Git 仓库地址，支持 HTTPS/SSH 协议\n- source.targetRevision：分支/标签/Commit SHA，HEAD 表示默认分支\n- source.path：仓库内配置文件路径，支持 Kustomize/Helm/Plain YAML\n- destination.server：目标集群 API Server 地址，https://kubernetes.default.svc 表示当前集群\n- syncPolicy.automated.prune：自动删除 Git 中不存在的资源\n- syncPolicy.automated.selfHeal：自动修复手动修改（每 5 秒检测一次）\n- syncPolicy.syncOptions：同步选项，如 CreateNamespace、PruneLast、RespectIgnoreDifferences\n\n**AppProject 权限控制**\n：\n\n- sourceRepos：允许的 Git 仓库白名单，支持通配符\n- destinations：允许部署的目标集群和命名空间\n- clusterResourceWhitelist：允许创建的集群级资源（空数组表示禁止所有）\n- namespaceResourceWhitelist：允许创建的命名空间级资源\n\n### C. 术语表\n\n术语\n\n英文\n\n解释\n\n声明式配置\n\nDeclarative Configuration\n\n描述期望状态而非操作步骤，系统自动消除偏差\n\n同步\n\nSync\n\n将 Git 中的期望状态应用到 Kubernetes 集群\n\n对账\n\nReconciliation\n\n周期性比较实际状态与期望状态，检测漂移\n\n修剪\n\nPrune\n\n删除 Git 中不存在但集群中存在的资源\n\n自愈\n\nSelf-Heal\n\n自动撤销手动修改，恢复到 Git 定义的状态\n\n健康状态\n\nHealth Status\n\n资源的运行状态（Healthy/Progressing/Degraded/Suspended）\n\n同步状态\n\nSync Status\n\n配置的同步状态（Synced/OutOfSync）\n\n应用集\n\nApplicationSet\n\n批量生成 Application，支持多集群/多租户场景","/article/118",305,"2026-01-06 11:49:00","2026-01-06 11:49:34",[155,156,157],{"id":39,"name":81,"url":82},{"id":44,"name":23,"url":59},{"id":145,"name":146,"url":150},{"create_time":6,"description":6,"id":44,"image_url":6,"index_template":52,"is_cover":53,"is_menu":53,"keywords":6,"list_template":54,"model_code":55,"model_id":56,"model_name":57,"name":23,"parent_id":39,"seo_description":6,"seo_keywords":6,"seo_title":6,"show_template":58,"sort":53,"subtitle":6,"update_time":6,"url":59},{"title":160,"url":161},"用 Prometheus Recording Rules 把告警噪声砍掉 70%(一)","/article/119",{"title":163,"url":164},"GitOps 落地实践：ArgoCD + Kustomize 实现声明式基础设施管理(一)","/article/117",[166,167,168,169],{"create_time":6,"description":6,"id":44,"image_url":6,"index_template":52,"is_cover":53,"is_menu":53,"keywords":6,"list_template":54,"model_code":55,"model_id":56,"model_name":57,"name":23,"parent_id":39,"seo_description":6,"seo_keywords":6,"seo_title":6,"show_template":58,"sort":53,"subtitle":6,"update_time":6,"url":59},{"create_time":6,"description":6,"id":45,"image_url":6,"index_template":52,"is_cover":53,"is_menu":53,"keywords":6,"list_template":54,"model_code":55,"model_id":56,"model_name":57,"name":61,"parent_id":39,"seo_description":6,"seo_keywords":6,"seo_title":6,"show_template":58,"sort":56,"subtitle":6,"update_time":6,"url":62},{"create_time":6,"description":6,"id":46,"image_url":6,"index_template":52,"is_cover":53,"is_menu":53,"keywords":6,"list_template":54,"model_code":55,"model_id":56,"model_name":57,"name":64,"parent_id":39,"seo_description":6,"seo_keywords":6,"seo_title":6,"show_template":58,"sort":65,"subtitle":6,"update_time":6,"url":66},{"create_time":6,"description":6,"id":47,"image_url":6,"index_template":52,"is_cover":53,"is_menu":53,"keywords":6,"list_template":54,"model_code":55,"model_id":56,"model_name":57,"name":68,"parent_id":39,"seo_description":6,"seo_keywords":6,"seo_title":6,"show_template":58,"sort":69,"subtitle":6,"update_time":6,"url":70},{"description":147,"keywords":6,"title":146},[172,181,190,199,208,217,226,235,244,252],{"id":173,"category_id":44,"title":174,"keywords":175,"description":176,"image_url":6,"url":177,"hits":178,"is_recommend":73,"is_top":73,"create_time":179,"update_time":180},101,"开启 HTTPS 并获得 ssllabs 满分的过程","开启,获得,满分,过程","准备工作确保你要申请证书的域名都解析到了这台服务器上，且能直接通过域名访问。使用官网推荐的CertBot获取证书。在CertBot官网选择一下环境(比如我选Nginx on Ubuntu 17.04)就可以看到入门教程了。安装CertBot12345apt-get updateapt-get install software-properties-commonadd-apt-repository ppa:certbot/certbotapt-get updateapt-get","/article/101",18546,"2019-11-26 16:12:11","2019-11-26 16:23:16",{"id":182,"category_id":44,"title":183,"keywords":184,"description":185,"image_url":6,"url":186,"hits":187,"is_recommend":73,"is_top":73,"create_time":188,"update_time":189},113,"在CentOS 7中添加命令自动补全功能","命令自动补全,centos","在CentOS 7中，默认情况下并不会安装命令补全包，需要手动安装才能使用命令补全功能。以下是在CentOS 7中安装命令补全包的方法：1. bash-completion：这是一个针对Bash shell的命令补全软件包，可以提供对系统命令、用户自定义命令和文件路径的自动补全功能。可以通过以下命令安装：```sudo yum install bash-completion```安装完成后，需要在/etc/profile配置文件中添加以下内容：```if [ -f /etc/bash_compl","/article/113",14948,"2023-05-16 10:54:01","2023-05-16 10:57:28",{"id":191,"category_id":44,"title":192,"keywords":193,"description":194,"image_url":6,"url":195,"hits":196,"is_recommend":53,"is_top":73,"create_time":197,"update_time":198},94,"Centos7 安装 openvas ","openvas,开放式漏洞评估系统，installing openvas centos-7","一、描述OpenVAS，即开放式漏洞评估系统，是一个用于评估目标漏洞的杰出框架。功能十分强大，最重要的是，它是“开源”的——就是免费的意思啦～它与著名的Nessus“本是同根生”，在Nessus商业化之后仍然坚持开源，号称“当前最好用的开源漏洞扫描工具”。最新版的Kali Linux(kali 3.0)不再自带OpenVAS了，所以我们要自己部署OpenVAS漏洞检测系统。其核心部件是一个服务器，包括一套网络漏洞测试程序，可以检测远程系统和应用程序中的安全问题。但是它的最常用用途是检测目标网络或","/article/94",14690,"2019-01-14 17:43:42","2019-01-14 18:16:36",{"id":200,"category_id":44,"title":201,"keywords":202,"description":203,"image_url":6,"url":204,"hits":205,"is_recommend":73,"is_top":73,"create_time":206,"update_time":207},99,"Centos7 利用iptables防止nmap工具防端口扫描","iptables","一、Nmap介绍       Nmap（NetworkMapper）是一款开放源代码的网络探测和安全审核工具。它用于快速扫描一个网络和一台主机开放的端口，还能使用TCP/IP协议栈特征探测远程主机的操作系统类型。nmap支持很多扫描技术，例如：UDP、TCPconnect()、TCPSYN(半开扫描)、ftp代理(bounce攻击)、反向标志、ICMP、FIN、ACK扫描、圣诞树(XmasTree)、SYN扫描和null扫描。Nmap最初是用于Unix系统","/article/99",14415,"2019-07-09 21:27:00","2019-07-09 21:57:53",{"id":209,"category_id":46,"title":210,"keywords":211,"description":212,"image_url":6,"url":213,"hits":214,"is_recommend":73,"is_top":73,"create_time":215,"update_time":216},61,"Docker 推荐的启动方式","推荐,启动,方式","# cat DockerfileFROM openjdk:8-alpineWORKDIR /ADD ./target/*.jar app.jarEXPOSE 9999COPY docker-entrypoint.sh /RUN chmod +x /docker-entrypoint.shENTRYPOINT [“/docker-entrypoint.sh”]CMD [“java”,”-server”,”-Duser.timezone=GMT+08″,”-jar”,”/app.jar”]# cat","/article/61",14347,"2018-10-22 13:55:47","2018-10-22 13:56:10",{"id":218,"category_id":44,"title":219,"keywords":220,"description":221,"image_url":6,"url":222,"hits":223,"is_recommend":73,"is_top":73,"create_time":224,"update_time":225},107,"Acme.sh 给 SSL 证书自动续期失败的解决方法","HTTP/1.1 200 OK,Server: Bayou Tech Web Srv 1.0,Content-Encoding: none,Content-Length: 5,Content-Type","一、Acme.sh 自动续期失败的症状问题描述如下，续期的时候，提示如下错误：root@dc:~# \"/data/acme.sh\"/acme.sh --cron --home \"/data/acme.sh\" &gt; /dev/null[Sun Nov 10 23:52:17 CST 2020] Error, can not get domain token entry example.com[Sun Nov 10 23:52:17 CST 2020] Please check log file","/article/107",12618,"2021-09-03 10:44:18","2021-09-03 10:46:23",{"id":227,"category_id":44,"title":228,"keywords":229,"description":230,"image_url":6,"url":231,"hits":232,"is_recommend":53,"is_top":73,"create_time":233,"update_time":234},93,"ELK+Filebeat+Kafka+ZooKeeper 构建海量日志分析平台","Filebeat,Kafka","一、说明1.Filebeat是一个日志文件托运工具，在你的服务器上安装客户端后，filebeat会监控日志目录或者指定的日志文件，追踪读取这些文件（追踪文件的变化，不停的读）2.Kafka是一种高吞吐量的分布式发布订阅消息系统，它可以处理消费者规模的网站中的所有动作流数据3.Logstash是一根具备实时数据传输能力的管道，负责将数据信息从管道的输入端传输到管道的输出端；与此同时这根管道还可以让你根据自己的需求在中间加上滤网，Logstash提供里很多功能强大的滤网以满足你的各种应用场景4.El","/article/93",12190,"2018-12-24 16:40:08","2018-12-26 11:53:38",{"id":236,"category_id":46,"title":237,"keywords":238,"description":239,"image_url":6,"url":240,"hits":241,"is_recommend":53,"is_top":73,"create_time":242,"update_time":243},81,"kubernetes 1.12.1 高可用安装之部署Dashboard","安装Dashboard","创建Dashboard需要CoreDNS部署成功之后再安装Dashboard。[root@master01 ~]# wget https://zhl123.com/download/k8s/Dashboard.tgz[root@master01 ~]# tar xf Dashboard.tgz[root@master01 ~]# kubectl create -f Dashboard/[root@master01 Dashboard]# kubectl get svc -n kube-syste","/article/81",12037,"2018-10-26 09:54:41","2018-10-26 16:59:19",{"id":245,"category_id":44,"title":246,"keywords":6,"description":247,"image_url":6,"url":248,"hits":249,"is_recommend":73,"is_top":73,"create_time":250,"update_time":251},100,"用 Nginx 给 Cookie 增加 Secure 和 HttpOnly","在 nginx 的 location 中配置12# 只支持 proxy 模式下设置，SameSite 不需要可删除，如果想更安全可以把 SameSite 设置为 Strictproxy_cookie_path / \"/; httponly; secure; SameSite=Lax\";示例1234567891011121314151617181920212223242526server {    listen 443 ssl http2;    server_name www.zhl123.cn","/article/100",11848,"2019-11-26 16:10:57","2019-11-26 16:23:45",{"id":253,"category_id":44,"title":254,"keywords":255,"description":256,"image_url":6,"url":257,"hits":258,"is_recommend":73,"is_top":73,"create_time":259,"update_time":260},41,"Tomcat 安全配置与性能优化","tomcat，性能优化","1. JVM&nbsp;1.1. 使用 Server JRE 替代JDK。&nbsp;服务器上不要安装JDK，请使用 Server JRE. 服务器上根本不需要编译器，代码应该在Release服务器上完成编译打包工作。&nbsp;理由：一旦服务器被控制，可以防止在其服务器上编译其他恶意代码并植入到你的程序中。&nbsp;1.2. JAVA_OPTS&nbsp;export JAVA_OPTS=\"-server -Xms512m -Xmx4096m &nbsp;-XX:PermSize=64M -","/article/41",11623,"2016-09-01 17:06:36","2018-10-18 17:06:58",[262,270,278,286,294,300,301,307,316,325],{"id":263,"category_id":40,"title":264,"keywords":6,"description":265,"image_url":6,"url":266,"hits":267,"is_recommend":73,"is_top":73,"create_time":268,"update_time":269},123,"Agent Skill 精选集：最值得收藏的 Agent Skills Top 10","如果你正在用 Claude Code 或 Codex，一定对&nbsp;Agent Skills&nbsp;不陌生。通过安装&nbsp;Agent Skills，你可以让这些 AI 助手变得更强——不用每次都解释你的需求，它们直接就知道该怎么做。最近有人在 GitHub 上做了一个采样调查，统计了哪些 Skills 的质量最佳和最受欢迎。我整理了这份&nbsp;Top 10 榜单，加上使用场景和适合人群，帮你快速找到最有用的那几个。Top 10 最受欢迎的 Agent Skills1. Skil","/article/123",270,"2026-01-19 18:49:12","2026-01-19 18:52:01",{"id":271,"category_id":44,"title":272,"keywords":6,"description":273,"image_url":6,"url":274,"hits":275,"is_recommend":73,"is_top":73,"create_time":276,"update_time":277},122,"Nginx性能调优18条黄金法则：支撑10万并发的配置模板","一、概述1.1 背景介绍说实话，Nginx调优这事儿我踩过无数坑。记得2019年双11，我们电商平台流量暴涨，Nginx直接扛不住了，QPS从平时的2万飙升到8万，响应时间从50ms飙到了2秒，最后还是靠临时加机器扛过去的。那次事故之后，我花了大半年时间专门研究Nginx的性能极限，总结出了这20条黄金法则。Nginx作为目前最流行的Web服务器和反向代理，官方数据显示单机可以轻松处理10万+的并发连接。但实际生产环境中，很多同学拿到默认配置就直接上了，结果发现连1万并发都扛不住。问题不在Ngi","/article/122",337,"2026-01-12 11:11:50","2026-01-12 11:12:28",{"id":279,"category_id":46,"title":280,"keywords":6,"description":281,"image_url":6,"url":282,"hits":283,"is_recommend":73,"is_top":73,"create_time":284,"update_time":285},121,"Docker 镜像优化与安全扫描：将镜像体积压缩 70%","1. 适用场景 & 前置条件项目要求适用场景容器化应用镜像体积过大（> 500MB），构建时间长（> 10分钟），存在安全漏洞（CVE高危）OSRHEL/CentOS 7.9+ 或 Ubuntu 20.04+内核Linux Kernel 3.10+软件版本Docker 20.10+ 或 Podman 3.0+，Trivy 0.40+（安全扫描工具）资源规格2C4G（最小）/ 4C8G（推荐），磁盘 50GB+（存储镜像与缓存）网络可访问 Docker Hub/阿里云镜像仓库（","/article/121",309,"2026-01-06 11:54:35","2026-01-06 12:01:59",{"id":287,"category_id":44,"title":288,"keywords":6,"description":289,"image_url":6,"url":290,"hits":291,"is_recommend":73,"is_top":73,"create_time":292,"update_time":293},120,"用 Prometheus Recording Rules 把告警噪声砍掉 70%(二)","五、故障排查和监控5.1 故障排查◆ 5.1.1 日志查看# 查看 Prometheus 日志中的规则评估错误journalctl -u prometheus | grep -i&nbsp;\"rule\"&nbsp;|&nbsp;tail&nbsp;-50# 查看规则评估耗时curl -s http://localhost:9090/api/v1/rules | jq&nbsp;'.data.groups[].rules[] | select(.health != \"ok\")'# Kubernet","/article/120",282,"2026-01-06 11:53:50","2026-01-06 11:54:33",{"id":295,"category_id":44,"title":160,"keywords":6,"description":296,"image_url":6,"url":161,"hits":297,"is_recommend":73,"is_top":73,"create_time":298,"update_time":299},119,"一、概述1.1 背景介绍在大规模微服务架构下，Prometheus 告警系统往往会陷入一个尴尬的境地：告警太多，运维团队开始选择性忽略；告警太少，真正的故障又可能漏掉。我在某电商平台负责监控体系建设时，团队每天要处理超过 2000 条告警，其中 70% 以上是重复的、关联的或者短暂抖动产生的噪声。Recording Rules 是 Prometheus 提供的预计算机制，可以将复杂的查询表达式预先计算并存储为新的时间序列。通过合理设计 Recording Rules，我们不仅能显著降低 Prom",301,"2026-01-06 11:51:58","2026-01-06 11:53:45",{"id":145,"category_id":44,"title":146,"keywords":6,"description":147,"image_url":6,"url":150,"hits":151,"is_recommend":73,"is_top":73,"create_time":152,"update_time":153},{"id":302,"category_id":44,"title":163,"keywords":6,"description":303,"image_url":6,"url":164,"hits":304,"is_recommend":73,"is_top":73,"create_time":305,"update_time":306},117,"一、概述1.1 背景介绍GitOps 作为云原生时代的运维范式，将 Git 作为基础设施和应用配置的单一事实来源，通过声明式配置和自动化同步机制，实现了配置管理的版本控制、审计追溯和快速回滚。ArgoCD 作为 CNCF 毕业项目，提供了完整的 GitOps 工作流，支持多集群管理、RBAC 权限控制、SSO 集成等企业级特性。结合 Kustomize 的配置管理能力，能够优雅地解决多环境配置差异、敏感信息管理、配置复用等问题。在传统的 CI/CD 流程中，往往由 CI 工具直接执行 kubec",310,"2026-01-06 11:45:03","2026-01-06 11:48:56",{"id":308,"category_id":40,"title":309,"keywords":310,"description":311,"image_url":6,"url":312,"hits":313,"is_recommend":73,"is_top":73,"create_time":314,"update_time":315},116,"运维部门年度2025工作总结与2026工作规划应该如何写？","运维部门年度2025工作总结,2026工作规划","2025年，运维部在公司“数字化转型深化”战略引领下，以“稳定为基、效率为纲、安全为盾、创新为翼”为核心导向，全面支撑核心业务系统运行、推动技术架构迭代、强化团队能力建设。 全年实现核心业务系统可用性99.985%，较2024年提升0.02个百分点；故障平均恢复时间（MTTR）从42分钟压缩至29分钟，下降31%；云资源成本同比降低16.8%，自动化运维覆盖率从65%提升至83%，未发生重大生产安全事故，圆满完成年度目标。现将全年工作及2026年规划汇报如下：2025年核心工作成果（数","/article/116",297,"2026-01-06 11:20:58","2026-01-06 11:44:04",{"id":317,"category_id":40,"title":318,"keywords":319,"description":320,"image_url":6,"url":321,"hits":322,"is_recommend":73,"is_top":73,"create_time":323,"update_time":324},115,"Kubernetes 100个常用命令","100 个 Kubectl 命令","这篇文章是关于使用 Kubectl 进行 Kubernetes 诊断的指南。列出了 100 个 Kubectl 命令，这些命令对于诊断 Kubernetes 集群中的问题非常有用。这些问题包括但不限于：•&nbsp;集群信息•&nbsp;Pod 诊断•&nbsp;服务诊断•&nbsp;部署诊断•&nbsp;网络诊断•&nbsp;持久卷和持久卷声明诊断•&nbsp;资源使用情况•&nbsp;安全和授权•&nbsp;节点故障排除•&nbsp;其他诊断命令：文章还提到了许多其他命令，如资源扩展和自动扩","/article/115",3642,"2023-11-02 14:09:30","2023-11-02 14:10:05",{"id":182,"category_id":44,"title":183,"keywords":184,"description":185,"image_url":6,"url":186,"hits":187,"is_recommend":73,"is_top":73,"create_time":188,"update_time":189},1784716028275]