
devops
文章平均质量分 58
surfirst
长期就职于全球化的公司团队。领导的团队是公司第一个转型为敏捷开发模式的团队,成功推动整个部门转型为敏捷开发模式。协调全球架构师,共同构建公司的参考架构。持续的创新者,拥有6项美国专利,为树立中国团队的创新形象建立基础。
展开
-
如何在Windows 的 WSL 上安装非桌面版的 Docker?
WSL 让 Windows 上使用 Linux 没有了传统虚机的那种切换压力。Docker 是一个简单的服务容器化解决方案,但是Windows 上的 Docker 桌面版只对个人和小公司免费,而且 Docker 桌面版太庞大,增加了启动 Windows 的时间,也增加了系统资源的消耗。本文介绍如何在 WSL 2.0 系统里在不安装 Docker 桌面版的情况下直接安装 Docker。本文以 Ubuntu 20 为例,其他 Linux 版本也可以参考本系统的安装方法。原创 2022-10-19 16:07:22 · 1839 阅读 · 0 评论 -
从DevOps看高绩效组织是如何处理产品和项目的关系的?
DevOps 的流动、反馈、持续学习和实验的三步法需要由一个稳定的团队来实现。在每次软件发布后开发人员就被打散并重新分配,开发人员就没有机会得到自己工作的反馈,团队就不能通过持续交付和改进变为高绩效的团队。组织应该制定自己的战略目标,通过稳定的团队持续改进产品提高绩效实现战略目标,达到建立高绩效组织的目的。原创 2022-10-16 17:06:51 · 368 阅读 · 0 评论 -
如何做大你的软件研发团队?
实践证明5-9人的团队工作效率最高。理想的情况下软件研发公司的团队都由这种小规模的团队组成。在研发大型软件的时候,软件公司需要许多这种小团队,但是如果这些小团队总是需要各种沟通和协调才能推进工作,公司的整体研发产出不可能得到同比例地提高。因此如何组织这些团队,在研发大型软件时同样保持高效是每个快速成长的软件研发公司必须解决的问题。评判团队的组织形式的标准是考察这种组织形式是否可以保证价值能顺畅地流动到客户手中。本文结合《团队拓扑》一书提出的 4 种团队形式,以及上述评判标准,试图回答这个问题。原创 2022-09-18 18:13:27 · 1427 阅读 · 0 评论 -
5分钟让免费的 Linux KVM 虚机管理跟 VMWare 一样好用
KVM 是 Linux 上常用的虚机管理软件,但是使用 KVM 命令行管理虚机是一件既繁琐又容易出错的任务。本文介绍一种简单方法可以让用户方便地在 Windows 上像管理 VMWare 虚机那样管理 KVM 虚机。原创 2022-04-19 15:17:57 · 1556 阅读 · 0 评论 -
敏捷迭代就是小瀑布吗?为什么创业团队更敏捷?
瀑布在研发的每个阶段都是不同的团队来完成的,而敏捷团队会自己完成从需求分析到交付的所有任务。需求分析详细设计开发测试交付每个阶段由一个独立的团队或者专家来完成。比如需求分析由 BA (Business Analyst) 来完成。BA完成需求分析以后会提交详细的需求分析文档。架构师团队会根据需求分析文档来做详细设计。开发由开发团队完成,开发可能又有前端、后端、移动等不同的分工。在开发工作完成以后。测试团队开始测试工作,测试工作可能包括功能原创 2022-04-15 08:46:57 · 886 阅读 · 0 评论 -
如何在Linux上查看端口被哪个进程占用了
本文介绍了如何使用 fuser 或者 lsof 命令在 linux 系统里查看端口被哪个进程占用了。原创 2022-02-03 20:24:31 · 13947 阅读 · 1 评论 -
git: Couldn‘t find remote ref
你看到这个消息的原因往往是谁把你在远程仓库上的分支给删掉了。你可以通过使用下面的命令让git重新把你的仓库建到远程仓库上:git push -f原创 2021-06-02 11:13:07 · 7559 阅读 · 1 评论 -
为什么我的 postgresql 重启 docker 后数据库就没了?
我们可以使用 docker 直接加载 postgresql 镜像来启动一个新的 postgresql 服务,但是这样做当重启 postgresql 的容器后,我们会发现数据库的内容就没了。这个时候我们需要使用 docker volume 功能让 postgresql 把数据库放到主机 (host) 的文件夹下来保存我们的数据库。如果是 docker-compose,请使用类似于下面的代码:kong-db: image: postgres container_name: kong-db原创 2021-05-23 19:38:28 · 3242 阅读 · 2 评论 -
如何使用 VSCode 的转移端口 (port forward) 功能
通常我们会在云主机上运行很多服务,在调试这些服务的时候我们需要打开防火墙来访问指定的服务,但是这样会扩大我们的云主机的攻击面,让我们的云主机的安全受到威胁。虽然我们可以通过限制 IP 来减少威胁,但是每次都去云平台调整防火墙的 IP 限制显然是一件很麻烦的事。VSCode 有一个 remote ssh 插件,装上这个插件后我们就可以通过 ssh 远程访问我们的主机了,这个插件有一个 port forward 功能,使用这个功能后我们就可以不用调整防火墙设置直接在本地访问云主机指定端口上的服务了。比如下面的原创 2021-05-07 08:44:07 · 27056 阅读 · 0 评论 -
如何在 azure devops wiki 或者任何 markdown 页面上加入 mermaid 类图 (class diagram)
Azure DevOps wiki 只支持使用 Mermaid 创建序列图、甘特图和流程图,而 Mermaid 支持的图形种类远远不止这三种。当然我们可以直接用其他工具创建好图形然后复制到我们的 wiki 页面里,但是这样就失去了共同创作的机会。我们可以使用下面的步骤来把 Mermaid 图形加到 wiki 页面里,同时又可以让其他同事修改。本方法不仅支持Azure DevOps wiki,也支持任何使用 Markdown 创建的页面。使用 mermaid’s live editor 创建页面原创 2021-05-02 19:23:42 · 1041 阅读 · 0 评论 -
如何清除没用的 docker 镜像 (image) 文件
当我们每次构建一次 docker 镜像就会替换掉原来的镜像文件。那些文件很占地方。那么如何清除这些文件呢?我们可以使用下面的命令:docker system prune运行以后可以看到以下提示,输入“y"就可以清理无用的 docker 文件了。...原创 2021-04-27 20:21:47 · 3923 阅读 · 0 评论 -
如何直接用 python 安装 pip 依赖包
通常我们需要安装 pip 来安装 pip 依赖包,这在 Windows 上需要一系列步骤,其实我们可以直接通过 python 来安装依赖包,因为安装 python 以后 pip 作为一个 python 模块就已经在我们的系统里了。下面的命令行安装 requirements.txt 里的依赖包:python -m pip -r requirements.txtpython -m 表示直接把 python 模块当做脚本来执行。这里我们直接把 pip 模块当做脚本来执行,所以后面的参数就跟 pip 一样了原创 2021-04-25 11:50:46 · 1123 阅读 · 0 评论 -
如何解决vs code python 的 unresolved import 错误 (reportMissingImports)
当我们在 vs code 里编辑 python 文件时,vs code 通常可以正确解析 python 自带的模块,但是当我们加上自己的 python 模块的时候就会看到 unresolved import 错误。比如下面的图片,price_checker 是我自己的模块,可以正常运行但是 vs code 会提示 could not be resolved。解决方案在项目的根文件夹创建一个".vscode" 文件夹比如我的根文件夹名称是coin-trader,.vscode 文件夹的位置如下图原创 2021-04-25 10:51:10 · 4676 阅读 · 0 评论 -
在 GitHub 上如何让开发者必须经过 pull request 才能提交代码
默认情况下 Github 的仓库上的任何分支只要开发者有写权限就可以直接推送 (push) 代码到远程仓库里,但是为了保证代码质量,开发团队往往需要代码经过审核后才能被提交到仓库中。我们可以通过如下步骤要求开发者必须通过 pull request 才能提交代码到指定分支上。选择 Branches 设置选择 settings选择 Branches给指定分支增加规则 (rule)点击右边的 Add rule选择要保护的分支比如要保护 main, dev, stage, master 需原创 2021-04-22 15:10:08 · 4524 阅读 · 0 评论 -
远程桌面看不到任务栏怎么办?
有时候我们使用远程桌面到我们的远程电脑里,结果看不到任务栏,不能执行任何命令,而使用Windows组合键也没有作用,似乎只能找人去重启电脑了。其实在这个时候,我们还可以试试远程桌面的这个功能:启动远程桌面后,点击“显示选项”,然后选择“本地资源”这时候注意选择“键盘”框里的“应用Windows组合键”,选择为“在远程计算机”上。这样我们就可以尝试使用 alt+tab 调出正在运行的程序,或者使用ctl+alt+del调出任务管理器来重启电脑了。...原创 2021-03-24 11:10:12 · 10316 阅读 · 0 评论 -
如何查看 azure app service 自带的 mysql 的用户名和密码
azure app service 自带一个 mysql 数据库,这便于我们快速建立小型网站。虽然我们可以管理它,但是只有知道了它的用户名和密码,我们才能真正的使用它。那么我们怎么能找到它的用户名和密码呢?打开“高级工具” (Advanced Tools)点击左边工具栏的 开发工具->高级工具,然后点击“转到"这样可以看到 Kudu,然后点击顶部菜单的 Debug console这个时候会出现命令行,我们要找到 *D:\home\data\mysql* 中的 MYSQLCONNSTR_原创 2021-03-04 22:38:21 · 467 阅读 · 1 评论 -
如何解决 Azure API Management 跨域 (CORS) 设置不起作用的问题?
test原创 2021-03-04 21:39:01 · 669 阅读 · 1 评论 -
如何让 vscode 使用 ssh密钥 (key) 来连接到远程Linux上
现在的云服务器都推荐使用 ssh key 而不是用户名密码来连接到远程服务器上。在 vscode 里使用 ssh key 的过程如下:选择远程服务器如下图所示选择 Remote-SSH: Connect to Host…输入你的服务器,格式为:your_username@yourip_or_hostname配置ssh点击左边的远程图标然后点击小齿轮可以看到如下的格式的配置文件Host 10.222.48.232 HostName 10.222.48.232 User jerr原创 2021-03-03 14:20:06 · 21940 阅读 · 0 评论 -
如何在 centOS 7 上安装 nodejs?
如果我们用 centOS 7 自带的 yum 来安装 nodejs,那么安装的 nodejs 版本是 nodejs 6。这个版本太低,没法支持现在的一些应用程序开发。我在 reactjs 开发的时候就发现使用 npm install 根本装不上依赖项。要安装最新版的 nodejs,我们得使用 nvm。第一步安装 nvmcurl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.35.3/install.sh | bash安装完成后,我们需要重新原创 2021-03-02 19:43:09 · 234 阅读 · 0 评论 -
如何让 Docker 使用代理服务器 (proxy) 构建 (build) Docker Image
有很多公司设置了防火墙,要上互联网必须通过代理服务器。我有一个 dockerfile 需要使用 pip 安装 依赖的 python 模块,结果出现错误。我的 dockerfile 如下:FROM python:3WORKDIR /appCOPY py-solution/requirements.txt .RUN pip install --no-cache-dir -r requirements.txtCOPY py-solution/. .CMD [ "python", "./serv原创 2021-02-27 08:44:26 · 1766 阅读 · 0 评论 -
如何把 CentOS 7 的 Git 升级到2.x,以避免 VS Code 要求升级 Git 的提示
CentOS 7 自带的 Git 是 1.8,在使用 VS Code 远程到 CentOS 7 的主机上的时候总是提示要升级 Git 到 2.x。我开始以为是要升级我的 Windows 的 Git,后来发现升级以后提示还在。升级 Cent OS 7 的 Git 以后,问题消失。首先,我们需要指定一个新的 yum 源:yum install http://opensource.wandisco.com/centos/7/git/x86_64/wandisco-git-release-7-2.noarch.原创 2021-02-25 10:55:59 · 274 阅读 · 0 评论 -
Kubernetes: ingress default-back-end not found错误
我建了一个 K8s ingress 但是使用下面的命令,确看到 default-back-end not found 错误:kubectl describe ingress [my-ingress-name]我们的 ingress.yaml 如下:apiVersion: networking.k8s.io/v1kind: Ingressmetadata: name: mongo-express-ingress # annotations: # kubernetes.io/ing原创 2021-02-17 20:54:04 · 2816 阅读 · 0 评论 -
Kubernetes 弃用 Docker 对程序员有什么影响?
首先来说结论,Kubernetes 弃用 Docker 对程序员没有什么影响。原因很简单,程序员可以继续使用 Docker Image,因为 Docker 的容器镜像 (Image) 遵循 OCI 标准,这是 Docker 在 2015 年发起的标准。Kuberenetes 的容器镜像就是支持的 OCI 标准。为什么 K8s 要宣布不支持 Docker?这是因为 K8s 只需要 Docker 的容器功能,而 Docker 本身包含了下面的几大功能。Container RuntimeAPICLI原创 2021-02-16 23:05:27 · 503 阅读 · 0 评论 -
kubectl tunnel connection failed
我在 cent OS 的 xwindows 的 terminal 里执行 kubectl 命令时遇到了这个错误,原因是我的 cent OS 服务器通过代理访问的互联网,但是 Kubernetes 要求一些 IP 段设置为 NO_PROXY通过执行下面的命令解决了问题。一般我们可以通过 cat /etc/profile 看到这个 NO_PROXYexport NO_PROXY=localhost,127.0.0.1,10.96.0.0/12,192.168.99.0/24,192.168.39.0/24,原创 2021-02-15 21:58:51 · 173 阅读 · 0 评论 -
Kubernetes: 几个常用的 kubectl 命令
kubectl 是监控 Kubernetes 的命令行工具,下面介绍几个常用的 kubectl 命令创建 Deployment用户不能直接创建 Pod,而只能通过创建 Deployment 来创建 Podkubectl create deployment name --image=image_name比如创建一个 mongodb 的 Podkubectl create deployment monokube --image=mongo使用 yaml 文件创建kubectl apply -f原创 2021-02-14 21:11:55 · 370 阅读 · 1 评论 -
Kubernetes 架构简析
Kubernetes (K8s) 作为现在最热的微服务框架,掌握它的架构原理是我们学习、部署和诊断 K8s 的基础。K8s 整体上分为两个部分,第一个部分是 Master,这是 K8s 的大脑。第二个部分是 Node,这个是工作集,一般来说就是一台台虚机。一个最小的完整 K8s 安装包括 两个 Master 和 3 个 Node。K8s MasterK8s Master 至少包括 4 个进程,它们分别是:API ServerSchedulerController ManageretcdA原创 2021-02-13 20:47:12 · 377 阅读 · 1 评论 -
Kubernetes 的 9 个核心组件
最近实现微服务的几个热门框架是 Dubbo, Spring Cloud 以及 Kubernetes等。而 Kubernetes 因为它对容器应用的自动化部署、扩展以及管理地全面支持,成为微服务框架最为热门的选择。下面是我总结的几个 Kubernetes 的核心组件,了解这些核心组件可以为我们更快、更全面地掌握 Kubernetes 框架打下坚实的基础。这些组件是:NodePodVolumesServiceIngressConfigMapSecretsDeploymentStateful原创 2021-02-12 20:08:51 · 1718 阅读 · 0 评论 -
如何让 Windows 命令行程序像 Linux & 命令那样在后台运行
一般来说如果我们想让一个 Windows 命令行程序在后台运行,我们需要把这个程序写成一个 Windows 服务程序。然后使用 sc 命令或者把它安装成 Windows 服务,它才能在后台运行。Windows 没有像 Linux 那样直接在命令最后加一个 & 字符就可以让命令在后台运行了。比如下面的命令可以让打包操作在后台运行,即使关掉窗口也不会关掉进程。tar -czf home.tar.gz . &在 Windows 上要达到类似的效果需要一些技巧。下面的命令可以让你的 Wind原创 2021-01-25 17:11:58 · 22387 阅读 · 1 评论 -
如何从git仓库中删除已经被跟踪的文件 - 原因及解决方法
假设我们有一个目录名称叫 bin 的下面的一些二进制文件被不小心提交到了 git 仓库中。这个时候即使我们把 bin 目录加到 .gitignore 文件中,在每次提交代码的时候 git 还是会提示里面的文件被修改了是否要提交。原因原因是 bin 目录已经被加入了 git 的 staging area,只要被加入了 staging area。我们可以使用下面的命令来查看有哪些文件在 staging areagit ls-filesgit bin 已经被加入了 staging area所以如果我原创 2020-12-24 21:37:41 · 2312 阅读 · 0 评论 -
如何把vscode设置为 git 的默认文本编辑器
如果你使用 git 命令行来提交代码或者解决代码冲突。git 会使用它的默认编辑器 VI 来编辑文本。 VI 可是大神才用的文本编辑器。为了提高效率,我更愿意用像 Visual Studio Code 这样的编辑器来编辑文本。我们可以使用下面的命令来改变 git 的默认文本编辑器。比如下面的命令就是把文本编辑器设置为 Visual Studio Code,当然前提是你已经安装了 VS Code.git config --global core.editor "code --wait"wait 指令让原创 2020-12-24 19:38:26 · 4185 阅读 · 2 评论 -
如何把已跟踪的git文件加入gitignore里
有时候我们会不小心把一些不跟踪的文件加入了 git 仓库,这时候即使我们把这些文件的路径加入gitIgnore文件,在每次提交代码的时候 git 还是会提交这些文件。如果你遇到了上述的问题,你可以在把这些文件加入 .gitIgnore 文件以后执行下面的命令:git update-index --assume-unchanged path_to_your_file/your_file.ext_name再执行 commit 命令的时候,commit 文件里就看不到 your_file.ext_name原创 2020-11-29 12:16:07 · 674 阅读 · 0 评论