K8s 是一套 Ops (Operation) 的工具,DevOps 指的是开发部门与维运部门的整合(Dev + Ops),然而由於实务上,往往开发速度 > 维运部署的速度,因此 DevOps 的议题往往是产品开发的重点。GitOps 则是自动化部属与整合的产物,搭配 Git Resposity 工具使用,快速的将产品部署於 K8s cluster中。
GitBook draft
Development + Operation = DevOps,Dev: 开发部门,Ops = 维运部门 。
[1]在传统的软件开发流程,往往是Dev speed > Ops speed 而造成一种gap,很可能在整个软件发中,因为整体 Release Version 速度慢,以致难以去验证功能的市场性,造成产能的过度浪费,常常开发出无用的功能。
DevOps 主要有五个阶段:
可参考下图示例:
K8s 的出现主要目的是解决Operation 上Continuous Integration、Continuous Monitoring 的问题,一般来说透过Git Repository 工具上的 CI/CD 工具,当工程师Push Code 时,将自动的执行所有的测试,并触发K8s 工具,使的Code 可以更快速的反应在产品端。
[2]为了推行DevOps加速整个产品的开发周期,会由Dev与Ops 部门一起制订出开发的Pipeline,尽量让每一站点都可以自动化,一般来说是会由DevOps 工程师与Dev、QA一起制订出来。下图为一般pipeline 会制定的Pipeline,一般会经历过几个阶段:
下图为Pipeline 流程图:
[3]GitOps 是一个在Git Repository 上实现自动化更新K8s Cluster 的方式,透过Git CI/CD 进行自动化测试之後并把成功build 好的 image 传入Image Registry 中并Trigger K8s 更新Deployment,如下图所示。简单来说GitOps 某种程度上减轻了Ops 许多的工作,让开发之後自动的进行一系列的Ops,减轻原有Ops部门与Dev部门的沟通成本。
在GitLab 中要做到GitOps 其实复杂蛮多的,首先要先具备2种Gitlab Runner:
Install Docker gitlab-runner
concurrent = 1
check_interval = 0
[session_server]
session_timeout = 1800
[[runners]]
name = "raspberry pi"
url = "https://gitlab.com/"
token = <Token>
executor = "docker"
[runners.custom_build_dir]
[runners.cache]
[runners.cache.s3]
[runners.cache.gcs]
[runners.cache.azure]
[runners.docker]
tls_verify = false
image = "docker:latest"
privileged = true // MUST
disable_entrypoint_overwrite = false
oom_kill_disable = false
disable_cache = false
volumes = ["/cache", "/certs/client"] // MUST
shm_size = 0
docker volume create gitlab-runner-config
docker run -d --name gitlab-runner --restart always \
-v /var/run/docker.sock:/var/run/docker.sock \
-v gitlab-runner-config:/etc/gitlab-runner \
gitlab/gitlab-runner:latest
Install GitLab Agent
curl -sfL https://get.k3s.io | INSTALL_K3S_CHANNEL=latest sh -
config.yaml
: 内容可为空。echo "" > .gitlab/agents/<FOLDER NAME>/config.yaml
Install GitLab Runner
runner-chart-values.yaml
gitlabUrl: https://gitlab.com/
runnerRegistrationToken: <YOUR TOKEN>
rbac:
create: true
runners:
privileged: true
sudo helm --kubeconfig /etc/rancher/k3s/k3s.yaml \
install --namespace gitlab-cd gitlab-runner \
-f runner-chart-values.yaml gitlab/gitlab-runner
The manipulations of gitlab-runner will not roll back status after running cmds.
[1] Virmani, Manish. "Understanding DevOps & bridging the gap from continuous integration to continuous delivery." Fifth international conference on the innovative computing technology (intech 2015). IEEE, 2015.
[2] Ivanov, Vitalii, and Kari Smolander. "Implementation of a DevOps pipeline for serverless applications." International conference on product-focused software process improvement. Springer, Cham, 2018.
[3] Beetz, Florian, and Simon Harrer. "GitOps: The Evolution of DevOps?." IEEE Software (2021).
>>: [笔记][JavaScript] - 随机取出阵列元素之值
若您对於 Git 相当熟悉,你应该对於建立分支(Branch) 应该不陌生。依据 GitHub 官方...
Colab连结 今天要探讨的主题在模型从CNN Layer 转变成 Dense Layer 时,使用...
全球有超过 42% 的网站使用 WordPress 架设,WordPress 适合架设部落格、小型企...
上一期说到Micro LED的厉害之处,不过今天要说的是Micro OLED,Micro OLED继...
昨天我们已经写出了第一篇测试 今天我们就要来依靠 Shoulda Matchers 来简化以及优化我...