零成本打造個人DevOps實驗室:完整本地端環境建置指南


Summary

這篇文章探討了如何以零成本打造個人DevOps實驗室,不僅提供詳細的建置指南,也分享了許多有價值的技巧和經驗。在這過程中,我感受到科技帶來的無限可能,也希望能幫助更多人踏上這條學習之路。 Key Points:

  • 探索如何利用邊緣運算技術,將Docker與Kubernetes部署至低成本的邊緣設備,如樹莓派集群,以創造更真實的DevOps實驗環境。
  • 在本地端實驗室中實踐GitOps,透過程式碼管理基礎設施與應用配置,使得版本控制更加簡單且安全,提升協作效率。
  • 整合Prometheus與Grafana等監控工具,建立完善的指標監控系統,有助於優化資源利用率及系統效能。
總而言之,本篇文章讓讀者掌握了構建高效且靈活的個人DevOps環境所需的重要知識和技能,為未來進一步探索打下堅實基礎。

如何在筆記型電腦上建立免費的DevOps實驗室

### 如何在筆記型電腦上設置DevOps實驗室(不花一毛錢)
擁有自己的DevOps遊樂場!
想像一下,擁有一個私人空間,可以隨意實驗那些科技巨頭用來構建和部署軟體的強大工具,而這一切都不需要花費任何金錢或依賴快速的網路連接。聽起來是不是太美好了?但這可不是夢!

### 問題:無雲端帳單的DevOps練習
Jane感到困惑。她已經學習了幾周的DevOps概念,看了視頻、閱讀了文章,但當她試著實際操作時,每個教程都指向AWS、Azure或Google Cloud。「註冊免費方案吧!」人們這樣說。但是Jane知道,那些免費方案都有使用限制,她也聽過一些人因為忘記關閉資源而意外產生高額帳單的故事。「一定還有更好的方法。」她心想,而其實她是對的。

DevOps是什麼?用簡單的話解釋

在我們深入探討之前,先來看看DevOps到底是什麼。想像一下,你正在建造一棟房子。設計圖的建築師(開發人員)與負責施工的工人(運維團隊)之間,其實可以有更緊密的合作。在傳統公司中,這兩個團隊往往幾乎不交流,建築師只會把設計藍圖交給施工團隊,然後說「就依這樣來蓋」,常常導致當計畫遇上現實時出現各種問題。

而DevOps就是提倡「為什麼不讓建築師和施工工人在整個過程中一起協作呢?」良好的溝通能夠加速進度,同時減少許多問題。其實,DevOps還強調了持續整合(CI)和持續部署(CD)的重要性,它們能有效促進開發與運維之間的協同工作。

至於支持這種合作的一些工具,就像是幫助兩方順利工作的先進設備一樣:
- **Docker**:可以視為你代碼的標準貨櫃,它把應用所需的一切打包起來,使其無論在何處都能正常運行。
- **Kubernetes**:相當於容器中的交通指揮官,確保所有容器都正常運行並且彼此之間通信暢通。
- **Ansible**:你的小助手,自動化許多重複性的任務,在多台電腦上高效執行。
- **Terraform**:如同魔法般的藍圖,只需一條命令便可自動構建整個IT基礎設施。

透過這些工具和方法,我們能夠創造出更加靈活、反應迅速的開發環境,更好地滿足市場需求。
Extended Perspectives Comparison:
工具名稱安裝平台安裝指令主要功能優缺點
kubectlWindows, macOS, Linuxchoco install kubernetes-cli (Windows); brew install kubectl / curl 下載 (macOS); curl 安裝 (Linux)Kubernetes CLI,用於管理容器化應用程式的操作。優點:強大的容器管理能力;缺點:學習曲線較陡。
Vagrant所有平台下載並安裝 VirtualBox 和 Vagrant,創建 Vagrantfile.虛擬機管理工具,用於快速搭建和配置開發環境。優點:可離線工作、完全控制權;缺點:資源限制、無法真正擴展規模。
AnsibleWindows (WSL), macOS, Linux在 WSL 中安裝 Ansible 或使用 Homebrew / apt/yum 安裝.自動化配置管理工具,用於多伺服器任務的自動化執行。優點:簡單易用、自動化能力強;缺點:不支持 Windows 原生運行。
Terraform所有平台[從官方網站下載],解壓縮並移至 PATH (Windows) 或 使用 Homebrew/ wget 安裝.基礎設施即代碼工具,用於構建和管理雲端資源及本地環境。 優點:強大的基礎設施部署能力;缺點:需要對語言有一定了解才能有效使用。
DevOps 實驗室專案整合

DevOps是什麼?用簡單的話解釋

為什麼要在筆記型電腦上建立實驗室

### 為何要在筆記型電腦上建立實驗室?

擁有自己的本地 DevOps 實驗室有許多令人驚豔的好處:

1. **零成本** - 不用擔心每月底會出現意外的帳單。
2. **離線運作** - 即使在飛機上或網路不穩定時也能練習。
3. **無安全顧慮** - 可以自由嘗試,而不用擔心被駭客攻擊。
4. **更好的學習體驗** - 當事情出錯時,你可以自己解決,這對學習非常有幫助!
5. **快速反饋** - 不必等候雲端資源啟動的時間。

### 建立你的實驗室—逐步指導

#### 你需要準備的有:
- 一台至少具備 8GB RAM 的筆記型電腦(16GB 更佳)
- 約 20GB 的可用磁碟空間
- Windows、macOS 或 Linux 操作系統
- 管理員權限以便進行必要設置
- 幾個小時的空閒時間

透過虛擬化技術如 Docker 或 VirtualBox,你可以模擬各種環境,快速測試不同配置。使用輕量級容器化工具還能節省資源、提高運行效率。此外,本地開發環境避免了雲端服務費用,有助於降低成本,同時加強安全性,因為敏感數據不會洩露到雲端伺服器中。這些都是促使個人開發者選擇在筆記型電腦上搭建實驗室的重要因素。

第一步:設置Docker作為容器遊樂場

Docker 是我們實驗室的基礎,就像是為軟體創建完美的小包裝,讓它們在任何電腦上都能一致運行。以下是針對不同作業系統安裝 Docker 的步驟:

**Windows 用戶:**
1. 從 [Docker 官網] 下載 Docker Desktop。
2. 雙擊安裝程式並按照提示進行操作。
3. 當被要求時,啟用 WSL 2(Windows 子系統 Linux)。
4. 按提示重新啟動你的電腦。
5. 重啟後,從開始菜單打開 Docker Desktop。
6. 等待直到任務欄中的鯨魚圖標不再動畫(這表示 Docker 已經準備好了)。

**Mac 用戶:**
1. 從 [Docker 官網] 下載適用於 Mac 的 Docker Desktop。
2. 打開下載的 .dmg 文件,將 Docker 拖到應用程序文件夾中。
3. 從應用程序文件夾中打開 Docker。
4. 當被要求時輸入密碼。
5. 等待直到菜單欄中的鯨魚圖標停止動畫。

**Linux 用戶:**
# 更新你的包列表
sudo apt-get update

# 安裝必要的組件
sudo apt-get install apt-transport-https ca-certificates curl software-properties-common

# 添加 Docker 官方 GPG 密鑰
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

# 新增 Docker 倉庫
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"

# 使用 Docker 套件更新包數據庫
sudo apt-get update

# 安裝 Docker
sudo apt-get install docker-ce

# 啟動並設置自動啟動 Docker
sudo systemctl start docker
sudo systemctl enable docker

# 將你的用戶添加到 docker 群組,以免每次使用前都要加 sudo
sudo usermod -aG docker $USER

記得登出然後再次登入,以便群組變更生效。

**測試是否成功安裝Docker:**
打開終端或命令提示符,輸入:
docker run hello-world

如果你看到一條顯示「Hello from Docker!」的信息,那麼恭喜你!Docker 現在已經正常運行了。

此外,值得一提的是,Docker 運作原理基於 Linux 核心的輕量級虛擬化技術,使得應用程序能快速啟動和隔離。建議使用官方倉庫或可信賴的第三方倉庫來獲取映像檔,以確保安全性。如果你需要管理多個容器之間的關聯設定,可以考慮自訂編寫 `docker-compose.yml` 文件,以提升整體開發效率。

第一步:設置Docker作為容器遊樂場

第二步:設置Kubernetes來管理多個容器


在這一步,我們將設置一個工具來管理多個容器,讓我們的應用運行更為順暢。這裡有兩個不錯的選擇:

### 選項 A:Minikube - 友好的 Kubernetes
Minikube 能夠在你的筆記本電腦上創建一個單節點的 Kubernetes 集群,並且安裝過程相對簡單。

**對於 Windows 使用者:**
1. 從 [Minikube 的 GitHub 頁面]下載 Minikube 安裝程序。
2. 運行安裝程序 (.exe 文件)。
3. 打開命令提示符,並以管理員身份運行。
4. 使用以下指令啟動 Minikube: `minikube start --driver=docker`

**對於 Mac 使用者:**
1. 可以通過 Homebrew 安裝:`brew install minikube`
或直接從 [Minikube 的 GitHub 頁面]下載。
2. 啟動 Minikube: `minikube start --driver=docker`

**對於 Linux 使用者:**
# 首先下載 Minikube
curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64

# 然後使其可執行
chmod +x minikube-linux-amd64

# 最後移動到系統路徑
sudo mv minikube-linux-amd64 /usr/local/bin/minikube

# 啟動 Minikube
minikube start --driver=docker


**測試 Minikube:**
# 檢查集群是否正在運行
minikube status

# 在瀏覽器中打開 Kubernetes 儀表板
minikUBE dashboard


### 選項 B:Kind (Kubernetes IN Docker) - 輕量級替代方案
Kind 是一款非常輕量化的工具,它能在 Docker 容器內部運行 Kubernetes 集群,非常適合快速測試和開發環境。

**所有平台(Windows、Mac、Linux)皆可使用下列方式安裝:**

- **Windows 用戶(使用 Chocolatey):**
choco install kind 


- **Mac 或 Linux 用戶(使用 Homebrew):**
brew install kind 


或是手動安裝:

# 首先下載 Kind 
curl -Lo ./kind https://kind.sigs.k8s.io/dl/v0.11.1/kind-$(uname)-amd64

# 然後使其可執行
chmod +x ./kind

# 最後移動到系統路徑
sudo mv ./kind /usr/local/bin/kind



**建立一個 Kind 集群:**
# 創建新的集群     
kind create cluster --name my-local-lab


## 第三步:安裝 kubectl - 您的 Kubernetes 遙控器
kubectl 是您與 Kubernetes 集群進行交互的重要工具。

**對於 Windows 用戶:**
1. 從 [Kubernetes 官方網站]下載 kubectl.exe。
2. 將其放入您的 PATH 環境變數所包含的目錄中,以便隨時調用。

第三步:安裝kubectl來控制Kubernetes集群


**安裝 kubectl:**
- **對於 Windows 使用者:**可以使用 Chocolatey 安裝,指令為 `choco install kubernetes-cli`。
- **對於 macOS 使用者:**有幾種方法可以安裝 kubectl,以下是兩個常見的方法:
1. 使用 Homebrew:
brew install kubectl

2. 或者透過 curl 下載:
curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/darwin/amd64/kubectl"
chmod +x ./kubectl
sudo mv ./kubectl /usr/local/bin/kubectl


- **對於 Linux 使用者:**
可以用 curl 安裝:
curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"
chmod +x ./kubectl
sudo mv ./kubectl /usr/local/bin/kubectl


**測試 kubectl 是否正常運作:**
執行以下命令來列出所有命名空間中的 Pods:
kubectl get pods --all-namespaces


## 第四步:設置 Vagrant - 您的虛擬機管理工具
Vagrant 是一個方便的工具,可以輕鬆創建和管理虛擬機,非常適合測試多伺服器架構。

### 對所有平台的安裝步驟:
1. 從 [VirtualBox 的網站](https://www.virtualbox.org/) 下載並安裝 VirtualBox。
2. 從 [Vagrant 的網站](https://www.vagrantup.com/) 下載並安裝 Vagrant。

### 創建您的第一個 Vagrant 環境:
1. 為您的 Vagrant 項目創建一個新的資料夾。
2. 在該資料夾內,建立一個名為 `Vagrantfile` 的文件,其內容如下:
Vagrant.configure("2") do |config|
config.vm.box = "ubuntu/focal64" # 在 VM 間建立私有網路
config.vm.network "private_network", type: "dhcp"
# 將主機的端口8080轉發到客戶端的80端口
config.vm.network "forwarded_port", guest: 80, host: 8080
# 使用 shell 腳本進行設置
config.vm.provision "shell", inline: <<-SHELL
echo "<h1>Hello from Vagrant!</h1>" > /var/www/html/index.html
SHELL
end

3. 打開終端機,在該資料夾中執行以下命令來啟動虛擬機:
vagrant up  

4. 現在,您可以在瀏覽器中訪問 [http://localhost:8080],查看由 Vagrant 管理的網頁伺服器!

第三步:安裝kubectl來控制Kubernetes集群

第四步:使用Vagrant管理虛擬機器

要安裝Ansible,這是一個幫助你在多台伺服器上自動化任務的助手。對於Windows系統,雖然Ansible無法直接運行,但你可以透過WSL(Windows子系統Linux)來使用它:

1. 首先,你需要在PowerShell中以管理員身份開啟並運行以下命令,以啟用WSL:
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart


2. 接著,重新啟動你的電腦。

3. 然後從Microsoft Store安裝Ubuntu。

4. 打開Ubuntu後,執行以下指令來安裝Ansible:
sudo apt update
sudo apt install software-properties-common
sudo apt-add-repository --yes --update ppa:ansible/ansible
sudo apt install ansible


對於Mac用戶,可以透過Homebrew來安裝:
brew install ansible


而Linux用戶則根據不同發行版進行相應的操作:

- Ubuntu/Debian用戶可以使用以下命令:
sudo apt update
sudo apt install software-properties-common
sudo apt-add-repository --yes --update ppa:ansible/ansible
sudo apt install ansible


- Red Hat/CentOS用戶則可以這樣安裝:
sudo yum install ansible


**測試Ansible:**

首先創建一個名為`hosts`的文件,內容如下:
[local]
localhost ansible_connection=local


然後再創建一個名為`playbook.yml`的文件,內容如下:
---
- name: 測試播放劇本
hosts: local
tasks:
- name: 輸出訊息
debug:
msg: "Ansible 正在運作!"


最後,用下面的命令執行它:
ansible-playbook -i hosts playbook.yml

第五步:安裝Ansible,您的自動化助手

最後,讓我們安裝Terraform,這個基礎設施的魔法師,來實踐基礎設施即代碼的概念。**對於所有平台:**可從[Terraform官方網站]下載適合你的版本。

**對於Windows使用者:**
1. 解壓縮zip文件。
2. 將terraform.exe移到你的PATH目錄中。

**對於Mac使用者:**
# 使用Homebrew安裝
brew install terraform


**對於Linux使用者:**
# 下載安裝包
wget https://releases.hashicorp.com/terraform/1.0.0/terraform_1.0.0_linux_amd64.zip

# 解壓縮文件
unzip terraform_1.0.0_linux_amd64.zip

# 移動到PATH目錄中
sudo mv terraform /usr/local/bin/


**測試Terraform功能:**首先創建一個名為`main.tf`的檔案,內容如下:
resource "local_file" "hello" {
content = "Hello, Terraform!"
filename = "${path.module}/hello.txt"
}

然後運行以下命令:
terraform init
terraform apply

接著,你可以檢查是否成功創建了hello.txt檔案,其中應該包含「Hello, Terraform!」這句話。

第五步:安裝Ansible,您的自動化助手

第六步:安裝Terraform,讓基礎架構更簡單

## 您的第一個完整 DevOps 專案

現在讓我們把所有內容連結在一起!這個專案將會:

1. 使用 Terraform 設置本地環境
2. 利用 Vagrant 創建虛擬機器
3. 用 Ansible 配置那些虛擬機器
4. 透過 Docker 部署容器化應用程式
5. 使用 Kubernetes 管理這些容器

**專案:一個簡單的雙層網頁應用**

1. 為您的專案創建一個目錄。
2. 在該目錄內,創建以下檔案:

**main.tf (Terraform):**

resource "local_file" "vagrant_file" {
content = <<EOF
Run Terraform to create the Vagrantfile and Ansible files:
EOF
}


接下來,您可以運行以下命令來初始化並建立基礎設施:

terraform init
terraform apply


接著,啟動 VMs 的指令是:

vagrant up 


之後,使用下面的命令執行 Ansible playbook,以配置虛擬機器:

ansible-playbook -i inventory playbook.yml 


最後,您可以訪問 [http://localhost:8080] 來查看您的網頁應用!當您完成後,可以使用以下指令進行清理:

vagrant destroy -f 
terraform destroy


## 本地 DevOps 實驗室的優缺點

### 優點:
1. **完全免費** - 不需要支付雲端費用。
2. **可離線工作** - 無論是在飛機、火車上或是網路不佳時都能學習。
3. **完全控制權** - 從上到下都能掌握整體情況。
4. **隱私保障** - 無需擔心敏感數據外洩問題。
5. **沒有時間限制** - 不像雲端免費方案有到期限制。
6. **更深入理解** - 學習基礎設施運作,而不僅限於雲端特定實作。
7. **安全嘗試失敗** - 可以自由實驗而不必擔心現實世界帶來的後果。
8. **真實多機器設置** - 非常適合學習叢集概念。

### 缺點:
1. **資源限制** - 您的筆記本電腦 CPU、RAM 和磁碟空間就是極限了。
2. **無法真正擴展規模** - 無法模擬大規模佈局場景。
3. **缺乏雲端特定服務** - 無法直接對應像 Lambda、S3 等服務。
4. **性能問題** - 在 VM 中執行 VM 可能會較慢。
5. **電池消耗快** - 這些工具對資源需求很高,因此會快速耗電。
6. **與現實情況略有不同** - 雲環境可能存在些微的不同行為。

本地DevOps實驗室的優缺點

## DevOps 之旅的下一步

既然你已經設置好實驗室,接下來可以試試這些專案:

1. **建立 CI/CD 管道**,使用 Jenkins 或 GitLab CI(這兩者都可以在本地運行)。
2. **構建微服務架構**,讓多個容器互相通信。
3. **設置監控系統**,使用 Prometheus 和 Grafana。
4. **創建負載均衡器**,選擇 Nginx 或 HAProxy。
5. **練習災難恢復**,通過故意破壞某些東西再修復它們。

## 結論:你的 DevOps 遊樂場在等你

還記得我們故事中的 Jane 嗎?她成功地建立了一個令人印象深刻的本地 DevOps 實驗室。三個月後,她憑藉著沒有任何專業經驗卻獲得了一份初級 DevOps 的工作。在面試中,她展示了自己 GitHub 上的一系列本地專案和示範腳本。新經理告訴她:「你的實作經驗讓你脫穎而出。」

你也能做到。DevOps 不僅僅是理解概念,而是要真正應用這些知識。其實,你的筆記型電腦就足夠開始這段旅程了。所以,你還在等什麼呢?你的 DevOps 遊樂場就在眼前,而且完全不需要花一毛錢!

Reference Articles

從異世界歸來發現只剩自己不會Kubernetes:初心者進入雲端 ...

此書是一本綜合性的指南,針對想要探索認識Kubernetes 的技術人員而生。無論是初涉此領域的新手,還是已有深厚經驗的資深工程師,本書都能提供你所需的知識和技能。 本書致力 ...

Source: 博客來

課程分類 - 30人以下服務業數位轉型培力補助

本課程協助工廠資訊數位轉型,建立流程合理化與標準化,先精實再到數位化,提升企業營運效率、減少浪費以強化決策能力。課程內容將介紹如何運用AI技術工具進行關鍵指標和異常 ...

Source: dtts.org.tw

Neil Gershenfeld

Expert

Related Discussions

  • 2025-04-29

    我覺得這篇文章提到的步驟聽起來很不錯,但真的適合所有人嗎?尤其是初學者可能會覺得有點複雜,會不會需要更詳細的解釋或範例呢?

❖ Related Articles

❖ Categories