DevOps 工程师的 20 个生活小窍门
行业秘诀、小窍门、商业秘密、小抄、最佳实践,随便你怎么称呼它们。每个行业都有这样的技巧,任何在这个行业待得足够久的人,都会积累大量的技术和精湛的工具,从而在工作中脱颖而出。
有些事情就是需要时间才能掌握。我爸爸是一位退休的建筑工人,他能在不到三个小时的时间内,就把一间中等大小的浴室的瓷砖铺好,而我光是之后的填缝工作就得花一整天的时间。经验对于某些技能至关重要,但也有一些技巧不需要多年的练习就能掌握。
DevOps 也不例外。成为 DevOps 大师没有捷径,投入多年时间或许就能实现。话虽如此,还是有一些行业秘诀、生活小窍门和实用工具,一定能让你立即提升工作效率。
以下是我的非全面生活窍门列表,保证可以让任何 DevOps 工程师的生活变得更轻松。
该列表细分为:
- 工具🧰
- 技能🤸
- 习惯🔁
- 脚本、配置和扩展💻
工具:🧰
你知道吗?在德国,如果你想引起别人的注意,发传真是最好的选择。
另外,在日本,直到今年,政府机构仍在使用软盘。
了解自身所处的环境对于选择最适合工作的工具至关重要。但重要的是,不要执着于拥有市场上最好、最新或最炫的工具。以下工具可以真正改变 DevOps 工程师的职业格局。
“你不需要成为工具棚里最锋利的工具,就能使用工具棚里最锋利的工具” - 匿名(我可能是编造的)
1. K9S
K9s是一个基于终端的 UI,用于与 Kubernetes 集群交互。只需极短的时间即可熟悉使用该工具导航、观察和管理您的实时应用程序。一旦掌握,您可能就再也不想回头了。K9s 会持续监控 Kubernetes 的变化,并提供许多实用的命令来与您观察到的资源进行交互。
链接安装。
2. tmux
tmux是一款功能强大的终端多路复用器,它支持会话持久化、窗口和窗格管理,以及通过按键绑定和配置文件进行自定义,从而提升工作效率。它支持脚本自动化,方便与共享会话协作,并与各种 shell 和工具完美集成。
3. Glasskube
Glasskube是 Kubernetes 的开源包管理器。它使在 Kubernetes 上部署、更新和配置包的速度比Helm 或 Kustomize等工具快 20 倍。其灵感源自 Homebrew 和 npm 的简洁性。您可以选择使用 Glasskube 的 UI、CLI 或直接通过 GitOps 部署包。
愿意支持我们吗?
如果这是您第一次听说 Glasskube,我们正在努力打造下一代产品Package Manager for Kubernetes
。
如果您喜欢我们的内容并希望支持我们完成这一使命,我们将非常感激您在GitHub上给我们一颗星⭐️ 。
⭐️ 在GitHub上为我们点赞🙏
4. ripgrep
Riggrep是一款功能强大的搜索工具,以其速度、灵活性和用户友好的输出而闻名。它使用高级算法快速处理大型代码库,支持多种搜索模式,并呈现清晰、高亮的搜索结果。Riggrep 与其他工具集成良好,跨平台且可自定义。
5. Firefox 容器用于多云帐户访问
Firefox 多账户容器是一款实用性被低估的浏览器扩展程序。它通过将网站划分到不同的容器或标签页中,防止跨网站会话跟踪,从而帮助管理在线活动。它最实用的功能是允许用户在同一浏览器中同时登录多个账户。通过 Cookie 隔离会话,它可以保护个人数据并提升整体浏览体验。如果您有多个 AWS 账户?没问题,您可以在同一个浏览器窗口登录所有账户。
6. VPA
垂直 Pod 自动扩缩器 (VPA) 让用户无需为其 Pod 中的容器设置最新的资源限制和请求。配置完成后,它将根据使用情况自动设置请求,然后进行合理的节点调度,确保每个 Pod 都能获得适当的资源量。
在这里安装。
示例配置:
apiVersion: autoscaling.k8s.io/v1
kind: VerticalPodAutoscaler
metadata:
name: my-app-vpa
spec:
targetRef:
apiVersion: "apps/v1"
kind: Deployment
name: my-app
updatePolicy:
updateMode: "Auto"
7. Kctx 和 Kubens
毫无疑问,这是用于 Kubernetes 上下文和命名空间切换的最有用的 CLI 工具。
在这里安装
8. ChatGPT 提供指导
使用ChatGPT 时,要像对待团队中的资深成员一样,它从不忙碌,并且总是乐于解答你的所有问题。确保你的目的是加深理解,而不是盲目地解决任务。
Prime ChatGPT 成为高级团队成员时会提出这样的提示:
您将担任高级 DevOps 工程师,提供在 DevOps 领域脱颖而出的实用技巧和技巧。您还将随时准备帮助初级团队成员解答任何疑问。请提供实用建议、推荐工具以及管理基础设施和持续集成/持续部署 (CI/CD) 流水线的最佳实践。请使用我的沟通风格撰写,风格清晰、简洁、实用。以下是我的沟通风格示例:
“专注于自动化重复性任务以节省时间并减少错误。”
“利用 Docker 和 Kubernetes 等工具进行容器化和编排。”
“始终监控系统性能并主动发现潜在问题。”
“指导初级人员时,要有耐心,并用简单的术语解释概念。”
您可以向 ChatGPT 提出以下一些问题,以进一步微调提示:
-
您是否希望这些建议和解释更适合初级人员或具有一定 DevOps 经验的人员?
-
您能否提供更详细的例子来说明您的沟通风格,特别是在向初级人员解释复杂概念的情况下?
-
DevOps 中是否存在特定的挑战或重点领域(例如自动化、监控、安全),您希望优先考虑这些挑战或领域以获得建议和初级支持?
技能:🤸
技能并非一朝一夕就能掌握,需要时间和精力的积累,这不足为奇。在瞬息万变的科技世界里,确定需要培养哪些技能可能会令人困惑。然而,作为 DevOps 工程师,掌握脚本编写并优先考虑文档编写绝对不会错。
“培养你的技能,而不是简历。”——谢丽尔·桑德伯格
9.脚本
对于 DevOps 工程师来说,脚本就像一把瑞士军刀,因为它可以自动执行重复性任务,在各个流程之间提供必要的粘合剂,并确保跨环境的一致性。学习和练习脚本需要熟悉Makefile等工具、用于高效文本处理的正则表达式 ( regex ),以及用于强大命令行操作的Bash脚本。
不要觉得必须先掌握脚本才能在工作中运用。在当前的软件或基础设施交付流程中寻找手动步骤,并尝试编写合理的自动化脚本。如有需要,可以申请法学硕士学位 (LLM) 的帮助。
10.文档
把所有事情都写下来。这是照顾未来自己的最好方法。
尝试一些笔记解决方案,以下是一些:
选择哪一个并不重要,只要你只选择一个并且坚持下去即可。
🤔 不要陷入花太多时间整理和优化笔记的陷阱。笔记不必完美,只要实用即可。在笔记维护上花费太多时间是
meta-work
……
习惯:🔁
如果仅仅依靠纯粹的动力来完成工作和提升,你将永远无法取得长足进步。清晰明确、持之以恒的习惯是粘合剂,即使在动力消退时也能让你不断成长,保持高效。习惯将工具和技能无缝衔接,确保你高效地完成工作。
“动力让你开始,习惯让你坚持下去。”——吉姆·瑞恩
11.不要写待办事项清单,要留出时间。
我深受卡尔·纽波特 (Cal Newport) 关于深度工作的文章的影响,我坚信,对于想要为团队做出有意义贡献的个人来说,努力每周保留一定时间用于不间断的深度工作至关重要。
待办事项清单本身只是愿望清单。一旦你把它们列在日历上,你就有了一个计划。
需要指出的是,我认识的人中,很少有人能每周每天都百分百地执行他们的时间块计划。把它们当作北极星,在需要的时候安排休息时间。甚至可以全天更新清单。但至少要坚持执行计划。
12. 互惠会议区
除非你是自己的老板,否则你很可能无法完全掌控自己必须参加的会议和承诺。互惠会议时段是一种应对日历上突然出现的意外时间承诺的方法。
其理念是,每次日历上添加新会议时,都预留一个等量的深度工作时段。这样,你就可以保持灵活性和相对的可用性,而无需牺牲每周的深度工作配额。
13. 养成关机习惯
如果你是远程工作者,这尤其有用。“关机例程”是一系列问题和步骤,你需要在一天工作结束后逐步完成。理想情况下,完成清单后,你应该可以把工作抛到脑后,直到第二天再处理。
我追踪的内容如下:
-
我锻炼了吗?
-
我是否已经解决了所有杂项任务?
-
我有任何开放的对话吗?
-
我需要将任何任务推迟到第二天吗?
-
我写日记了吗?(虽然与工作无关,但我喜欢在离开办公桌前完成它)
-
我做了多少个深度工作?
-
在我当天关闭笔记本电脑之前,我是否最后一次检查了我正在跟踪的指标?
14. 开会时做笔记
理想情况下,在会议期间做笔记并在会后分享应该成为您组织的一项常见做法。如果还没有,那么现在正是您开始实践的绝佳机会。这不仅能确保您不会错过任何重要细节,还能为您的团队提供卓越的服务。
15. 试运行中断
测试运行中断对于 DevOps 工程师应对真实事件至关重要。例如,你必须确切地知道如何在凌晨 1 点意外警报到来之前快速有效地连接到集群或虚拟机,以免措手不及。
熟悉移动文件、检索容器日志和其他关键任务。提前设置 SSH 密钥、kubeconfig 和其他访问工具,可以节省宝贵的时间,并减轻实际中断期间的压力。主动测试和优化这些流程,确保您能够有效应对任何中断。
脚本、配置和扩展:💻
如果某件事需要多次执行,请将其自动化。既然使用别名可以节省时间,何必写出完整的命令呢?在漫长的职业生涯中,可能很难准确计算出输入“k”而不是“kubectl”能节省多少时间。但有一点是肯定的:节省的时间很多,而且非常值得。
“你要么是创造自动化的人,要么就是被自动化的人。”——汤姆·普雷斯顿·沃纳
16. 使用有用的别名
不要浪费时间输入您每天写的完整命令。
以下是我配置的一些别名的片段:
k=kubectl
kctx='kubectl ctx'
kgp='kubectl get pods'
kns='kubectl ns'
l='ls -lah'
la='ls -lAh'
ll='ls -lh'
ls='ls -G'
lsa='ls -lah'
md='mkdir -p'
rd=rmdir
run-help=man
17. 使用 TTL 控制器高效清理已完成的作业
您可以通过设置此字段来指定已完成作业或 Pod 在自动移除前的生命周期.spec.ttlSecondsAfterFinished
。如果您在作业繁重的环境中工作,已完成作业可能会迅速累积,并占用大量资源。
示例配置:
apiVersion: batch/v1
kind: Job
metadata:
name: test-ttl-job
spec:
ttlSecondsAfterFinished: 100
...
18. Git 脚本与上游保持同步
git remote add upstream <upstream-url>
git fetch upstream
git rebase upstream/main
git push --force-with-lease
19. Kubectl 自动完成
Kubectl 自动补全功能可让您为 kubectl 创建别名。此功能可减少对备忘单的需求,从而节省时间,尤其适用于管理 Kubernetes 集群。由于其省时高效,它也推荐用于 CKA 考试。
针对 Linux 进行设置:
# install bash-completion
sudo apt-get install bash-completion
# Add the completion script to your .bashrc file
echo 'source <(kubectl completion bash)' >>~/.bashrc
# Apply changes
source ~/.bashrc
在此处查看其他安装方法。
20. Visual Studio Code 远程 – SSH
远程 - SSH 扩展允许您使用任何支持 SSH 的远程机器进行开发,从而更轻松地在部署到的同一操作系统上进行开发、使用强大的硬件、在环境之间切换以及远程调试应用程序。
在这里安装。
最后的想法
成为顶尖 1% 的 DevOps 工程师并没有什么神奇的秘诀。就像大多数职业一样,这需要时间、奉献和经验的积累,这些因素会逐渐将你塑造成一位高效的专业人士。随着时间的推移,你会越来越擅长识别模式、回顾过去的情况,并快速找到反复出现的问题的解决方案。所以,不要指望这份清单中的任何一个生活小窍门就能让你立即获得 50% 的加薪和晋升。
然而,如果你持续专注于改进工具、磨练技能、不放弃良好习惯并实施智能自动化,你就能快速进步,超越自我。说不定,晋升就在眼前。
如果您喜欢我们的内容并希望支持我们完成这一使命,我们将非常感激您在GitHub上给我们一颗星⭐️ 。
文章来源:https://dev.to/glasskube/20-life-hacks-for-devops-engineers-3dn7