Kubernetes 常見問題:kubectl apply 的 Last applied configuration 用途是什麼?
在 我的 Notion Kubernetes 學習筆記 - Jan 13, 2025 中,我透過 CKA 的課程學習到 kubectl apply 背後的原理,而我知道 kubectl apply 背後有三個東西來決定它如何變更資源: Configuration file:配置文件,代表使用者的最新意圖。 Last applied configuration:上次使用 kubectl apply 時記錄的配置,用於追蹤變更。 Live configuration:目前 Kubernetes 叢集中的實際配置狀態。 以下引用 Kubernetes 官方文件的說明: When kubectl apply updates the live configuration for an object, it does so by sending a patch request to the API server. The patch defines updates scoped to specific fields of the live object configuration. The kubectl apply command calculates this patch request using the configuration file, the live configuration, and the last-applied-configuration annotation stored in the live configuration....
AWS PrivateLink 深入教學:NLB、Dual-stack 與 Private DNS name 整合實作
在前一篇教學中 如何將現有 NLB IPv4-only 架構升級為 Dual-stack,我們已經配置好一個支援 Dual-stack 的 NLB 了。 現在假設有一個需求:「客戶需要調用我們的 API,且他們也使用 AWS。」有沒有辦法不經過 Internet,而是直接透過 AWS 的骨幹網路 (Backbone),將流量送到我們的 NLB?同時避免使用 VPC Peering 或 Transit Gateway,確保網路不完全打通,以降低潛在風險,例如資料洩漏或不必要的安全隱患。 答案就是 PrivateLink 什麼是 PrivateLink? AWS PrivateLink 是一種安全的網路技術,允許服務提供者 (Service Provider) 將他們的服務透過 VPC Endpoint 暴露給使用者 (Service Consumer),而不需要將流量經過公網 (Internet)。它能確保所有流量都在 AWS 的骨幹網路內部傳輸,提供高安全性、低延遲的解決方案。 PrivateLink 的核心特點: 避免暴露服務到公網: Service Provider 的服務不需要有 Public IP,Consumer 可以透過 Private IP 訪問這些服務。 簡化網路架構: 無需設定 VPC Peering、Transit Gateway,所以不用擔心整個網路打通的安全風險。 跨帳號支持: Service Provider 和 Consumer 可以位於不同 AWS 帳號,甚至不同 AWS 組織。 多 Region 支持: PrivateLink 現在也支援跨區域的流量傳輸 (需額外配置)。(Reference) 可以自定義的 Private DNS name: Consumer 可以直接使用 Service Provider 提供的 Private DNS Name 調用服務。 Terminology Service Consumer: 使用服務的一方。Consumer 會在自己的 VPC 中建立 VPC Interface Endpoint 來連接到 Provider 的 Endpoint service。Consumer 必須等待 Provider 接受連接請求後,才能開始使用服務。透過這種方式,Consumer 可以安全地存取 Provider 的服務,而無需經過公有網路。 Endpoint: VPC Interface Endpoint (VPCE) 是一個彈性網路介面,具有私有 IP 位址。它作為進入 AWS 服務的進入點,讓 VPC 中的資源可以私密地存取這些服務。在 PrivateLink 架構中,這是 Consumer 端建立的元件。 Service Provider: 提供服務的一方。Provider 需要建立 Endpoint service 並將其與 NLB 或是 GWLB 關聯,然後可以選擇性地允許哪些 AWS 帳戶可以連接到此服務。Provider 負責接受或拒絕來自 Consumer 的連接請求。 Endpoint service: Endpoint service 是由 Service Provider 建立的服務,可以與 Network Load Balancer (NLB) 或是 Gateway Load Balancer (GWLB) 關聯。這個服務允許其他 AWS 帳戶 (Consumer) 通過 VPC Interface Endpoint 連接到 Provider 的服務。 Section 1: 配置 PrivateLink Step 1: [Provider] 創建 Endpoint service 在 Section 1 - Step 1,我們要扮演 Service Provider,我們是提供 Service 的人。...
如何將現有 NLB IPv4-only 架構升級為 Dual-stack
目標 將現有的 IPv4-only NLB 升級為支援 dual-stack 讓 Target Group 從純 IPv4 轉換為支援 IPv6 確保整個架構能同時處理 IPv4 和 IPv6 的流量 我們將逐步完成這個轉換過程,包括配置 VPC、更新 NLB 設置、修改 security groups,以及設定 target groups。每個步驟都會提供詳細的操作說明和技術細節,幫助您順利完成這個升級過程。 現有架構 現在的架構是一個很基本的 IPv4 NLB(Internet-facing) → Target Group (IPv4 Instance type ) 的架構 點擊展開以查看詳細內容 VPC NLB Details Security Group Target Group Instance Security Group Section 1: NLB IPv4 → Dual-stack Step 1: VPC 新增 IPv6 CIDR 進入 VPC 頁面: 選取 VPC 展開 Actions menu 點擊 Edit CIDRs 新增 IPv6 CIDR:...
[Terraform Module] 一個低成本、高靈活性,輕鬆預熱上百個 Lambda Function 的解決方案:Tag-Based Lambda Warmer
前言 - 現有架構的挑戰 最近,我在一個 Serverless 專案中遇到了一個讓人頭疼的挑戰。這個專案運行在多個 Lambda Functions 之上,為了避免冷啟動帶來的延遲問題影響使用者體驗,需要確保 Functions 處於「熱啟動」狀態(Warm Start),如何有效管理大量的預熱 (prewarm) 操作變得非常棘手。 常見的解決方案之一,是為每個 Lambda Function 配置一個 EventBridge Scheduler,雖然可以達到預熱效果,但: 管理成本高:需要單獨為每個 Lambda Function 配置 Scheduler,數量多難以管理。 靈活性不足:難以快速響應需求變更,重新部署新的 Lambda Function 時,需要修改 Scheduler 的 Target。 基於這些挑戰,我開發了 Tag-Based Lambda Warmer Terraform Module,提供了一種低成本、高靈活性的解決方案。 Tag-Based Lambda Warmer 介紹 Tag-Based Lambda Warmer 的核心理念非常簡單: 將需要被預熱 (prewarm) 的 Lambda Function 加上指定的 Tag(例如:Prewarm=true)。 當你部署 Terraform Module 後,EventBridge Schduler 會定期調用 Tag-Based Lambda Warmer,Warmer 會根據 Tag 自動篩選需要被預熱的 Lambda Functions 這套解決方案特別適合以下情境: 低流量、間歇性工作負載:例如開發環境或小型應用中的 Lambda Functions,需要偶爾處於熱啟動狀態,但不需要持續高效能。 多環境管理:通過不同的 Tag(例如 Environment=dev 或 Environment=prod),可以輕鬆在多個環境中靈活部署。 成本敏感型專案:對於中小型 Serverless 應用,這種解決方案能有效降低運維成本。 還是要提醒,這種透過定期調用來保持熱啟動狀態的解決方案,只能讓你保持至少有一個熱啟動狀態的 Execution Environment,今天流量突然有一個高峰,碰上冷啟動是不可避免的...
開箱 Amazon Aurora Serverless v2 Auto-pause Feature (ACU 0)
Overview 就在 2024/11/20 AWS 釋出了重磅消息 — 「Amazon Aurora Serverless v2 supports scaling to zero capacity」,簡單來說這個功能能夠讓 Aurora 在閒置一段時間後,自動停止實例 (Auto-pause),停止期間不會收取「執行實例小時數費用」 (Aurora Capacity Units = 0),達到所謂的 Truly Serverless!! 官方把這個新功能稱為 Auto-pause ,在這個功能釋出以前, Aurora Capacity Units (ACU) 最低最低只能設定成 0.5。 實際 RDS 定價 其實還有其他收費,像是儲存成本、 IOPS、傳輸… 等等,詳細內容敬請參考官方文件 (連結) Amazon Aurora vs RDS for MySQL 在 us-west-2 的定價比較: Aurora Serverless v2 每個 ACU 一小時 0.12 美金 RDS for MySQL - db.t4g.micro 一小時 0.016 美金 約等於一 ACU 可以開 7.5 小時的 db....