Day16 - 准备 GitLab 的 GitOps 环境

GitOps 介绍

GitOps 是一种 DevOps 的解决方式,方法是以 Git 为中心,将应用程序、部属档案(如 Helm Chart )、基础架构即代码(如 Terraform ) 等所有所需资源全部都放入 Git 的 Repository 中进行管理,使用者只需要在 Git Repo 进行操作 (如 Push 、 Merge Requests ),部属环境就会根据 Git 的变动进行更新,透过 GitOps 会有以下好处

  • 开发者只需要通过 Merge Requests 就能完成应用的部属
  • 每一次的更新都会存在 Git Repo 里,可以查看各次的差别
  • 使用 Git 作为信任源,达到一致性和标准化

想了解更多的话,在 GitLab 的 What is GitOps? 文章中有更详细的介绍。

https://ithelp.ithome.com.tw/upload/images/20210915/20139235MaSSoDG0sO.png

下图是一个 GitOps 流程的示范,开发者与维运人员只需操作 Git Repo ,就可以完成在 Kubernetes 的交付。

建立 App 及 Manifest 的 GitLab Repository

要建置 GitOps 环境的话, Git 的使用是少不了的,今天的任务很简单,就是建立好 GitLab 的 Repository 并将 App 以及 Manifest 档案上传,需要先准备好 GitLab 帐号。

这里的 App 指的是开发的应用程序,Manifest 则是指宣告 Kubernetes 元件的档案。

  1. 进入 GitLab 网站。

  2. 点击 New project 建立专案

https://ithelp.ithome.com.tw/upload/images/20210915/20139235h1GybJ9tuU.png

  1. 点击 Create blank project

https://ithelp.ithome.com.tw/upload/images/20210915/20139235SOz7cH9Af1.png

  1. 输入以下资讯,完成後点击 Create Project
  • Project name
    • webapp
  • Visibility Level
    • Public
  • Initialize repository with a README
    • 取消打勾

https://ithelp.ithome.com.tw/upload/images/20210915/20139235UC5VpnPTaW.png

Webapp 的 Repository 就建立成功了。

https://ithelp.ithome.com.tw/upload/images/20210915/20139235PujTTVKuCK.png

接着使用同样操作,建立 Manifest 的 Repository

  1. 回到 GitLab 网站,点击 New project 建立专案

https://ithelp.ithome.com.tw/upload/images/20210915/20139235h1GybJ9tuU.png

  1. 点击 Create blank project後,输入以下资讯,完成後点击 Create Project
  • Project name
    • webapp-manifest
  • Visibility Level
    • Public
  • Initialize repository with a README
    • 取消打勾

https://ithelp.ithome.com.tw/upload/images/20210915/20139235WFYQ9EyRMq.png

Manifest 的 Repository 也建立成功了。

上传 App 及 Manifest 档案到 GitLab Repository

App 会使用在 Day08 创建的 NodeJS Web App,Manifest 则是使用在 Day15 建置的 Helm Chart,还没准备的可以回去复习一下,准备好的就来把档案上传到 GitLab 上。

  1. 进入 Cloud Shell 网站,点击终端机输入指令。

  2. 设定 Git Config

git config --global user.name "user"
git config --global user.email "[email protected]"
  1. 首先上传 WebApp 资料,cd 到 WebApp 的目录。
cd ~/project
ls

(输出结果)

app.js  dockerfile  node_modules  package.json  package-lock.json

里面有如 node_modules 不须进入版本控制的档案,所以建立.gitignore 来避免传到 Repo 里。

  1. 建立 .gitignore 档案
cat > .gitignore <<EOF
.env
node_modules
npm-debug.log
EOF
  1. 建立 Local Repo
git init
git add .
git commit -m "init"
  1. 到 webapp 的 GitLab Repo,点击 Clone-> Clone with HTTPS 复制地址

https://ithelp.ithome.com.tw/upload/images/20210915/20139235WyBIyu4h3Q.png

  1. 回到 Terminal,推送档案到 GitLab 上,将 <your webapp repo> 修改成刚刚复制的地址
git remote add origin <your webapp repo>
git push origin master
  1. 输入 GitLab 帐号密码後按Enter
Username for 'https://gitlab.com': 
Password for 'https://[email protected]':

在 webapp 的 GitLab Repo 网站重新整理,就可以看到档案上传成功。

https://ithelp.ithome.com.tw/upload/images/20210915/20139235DZhmgEjUN8.png

接着使用同样方法,把 Manifest 资料也上传到 GitLab。

  1. 移动到 Manifest 资料夹
cd ~/webapp
ls

(输出结果)

charts  Chart.yaml  templates  values.yaml
  1. 建立 Local Repo
git init
git add .
git commit -m "init"
  1. 到 webApp-manifest 的 GitLab Repo,点击 Clone-> Clone with HTTPS 复制地址

https://ithelp.ithome.com.tw/upload/images/20210916/20139235LiGxTnAuP5.png

  1. 回到 Terminal,推送档案到 GitLab 上,将<your webapp-manifest repo>修改成刚刚复制的地址
git remote add origin <your webapp-manifest repo>
git push origin master
  1. 输入 GitLab 帐号密码後按Enter
Username for 'https://gitlab.com': 
Password for 'https://[email protected]':

在 webapp-manifest 的 GitLab Repo 网站重新整理,就可以看到档案上传成功。

https://ithelp.ithome.com.tw/upload/images/20210915/20139235JPiZ0kyRoM.png

结论

今天了建立 GitLab Repo ,为之後的教学做准备,在後几天的文章就会学习到如何使用 GitLab CI 来实现 GitOps 技术。


<<:  教练,我想创业...

>>:  01. Laravel x Sail x Mac

Day 11 MSW初体验

Mocks Service Worker 先来介绍一下msw,因为我们要模拟真实的环境不可能随时都使...

第 30 型 - 环境配置与建构 (Build)

实务上,因应不同的开发阶段,应用程序会运行在开发环境 (Develop Environment)、预...

Day28 实作信件发送功能(1)

昨天有跟大家卖过关子说之後可能会为各位示范如何发送信件,大家应该都还蛮期待的吧!(应该有吧... 那...

【领域展开 03 式】 架站工具平台选择依据

厘清目标,选择合适的工具,事半功倍 当前两天决定使用从零建置个人网站 30 天领域展开最为题目的时候...

Day8 开机学习 Lua - 回圈控制、迭代函数

上一回我学到的是 Lua 的条件判断与回圈控制 今天我来看最後一段未解的程序码 for sPath ...