
从使用者到贡献者向kubectl-plugins生态添加自定义插件的完整路径【免费下载链接】kubectl-pluginsA Collection of Plugins for kubectl Integration (exec as any user, context switching, etc).项目地址: https://gitcode.com/gh_mirrors/ku/kubectl-pluginskubectl-plugins 是一个为 kubectl1.12.0 及以上版本打造的插件合集包含 SSH 进入 Pod、命名空间切换、生产环境误操作警示、镜像搜索等实用脚本。本文带你完整走一遍从使用者到贡献者的路径读懂现有 6 个 kubectl 插件的安装机制亲手编写自定义 kubectl 插件并按照项目的贡献规范提交你的第一个 PR。 先认识 kubectl-plugins 的 6 个内置插件kubectl 的插件机制非常简单只要一个可执行文件以kubectl-开头并位于 PATH 环境变量中kubectl 就会把它当作子命令。kubectl-plugins 就是利用这一点把一堆脚本统一管理起来插件文件功能语言kubectl sshkubectl-ssh以 root 或任意用户身份进入 Pod挂载 docker socket 实现Bashkubectl switchkubectl-switch模糊匹配切换命名空间 / 集群上下文Bashkubectl promptkubectl-prompt对标记为危险的集群/命名空间执行写操作时弹出警示Bashkubectl imagekubectl-image搜索 Docker Hub / GCR 中的镜像按 star 数排序Bashkubectl ipkubectl-ip按标签一键查 Pod 的节点名、节点 IP、Pod IP依赖 jqBashkubectl uptimekubectl-uptime以柱状图展示当前命名空间下所有 Pod 的存活时长Ruby环境要求只有两条Bash以及kubectl ≥ 1.12.0可用kubectl version确认。所有代码刻意保持了 BSD 与 GNU 环境的兼容性Linux 和 macOS 都能直接运行。 安装机制看懂 install-plugins.sh 就理解了 80%安装脚本 install-plugins.sh 只做三件事给所有kubectl-*文件加可执行权限将它们复制到~/.kube/plugins/jordanwilson230/把该目录追加到~/.bash_profile的 PATH 中已存在则跳过避免重复。git clone https://gitcode.com/gh_mirrors/ku/kubectl-plugins cd kubectl-plugins ./install-plugins.sh source ~/.bash_profile之后运行kubectl plugin list即可验证安装。这也正是你自定义插件的核心原则插件脚本放进 PATHkubectl 自动发现无需注册、无需编译。✍️ 编写自定义 kubectl 插件从最简单的例子入手写插件的最佳学习路径是先抄最薄的再逐步加复杂度。第一步命名 Shebang 最小骨架新建文件kubectl-mytool加上解释器声明即可。最薄的完整范例是kubectl-uptime全文仅 71 行#!/usr/bin/env ruby require json require date # 用 kubectl config view --template 读取当前 namespace # 再 kubectl get pods -o json解析后按存活时长打印柱状图它的思路值得所有插件借鉴一切数据都来自标准 kubectl 命令的 JSON 输出插件本身只负责取数 格式化零依赖、易测试。第二步处理参数参考 kubectl-ssh需要参数时kubectl-ssh167 行是标准示范用getopts解析-n命名空间、-u用户、-c容器、-d调试Pod 名作为第一个位置参数--之后的内容透传为容器内命令。建议你也照此结构组织自己的usage()帮助函数。第三步本地验证chmod x kubectl-mytool # 放到已加入 PATH 的目录或直接软链到 ~/.kube/plugins/jordanwilson230/ kubectl mytool -h # 验证插件已被发现且帮助正常 提交贡献完整流程与检查清单项目通过 Pull Request 接收贡献规则见CONTRIBUTING.md需声明贡献为你的原创作品并以项目开源协议授权。完整贡献路径如下Fork Clone仓库到本地新建特性分支添加插件将kubectl-xxx文件提交到仓库根目录安装脚本会按kubectl-*通配自动收集通常无需改动其他文件自测在 Linux 与 macOS 各跑一遍项目强制 GNU/BSD 双兼容按 PR 模板提交PULL_REQUEST_TEMPLATE.md内置了 5 项检查清单——是否关联 Issue、改动摘要、是否 GNU/BSD 兼容、是否惠及更广泛社区、是否需要协助测试等待 CI 通过.github/workflows/plugins.yml会在 Ubuntu 上启动 Minikube执行安装脚本并对switch、ssh、uptime、prompt、image逐一跑真实场景断言例如用非特权用户登录测试 Pod 验证kubectl ssh -u是否生效。如果你的插件想加进 CI参照其中启动 minikube → 安装插件 → 断言输出的三步式写法即可。小贴士社区遵循 Contributor Covenant 行为准则见CODE_OF_CONDUCT.md保持友善沟通会让你的 PR 更快被合并。❓ 新手常见问题速查装了插件却提示 command not found打开新终端或执行source ~/.bash_profile确认echo $PATH包含~/.kube/plugins/jordanwilson230。kubectl ip 报错需要先安装jqbrew/apt/yum 均可。kubectl 版本低于 1.12项目提供了 1.11.0 分支适配旧版本。想彻底卸载删除~/.kube/plugins/jordanwilson230目录并从~/.bash_profile中移除相关 PATH 行README 提供了精确的删除命令。 小结从用户到贡献者的关键就三句话插件 PATH 里一个kubectl-开头的可执行文件数据 kubectl 原生命令的 JSON 输出贡献 遵守 GNU/BSD 兼容 PR 模板 CI 三步。挑一个你日常最缺的小功能比如查看当前命名空间的 Deployment 副本数照着kubectl-uptime的结构写起来你的第一个 kubectl 插件贡献就只差一次 push 了。【免费下载链接】kubectl-pluginsA Collection of Plugins for kubectl Integration (exec as any user, context switching, etc).项目地址: https://gitcode.com/gh_mirrors/ku/kubectl-plugins创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考