Remove Files From Git History 原文链接: https://typonotes.com/posts/2023/02/06/remove-files-from-git-history/ github 官方推荐使用 bfg 进行操作, 比使用 git filter-branch 更快, 更方便 查询文件 $ git rev-list --all | xargs -rL1 git ls-tree -r --long | sort -uk3 | sort -rnk4 | head -10 https://blog.csdn.net/HappyRocking/article/details/89313501 删除文件 1 $ bfg --delete-files id_{dsa,rsa} my-repo.git https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/removing-sensitive-data-from-a-repository https://rtyley.github.io/bfg-repo-cleaner/……
阅读全文
《别像弱智一样提问》 300 fork 700 star - 没想到大家都讨厌巨婴提问 原文链接: https://tangx.in/posts/2023/01/28/stop-ask-questions-the-stupid-ways/ 《Stop-Ask-Questions-The-Stupid-Ways》 这是我 6 年前被同事折磨的不行的时候创建的一个发泄仓库, 没想到竟然得到了这么多朋友的认可。 6 年间没有做过任何推广, 竟然得到了接近 300 fork 700 star Github 地址:……
阅读全文
「Golang 反射实战」 - 我用 Golang 反射写了一个配置库 - envutils , 应用再也不会少变量了 原文链接: https://tangx.in/posts/2023/01/27/golang-envutils-config/ 用习惯了 struct 之后, 我想所有东西都通过 struct 管理。 学习了反射之后, 我总要找点事情做来练习。 于是我整合了 Golang环境变量操作 和 Golang反射, 以及解决了我认为的其他一些配置管理的痛点, 便有了这个项……
阅读全文
DevopsCamp 第一期作业: 《cobra - 03 交互式命令(简单)》 解题答案 原文链接: https://tangx.in/posts/2023/01/26/devopscamp-cobra-interactive-survey/ 本文为 DevOpsCamp 实战训练作业 cobra - 03 配置文件的读取与写入(简单) 的解题答案 DevoOpsCamp 作业地址: https://www.devopscamp.cc/semi-plan-202301-2/posts/homework/cobra03/ 作业: cobra - 03 交互式命令 要求: 使用 https://github.com/spf13/cobra 实现命令工具 使用 https://github.com/go-survey/survey 实现交互式命令 实现 Demo 效果 除了官方效果之外, 我还发现了 aliyun 命令行工具在配置账户的时候……
阅读全文
DevopsCamp 第一期作业: 《cobra - 02 配置文件的读取与写入(简单)》 解题答案 原文链接: https://tangx.in/posts/2023/01/24/devopscamp-cobra-binding-config-file/ 本文为 DevOpsCamp 实战训练作业 cobra - 02 配置文件的读取与写入(简单) 的解题答案 DevoOpsCamp 作业地址: https://www.devopscamp.cc/semi-plan-202301-2/posts/homework/cobra02/ 作业要求 使用 https://github.com/spf13/cobra 实现命令工具 命令具有以下参数 --config , -c 配置文件 配置文件如下 1 2 3 # config.yml name: zhangsan age: 20 将配置文件保存为 JSON 格式 1 $ cat config.json 输出结……
阅读全文
DevopsCamp 第一期作业: 《cobra - 01 实现编译与参数绑定(简单)》 解题答案 原文链接: https://tangx.in/posts/2023/01/23/devopscamp-cobra01/ 本文为 DevOpsCamp 实战训练的作业解题答案 作业: cobra - 01 实现编译与参数绑定。 DevOpsCamp作业地址: https://www.devopscamp.cc/semi-plan-202301-2/posts/homework/cobra01/ 作业要求: 使用 https://github.com/spf13/cobra 实现命令工具 命令具有以下参数 --name 姓名 --age 年龄 如果年龄为空, 默认为 20 岁。 完成交叉编译脚本, 编译其他……
阅读全文
DevOpsCamp 《初一十五计划》 第一期 原文链接: https://tangx.in/posts/2023/01/14/devopscamp-semimonthly-plan-202301-2/ 《初一十五计划 202301-2》 第一期 作业地址 本地主题 cobra, 英语 cobra - 01 实现编译与参数绑定 cobra - 02 读取配置配置文件 cobra - 03 交互式命令 阅读并翻译 《Dockerfile 最佳实践》 cobra 是 golang 中非常流行的命令行库, 熟练掌握事半功倍。 英语重要性就不多说了,搞技术必须强……
阅读全文
知识星球「运维之路」免费答疑 - 试运营到 2023/12/31 原文链接: https://tangx.in/posts/2023/01/12/zsxq-devops-camp/ 说公益也好、说免费也罢。 反正这一个不收费的知识星球。 这个星球的主题 「运维之路」指导与帮助。 为什么要搞这个星球 前段时间看到一部视频解说, 讲的是一个大学生到西藏支教的故事, 片面叫《藏草青青》, 有兴趣的可以看看。 让我想起了年轻的时候也……
阅读全文
开发 k8s 管理平台 - k8sailor 20. 为 Deployment 创建 Ingress 原文地址: https://tangx.in/posts/books/k8sailor/chapter02/01-install-k3s-cluster/ tag: https://github.com/tangx/k8sailor/tree/feat/20-create-ingress k8s ingress https://kubernetes.io/zh/docs/concepts/services-networking/ingress/ 1 2 3 4 # Create an ingress with a default backend kubectl create ingress ingdefault --class=default \ --default-backend=defaultsvc:http \ --rule="foo.com/*=svc:8080,tls=secret1" --dry-run -o yaml 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 apiVersion: networking.k8s.io/v1 kind: Ingress metadata: creationTimestamp: null name: ingdefault spec: defaultBackend: service: name: defaultsvc port: name: http ingressClassName: default rules: - host: foo.com http: paths: - backend: service: name: svc port: number: 8080 path: / pathType: Prefix # 匹配方式 tls: - hosts: - foo.com secretName: secret1 status: loadBalancer: {} 路径类型 Ingress 中的每个……
阅读全文
开发 k8s 管理平台 - k8sailor 19. 为 Deployment 创建 Service 原文地址: https://tangx.in/posts/books/k8sailor/chapter02/19-create-service/ tag: https://github.com/tangx/k8sailor/tree/feat/19-create-service https://kubernetes.io/zh/docs/concepts/services-networking/service/#externalname 1 2 3 kubectl create service clusterip nginx-web --clusterip="port:targetPort" kubectl create service clusterip nginx-web --clusterip="8082:80" kubectl create service nodeport nginx-web --clusterip="8081:80" 需要注意, 使用 kubectl get service 查看到的 Ports 的展示结果为 port:nodePort, 而 targetPort 不展示。 1 2 3 # kubectl get service NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE demo-nginx-nodeport-3 NodePort 10.43.181.29 <none> 80:32425/TCP 4s port, targetPort, nodePort 端口映射中的四个 比较关键 的要素: name: 避免端口相同时,默认名字冲突 port:……
阅读全文