2023年1月27日 「Golang 反射实战」 - 我用 Golang 反射写了一个配置库 - envutils , 应用再也不会少变量了 原文链接: https://tangx.in/posts/2023/01/27/golang-envutils-config/ 用习惯了 struct 之后, 我想所有东西都通过 struct 管理。 学习了反射之后, 我总要找点事情做来练习。 于是我整合了 Golang环境变量操作 和 Golang反射, 以及解决了我认为的其他一些配置管理的痛点, 便有了这个项……
阅读全文
2023年1月26日 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 命令行工具在配置账户的时候……
阅读全文
2023年1月24日 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 输出结……
阅读全文
2023年1月23日 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 岁。 完成交叉编译脚本, 编译其他……
阅读全文
2023年1月14日 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年1月12日 知识星球「运维之路」免费答疑 - 试运营到 2023/12/31 原文链接: https://tangx.in/posts/2023/01/12/zsxq-devops-camp/ 说公益也好、说免费也罢。 反正这一个不收费的知识星球。 这个星球的主题 「运维之路」指导与帮助。 为什么要搞这个星球 前段时间看到一部视频解说, 讲的是一个大学生到西藏支教的故事, 片面叫《藏草青青》, 有兴趣的可以看看。 让我想起了年轻的时候也……
阅读全文
2023年1月10日 开发 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 中的每个……
阅读全文
2023年1月10日 开发 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:……
阅读全文
2023年1月10日 开发 k8s 管理平台 - k8sailor 17. Pod 的阶段(phase)与状态(status) 原文地址: https://tangx.in/posts/books/k8sailor/chapter02/17-pod-phase-and-status/ Pod 的生命周期 https://kubernetes.io/zh/docs/concepts/workloads/pods/pod-lifecycle/ Pod 的 Status 不是 Phase。 Pod 的 Status 需要根据 Pod 中的 ContainerStatuses 进行计算得到。 Phase 阶段 描述 Pending(悬决) Pod 已被 Kubernetes 系统接受,但有一个或者多个容器尚未创建亦未运行。此阶段包括等待 Pod 被调度的时间和通过网络下载镜……
阅读全文
2023年1月10日 开发 k8s 管理平台 - k8sailor 16. 创建 Deployment 原文地址: https://tangx.in/posts/books/k8sailor/chapter02/16-create-deployment/ tag: https://github.com/tangx/k8sailor/tree/feat/16-create-deployment 使用 kubectl 命令创建如下 1 kubectl create deployment my-nginx-5 --image=nginx:alpine --replicas=3 --port=80 创建成功后查看结果, 大部分参数为默认参数。 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 # kgd -o yaml my-nginx-5 apiVersion: apps/v1 kind: Deployment metadata: labels: app: my-nginx-5 # 根据 deployment 自动匹配名字自动生成 name: my-nginx-5 # 用户指定 namespace: default # 用户选择,默认为当前 namespace spec: progressDeadlineSeconds: 600 # 默认……
阅读全文