<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>K8s 彙整 - 歐立威科技</title>
	<atom:link href="https://www.omniwaresoft.com.tw/tag/k8s/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.omniwaresoft.com.tw/tag/k8s/</link>
	<description>歐立威科技 Omniwaresoft｜全方位企業級開源軟體解決方案</description>
	<lastBuildDate>Tue, 03 Mar 2026 08:17:30 +0000</lastBuildDate>
	<language>zh-TW</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.7.4</generator>

<image>
	<url>https://www.omniwaresoft.com.tw/wp-content/uploads/2022/12/android-icon-192x192-1.png</url>
	<title>K8s 彙整 - 歐立威科技</title>
	<link>https://www.omniwaresoft.com.tw/tag/k8s/</link>
	<width>32</width>
	<height>32</height>
</image> 
<site xmlns="com-wordpress:feed-additions:1">242464019</site>	<item>
		<title>K8s 是什麼？基本元件、核心功能、4 大優點一次看！</title>
		<link>https://www.omniwaresoft.com.tw/product-news/k8s-introduction/</link>
		
		<dc:creator><![CDATA[Omni]]></dc:creator>
		<pubDate>Thu, 15 Feb 2024 02:49:06 +0000</pubDate>
				<category><![CDATA[K8s 產品資訊]]></category>
		<category><![CDATA[產品資訊]]></category>
		<category><![CDATA[Docker]]></category>
		<category><![CDATA[K8s]]></category>
		<guid isPermaLink="false">https://www.omniwaresoft.com.tw/?p=40640</guid>

					<description><![CDATA[K8s 是一種容器資源調度平台，能將部署流程自動化、擴展並管理不同容器間的工作負載。它的微服務管理叢集，能夠啟動容器，管理網路和容器間的通訊。此外，它還能將多個 Container 分派到多台主機上，並監控每個 Container 的運行狀態。這些功能讓開發者能夠專注於軟體開發任務。]]></description>
										<content:encoded><![CDATA[		<div data-elementor-type="wp-post" data-elementor-id="40640" class="elementor elementor-40640" data-elementor-post-type="post">
						<section data-particle_enable="false" data-particle-mobile-disabled="false" class="elementor-section elementor-top-section elementor-element elementor-element-246ba935 elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="246ba935" data-element_type="section">
						<div class="elementor-container elementor-column-gap-thegem"><div class="elementor-row">
					<div class="elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-343c6646" data-id="343c6646" data-element_type="column">
			<div class="elementor-widget-wrap elementor-element-populated">
						<div class="elementor-element elementor-element-1f7d928e flex-horizontal-align-default flex-horizontal-align-tablet-default flex-horizontal-align-mobile-default flex-vertical-align-default flex-vertical-align-tablet-default flex-vertical-align-mobile-default elementor-widget elementor-widget-text-editor" data-id="1f7d928e" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
												<div class="elementor-text-editor elementor-clearfix">
						<p>本文為 Kubernetes（下方簡稱 K8s） 的入門介紹，將以容器化技術的角度切入，因此需要讀者對 Docker 和容器化技術有基本認識。如果對相關概念還不太熟悉，請參考 <a href="https://www.omniwaresoft.com.tw/product-news/docker-news/docker-introduction/" target="_blank" rel="noopener">Docker 是什麼？Docker 基本觀念介紹</a></p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:heading --></p>
<h2>K8s 解決了什麼問題<strong>？ </strong></h2>
<p><span class="highlight">K8s 旨在幫助開發者建構大型服務時，有效管理成百上千台主機上容器間的通訊。</span></p>
<p>在 K8s 出現之前，想用 Docker 快速啟動多個微服務，可以在單台伺服器上使用 Docker Compose。開發者只需撰寫一份 YAML 文件，設定好參數後即可一鍵啟動或停止整組服務。</p>
<p><span style="font-weight: 400;">雖然降低了測試和部署的難度，但 Compose 僅限於單機運行，無法應對跨多台主機的大規模服務。K8s 的自動部署與擴展功能因此脫穎而出，成為管理大規模容器服務的最佳方案。</span></p>
<p><!-- /wp:heading --></p>
<p><!-- wp:paragraph {"align":"left"} --></p>
<figure><img data-recalc-dims="1" style="aspect-ratio: 1.4843423799582462; object-fit: cover; width: 508px;" src="https://i0.wp.com/www.omniwaresoft.com.tw/wp-content/uploads/2024/02/%E6%88%AA%E5%9C%96-2024-02-07-%E4%B8%8B%E5%8D%882.30.23.png?w=1170&#038;ssl=1" alt="k8s logo" /></figure>
<p><!-- /wp:image --></p>
<p><!-- wp:heading --></p>
<h2><strong>K8s 是什麼？</strong></h2>
<p><!-- /wp:heading --></p>
<p><!-- wp:paragraph --></p>
<p>K8s 是一種容器資源調度平台，可以自動化部署、擴展並管理容器工作負載。</p>
<p>它的核心理念是「Automated container deployment, scaling, and management」，透過自動化提升應用可靠性，減輕維運負擔，讓開發人員專注於軟體開發。</p>
<p data-start="192" data-end="280">K8s 的微服務管理叢集涵蓋 Docker Compose 所有功能，包括：啟動容器、管理網路與容器間通訊。更重要的是，它能將容器分派到多台主機，並監控每個容器的運行狀態。</p>
<p data-start="282" data-end="374">當容器或 Pod 發生故障時，K8s 會啟動 Replica Set 確保服務持續運行；自動擴展功能（Auto Scaling）則可依需求自動調整節點數量，滿足開發與營運資源需求。</p>
<p data-start="282" data-end="374">在部署方面，K8s 支援自動化部署。使用者只需提供描述服務所需狀態的 YAML 文件，K8s 就會根據設定自動建立容器和資源，簡化部署流程。</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:heading --></p>
<h2><strong>K8s 的架構和工作流程</strong></h2>
<p><!-- /wp:heading --></p>
<p><!-- wp:paragraph --></p>
<p>下圖為一個 K8s 平台的 Cluster（集群），K8s Cluster [1] 中的成員統稱為 Node，這些 Node 會依照其工作角色，被區分成 Worker 或 Master。</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>我們能將 Worker Node 想像成人體的軀幹，並將 Master Node 想像成人體的大腦，負責發號命令。</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:list {"ordered":true} --></p>
<ol>
<li style="list-style-type: none;">
<ol><!-- wp:list-item --></ol>
</li>
</ol>
<ol>
<li style="list-style-type: none;">
<ol>
<li>圖中右邊為 Worker Node，通常會被配置較多的運算資源，因為它們要負責成百上千的應用程式。</li>
<li>圖中左邊的為 Master Node。 Master 上面執行的管理程式叫做 Control Plane，它們負責整個 Cluster 的排程和狀態維護。</li>
<li>Worker Node 裡運行著數個 Pod[2]，Pod 是 K8s 裡運行和部署的基本單位，而一個 Pod 內允許多個 Container 並存。Kubernetes 透過 Pod 來包裝管理 Container，增加調度部署的彈性。</li>
</ol>
</li>
</ol>
<p><!-- /wp:list-item --></p>
<p><!-- wp:list-item --></p>
<p><!-- /wp:list-item --></p>
<p><!-- wp:list-item --></p>
<p><!-- /wp:list-item --></p>
<p><!-- /wp:list --></p>
<p><!-- wp:image {"align":"center","id":40625,"width":"445px","height":"auto","aspectRatio":"1.5178571428571428","sizeSlug":"full","linkDestination":"none"} --></p>
<figure><img data-recalc-dims="1" style="aspect-ratio: 1.5178571428571428; width: 445px; height: auto;" src="https://i0.wp.com/www.omniwaresoft.com.tw/wp-content/uploads/2024/02/%E6%88%AA%E5%9C%96-2024-02-07-%E4%B8%8B%E5%8D%882.32.37.png?w=1170&#038;ssl=1" alt="K8s Architecture" /></figure>
<p><!-- /wp:image --></p>
<p><!-- wp:heading --></p>
<h2><strong>K8s 兩大基本元件</strong></h2>
<p><!-- /wp:heading --></p>
<p><!-- wp:heading {"level":3} --></p>
<h3><strong>元件 1：Master Node（Control Plane）</strong></h3>
<p><!-- /wp:heading --></p>
<p><!-- wp:paragraph --></p>
<p>Control plane 又叫控制平台，是 K8s 運作的指揮中心，負責下達指揮命令。</p>
<p>例如：容器排程（Scheduling Containers）、服務管理（Managing Services）和回應 API 請求（Serving API Requests）。</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>Control Plane 會透過專用 API 與各個 Node 進行通訊，也會監控所有 Node 的工作負載，並下發指令來應對突發狀況。舉例來説，如果 Control Plane 偵測到應用程式的使用量暴增，它會調度相應的運算資源來應對，並在使用量下降時，自動縮減運算資源。</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>Control plane 由 4 個元件組成：</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:list --></p>
<ul>
<li style="list-style-type: none;">
<ul><!-- wp:list-item --></ul>
</li>
</ul>
<ul>
<li>
<p><span class="highlight"><strong>Kube-API Server</strong>： </span>所有請求的唯一入口，也是 Cluster 中各個 Node 的溝通橋樑，負責身份驗證（Authentication）、授權（Authorization）、存取控制（Access Control）和 API 註冊（Registration）。</p>
</li>
</ul>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:list --></p>
<ul>
<li style="list-style-type: none;">
<ul><!-- wp:list-item --></ul>
</li>
<li>
<p><span class="highlight"><strong>etcd</strong>： </span>存放 K8s Cluster 備份資訊的資料庫，紀錄整個 K8s 的狀態。 當 Controller Plane 發生故障， etcd 可以幫我們還原 K8s 的狀態。</p>
</li>
<li>
<p><span class="highlight"><strong>Kube-scheduler</strong>：</span> K8s 的工作調度器，負責監控所有使用者開啓 Pod 的指令，並根據 Worker Node 的資源規定和硬體限制找出最合適的 Worker Node。</p>
</li>
<li>
<p><span class="highlight"><strong>Kube-controller-manager</strong>：</span>K8s Cluster 的自動化控制中心，負責管理並運行 K8s Controller 的組件。</p>
</li>
</ul>
<p><!-- /wp:list-item --></p>
<p><!-- /wp:list --></p>
<figure><img data-recalc-dims="1" style="aspect-ratio: 1.7777777777777777; width: 508px; height: auto;" src="https://i0.wp.com/www.omniwaresoft.com.tw/wp-content/uploads/2024/02/%E6%88%AA%E5%9C%96-2024-02-07-%E4%B8%8B%E5%8D%882.52.20.png?w=1170&#038;ssl=1" alt="Master Node" /></figure>
<p><!-- /wp:image --></p>
<p><!-- wp:heading --></p>
<h3><strong>元件 2：Worker Node</strong></h3>
<p><!-- /wp:heading --></p>
<p><!-- wp:paragraph --></p>
<p>Worker Node 是 K8s 中的工作主機，負責管理和運行 Pod。它可以是實體機，也可以是虛擬機（例如：AWS 上的 EC2）。每個 Node 都包含運行 Pod 所需的服務，並由 Master Node 管理。</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>Worker Node 上的服務包括：</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:list --></p>
<ul>
<li style="list-style-type: none;">
<ul><!-- wp:list-item --></ul>
</li>
<li>
<p><strong><span class="highlight">Pod</span></strong></p>
</li>
</ul>
<p><!-- /wp:list-item --></p>
<p><!-- /wp:list --></p>
<p><!-- wp:paragraph --></p>
<p>Pod 是 K8s 中最小的資源部署單位，設計目的是爲了簡化容器化應用程式的部署和管理。</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>一個 Pod 封裝了一個或多個 Container，這些容器共同執行相同的工作任務，也共享相同的網路資源（例如：IP 地址、記憶體和主機名）。這種架構允許容器間能高效地共享和交換資料，同時也保證了容器間通信的簡便性和安全性。</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>雖然使用者能將應用程式上的所有容器封裝至同一個 Pod，但最佳做法是讓每個 Pod 對應一個 Container，接著再把這些 Pod 裝入 Namespace，這樣就能組成一個完整的應用程式。</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:list --></p>
<ul>
<li style="list-style-type: none;">
<ul><!-- wp:list-item --></ul>
</li>
<li>
<p><strong><span class="highlight">Kubelet</span></strong></p>
</li>
</ul>
<p><!-- /wp:list-item --></p>
<p><!-- /wp:list --></p>
<p><!-- wp:paragraph --></p>
<p>Kubelet 是 Worker Node 與 Kube-API Server 進行溝通的元件，主要負責接收 API server 發送的新或修改後的 Pod 規格，確保 Pod 及 Pod 內的容器在 API Server 的期望下運行。</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>Kubelet 也會定時從 Worker Node 上收集 Pod/Container 上的狀態（例如：運行什麼 Container、副本運行數量、資源配置），並將這些資訊匯報給 Control Plane。如果 Controller 沒有收到節點的運行資訊，該 Node 就會被斷定為 Unhealthy。</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:list --></p>
<ul>
<li style="list-style-type: none;">
<ul><!-- wp:list-item --></ul>
</li>
</ul>
<ul>
<li>
<p><strong><span class="highlight">Kube-proxy</span></strong></p>
</li>
</ul>
<p><!-- /wp:list-item --></p>
<p><!-- /wp:list --></p>
<p><!-- wp:paragraph --></p>
<p>Kube-Proxy 是每個 Node 上運行的網路代理服務，負責管理 Pod 間的網路通信規則、 Cluster 內部的通訊與回應 Cluster 外部的 request 。如果作業系統中存在封包過濾器（packet filtering layer），Kube-proxy 會將處理 request 的請求轉由 Worker Node 的作業系統處理。 </p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:list --></p>
<ul>
<li style="list-style-type: none;">
<ul><!-- wp:list-item --></ul>
</li>
<li>
<p><strong><span class="highlight">Container Runtime</span></strong></p>
</li>
</ul>
<p><!-- /wp:list-item --></p>
<p><!-- /wp:list --></p>
<p><!-- wp:paragraph --></p>
<p>Container Runtime 屬於較為底層的元件，負責實際運行容器，並聽從 Kubelet 的命令管理容器。</p>
<p>K8s 支援多種不同的 Container Runtime，例如：containerd 、 runC 、 CRI-O 等。</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:image {"align":"center","id":40627,"width":"508px","aspectRatio":"1.3562753036437247","scale":"cover","sizeSlug":"full","linkDestination":"none"} --></p>
<figure><img data-recalc-dims="1" style="aspect-ratio: 1.3562753036437247; object-fit: cover; width: 508px;" src="https://i0.wp.com/www.omniwaresoft.com.tw/wp-content/uploads/2024/02/%E6%88%AA%E5%9C%96-2024-02-07-%E4%B8%8B%E5%8D%882.57.16.png?w=1170&#038;ssl=1" alt="Worker Node" /></figure>
<p><!-- /wp:image --></p>
<p><!-- wp:heading --></p>
<h2><strong>K8s 四大核心功能</strong></h2>
<p><!-- /wp:heading --></p>
<p><!-- wp:heading {"level":3} --></p>
<h3><strong>一、動態擴展（Dynamic Scaling）</strong></h3>
<p><!-- /wp:heading --></p>
<p><!-- wp:paragraph --></p>
<p>實務上，DevOps 常碰到資源不夠用的情況，原因是應用流量會隨時間變化，但分配的資源始終固定。</p>
<p>K8s 透過 Dynamic Scaling 可動態增減運算資源，常見方式包括：水平擴展（Horizontal Scaling）、垂直擴展（Vertical Scaling）。</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:heading {"level":4} --></p>
<h4><strong>水平擴展（Horizontal Scaling）</strong></h4>
<p>水平擴展（Horizontal Scaling）[3] 的核心概念是<span class="highlight">根據「工作負載的變化來更新 Pod 的數量」。</span></p>
<p>這意味著當負載增加時，我們可以自動部署更多的 Pod，以確保服務的性能。而負載減少時，也能減少 Pod 的數量，以確保資源不被浪費。</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>具體來說， K8s 會透過 Horizontal Pod Autoscaler（HPA，一種用於自動調整應用程式中 Pod 副本數的控制器） 自動更新工作負載資源（例如：Deployment 或 StatefulSet），並由這兩種資源負責更新 Pod 數量，使 Pod 在資源節約和服務性能之間達到平衡。</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:image {"align":"center","id":40628,"width":"508px","aspectRatio":"1.4939271255060729","scale":"cover","sizeSlug":"full","linkDestination":"none"} --></p>
<figure><img data-recalc-dims="1" style="aspect-ratio: 1.4939271255060729; object-fit: cover; width: 508px;" src="https://i0.wp.com/www.omniwaresoft.com.tw/wp-content/uploads/2024/02/%E6%88%AA%E5%9C%96-2024-02-07-%E4%B8%8B%E5%8D%883.00.12.png?w=1170&#038;ssl=1" alt="HPA procedure" /></figure>
<p><!-- /wp:image --></p>
<p><!-- wp:heading {"level":5} --></p>
<h5><strong>水平擴展運作流程</strong></h5>
<p><!-- /wp:heading --></p>
<p><!-- wp:paragraph --></p>
<p>如上圖所示，使用 HPA 架構的 K8s 首先會透過 Metric Server 檢測各項指標，如果監測到 CPU/Mermory 的利用率高於目標，HPA 會增加 Pod 的數量，直到平均使用率降低到目標範圍內。</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:heading {"level":4} --></p>
<h4><strong>垂直擴展（Vertical Scaling）</strong> </h4>
<p><!-- /wp:heading --></p>
<p><!-- wp:paragraph --></p>
<p>與水平擴展不同，垂直擴展（Vertical Scaling）的核心概念是<span class="highlight">根據工作負載的變化來「更新 Pod 的資源請求而非 Pod 數量」。</span></p>
<p>換句話説，當負載增加時，我們可以給 Pod 更多資源，以確保服務不會因為超出資源限制而降低性能。負載減少時，也能減少 Pod 的資源請求，以確保資源不被浪費。</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>Vertical Pod Autoscaler（ VPA ，垂直 Pod 資源擴縮器）會根據容器的資源使用率自動縮放 Pod 能存取的 CPU 和 Memory 資源，讓 Pod 中的應用程式能夠取得足夠的運算資源，維持應用程式的服務品質。</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:image {"align":"center","id":40629,"width":"508px","aspectRatio":"1.5627705627705628","scale":"cover","sizeSlug":"full","linkDestination":"none"} --></p>
<figure><img data-recalc-dims="1" style="aspect-ratio: 1.5627705627705628; object-fit: cover; width: 508px;" src="https://i0.wp.com/www.omniwaresoft.com.tw/wp-content/uploads/2024/02/VPA-Procedure.png?w=1170&#038;ssl=1" alt="VPA Procedure" /></figure>
<p><!-- /wp:image --></p>
<p><!-- wp:heading {"level":5} --></p>
<h5><strong><strong>垂直擴展</strong>運作流程</strong></h5>
<p><!-- /wp:heading --></p>
<p><!-- wp:paragraph --></p>
<p>如上圖所示，首先使用 VPA 架構的 K8s 每隔 10 秒檢查各資源的使用指標，當請求資源增加，VPA Operator 會根據資源使用量更動 Pod 的資源配置，並將 Pod 重啟，重啟後的 Pod 就是新的資源配置。</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>簡而言之，水平擴展是關於「增減 Pod 的數量」，而垂直擴展則是關於「調整單個 Pod 的資源」。這兩種機制讓我們能夠在 K8s 中實現有效的負載管理，確保應用程式在不同工作負載下都能保持高性能。</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:heading {"level":3} --></p>
<h3><strong>二、自我修復（Self Healing）</strong></h3>
<p><!-- /wp:heading --></p>
<p><!-- wp:paragraph --></p>
<p>K8s 能夠即時地修復 Cluster 中有問題的 Pod。</p>
<p>當一個節點或 Pod 出現故障時， K8s 會自動將它們從 Cluster 中刪除並重新創建，以確保應用程式的可用性。</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>除此之外，K8s 還會確認系統狀態是否與開發者的需求配置相符。舉例來說，如果開發者向 K8s 提出建立 3 個副本的需求，K8s 除了建立副本之外，也會持續確認這 3 個副本的運行狀態，如果發現有第 4 個副本被建立了，K8s 會將第 4 個副本刪除，以維持３個副本的設定。另外，如果其中一個副本停止運行，為了維持運行３個副本，K8s 就會重新建立一個副本。</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:image {"align":"center","id":40630,"width":"508px","aspectRatio":"1.3715415019762847","scale":"cover","sizeSlug":"full","linkDestination":"none"} --></p>
<figure><img data-recalc-dims="1" style="aspect-ratio: 1.3715415019762847; object-fit: cover; width: 508px;" src="https://i0.wp.com/www.omniwaresoft.com.tw/wp-content/uploads/2024/02/%E6%88%AA%E5%9C%96-2024-02-07-%E4%B8%8B%E5%8D%883.13.13.png?w=1170&#038;ssl=1" alt="Self healing procedure" /></figure>
<p><!-- /wp:image --></p>
<p><!-- wp:heading {"level":3} --></p>
<h3><strong>三、滾動更新（Rolling Updates）</strong></h3>
<p><!-- /wp:heading --></p>
<p><!-- wp:paragraph --></p>
<p>開發團隊能透過 K8s Cluster 中的 ReplicaSet 執行 Rolling Update[4] ，從而避免應用程式更新時造成停機。ReplicaSet 主要負責管理 Pod 的數量，確保某個 Pod 在停止運行時，能將其快速重建以確保服務的可用性。</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>Rolling Update 會透過同時建立新版 Pod 的 ReplicaSet 以及逐步關閉舊版 Pod 來進行更新。這意味著開發者無須擔心在更新過程中將所有 Pod 同時關閉，進而導致服務中斷。</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:heading {"level":3} --></p>
<h3><strong>四、回復舊版（Rolling Back）</strong></h3>
<p><!-- /wp:heading --></p>
<p><!-- wp:paragraph --></p>
<p>如果版本更新後發現服務有問題怎麼辦？Rolling Back 可以解決這個問題！</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>前段提到的 Rolling Update 會透過建立新版 Pod 的 ReplicaSet 來更新，而 Rolling Back 則是透過舊版的 ReplicaSet 來恢復舊版 Pod。</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>通常如果沒有設定參數，一個 Deployment 中會保留最多十版的 ReplicaSet 。開發者如果在服務運行時發現錯誤，就可透過 Rolling Back 功能找到想要恢復的舊版本 ReplicaSet 進行無痛 Rollback。</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:heading --></p>
<h2><strong>K8s 的四個優勢</strong></h2>
<p><!-- /wp:heading --></p>
<p><!-- wp:heading {"level":3} --></p>
<h3><strong>輕量級</strong></h3>
<p><!-- /wp:heading --></p>
<p><!-- wp:paragraph --></p>
<p><span style="text-transform: initial;">K8s 的輕量化特性讓應用程式能被輕易地部署至不同環境，例如：地端資料中心、公有雲或其他雲端混合環境。K8s 容器化的本質讓封裝在內的應用程式與其相依的資源能夠緊密結合，從而解決不同平台的兼容問題，並降低在不同基礎架構上部署的難度。</span></p>
<p>同時，借助 <a href="https://www.omniwaresoft.com.tw/hashicorp-vault/" target="_blank" rel="noopener">HashiCorp Vault</a>，您可以輕鬆地在這些環境中安全地管理應用程式的 secrets 和憑證，無需擔心安全風險。Vault 可以與 K8s 無縫整合，提供集中式的 secrets 管理，簡化 secrets 的存取控制，並確保應用程式在不同環境中的安全性。</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:heading {"level":3} --></p>
<h3><strong>宣告式組態</strong></h3>
<p><!-- /wp:heading --></p>
<p><!-- wp:paragraph --></p>
<p>K8s 讓使用者透過宣告式組態文件（Kubernetes Manifest）來宣告期望的系統狀態，管理應用程序和資源。由於宣告式組態直接描述期望的服務狀態（declarative），不需要透過逐項命令式宣告（imperative）來堆疊，因此不易出錯。</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>K8s 宣告式組態以 YAML 或 JSON 檔格式撰寫，描述要執行運作的資源組態，再發送到 K8s API Server。API Server 會確保目標的運行狀態與使用者的期望相符。</p>
<p>例如：在部署 <a href="https://www.omniwaresoft.com.tw/edb/" target="_blank" rel="noopener">EDB PostgreSQL</a> 資料庫時，您可以使用 K8s 宣告式組態來定義 PostgreSQL 叢集的期望狀態，包括副本數量、儲存配置、資源限制等。K8s 會自動確保 PostgreSQL 叢集按照您的配置運行，並在發生故障時自動進行修復，確保資料庫的高可用性和穩定性。</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>K8s 宣告式組態支援版本控制、自動部署、回滾、擴展和自我修復，可以提高使用者管理大規模分佈式系統的能力。同時，它提供了高層次的抽象化，使開發人員和運營人員能夠專注於應用程序的行為和需求。</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:heading {"level":3} --></p>
<h3><strong>促進開發和維運團隊的協作</strong></h3>
<p><!-- /wp:heading --></p>
<p><!-- wp:paragraph --></p>
<p>K8s 透過提供統一的應用程式部署和管理平台，促進開發和維運團隊間的協作。開發人員能透過 Kubernetes Manifests File 將應用程式的配置定義為代碼，從而實現版本控管和持續部署。維運人員則能透過 K8s 自動化部屬流程，監控應用程式運行狀況並導入 CI/CD 工作流程。</p>
<p>此外，開發和維運團隊可以共同使用 <a href="https://www.omniwaresoft.com.tw/elastic/" target="_blank" rel="noopener">ELK Stack </a>來監控應用程式的效能和健康狀況。ELK Stack 可以收集和分析 K8s 叢集中的各種日誌和指標數據，例如：應用程式日誌、系統日誌、Pod 事件等，並提供實時的視覺化 dashboards 和報警功能。</p>
<p>開發人員可以透過 Kibana 的視覺化介面，快速識別和診斷應用程式問題；維運人員可以利用 Elasticsearch 的強大搜尋和分析功能，深入分析日誌數據，並主動地解決潛在問題，進一步提升團隊協作效率。</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:heading {"level":3} --></p>
<h3><strong>儲存調度</strong></h3>
<p><!-- /wp:heading --></p>
<p><!-- wp:paragraph --></p>
<p>K8s 的儲存調度（Storage Orchestration）功能對運行 Stateful 應用程式至關重要，因為它能將需要儲存資源的容器連接到能夠提供資源的基礎設施。</p>
<p>例如：<a href="https://www.omniwaresoft.com.tw/edb/" target="_blank" rel="noopener">EDB PostgreSQL</a> 資料庫等 Stateful 應用程式需要持久化的儲存來保存資料。K8s 的儲存調度功能可以將 PostgreSQL 容器連接到合適的儲存卷，並確保資料的持久性和一致性，即使 Pod 重新啟動或遷移到不同的節點，資料也不會丟失。</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>K8s 執行儲存協調的方式會因多種因素而異，例如儲存基礎架構（Storage Infrastructure）種類以及容器使用 Storage 的方式。</p>
<p>以下圖為例，需要將日誌文件寫入本機 Volume 時可以使用 Local 儲存方式，使用 Azure 時可以使用 AzureFile 儲存方式等。K8s 的儲存協調功能讓使用者能按照不同需求進行儲存。</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:image {"align":"center","id":40631,"width":"508px","aspectRatio":"0.9019607843137255","scale":"cover","sizeSlug":"full","linkDestination":"none"} --></p>
<figure><img data-recalc-dims="1" style="aspect-ratio: 0.9019607843137255; object-fit: cover; width: 508px;" src="https://i0.wp.com/www.omniwaresoft.com.tw/wp-content/uploads/2024/02/%E6%88%AA%E5%9C%96-2024-02-07-%E4%B8%8B%E5%8D%883.43.49.png?w=1170&#038;ssl=1" alt="K8s Storage Orchestration" /></figure>
<p><!-- /wp:image --></p>
<p><!-- wp:heading --></p>
<h2><strong>開源容器編排工具的對比：K8s v.s Docker Swarm </strong></h2>
<p><!-- /wp:heading --></p>
<p><!-- wp:paragraph --></p>
<p>K8s 和 <a href="https://docs.docker.com/engine/swarm/" target="_blank" rel="noopener">Docker Swarm</a> 是市面上兩種主流容器編排工具，這段我們將比較這兩種工具的功能、優勢與適用場景。</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:heading {"level":3} --></p>
<h3><strong>高可用性（High availability）</strong></h3>
<p><!-- /wp:heading --></p>
<p><!-- wp:paragraph --></p>
<p>兩種工具都具備高可用性</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:list --></p>
<ul>
<li style="list-style-type: none;">
<ul><!-- wp:list-item --></ul>
</li>
<li><strong>K8s</strong>：自動檢測不健康的 Pod，並將工作負載調度到健康的 Pod 上，從而確保服務的可用性。</li>
<li><strong>Docker Swarm</strong>：Swarm Managers 的高可用性控制機制（Availability Control<strong>）</strong>能確保節點出現故障時，叢集仍能夠運行。此外，Swarm Manager 會自動在叢集中的節點上分配和調度服務實例，從而達到負載平衡和高可用的目的。</li>
</ul>
<p><!-- /wp:list-item --></p>
<p><!-- wp:list-item --></p>
<p><!-- /wp:list-item --></p>
<p><!-- /wp:list --></p>
<p><!-- wp:heading {"level":3} --></p>
<h3><strong>負載平衡（Load balancing）</strong></h3>
<p><!-- /wp:heading --></p>
<p><!-- wp:paragraph --></p>
<p>Docker Swarm 相較 K8s 具備自動化負載平衡功能。然而，使用者可以透過第三方工具將負載平衡功能整合至 K8s Cluster 上。</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:list --></p>
<ul>
<li style="list-style-type: none;">
<ul><!-- wp:list-item --></ul>
</li>
<li><strong>Kubernetes</strong>：透過單一的 DNS 名稱啟用服務的 Discovery。K8s 能透過 IP 或 HTTP Route 存取容器應用程式。</li>
<li><strong>Docker Swarm</strong>：具備內建的負載平衡器</li>
</ul>
<p><!-- /wp:list-item --></p>
<p><!-- wp:list-item --></p>
<p><!-- /wp:list-item --></p>
<p><!-- /wp:list --></p>
<p><!-- wp:heading {"level":3} --></p>
<h3><strong>擴展性（Scalability）</strong></h3>
<p><!-- /wp:heading --></p>
<p><!-- wp:paragraph --></p>
<p>K8s 以 Pod 為單位擴展，適合規模較大的擴展。與之相比， Docker Swarm 以容器為單位擴展，擴展速度較快。</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:list --></p>
<ul>
<li style="list-style-type: none;">
<ul><!-- wp:list-item --></ul>
</li>
<li><strong>K8s</strong>：內建 HPA 水平擴展</li>
<li><strong>Docker Swarm</strong>：需要額外安裝水平擴展</li>
</ul>
<p><!-- /wp:list-item --></p>
<p><!-- wp:list-item --></p>
<p><!-- /wp:list-item --></p>
<p><!-- /wp:list --></p>
<p><!-- wp:heading {"level":3} --></p>
<p><strong>所以，該選擇 K8s 還是 Docker Swarm ?</strong></p>
<p><!-- /wp:heading --></p>
<p><!-- wp:paragraph --></p>
<p>K8s 作為熱門的容器調度平台，擁有龐大的社群資源。</p>
<p>除此之外，各大雲端供應商和 Docker EE 也都支援 K8s 。雖然 K8s 的功能相較 Docker EE 更強大、更靈活且更客製化，但學習曲線也更陡峭。因此 K8s 需要由一支經驗豐富的團隊維運；為了節省成本，一些公司也會選擇將 K8s 交由託管商維運。</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>而 Docker Swarm 擁有 Docker 原生與組態設定較為簡單的優勢，能夠無縫與 Docker 引擎整合，並且在環境中快速啟動和部署。相較於 K8s ，Docker Swarm 提供使用者更直觀的入門選擇，並適合處理較小的工作負載。</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>選擇 Docker Swarm 還是 K8s 這個問題取決於自身的需求、團隊的技術能力以及想要實現的目標。如果你的應用規模較小，並且正在尋找一個部署步驟簡單、容易上手的解決方案，Docker Swarm 會是不錯的選擇。反之，如果你有足夠的預算並且需要一個功能豐富、能大規模擴展並且有龐大社群和雲端供應商支持的解決方案，K8s 將更合適。</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:separator --></p>
<hr />
<p><!-- /wp:separator --></p>
<p><!-- wp:heading --></p>
<p><strong>參考網址</strong></p>
<ol>
<li><a style="font-family: sans-serif; font-size: medium; font-weight: normal;" href="https://kubernetes.io/docs/concepts/overview/components/" target="_blank" rel="noopener">Kubernetes Components</a></li>
<li><a href="https://kubernetes.io/docs/concepts/workloads/pods/" target="_blank" rel="noopener">Pods</a></li>
<li><a href="https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale/" target="_blank" rel="noopener">Horizontal Pod Autoscaling</a></li>
<li><a href="https://kubernetes.io/docs/tutorials/kubernetes-basics/update/update-intro/" target="_blank" rel="noopener">Performing a Rolling Update</a></li>
</ol>
<div><a href="https://youtu.be/4nZ8i-QCZBo?si=QcI1VF2KXZyCkzmX" target="_blank" rel="noopener">點我看 Kubernetes 基本指令教學</a></div>
<p><!-- /wp:list-item --></p>
<p><!-- wp:list-item --></p>
<p><!-- /wp:list-item --></p>
<p><!-- wp:list-item --></p>
<p><!-- /wp:list-item --></p>
<p><!-- wp:list-item --></p>
<hr />
<p><!-- /wp:list-item --></p>
<p><!-- /wp:list --></p>							</div>
										</div>
				</div>
					</div>
		</div>
					</div></div>
		</section>
				<section data-particle_enable="false" data-particle-mobile-disabled="false" class="elementor-section elementor-top-section elementor-element elementor-element-7ba8380 elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="7ba8380" data-element_type="section">
						<div class="elementor-container elementor-column-gap-thegem"><div class="elementor-row">
					<div class="elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-4764a6e" data-id="4764a6e" data-element_type="column">
			<div class="elementor-widget-wrap elementor-element-populated">
						<div class="elementor-element elementor-element-73d8812 flex-horizontal-align-default flex-horizontal-align-tablet-default flex-horizontal-align-mobile-default flex-vertical-align-default flex-vertical-align-tablet-default flex-vertical-align-mobile-default elementor-widget elementor-widget-html" data-id="73d8812" data-element_type="widget" data-widget_type="html.default">
				<div class="elementor-widget-container">
					<div style="text-align: left;">加入歐立威 LINE 好友，了解更多產品資訊<BR><BR>
  <a href="https://lin.ee/VCvhQSK" style="display: inline-block;" target="_blank"> 
    <img data-recalc-dims="1" width="1170" src="https://i0.wp.com/scdn.line-apps.com/n/line_add_friends/btn/zh-Hant.png?fit=1170%2C36&#038;ssl=1" alt="加入好友" height="36" border="0">
  </a>
</div>				</div>
				</div>
					</div>
		</div>
					</div></div>
		</section>
				</div>
		]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">40640</post-id>	</item>
		<item>
		<title>Elastic Cloud on Kubernetes (ECK) 讓 ELK 部署變簡單 &#8211; 概念介紹與快速上手指南！</title>
		<link>https://www.omniwaresoft.com.tw/techcolumn/elastic-techcolumn/eck-elastic-cloud-on-kubernetes-quickstart/</link>
		
		<dc:creator><![CDATA[Omni]]></dc:creator>
		<pubDate>Wed, 16 Nov 2022 06:50:11 +0000</pubDate>
				<category><![CDATA[Elastic 技術專欄]]></category>
		<category><![CDATA[ECK]]></category>
		<category><![CDATA[Elastic]]></category>
		<category><![CDATA[Elastic Search]]></category>
		<category><![CDATA[K8s]]></category>
		<guid isPermaLink="false">http://www.omniwaresoft.com.tw/?p=18428</guid>

					<description><![CDATA[ECK 是 Elastic Cloud on Kubernetes 的縮寫，有了它，就能在 Kubernetes 環境快速完成下列的常見工作：管理和監控多個群集、安全地執行設定調整以完成滾動升級、橫向延展群集的資源和空間、設定群集的 TLS 憑證、設定「熱-暖-冷」資料節點的架構]]></description>
										<content:encoded><![CDATA[
<h2 class="wp-block-heading has-medium-font-size">ECK 自動部署與功能介紹</h2>



<p>想在 Kubernetes（K8s）環境部署 ELK 軟體，可以分成手動設定和自動設定兩種方式。</p>
<p>所謂手動方式，是指管理員編輯資源配置檔內容，像是指定 StatefulSets 或 Deployment 來進行設定和管理，因為這些運營應用程式的知識都在管理員的腦子裡，也可能散見於 Shell Script 或 Ansible 腳本裡，很難被管控或重覆利用。</p>



<p>為了簡化這個流程，讓管理運營 Kubernetes 的知識能被轉化為軟體形式，一套稱為 Operator Framework 的開源工具集應運而生，它能用來管理 K8s 應用程式，其中也包括稱為 Operator 的原生應用程式。</p>
<p>在 Kubernetes 導入 Operator 之後，開始有了第二種自動設定的方式，透過 Elastic 官方釋出的 ECK 工具，我們就可以更方便地進行 ELK 的自動部署和管理。</p>





<p>ECK 是 Elastic Cloud on Kubernetes 的縮寫，有了它，就能在 Kubernetes 環境快速完成下列的常見工作： </p>



<ol class="wp-block-list">
<li> 管理和監控多個群集</li>



<li> 安全地執行設定調整以完成滾動升級</li>



<li> 橫向延展群集的資源和空間</li>



<li> 設定群集的 TLS 憑證</li>



<li> 設定「熱-暖-冷」資料節點的架構</li>
</ol>



<h2 class="wp-block-heading has-medium-font-size">Operator 運作原理</h2>



<p>雖然 Operator 和 ECK 處理掉許多複雜的工作，還是值得我們稍微理解它背後的原理。</p>



<p>在 Kubernetes 裡有個稱為控制器 (Controller) 的核心概念，控制器在 Master 節點裡是個不停執行的程式，並且針對特定物件進行監控。</p>
<p>例如，使用者指定 Deployment 新的 replica 數量為 3 之後，控制器在接收到更新通知，就會比對 Kubernetes 群集狀態，努力確保狀態和宣告的指定值能夠一致。</p>



<p>因為 Kubernetes 1.7 版本之後導入稱為客製化資源定義（Custom Resource Definition, CRD）的機制，讓開發者可以仿照控制器的原理，自行設定 Operator 來包裝管理應用程式，你可以想像 Operator 就是一種控制器，差別在於它是作用於應用程式的層級。</p>
<p>從 Operator 的視角，我們不再把應用程式看成是一堆 Pod、Deployment、Service、ConfigMap 的資源集合，而在邏輯上把應用程式看成單一物件，直覺地當成一按搞定的快速鍵。</p>



<p>本文要跟大家介紹的主角 ECK，就是一套由 Elastic 公司提供的 Operator 工具，它透過 CRD 定義了一系列新的物件類別，使用者能夠依照一致而直覺的操作介面來管理 ELK 元件。</p>
<p>舉例來說，我們也可以找到 MongoDB 的<a href="https://github.com/mongodb/mongodb-kubernetes-operator" target="_blank" rel="noreferrer noopener"> Kubernetes Operator [1] </a>來用，而且它還分成 <a href="https://www.mongodb.com/try/download/community" target="_blank" rel="noopener">社群版 </a>和 <a href="https://www.mongodb.com/docs/kubernetes-operator/master/" target="_blank" rel="noopener">企業版 </a>兩種，使用者依照需要來決定哪一種。</p>



<h2 class="wp-block-heading has-medium-font-size">ECK 事前準備</h2>



<p>在開始前，應該要先確認手邊的作業環境是否完整被 ECK 版本所支援，以 ECK 2.5.0 為例，它在 2022 年 11 月釋出，相容的 Kubernetes 版本是 1.21 到 1.25。</p>
<p>如果使用的是 GKE 平台，要確認擁有 cluster-admin 權限，如果是用 Amazon EKS 平台，要確認 443 埠號能夠連通。</p>



<p>更多詳細的版本細節，可參考：</p>
<ul>
<li><a href="https://www.elastic.co/guide/en/cloud-on-k8s/current/k8s_supported_versions.html" target="_blank" rel="noopener">https://www.elastic.co/guide/en/cloud-on-k8s/current/k8s_supported_versions.html</a></li>
<li><a href="https://www.elastic.co/support/matrix#matrix_kubernetes" target="_blank" rel="noopener">https://www.elastic.co/support/matrix#matrix_kubernetes</a></li>
</ul>



<p>確保 Kubernetes 節點至少擁有 2GB 的記憶體剩餘空間，不然 Elasticsearch 的 Pod 容易卡在 Pending 狀態。</p>
<p>另外 Kibana 或 APM Server 都有各自合適的運算資源下限，請參考：<a href="https://www.elastic.co/guide/en/cloud-on-k8s/current/k8s-managing-compute-resources.html" target="_blank" rel="noopener">https://www.elastic.co/guide/en/cloud-on-k8s/current/k8s-managing-compute-resources.html</a></p>



<h2 class="wp-block-heading has-medium-font-size">ECK 快速上手</h2>



<p>首先，利用下列指令來完成 CRD 安裝：</p>



<pre class="wp-block-code"><code>$ kubectl create -f https://download.elastic.co/downloads/eck/2.5.0/crds.yaml</code></pre>



<p>順利的話，會看到螢幕回應成功建立 Elastic 資源的訊息。也可以執行下列指令來查看 crd 資訊：</p>



<pre class="wp-block-code"><code>$ kubectl get crd</code></pre>



<figure class="wp-block-image size-large"><img data-recalc-dims="1" fetchpriority="high" width="1170" height="380" class="wp-image-18519" src="https://i0.wp.com/www.omniwaresoft.com.tw/wp-content/uploads/2022/11/01-crd.png?resize=1170%2C380&#038;ssl=1" alt="CRD 資訊" srcset="https://i0.wp.com/www.omniwaresoft.com.tw/wp-content/uploads/2022/11/01-crd.png?w=1734&amp;ssl=1 1734w, https://i0.wp.com/www.omniwaresoft.com.tw/wp-content/uploads/2022/11/01-crd.png?resize=300%2C97&amp;ssl=1 300w, https://i0.wp.com/www.omniwaresoft.com.tw/wp-content/uploads/2022/11/01-crd.png?resize=1024%2C332&amp;ssl=1 1024w, https://i0.wp.com/www.omniwaresoft.com.tw/wp-content/uploads/2022/11/01-crd.png?resize=768%2C249&amp;ssl=1 768w, https://i0.wp.com/www.omniwaresoft.com.tw/wp-content/uploads/2022/11/01-crd.png?resize=1536%2C499&amp;ssl=1 1536w" sizes="(max-width: 1170px) 100vw, 1170px" /></figure>



<p>接著，利用下列指令安裝 Operator 和 RBAC 規則：</p>



<pre class="wp-block-code"><code>$ kubectl apply -f https://download.elastic.co/downloads/eck/2.5.0/operator.yaml</code></pre>



<figure class="wp-block-image size-large"><img data-recalc-dims="1" width="1170" height="236" class="wp-image-18520" src="https://i0.wp.com/www.omniwaresoft.com.tw/wp-content/uploads/2022/11/02-operator.png?resize=1170%2C236&#038;ssl=1" alt="Operator 和 RBAC 規則" srcset="https://i0.wp.com/www.omniwaresoft.com.tw/wp-content/uploads/2022/11/02-operator.png?w=1734&amp;ssl=1 1734w, https://i0.wp.com/www.omniwaresoft.com.tw/wp-content/uploads/2022/11/02-operator.png?resize=300%2C61&amp;ssl=1 300w, https://i0.wp.com/www.omniwaresoft.com.tw/wp-content/uploads/2022/11/02-operator.png?resize=1024%2C207&amp;ssl=1 1024w, https://i0.wp.com/www.omniwaresoft.com.tw/wp-content/uploads/2022/11/02-operator.png?resize=768%2C155&amp;ssl=1 768w, https://i0.wp.com/www.omniwaresoft.com.tw/wp-content/uploads/2022/11/02-operator.png?resize=1536%2C310&amp;ssl=1 1536w" sizes="(max-width: 1170px) 100vw, 1170px" /></figure>



<p>值得注意的是，我們預設使用 elastic-system 命名空間來管理 ECK Operator，也建議針對工作環境選定 elastic-system 或 default 之外的命名空間。</p>



<pre class="wp-block-code"><code>$ kubectl -n elastic-system logs -f statefulset.apps/elastic-operator</code></pre>



<p>以上指令可以觀察 Operator 的日誌訊息。</p>



<figure class="wp-block-image size-large"><img data-recalc-dims="1" width="1170" height="576" class="wp-image-18521" src="https://i0.wp.com/www.omniwaresoft.com.tw/wp-content/uploads/2022/11/03-log.png?resize=1170%2C576&#038;ssl=1" alt="log 訊息" srcset="https://i0.wp.com/www.omniwaresoft.com.tw/wp-content/uploads/2022/11/03-log.png?w=1734&amp;ssl=1 1734w, https://i0.wp.com/www.omniwaresoft.com.tw/wp-content/uploads/2022/11/03-log.png?resize=300%2C148&amp;ssl=1 300w, https://i0.wp.com/www.omniwaresoft.com.tw/wp-content/uploads/2022/11/03-log.png?resize=1024%2C504&amp;ssl=1 1024w, https://i0.wp.com/www.omniwaresoft.com.tw/wp-content/uploads/2022/11/03-log.png?resize=768%2C378&amp;ssl=1 768w, https://i0.wp.com/www.omniwaresoft.com.tw/wp-content/uploads/2022/11/03-log.png?resize=1536%2C756&amp;ssl=1 1536w" sizes="(max-width: 1170px) 100vw, 1170px" /></figure>



<h2 class="wp-block-heading has-medium-font-size">ECK 佈署 Elasticsearch</h2>



<p>最簡單的起手式是建立單一節點的 Elasticsearch (ES) 群集，我們可以編輯 quickstart-es.yml 檔案，內容如下：</p>



<pre class="wp-block-code"><code>apiVersion: elasticsearch.k8s.elastic.co/v1
kind: Elasticsearch
metadata:
  name: quickstart
spec:
  version: 8.5.1
  nodeSets:
  - name: default
    count: 1
    config:
      node.store.allow_mmap: false</code></pre>



<p>接著，執行下列指令讓上述的設定檔生效：</p>



<pre class="wp-block-code"><code>$ kubectl apply -f quickstart-es.yml</code></pre>



<p>檢查 ECK 是否順利讓設定值生效：</p>



<pre class="wp-block-code"><code>$ kubectl get elasticsearch</code></pre>



<figure class="wp-block-image size-large"><img data-recalc-dims="1" loading="lazy" width="1170" height="158" class="wp-image-18522" src="https://i0.wp.com/www.omniwaresoft.com.tw/wp-content/uploads/2022/11/04-apply-es.png?resize=1170%2C158&#038;ssl=1" alt="apply es" srcset="https://i0.wp.com/www.omniwaresoft.com.tw/wp-content/uploads/2022/11/04-apply-es.png?w=1734&amp;ssl=1 1734w, https://i0.wp.com/www.omniwaresoft.com.tw/wp-content/uploads/2022/11/04-apply-es.png?resize=300%2C40&amp;ssl=1 300w, https://i0.wp.com/www.omniwaresoft.com.tw/wp-content/uploads/2022/11/04-apply-es.png?resize=1024%2C138&amp;ssl=1 1024w, https://i0.wp.com/www.omniwaresoft.com.tw/wp-content/uploads/2022/11/04-apply-es.png?resize=768%2C104&amp;ssl=1 768w, https://i0.wp.com/www.omniwaresoft.com.tw/wp-content/uploads/2022/11/04-apply-es.png?resize=1536%2C207&amp;ssl=1 1536w" sizes="(max-width: 1170px) 100vw, 1170px" /></figure>



<p>上述指令可以簡化成 kubectl get es 形式。留意到指令輸出結果的 HEALTH 欄位，它會提示部署中的 Elasticsearch 健康狀態，如果不是 green 的話，可以再透過 kubectl describe pod quickstart-es-default-0 之類的指令來查看細節。</p>



<figure class="wp-block-image size-large"><img data-recalc-dims="1" loading="lazy" width="1170" height="613" class="wp-image-18523" src="https://i0.wp.com/www.omniwaresoft.com.tw/wp-content/uploads/2022/11/05-describe-es.png?resize=1170%2C613&#038;ssl=1" alt="describe-es" srcset="https://i0.wp.com/www.omniwaresoft.com.tw/wp-content/uploads/2022/11/05-describe-es.png?w=1708&amp;ssl=1 1708w, https://i0.wp.com/www.omniwaresoft.com.tw/wp-content/uploads/2022/11/05-describe-es.png?resize=300%2C157&amp;ssl=1 300w, https://i0.wp.com/www.omniwaresoft.com.tw/wp-content/uploads/2022/11/05-describe-es.png?resize=1024%2C537&amp;ssl=1 1024w, https://i0.wp.com/www.omniwaresoft.com.tw/wp-content/uploads/2022/11/05-describe-es.png?resize=768%2C402&amp;ssl=1 768w, https://i0.wp.com/www.omniwaresoft.com.tw/wp-content/uploads/2022/11/05-describe-es.png?resize=1536%2C805&amp;ssl=1 1536w" sizes="(max-width: 1170px) 100vw, 1170px" /></figure>



<figure class="wp-block-image size-large"><img data-recalc-dims="1" loading="lazy" width="1170" height="578" class="wp-image-18524" src="https://i0.wp.com/www.omniwaresoft.com.tw/wp-content/uploads/2022/11/06-readiness-probe.png?resize=1170%2C578&#038;ssl=1" alt="readiness-probe" srcset="https://i0.wp.com/www.omniwaresoft.com.tw/wp-content/uploads/2022/11/06-readiness-probe.png?w=1734&amp;ssl=1 1734w, https://i0.wp.com/www.omniwaresoft.com.tw/wp-content/uploads/2022/11/06-readiness-probe.png?resize=300%2C148&amp;ssl=1 300w, https://i0.wp.com/www.omniwaresoft.com.tw/wp-content/uploads/2022/11/06-readiness-probe.png?resize=1024%2C506&amp;ssl=1 1024w, https://i0.wp.com/www.omniwaresoft.com.tw/wp-content/uploads/2022/11/06-readiness-probe.png?resize=768%2C379&amp;ssl=1 768w, https://i0.wp.com/www.omniwaresoft.com.tw/wp-content/uploads/2022/11/06-readiness-probe.png?resize=1536%2C758&amp;ssl=1 1536w" sizes="(max-width: 1170px) 100vw, 1170px" /></figure>



<figure class="wp-block-image size-large"><img data-recalc-dims="1" loading="lazy" width="1170" height="117" class="wp-image-18525" src="https://i0.wp.com/www.omniwaresoft.com.tw/wp-content/uploads/2022/11/07-green-running.png?resize=1170%2C117&#038;ssl=1" alt="green-running" srcset="https://i0.wp.com/www.omniwaresoft.com.tw/wp-content/uploads/2022/11/07-green-running.png?w=1734&amp;ssl=1 1734w, https://i0.wp.com/www.omniwaresoft.com.tw/wp-content/uploads/2022/11/07-green-running.png?resize=300%2C30&amp;ssl=1 300w, https://i0.wp.com/www.omniwaresoft.com.tw/wp-content/uploads/2022/11/07-green-running.png?resize=1024%2C103&amp;ssl=1 1024w, https://i0.wp.com/www.omniwaresoft.com.tw/wp-content/uploads/2022/11/07-green-running.png?resize=768%2C77&amp;ssl=1 768w, https://i0.wp.com/www.omniwaresoft.com.tw/wp-content/uploads/2022/11/07-green-running.png?resize=1536%2C154&amp;ssl=1 1536w" sizes="(max-width: 1170px) 100vw, 1170px" /></figure>



<p>等到 ES 群集健康值顯示為 green，再透過下列的指令群，可以看到 ES 成功連線的訊息。</p>



<pre class="wp-block-code"><code>$ PASSWORD=$(kubectl get secret quickstart-es-elastic-user -o go-template='{{.data.elastic | base64decode}}')
$ kubectl port-forward service/quickstart-es-http 9200
$ curl -u "elastic:$PASSWORD" -k "https://localhost:9200"</code></pre>



<figure class="wp-block-image size-large"><img data-recalc-dims="1" loading="lazy" width="1170" height="59" class="wp-image-18526" src="https://i0.wp.com/www.omniwaresoft.com.tw/wp-content/uploads/2022/11/08-es-http.png?resize=1170%2C59&#038;ssl=1" alt="es-http" srcset="https://i0.wp.com/www.omniwaresoft.com.tw/wp-content/uploads/2022/11/08-es-http.png?w=1734&amp;ssl=1 1734w, https://i0.wp.com/www.omniwaresoft.com.tw/wp-content/uploads/2022/11/08-es-http.png?resize=300%2C15&amp;ssl=1 300w, https://i0.wp.com/www.omniwaresoft.com.tw/wp-content/uploads/2022/11/08-es-http.png?resize=1024%2C52&amp;ssl=1 1024w, https://i0.wp.com/www.omniwaresoft.com.tw/wp-content/uploads/2022/11/08-es-http.png?resize=768%2C39&amp;ssl=1 768w, https://i0.wp.com/www.omniwaresoft.com.tw/wp-content/uploads/2022/11/08-es-http.png?resize=1536%2C78&amp;ssl=1 1536w" sizes="(max-width: 1170px) 100vw, 1170px" /></figure>



<figure class="wp-block-image size-large"><img data-recalc-dims="1" loading="lazy" width="1170" height="470" class="wp-image-18527" src="https://i0.wp.com/www.omniwaresoft.com.tw/wp-content/uploads/2022/11/09-curl-es.png?resize=1170%2C470&#038;ssl=1" alt="curl-es" srcset="https://i0.wp.com/www.omniwaresoft.com.tw/wp-content/uploads/2022/11/09-curl-es.png?w=1734&amp;ssl=1 1734w, https://i0.wp.com/www.omniwaresoft.com.tw/wp-content/uploads/2022/11/09-curl-es.png?resize=300%2C120&amp;ssl=1 300w, https://i0.wp.com/www.omniwaresoft.com.tw/wp-content/uploads/2022/11/09-curl-es.png?resize=1024%2C411&amp;ssl=1 1024w, https://i0.wp.com/www.omniwaresoft.com.tw/wp-content/uploads/2022/11/09-curl-es.png?resize=768%2C308&amp;ssl=1 768w, https://i0.wp.com/www.omniwaresoft.com.tw/wp-content/uploads/2022/11/09-curl-es.png?resize=1536%2C617&amp;ssl=1 1536w" sizes="(max-width: 1170px) 100vw, 1170px" /></figure>



<p>同樣建立一個 quickstart-kb.yml 檔案，編輯內容如下：</p>



<pre class="wp-block-code"><code>apiVersion: kibana.k8s.elastic.co/v1
kind: Kibana
metadata:
  name: quickstart
spec:
  version: 8.5.1
  count: 1
  elasticsearchRef:
    name: quickstart</code></pre>



<p>執行下列指令來完成 Kibana 佈署：</p>



<pre class="wp-block-code"><code>$ kubectl apply -f quickstart-kb.yml</code></pre>



<pre class="wp-block-code"><code>$ kubectl port-forward service/quickstart-kb-http 5601</code></pre>



<figure class="wp-block-image size-large"><img data-recalc-dims="1" loading="lazy" width="1170" height="176" class="wp-image-18528" src="https://i0.wp.com/www.omniwaresoft.com.tw/wp-content/uploads/2022/11/10-apply-kb.png?resize=1170%2C176&#038;ssl=1" alt="apply-kb" srcset="https://i0.wp.com/www.omniwaresoft.com.tw/wp-content/uploads/2022/11/10-apply-kb.png?w=1734&amp;ssl=1 1734w, https://i0.wp.com/www.omniwaresoft.com.tw/wp-content/uploads/2022/11/10-apply-kb.png?resize=300%2C45&amp;ssl=1 300w, https://i0.wp.com/www.omniwaresoft.com.tw/wp-content/uploads/2022/11/10-apply-kb.png?resize=1024%2C154&amp;ssl=1 1024w, https://i0.wp.com/www.omniwaresoft.com.tw/wp-content/uploads/2022/11/10-apply-kb.png?resize=768%2C116&amp;ssl=1 768w, https://i0.wp.com/www.omniwaresoft.com.tw/wp-content/uploads/2022/11/10-apply-kb.png?resize=1536%2C231&amp;ssl=1 1536w" sizes="(max-width: 1170px) 100vw, 1170px" /></figure>



<figure class="wp-block-image size-large"><img data-recalc-dims="1" loading="lazy" width="1170" height="575" class="wp-image-18529" src="https://i0.wp.com/www.omniwaresoft.com.tw/wp-content/uploads/2022/11/11-describe-kb.png?resize=1170%2C575&#038;ssl=1" alt="describe-kb" srcset="https://i0.wp.com/www.omniwaresoft.com.tw/wp-content/uploads/2022/11/11-describe-kb.png?w=1734&amp;ssl=1 1734w, https://i0.wp.com/www.omniwaresoft.com.tw/wp-content/uploads/2022/11/11-describe-kb.png?resize=300%2C147&amp;ssl=1 300w, https://i0.wp.com/www.omniwaresoft.com.tw/wp-content/uploads/2022/11/11-describe-kb.png?resize=1024%2C503&amp;ssl=1 1024w, https://i0.wp.com/www.omniwaresoft.com.tw/wp-content/uploads/2022/11/11-describe-kb.png?resize=768%2C377&amp;ssl=1 768w, https://i0.wp.com/www.omniwaresoft.com.tw/wp-content/uploads/2022/11/11-describe-kb.png?resize=1536%2C755&amp;ssl=1 1536w" sizes="(max-width: 1170px) 100vw, 1170px" /></figure>



<p>Kibana 登入 Elasticsearch 的帳號是 elastic 而密碼可由 Secret 資源內容取得：</p>



<figure class="wp-block-image size-large"><img data-recalc-dims="1" loading="lazy" width="1170" height="40" class="wp-image-18530" src="https://i0.wp.com/www.omniwaresoft.com.tw/wp-content/uploads/2022/11/12-secret-es.png?resize=1170%2C40&#038;ssl=1" alt="secret-es" srcset="https://i0.wp.com/www.omniwaresoft.com.tw/wp-content/uploads/2022/11/12-secret-es.png?w=1734&amp;ssl=1 1734w, https://i0.wp.com/www.omniwaresoft.com.tw/wp-content/uploads/2022/11/12-secret-es.png?resize=300%2C10&amp;ssl=1 300w, https://i0.wp.com/www.omniwaresoft.com.tw/wp-content/uploads/2022/11/12-secret-es.png?resize=1024%2C35&amp;ssl=1 1024w, https://i0.wp.com/www.omniwaresoft.com.tw/wp-content/uploads/2022/11/12-secret-es.png?resize=768%2C26&amp;ssl=1 768w, https://i0.wp.com/www.omniwaresoft.com.tw/wp-content/uploads/2022/11/12-secret-es.png?resize=1536%2C52&amp;ssl=1 1536w" sizes="(max-width: 1170px) 100vw, 1170px" /></figure>



<p>一切順利的話，就可以打開瀏覽器來存取 Kibana 的登入畫面。</p>



<h2 class="wp-block-heading has-medium-font-size">總結</h2>



<p>透過 ECK 在 K8S 環境部署 ELK 有下列好處和注意事項：</p>



<p>1. 想要清空部署環境的相關資源，可以使用 kubectl delete elasticsearch quickstart 之類的指令，將 ES 或 Kibana 當成資源單位，相當直覺。</p>



<p>2. 如果遇到錯誤訊息，同樣要透過 K8S 環境的除錯工具和步驟，可參考官網的說明文件。</p>



<p>3. ES 或 Kibana 的成功啟動需要合理時間的等待，特別是 ES 最後階段是 Readiness Probe 的確認，如果超過十分鐘沒有正常反應，動手除錯吧。</p>
<p>&#8211;</p>
<p>想了解更多資訊，<a href="https://www.omniwaresoft.com.tw/contact/" target="_blank" rel="noreferrer noopener">歡迎聯絡我們</a>，或是 <a href="https://page.line.me/870pcqyh?oat__id=4761625&amp;openQrModal=true" target="_blank" rel="noreferrer noopener">加入歐立威 Line 好友！</a></p>


<hr class="wp-block-separator has-css-opacity is-style-wide" />

]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">18428</post-id>	</item>
		<item>
		<title>ＨashiCorp VaultㄧASAPP 在 Kubernetes 上使用 Operator 模式實現自動化端到端服務</title>
		<link>https://www.omniwaresoft.com.tw/usecase/vault-usecase/hashicorp-vault-asapp-kubernetes-operator/</link>
		
		<dc:creator><![CDATA[Omni]]></dc:creator>
		<pubDate>Tue, 08 Mar 2022 10:05:16 +0000</pubDate>
				<category><![CDATA[Hashicorp Vault 成功案例]]></category>
		<category><![CDATA[成功案例]]></category>
		<category><![CDATA[HashiCorp Vault]]></category>
		<category><![CDATA[K8s]]></category>
		<guid isPermaLink="false">http://www.omniwaresoft.com.tw/?p=17142</guid>

					<description><![CDATA[ASAPP 在 Kubernetes 上使用 Operator 模式運行 Vault，讓客戶能夠與 Vault 整合並管理機密，而無需被任何 SRE 干擾。此篇文章，我們將討論在 VM 到 Kubernetes 上運行 Vault 的歷程，並討論在 Kubernetes 上運行的優勢。]]></description>
										<content:encoded><![CDATA[		<div data-elementor-type="wp-post" data-elementor-id="17142" class="elementor elementor-17142" data-elementor-post-type="post">
						<section data-particle_enable="false" data-particle-mobile-disabled="false" class="elementor-section elementor-top-section elementor-element elementor-element-33bae93f elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="33bae93f" data-element_type="section">
						<div class="elementor-container elementor-column-gap-thegem"><div class="elementor-row">
					<div class="elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-59afd67c" data-id="59afd67c" data-element_type="column">
			<div class="elementor-widget-wrap elementor-element-populated">
						<div class="elementor-element elementor-element-58369d86 flex-horizontal-align-default flex-horizontal-align-tablet-default flex-horizontal-align-mobile-default flex-vertical-align-default flex-vertical-align-tablet-default flex-vertical-align-mobile-default elementor-widget elementor-widget-text-editor" data-id="58369d86" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
												<div class="elementor-text-editor elementor-clearfix">
						<p></p>
<h2 class="wp-block-heading" style="font-size:30px"><strong><span style="font-size: 30px;">挑戰</span></strong></h2>
<p></p>
<p></p>
<p><span style="font-weight: 400;">在大約三年前 ASAPP 開始使用 Kubernetes，不久後開始使用 Vault。因為機密管理和 Kubernetes 的設計不是那麼完善，無論是既有的平台或產品上，而 Vault 可以輕鬆達成所需。</span><br><span style="font-weight: 400;">當時，Kubernetes 是 1.9 版本，而 Vault 是 0.8 或 0.9 的版本。我們獲得的建議是盡可能單獨運行 Vault。事實上，在 Kubernetes 中運行它的工具幾乎不存在。因此，我們在 EC2 虛擬機上運行它。&nbsp;</span></p>
<p></p>
<p></p>
<h2 class="wp-block-heading"><strong><span style="font-size: 30px;">使用產品</span></strong></h2>
<p></p>
<p></p>
<p><a href="https://www.omniwaresoft.com.tw/hashicorp_vault/"><span style="font-weight: 400;">HashiCorp </span></a><span style="font-weight: 400;">、Kubernetes、<a href="https://www.vaultproject.io/">Vault</a></span></p>
<p></p>
<p></p>
<h2 class="wp-block-heading"><strong><span style="font-size: 30px;">VM 到 Kubernetes 上運行 Vault 的歷程</span></strong></h2>
<p></p>
<p></p>
<p><span style="font-weight: 400;">我們是 AWS shop，擁有網路邊界的 VPC，Kubernetes 叢集在此與 Vault 通訊，生產工作負載會使用 Service Account 身份運行。因為 Vault 發布的 Kubernetes OAuth 後端才剛上市，因此讓我們可以自動使用身份驗證方案。</span><br><span style="font-weight: 400;">SRE 團隊可以同時維護 Vault 配置和靜態機密（</span><a href="https://learn.hashicorp.com/tutorials/vault/static-secrets"><span style="font-weight: 400;">static secrets</span></a><span style="font-weight: 400;">）。Vault 配置分為兩部分並用 </span><a href="https://www.hashicorp.com/products/terraform"><span style="font-weight: 400;">Terraform</span></a><span style="font-weight: 400;"> 維護它們。第一，本身 Vault 叢集到形成 Vault 叢集的雲端資源以及角色、策略、選項等後端配置。第二，單獨管理靜態機密。</span></p>
<p></p>
<p></p>
<h3 class="wp-block-heading"><strong><span style="font-size: 25px;">每個服務的配置和抽象化</span></strong></h3>
<p></p>
<p></p>
<p><span style="font-weight: 400;">我們已經足夠抽像出每個服務的配置。因此，對於需要透過 Vault 進行身份驗證的任何新服務，服務所有者只需添加在在此列表中，就會傳遞給一個 Terraform </span><a href="https://learn.hashicorp.com/terraform/getting-started/modules.html"><span style="font-weight: 400;">模組</span></a><span style="font-weight: 400;">，該模組將建立服務所需的一切，包含</span><a href="https://www.hashicorp.com/resources/policies-Vault"><span style="font-weight: 400;">策略</span></a><span style="font-weight: 400;">權限、角色等。</span></p>
<p></p>
<p></p>
<h3 class="wp-block-heading"><strong><span style="font-size: 25px;">Static Secrets 靜態機密</span></strong></h3>
<p></p>
<p></p>
<p><span style="font-weight: 400;">當時 Vault UI 只有 Enterprise版本，我們使用的是開源的版本，因此靜態機密的 KV 後端還在第一版。</span><br><span style="font-weight: 400;">我們的問題是修改附加密鑰或修改協助機密十分複雜。首先，我們必須在命令行中執行此操作，導出至 JSON 文件、修改、重新導入導入，而手動操作十分容易出錯。我們最終採用了使用 KMS 離線加密純文本機密的模式，然後將該 KMS 儲存在 Source Control 中。</span></p>
<p></p>
<p></p>
<p><span style="font-weight: 400;">字符串（String）不是實際的機密，而是它的 KMS 加密版本。我們把它放在一個 Terraform 中，我們有一個資料源物件，可以動態解密它，然後 vault generic secret 導入 Vault。顯然，這樣做是有風險的，但是透過使用 Terraform in-memory 後端可以減少此風險。</span></p>
<p></p>
<p></p>
<p><span style="font-weight: 400;">即使它沒有記錄，您可以將此 in-memory 後端與空塊一起使用。後端僅存在in-memory，並且只存在於運行期間，不存在機密以純文本形式持久遠程的狀態。</span></p>
<p></p>
<p></p>
<h3 class="wp-block-heading"><b></b><strong><span style="font-size: 25px;">多個微服務和單租戶部署以建立高基數</span></strong></h3>
<p></p>
<p></p>
<p><span style="font-weight: 400;">現實情況是我們有多個單租戶 Kubernetes 叢集的部署模型。它們每個都有對應的 Vault 叢集而配置幾乎完全相同。</span><br><span style="font-weight: 400;">最重要的是，我們正在經歷多個</span><a href="https://www.hashicorp.com/resources/what-are-challenges-microservice-networking"><span style="font-weight: 400;">微服務</span></a><span style="font-weight: 400;">的爆炸式增長。意味著任何修改牽一髮動全身，要對多個微服務、環境的配置和機密進行多次修改，而不是單個微服務和單個環境而已。</span></p>
<p></p>
<p></p>
<h3 class="wp-block-heading"><span style="font-size: 25px;"><strong>無法持續整合/部署（CI/CD）</strong></span></h3>
<p></p>
<p></p>
<p><span style="font-weight: 400;">如果我們有某種形式的 CI/CD 來進行這些更改，這通常不會有問題，但SRE 團隊遇到一個瓶頸，一切都需要手動應用。</span></p>
<p></p>
<p></p>
<h3 class="wp-block-heading"><b></b><span style="font-size:25px;"><strong>Code 是集體所有，但資源不是</strong></span></h3>
<p></p>
<p></p>
<p><span style="font-weight: 400;">服務自助化的觀念導致服務所有者認為他們可以用 Vault 對服務進行身份驗證和配置。現實情況是，服務所有者的介面都停止了。 PR 批准合併和申請必須由 SRE 團隊完成。該團隊擁有 Terraform 後端的權限以及 Vault 和解密 KMS 的權限。它與 SRE 團隊的耦合度太高，無法實現真正的自助服務。</span></p>
<p></p>
<p></p>
<h2 class="wp-block-heading"><strong><span style="font-size: 30px;">Kubernetes 運行的優勢</span></strong></h2>
<p></p>
<p></p>
<h3 class="wp-block-heading"><strong><span style="font-size: 25px;">Kubernetes Operator Pattern</span></strong></h3>
<p></p>
<p></p>
<p><span style="font-weight: 400;">Kubernetes 本身就像一個循環運行的大控制器，將物件排解或宣告物件為真實的物件，如 pod 和容器等等。但最重要的是，您可以運行客製化控制器層來排解客製化資源定義。這是另一個 Kubernetes 概念，它們是任意資料結構，用於定義事物的屬性和狀態。無論是您的業務領域中的事物、實體物件、外部 API 等。</span></p>
<p></p>
<p></p>
<p><span style="font-weight: 400;">它不僅限於 Kubernetes API。控制器不需要只作用於 Kubernetes 物件，也可以與外部 API 整合。例如，在我們的案例中，我們與 AWS API 以及 Vault 後端整合。</span></p>
<p></p>
<p></p>
<p><span style="font-weight: 400;">與我們所擁有的 Terraform 設置相比，主要優勢之一是減少了</span><a href="http://hashicorp.com/resources/how-can-i-prevent-configuration-drift"><span style="font-weight: 400;">偏移（drift）</span></a><span style="font-weight: 400;">。它持續確保狀態按定義運行。Terraform 應用不僅僅是一個好的 Cron 作業，因為它合併了所有 API，以及在每個 cron sec 或每個事件的循環上運行，以確保事情如你定義一樣。</span></p>
<p></p>
<p></p>
<p><span style="font-weight: 400;">Kubernetes 的另一個方面是導入控制器。它們是攔截對 Kubernetes API 調用的 webhook。無論是您是人為運行 kubectl apply，還是在機器運行（例如 Jenkins 或 Spinnaker）或其他控制器正在與 Kubernetes API 溝通，這些 webhook 將攔截請求。</span></p>
<p></p>
<p></p>
<p><span style="font-weight: 400;">其中一種是驗證 webhook，它能檢查有效負載，拒絕請求或將其傳遞。另一種變異 webhook 檢查有效負載，可以在將其傳回並在 Kubernetes 儲存、SCD 或任何您擁有的東西中處理先前的修改。</span><br><span style="font-weight: 400;">驗證 webhook 的主要用例是強制執行超出 RBAC 的規則或限制，無論用戶或角色是否有權執行操作。對於 mutating webhook，您可以使用運行時已知的東西來清理輸入或修改物件。</span></p>
<p></p>
<p></p>
<h3 class="wp-block-heading"><strong><span style="font-size: 25px;">Vault in Kubernetes</span></strong></h3>
<p></p>
<p></p>
<p><span style="font-weight: 400;">首先，我們想利用 Kubernetes 本身作為自動化平台。我們的服務已經在使用 Kubernetes 身份驗證，因此引入 Vault 並沒有帶來太多好處。但它減少必須維護額外 EC2 實例集的許多風險或操作複雜性。更重要的是，我們希望將配置和機密管理的所有權交給服務團隊。我們希望移除人工作業以及 SRE 團隊，而不必依賴外部團隊。</span></p>
<p></p>
<p></p>
<p><span style="font-weight: 400;">下文是我們正在查看的內容以及我們最終得到的內容。首先，現在都在 Kubernetes 中運行，看起來都一樣，我們仍然有工作負載，使用 Service Account 身份運行的 pod 向 Vault 進行身份驗證。</span></p>
<p></p>
<p></p>
<p><span style="font-weight: 400;">但我們現在有一個 Vault Operator，負責在內部建立 Vault 資源、pod 和服務等。我們有另一個操作人員負責發現需要為 Vault 身份驗證配置的身份，並為此重新配置 Vault。我們有修改工作負載的變異 webhook，以便他們可以發現 Vault，或知道要與哪個 Vault 溝通。</span></p>
<p></p>
<p></p>
<h3 class="wp-block-heading"><strong><span style="font-size: 25px;">Vault Operator</span></strong></h3>
<p></p>
<p></p>
<p><span style="font-weight: 400;">對於 Vault Operator，我們使用的是開源版本，由 Banzai Cloud 公司維護。它被稱為 Bank-Vaults。這實際上是在您的叢集中安裝了一個名為 Vault 的新的自定義資源，您可以在該物件中定義 Vault 叢集的狀態和配置。</span><br><span style="font-weight: 400;">這個單一物件用包含所有內容的單一物件取代了我們用於雲資源和配置的 Terraform。最重要的是，它有一個可以被其他東西修改的程式介面。</span></p>
<p></p>
<p></p>
<h3 class="wp-block-heading"><strong><span style="font-size: 25px;">Vault Dynamic Configuration Operator</span></strong></h3>
<p></p>
<p></p>
<p><span style="font-weight: 400;">我們的生產工作負載使用 Service Account 物件來使用該身份來識別 Vault，並將 job更換為 Vault </span><a href="https://www.vaultproject.io/guides/identity/lease.html"><span style="font-weight: 400;">令牌</span></a><span style="font-weight: 400;">。</span><br><span style="font-weight: 400;">操作人員需要將配置的 Service Accounts 添加到其中。這裡的關鍵是操作人員不是直接修改 Vault，而是在修改之前定義的 Vault 物件。</span></p>
<p></p>
<p></p>
<p><span style="font-weight: 400;">然後 Vault Operator 接受這些變更並對後端進行更改。運行時的行為沒有改變，因為從服務的角度來看，它仍然使用其中的一些身份與同一個 Vault 通訊，並使用同一個工作流進行身份驗證。</span></p>
<p></p>
<p></p>
<p><span style="font-weight: 400;">過去如果想要在程式碼前四行聲明 Service Account，就需要添加一個註解，寫著「我希望自動配置」。現在，Vault 後端將擁有角色策略和配置，以便使用 Service Account 的任何服務都能夠與之對話。不需要任何手動參與，因為一切都是在幕後以程式化方式進行。</span></p>
<p></p>
<p></p>
<h3 class="wp-block-heading"><strong><span style="font-size: 25px;">Mutating Webhooks</span></strong></h3>
<p></p>
<p></p>
<p><span style="font-weight: 400;">Webhook 的想法是透過刪除他們需要知道或修改的事物的表面區域，來降低服務所有者的複雜性。我們想避免 copy-paste，因為也許它們會從以前整合中複製，但現在已經不兼容或需要複製邊車（sidecar） 定義。</span><br><span style="font-weight: 400;">最重要的是，sidecar 本身抽像出我所指的身份驗證服務。這項服務必須了解使用 Kubernetes 特定身份驗證端點的流程，而不是直接請求機密，因為它不需要知道其餘的事情。</span></p>
<p></p>
<p></p>
<p><span style="font-weight: 400;">因為我們知道邊車是有爭議的。從長遠來看，我們希望它會趨於一致，但我們也希望為想擁有更多掌控權的團隊明確地提供選擇。您可以擁有自己的 Vault 相關配置並進行相同的邊車定義，或者您可以使用註解，聲明您的意圖，然後 webhook 將會接管。</span></p>
<p></p>
<p></p>
<h3 class="wp-block-heading"><strong><span style="font-size: 25px;">Vault Agent Auto-Inject</span></strong></h3>
<p></p>
<p></p>
<p><span style="font-weight: 400;">在現實生活中是這樣的，例如，我有我的部署定義，我想在那裡導入一個邊車。但我不想定義邊車，我希望 webhook 為我做這件事。</span></p>
<p></p>
<p></p>
<p><span style="font-weight: 400;">我添加了一個註解，上面寫著「我希望在這個部署定義中</span><a href="https://learn.hashicorp.com/tutorials/vault/agent-kubernetes"><span style="font-weight: 400;">導入邊車</span></a><span style="font-weight: 400;">。」當該 pod 被調度時，webhook 將攔截請求並導入 Vault agent sidecar。邊車定義未在部署清單中明確聲明，實際上，如果您執行 kubectl describe deployment 之類的操作，您將看不到它。但是，如果您執行 kubectl describe pod，您會看到它，因為它是及時導入的，就在 pod 被安排之前。</span><span style="font-weight: 400;">對於為 Vault 進行直接整合的服務不需要透過邊車。他們還可以請求明確定義環境變量。</span></p>
<p></p>
<p></p>
<p><span style="font-weight: 400;">我需要定義預填寫的變量。在運行時，當 pod 被調度時，變異的 webhook 將導入 Vault address，Vault CA cert 等等。它不僅會掛載值，還會掛載</span><span style="font-weight: 400;">儲存裝置，</span><span style="font-weight: 400;">並且需要 CA 憑證。所有這些值都是 webhook 先前知道的，因為它是預先配置的，這就是我們抽象所有資源的地方。</span></p>
<p></p>
<p></p>
<h3 class="wp-block-heading"><strong><span style="font-size: 25px;">KMS Vault Operator</span></strong></h3>
<p></p>
<p></p>
<p><span style="font-weight: 400;">我們有 KMS Vault Operator 現在有一個新的物件種類，它被稱為 KMS Vault Secret。它是 Kubernetes 之前定義的自定義資源。</span><br><span style="font-weight: 400;">它遵循相同的流程，我們使用 KMS 離線加密機密，我們將其儲存在原始碼控制中。它將成為程式碼及機密，因為現在它是 YAML 中的一個 Kubernetes 物件，你可以將它嵌入到你的 helm charts 或 pipelines 中。Operator 會發現這些物件，然後讀取 KMS 字符串，在 in-memory 解密，導入 Vault。</span></p>
<p></p>
<p></p>
<p><span style="font-weight: 400;">實際上，它看起來與 Terraform 模式非常相似。您擁有名為 KMS Vault Secret 的新物件類型、將被建立機密的路徑、 KV 版本（例如 V1）、密鑰和加密的機密。同樣，沒有任何純文字的紀錄。因此我們回到建立和配置 Vault、改變工作負載和導入機密的部分。除了剛開始的必要條件和建立之外，這一切都不需要人力。</span></p>
<p></p>							</div>
										</div>
				</div>
					</div>
		</div>
					</div></div>
		</section>
				</div>
		]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">17142</post-id>	</item>
		<item>
		<title>ELK Stack – 使用 Prometheus 和 Fluentd 監控 Elastic Stack 中的 Kubernetes</title>
		<link>https://www.omniwaresoft.com.tw/product-news/elastic-news/efk-prometheus-fluentd/</link>
		
		<dc:creator><![CDATA[Omni]]></dc:creator>
		<pubDate>Tue, 22 Feb 2022 08:17:09 +0000</pubDate>
				<category><![CDATA[Elastic 產品資訊]]></category>
		<category><![CDATA[產品資訊]]></category>
		<category><![CDATA[Elastic]]></category>
		<category><![CDATA[Elastic Stack]]></category>
		<category><![CDATA[K8s]]></category>
		<guid isPermaLink="false">http://www.omniwaresoft.com.tw/?p=17095</guid>

					<description><![CDATA[Elasticsearch、Fluentd 和 Kibana 的日誌監控解決方案稱為 EFK Stack。Prometheus 是眾所皆知的開源工具，特別是在最近 Kubernetes 環境的指標監測方面有主導地位。Fluentd 是開源日誌收集工具，類似 Elastic Stack 中的 Logstash]]></description>
										<content:encoded><![CDATA[		<div data-elementor-type="wp-post" data-elementor-id="17095" class="elementor elementor-17095" data-elementor-post-type="post">
						<section data-particle_enable="false" data-particle-mobile-disabled="false" class="elementor-section elementor-top-section elementor-element elementor-element-281378af elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="281378af" data-element_type="section">
						<div class="elementor-container elementor-column-gap-thegem"><div class="elementor-row">
					<div class="elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-643e0c1" data-id="643e0c1" data-element_type="column">
			<div class="elementor-widget-wrap elementor-element-populated">
						<div class="elementor-element elementor-element-1516422d flex-horizontal-align-default flex-horizontal-align-tablet-default flex-horizontal-align-mobile-default flex-vertical-align-default flex-vertical-align-tablet-default flex-vertical-align-mobile-default elementor-widget elementor-widget-text-editor" data-id="1516422d" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
												<div class="elementor-text-editor elementor-clearfix">
						<p></p>
<p><span style="font-weight: 400;">Kubernetes 是一個開源容器調度系統，用於應用程式部署、擴展和管理的自動化，且似乎已經成為該領域標竿。</span></p>
<p></p>
<p></p>
<p><span style="font-weight: 400;">Kubernetes 讓單體應用程式轉變到微服務，使部署速度更快，在現今多變的環境已十分普遍。但另一方面，這讓監控應用程式及其基礎架構更加複雜。幸運的是，Elastic 多年來已廣泛用在基礎架構和應用程式的監控解決方案 —— 無論是 ELK Stack（Elasticsearch、Logstash 和 Kibana）還是最近的 Elastic Observability。雖然 Elastic Observability 可監控 Kubernetes 環境，但許多用戶還是希望使用他們已經有的開源監控工具。</span></p>
<p></p>
<p></p>
<p><br><span style="font-weight: 400;">本文章將探討如何使用 Prometheus 和 Fluentd，整合 Elastic Stack 來監控 Kubernetes。&nbsp;</span><br>&nbsp;</p>
<p></p>
<p></p>
<h2 class="wp-block-heading" style="font-size:30px"><b>使用 Prometheus 和 Fluentd</b></h2>
<p></p>
<p></p>
<p><span style="font-weight: 400;">Prometheus 是個眾所皆知的開源工具，是一個指標工具包，特別是在最近 Kubernetes 環境的指標監測方面佔有主導地位。Prometheus 使用 pull model 從端點抓取指標並將它們導入到 Prometheus 伺服器中。但是在儲存方面，Prometheus 在可擴展性和持久性方面存在一些限制，因為其地端儲存僅限於單個節點。為了消除這些限制，用戶應該在 Prometheus 本身中使用集群式的儲存，或者使用 Prometheus 的介面，來與遠端的儲存系統做整合。Fluentd 是一個眾所皆知的開源日誌收集工具，同樣也很受歡迎。</span></p>
<p></p>
<p></p>
<p><span style="font-weight: 400;">Fluentd 存在於各種日誌源和專門儲存日誌的儲存層之間，類似 Elastic Stack 中的 Logstash。因此，Fluentd 也需要一個長期的儲存系統。這就是我們將 Elasticsearch 作為日誌和指標的長期儲存工具，將 Kibana 作為視覺化工具的原因。事實上，使用 Elasticsearch、Fluentd 和 Kibana 的日誌監控解決方案也稱為 EFK Stack。</span><br>&nbsp;</p>
<p></p>
<p></p>
<h2 class="wp-block-heading" style="font-size:30px"><b>監控架構</b></h2>
<p></p>
<p></p>
<p><span style="font-weight: 400;">在本文章中，我們將在 Kubernetes 集群上部署一個名為 Cloud-Voting-App 的簡單多容器應用程式，並監控包括該應用程式在內的 Kubernetes 環境。接下來將解釋如何使用 Prometheus 收集指標和使用 Fluentd 收集日誌、將它們提取到 Elasticsearch，再用 Kibana 監控它們。大概的架構如下圖所示。</span></p>
<p></p>
<p></p>
<p><br><img loading="lazy" data-recalc-dims="1" width="1170" height="676" class="alignnone size-full wp-image-17096" src="https://i0.wp.com/www.omniwaresoft.com.tw/wp-content/uploads/2022/02/blog-kubernetes-prometheus-fluentd-1.png?resize=1170%2C676&#038;ssl=1" alt="kubernetes-prometheus-fluentd-1"></p>
<p></p>
<p></p>
<h2 class="wp-block-heading" style="font-size:30px"><b>將 Fluentd 當作 DaemonSet 進行部署</b></h2>
<p></p>
<p></p>
<p><span style="font-weight: 400;">每個 Kubernetes 節點只能部署一個 Fluentd 案例。Fluentd 的</span><a href="https://github.com/fluent/fluentd-kubernetes-daemonset"><b>官方 GitHub 儲存庫</b></a><span style="font-weight: 400;">中提供了配置方法，Fluentd 的設定是解析每個容器所需的，而這些設定被添加到 ConfigMap 中。DaemonSet 的清單檔案已定義在文件cncf-projects/fluentd-daemonset-elasticsearch-rbac.yaml 中，因此您所要做的只需添加 Elasticsearch 集群的 URL 和憑證即可。如果想了解更多有關如何配置 Fluentd 的資訊，請查閱 </span><a href="https://docs.fluentd.org/configuration/config-file"><b>Fluentd 官方文件</b></a><span style="font-weight: 400;">。</span></p>
<p></p>
<p></p>
<figure class="wp-block-image size-full"><img loading="lazy" width="800" height="601" data-recalc-dims="1" src="https://i0.wp.com/www.omniwaresoft.com.tw/wp-content/uploads/2023/03/elk-kubernetes-1.png?w=1170&#038;ssl=1" alt="elk-kubernetes-1" class="wp-image-35382"></figure>
<p></p>
<p></p>
<p><span style="font-weight: 400;">Fluentd 在 Elasticsearch 中建立的索引預設名為 logstash-YYYY.mm.dd。提前建立一個 Index Template，以避免 text 和關鍵字字段不必要的混合。</span></p>
<p></p>
<p></p>
<figure class="wp-block-image size-full"><img loading="lazy" width="650" height="811" data-recalc-dims="1" src="https://i0.wp.com/www.omniwaresoft.com.tw/wp-content/uploads/2023/03/elk-kubernetes-2.png?w=1170&#038;ssl=1" alt="elk-kubernetes-2" class="wp-image-35383"></figure>
<p></p>
<p></p>
<h2 class="wp-block-heading" style="font-size:30px"><b>部署 Prometheus</b></h2>
<p></p>
<p></p>
<p><span style="font-weight: 400;">Prometheus 可以藉由整合遠端儲存系統，將其提取的樣本以標準化格式寫入遠端 URL。更多詳細資訊請參考 </span><a href="https://prometheus.io/docs/prometheus/latest/storage/#remote-storage-integrations"><b>Prometheus 官方文件</b></a><span style="font-weight: 400;">。為了使用 Elasticsearch 作為 Prometheus 的遠端儲存系統，我們使用了官方的 </span><a href="https://www.elastic.co/guide/en/beats/metricbeat/current/metricbeat-module-prometheus.html"><b>Metricbeat 模組</b></a><span style="font-weight: 400;">，更具體來說是 </span><a href="https://www.elastic.co/guide/en/beats/metricbeat/current/metricbeat-metricset-prometheus-remote_write.html"><b>remote_write_metricset</b></a><span style="font-weight: 400;">。</span><br>&nbsp;</p>
<p></p>
<p></p>
<h2 class="wp-block-heading" style="font-size:30px"><b>以 Metricbeat 來進行部署 (Deploying Metricbeat as a Deployment)</b></h2>
<p></p>
<p></p>
<p><span style="font-weight: 400;">在 Kubernetes 集群中，以 Metricbeat 實例進行部署。部署的清單檔案已在 cncf-projects/metricbeat-kubernetes-deployment.yaml 中被定義，因此您只需添加 Elasticsearch 集群的 URL 和憑證即可。清單檔案中設定的 Metricbeat remote_write 如下。 Metricbeat 現在藉由 http 從 Prometheus 在接口 9201 上監聽遠端的請求，並將來自 Prometheus 的指標寫入 metricbeat- * 索引。Metricbeat 可說是充當 Prometheus 的遠端儲存適配器 (adapter)。</span></p>
<p></p>
<p></p>
<figure class="wp-block-image size-full"><img loading="lazy" width="800" height="133" data-recalc-dims="1" src="https://i0.wp.com/www.omniwaresoft.com.tw/wp-content/uploads/2023/03/elk-kubernetes-3.png?w=1170&#038;ssl=1" alt="elk-kubernetes-3" class="wp-image-35384"></figure>
<p></p>
<p></p>
<h2 class="wp-block-heading" style="font-size:30px"><b>利用 Helm Chart 部署 Prometheus</b></h2>
<p></p>
<p></p>
<p><span style="font-weight: 400;">將 Prometheus 部署到 Kubernetes 集群有多種方法，但這裡我們使用 </span><a href="https://helm.sh/"><b>Helm Chart</b></a><span style="font-weight: 400;"> 來部署 Prometheus。請參閱 GitHub 儲存庫中由 Prometheus 社群提供的 Helm Charts。 Prometheus 組件可以使用 Chart 的制定 YAML 文件進行自定，下圖顯示了文件 cncf-projects/prometheus_custom.yaml 中的自定形式。這裡將預設的 Prometheus Service 從 ClusterIP 改為 LoadBalancer，並將 remote_write 的 URL 設定為 Metricbeat 的Service，以便將指標寫入上述 Metricbeat 的 9201接口。Alertmanager 和 Pushgateway 在此禁止被使用。</span></p>
<p></p>
<p></p>
<figure class="wp-block-image size-full"><img loading="lazy" width="800" height="447" data-recalc-dims="1" src="https://i0.wp.com/www.omniwaresoft.com.tw/wp-content/uploads/2023/03/elk-kubernetes-4.png?w=1170&#038;ssl=1" alt="elk-kubernetes-4" class="wp-image-35385"></figure>
<p></p>
<p></p>
<h2 class="wp-block-heading" style="font-size:30px"><b>部署應用程式</b></h2>
<p></p>
<p></p>
<p><span style="font-weight: 400;">Cloud-Voting-App 是本案例的監控目標，是一個簡單的多容器應用程式。應用程式介面是用 Python/Flask 建立的。資料元件使用的是 Redis。該應用程式使用 </span><a href="https://github.com/prometheus/client_python"><b>Prometheus Python Client</b></a> <span style="font-weight: 400;">進行檢測，以導出一個簡單的指標 cloud_vote_total。該指標隨著每個 POST 請求而增加，其中 vote 變數用來指定標籤。</span></p>
<p></p>
<p></p>
<figure class="wp-block-image size-full"><img loading="lazy" width="800" height="356" data-recalc-dims="1" src="https://i0.wp.com/www.omniwaresoft.com.tw/wp-content/uploads/2023/03/elk-kubernetes-5.png?w=1170&#038;ssl=1" alt="elk-kubernetes-5" class="wp-image-35386"></figure>
<p></p>
<p></p>
<h2 class="wp-block-heading" style="font-size:30px"><b>讓我們打開 Kibana</b></h2>
<p></p>
<p></p>
<p><span style="font-weight: 400;">現在我們已經部署了所有必需的元件。讓我們用 Cloud-Voting-App vote </span><span style="font-weight: 400;">幾次，然後打開 Kibana。</span></p>
<p></p>
<p></p>
<h2 class="wp-block-heading" style="font-size:30px"><b>日誌</b></h2>
<p></p>
<p></p>
<p><span style="font-weight: 400;">Fluentd 提取的日誌存儲在索引 logstash-* 中。如果您使用 Kibana Discover 檢查，您可以看到每個容器的日誌都使用 metadata kubernetes.* 進行索引。</span></p>
<p></p>
<p></p>
<figure class="wp-block-image size-full"><img loading="lazy" width="800" height="407" data-recalc-dims="1" src="https://i0.wp.com/www.omniwaresoft.com.tw/wp-content/uploads/2023/03/elk-kubernetes-6.png?w=1170&#038;ssl=1" alt="elk-kubernetes-6" class="wp-image-35387"></figure>
<p></p>
<p></p>
<p><span style="font-weight: 400;">此外，Kibana 中的 </span><a href="https://www.elastic.co/observability/log-monitoring"><b>Logs 應用程式</b></a><span style="font-weight: 400;">允許您搜索、過濾和追蹤 Elastic Stack 中的所有日誌。現在 Fluentd 收集的所有 Kubernetes 容器日誌都能在 Logs 應用程式中的工具裡找到。</span></p>
<p></p>
<p></p>
<figure class="wp-block-image size-full"><img loading="lazy" width="800" height="410" data-recalc-dims="1" src="https://i0.wp.com/www.omniwaresoft.com.tw/wp-content/uploads/2023/03/elk-kubernetes-7.png?w=1170&#038;ssl=1" alt="elk-kubernetes-7" class="wp-image-35388"></figure>
<p></p>
<p></p>
<h2 class="wp-block-heading" style="font-size:30px"><b>指標</b></h2>
<p></p>
<p></p>
<p><span style="font-weight: 400;">Prometheus 收集的指標透過 Metricbeat 儲存在名為 metricbeat-* 的索引中。</span><a href="https://www.elastic.co/guide/en/beats/metricbeat/current/exported-fields-prometheus.html"><b>Prometheus 指標是帶有前綴 prometheus 的字段</b></a><span style="font-weight: 400;">。由於它們是一般的 metricbeat-* 索引，因此您可以使用 </span><a href="https://www.elastic.co/kibana/kibana-lens"><b>Kibana Lens</b></a><span style="font-weight: 400;"> 輕鬆視覺化以 prometheus 開頭的字段，如下所示。下方是每個 labels.pod 的 container_memory_usage_bytes 的視覺化結果。</span></p>
<p></p>
<p></p>
<p><br><img loading="lazy" data-recalc-dims="1" width="800" height="403" class="alignnone size-full wp-image-17104" src="https://i0.wp.com/www.omniwaresoft.com.tw/wp-content/uploads/2022/02/blog-kubernetes-prometheus-fluentd-4-e1645516506884.png?resize=800%2C403&#038;ssl=1" alt="kubernetes-prometheus-fluentd-4" srcset="https://i0.wp.com/www.omniwaresoft.com.tw/wp-content/uploads/2022/02/blog-kubernetes-prometheus-fluentd-4-e1645516506884.png?w=800&amp;ssl=1 800w, https://i0.wp.com/www.omniwaresoft.com.tw/wp-content/uploads/2022/02/blog-kubernetes-prometheus-fluentd-4-e1645516506884.png?resize=300%2C151&amp;ssl=1 300w, https://i0.wp.com/www.omniwaresoft.com.tw/wp-content/uploads/2022/02/blog-kubernetes-prometheus-fluentd-4-e1645516506884.png?resize=768%2C387&amp;ssl=1 768w" sizes="(max-width: 800px) 100vw, 800px" /><br></p>
<p></p>
<p></p>
<p><span style="font-weight: 400;">應用程式的自訂指標 cloud_vote_total 也是如此。labels.vote 在 POST 中顯示每個變量。</span></p>
<p></p>
<p></p>
<p><br><img loading="lazy" data-recalc-dims="1" width="800" height="400" class="alignnone size-full wp-image-17105" src="https://i0.wp.com/www.omniwaresoft.com.tw/wp-content/uploads/2022/02/blog-kubernetes-prometheus-fluentd-5-e1645516558559.png?resize=800%2C400&#038;ssl=1" alt="kubernetes-prometheus-fluentd-5" srcset="https://i0.wp.com/www.omniwaresoft.com.tw/wp-content/uploads/2022/02/blog-kubernetes-prometheus-fluentd-5-e1645516558559.png?w=800&amp;ssl=1 800w, https://i0.wp.com/www.omniwaresoft.com.tw/wp-content/uploads/2022/02/blog-kubernetes-prometheus-fluentd-5-e1645516558559.png?resize=300%2C150&amp;ssl=1 300w, https://i0.wp.com/www.omniwaresoft.com.tw/wp-content/uploads/2022/02/blog-kubernetes-prometheus-fluentd-5-e1645516558559.png?resize=768%2C384&amp;ssl=1 768w" sizes="(max-width: 800px) 100vw, 800px" /><br></p>
<p></p>
<p></p>
<p><span style="font-weight: 400;">Metricbeat 的 Prometheus 模組允許您使用預先定義好的儀表板來進行 Prometheus 特定的統計，無需任何配置。</span></p>
<p></p>
<p></p>
<p><br><img loading="lazy" data-recalc-dims="1" width="800" height="427" class="alignnone size-full wp-image-17106" src="https://i0.wp.com/www.omniwaresoft.com.tw/wp-content/uploads/2022/02/blog-kubernetes-prometheus-fluentd-6-e1645516773627.png?resize=800%2C427&#038;ssl=1" alt="kubernetes-prometheus-fluentd-6" srcset="https://i0.wp.com/www.omniwaresoft.com.tw/wp-content/uploads/2022/02/blog-kubernetes-prometheus-fluentd-6-e1645516773627.png?w=800&amp;ssl=1 800w, https://i0.wp.com/www.omniwaresoft.com.tw/wp-content/uploads/2022/02/blog-kubernetes-prometheus-fluentd-6-e1645516773627.png?resize=300%2C160&amp;ssl=1 300w, https://i0.wp.com/www.omniwaresoft.com.tw/wp-content/uploads/2022/02/blog-kubernetes-prometheus-fluentd-6-e1645516773627.png?resize=768%2C410&amp;ssl=1 768w" sizes="(max-width: 800px) 100vw, 800px" /></p>
<p></p>
<p></p>
<h2 class="wp-block-heading" style="font-size:30px"><b>告警</b></h2>
<p></p>
<p></p>
<p><span style="font-weight: 400;">我們在部署 Prometheus 時禁用了 Alertmanager。如果您在 Elastic Stack 中收集日誌和指標，則可以充分利用 Kibana Alert 作為 Alertmanager 的替代方案來發布告警。我們不僅可以利用 Prometheus 的指標，還可以利用儲存在 Elasticsearch 中的所有資料，包括日誌和任何其他索引。此外，使用機器學習的進階告警在 Elastic Stack 中也是可行的。</span></p>
<p></p>
<p></p>
<h3 class="wp-block-heading" style="font-size:30px"><b>結語</b></h3>
<p></p>
<p></p>
<p><span style="font-weight: 400;">在這篇文章中，我們看到如何使用 Fluentd 和 Prometheus 將日誌和指標提取到 Elastic Stack 以監控 Kubernetes。 您現在可以註冊來</span><a href="https://www.elastic.co/cloud/elasticsearch-service/signup"><b>免費試用 Elastic Cloud</b></a><span style="font-weight: 400;">，或</span><a href="https://www.elastic.co/start"><b>下載 Elastic Stack </b></a><span style="font-weight: 400;">自行託管來開始監控您的 Kubernetes 環境。如果您已經在使用這些免費和開源的工具，那麼就可以利用 Elastic Stack 來建立全面的數據觀測 (observability)。</span></p>
<p></p>							</div>
										</div>
				</div>
					</div>
		</div>
					</div></div>
		</section>
				</div>
		]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">17095</post-id>	</item>
		<item>
		<title>Observability 三本柱如何和 Elastic Stack 及 Kubernetes 整合?</title>
		<link>https://www.omniwaresoft.com.tw/product-news/elastic-news/elk-observability-3pillars-stack-kubernetes/</link>
		
		<dc:creator><![CDATA[Omni]]></dc:creator>
		<pubDate>Wed, 16 Feb 2022 09:36:35 +0000</pubDate>
				<category><![CDATA[Elastic 產品資訊]]></category>
		<category><![CDATA[Elastic]]></category>
		<category><![CDATA[Elastic Observability]]></category>
		<category><![CDATA[Elastic Stack]]></category>
		<category><![CDATA[K8s]]></category>
		<guid isPermaLink="false">http://www.omniwaresoft.com.tw/?p=17067</guid>

					<description><![CDATA[透過 Elastic Stack 產品的高度整合，能提供 Elastic Observability 完整的服務。包含，Observability 三本柱，Metrics、Logs、Traces，為不良行為進行檢測，與提供維運人員提供詳細的資訊，快速有效的調整問題。]]></description>
										<content:encoded><![CDATA[		<div data-elementor-type="wp-post" data-elementor-id="17067" class="elementor elementor-17067" data-elementor-post-type="post">
						<section data-particle_enable="false" data-particle-mobile-disabled="false" class="elementor-section elementor-top-section elementor-element elementor-element-5a290a27 elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="5a290a27" data-element_type="section">
						<div class="elementor-container elementor-column-gap-thegem"><div class="elementor-row">
					<div class="elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-9547349" data-id="9547349" data-element_type="column">
			<div class="elementor-widget-wrap elementor-element-populated">
						<div class="elementor-element elementor-element-3281c969 flex-horizontal-align-default flex-horizontal-align-tablet-default flex-horizontal-align-mobile-default flex-vertical-align-default flex-vertical-align-tablet-default flex-vertical-align-mobile-default elementor-widget elementor-widget-text-editor" data-id="3281c969" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
												<div class="elementor-text-editor elementor-clearfix">
						<h2><strong><span style="font-size: 30px;">什麼是 Observability ?</span></strong></h2>
<p><!-- /wp:heading --></p>
<p><!-- wp:paragraph --></p>
<p><span style="font-weight: 400;">Elastic 並沒有發明「Observability」這個詞。而是從用戶那裡聽到它，主要是</span><span style="font-weight: 400;">網站可靠性工</span><span style="font-weight: 400;">程 (SRE) 社</span><span style="font-weight: 400;">群中的用戶。據說這個術語的起源會追溯到 </span><a href="https://blog.twitter.com/engineering/en_us/a/2013/observability-at-twitter.html" target="_blank" rel="noopener"><span style="font-weight: 400;">Twitter</span></a><span style="font-weight: 400;"> 等矽谷巨頭的 SRE 企業。儘管開創性的 </span><a href="https://landing.google.com/sre/books/" target="_blank" rel="noopener"><span style="font-weight: 400;">Google SRE Book</span></a><span style="font-weight: 400;"> 沒有提及該術語，但它列出了當今與「Observability」相關的許多原則。</span></p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p><span style="font-weight: 400;">Observability 不是供應商打包好的一個東西，它是系統的一個屬性，就像可用性、高可用性和穩定性一樣。設計和建立「可觀察」系統的目標是確保當它在正式環境中運行時，負責的維運人員可以檢測到不良行為（例如：服務停機、錯誤、回應緩慢）並擁有可操作的訊息來有效找出根本原因（例如：詳細的事件日誌（logs）、資料粒度使用資訊和應用程式追蹤）。儘管是一個看似簡單的目標，大部分企業仍常遭到以下挑戰：沒有收集足夠的資訊或收集太多資訊，資訊無法化作行動依據，以及資訊散落各處。 </span></p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:heading --></p>
<h2><strong><span style="font-size: 30px;">看待 Observability 的面向</span></strong></h2>
<p><!-- /wp:heading --></p>
<p><!-- wp:heading {"level":3} --></p>
<h3><strong><span style="font-size: 25px;">第一面向：不良行為的檢測</span></strong></h3>
<p><!-- /wp:heading --></p>
<p><!-- wp:paragraph --></p>
<p><span style="font-weight: 400;">透過定義好的</span> <a href="https://landing.google.com/sre/sre-book/chapters/service-level-objectives/" target="_blank" rel="noopener"><span style="font-weight: 400;">服務水準指標 (SLI) 和服務水準目標 (SLO) </span></a><span style="font-weight: 400;"> 作為內部衡量標準，在具有可觀察性的企業中判斷正式環境系統。如果有履行這些目標的契約責任，則 SLI/SLO 也可以轉化為服務水準協議 (SLA)。 SLI 最常見的範例是系統正常運行時間（</span><span style="font-weight: 400;">uptime）</span><span style="font-weight: 400;">，您可以將 SLO 定義為 99.9999%。系統正常運行時間也是向外部客戶公開的最常見的 SLA。但是，您的內部 SLI/SLO 可能更精細，對正式環境行為的最重要因素進行監控和告警是任何可觀察性計劃的基礎。這一方面的可觀察性也被稱為監控（monitoring）。</span></p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:heading {"level":3} --></p>
<h3><strong><span style="font-size: 25px;">第二面向：為維運人員提供詳細的資訊，快速有效的調整問題</span></strong></h3>
<p><!-- /wp:heading --></p>
<p><!-- wp:paragraph --></p>
<p><span style="font-weight: 400;">關於 Observability </span><span style="font-weight: 400;"> 的三個主要的重點支柱</span><span style="font-weight: 400;"> —— metrics, logs, 和 application trace 是最多人關心的。人們還認識到，使用 patchwork 工具簡單的收集所有這些粒度資料不一定是可行的，而且通常不具有成本效益。</span></p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:heading --></p>
<h2><strong><span style="font-size: 18pt;"><img loading="lazy" data-recalc-dims="1" class="alignnone wp-image-17064" src="https://i0.wp.com/www.omniwaresoft.com.tw/wp-content/uploads/2022/02/three-pillars-of-observability-logs-metrics-tracs-apm.png?resize=780%2C339&#038;ssl=1" alt="three-pillars-of-observability" width="780" height="339" srcset="https://i0.wp.com/www.omniwaresoft.com.tw/wp-content/uploads/2022/02/three-pillars-of-observability-logs-metrics-tracs-apm.png?w=924&amp;ssl=1 924w, https://i0.wp.com/www.omniwaresoft.com.tw/wp-content/uploads/2022/02/three-pillars-of-observability-logs-metrics-tracs-apm.png?resize=300%2C131&amp;ssl=1 300w, https://i0.wp.com/www.omniwaresoft.com.tw/wp-content/uploads/2022/02/three-pillars-of-observability-logs-metrics-tracs-apm.png?resize=768%2C334&amp;ssl=1 768w" sizes="(max-width: 780px) 100vw, 780px" /></span></strong></h2>
<p><!-- /wp:heading --></p>
<p><!-- wp:heading {"style":{"typography":{"fontSize":"30px"}}} --></p>
<h2 style="font-size: 30px;"><strong><span style="font-size: 30px;">Observability 三本柱</span></strong></h2>
<p><!-- /wp:heading --></p>
<p><!-- wp:paragraph --></p>
<p><span style="font-weight: 400;">我們今天通常遇到的現狀是將 metrics 收集到一個系統（通常是時間序列資料庫或用於資源監控的 SaaS 服務），將日誌收集到第二個系統（ELK 堆棧），並使用第三個工具來檢測應用程式以提供請求等級追蹤。當告警觸發時，表示服務等級存在漏洞，維運人員會向系統執行最佳的解決方法，查看一個瀏覽器窗口中的 metrics，手動將其關聯到另一個窗口中的日誌，如果相關並在第三個窗口開啟 traces。</span></p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p><span style="font-weight: 400;">這種方法有幾個缺點。首先，手動關聯所有相同名稱但不同資料源，會在服務降級或中斷期間浪費寶貴的時間。其次，維護三個不同的營運數據儲存的營運成本是繁重的，例如： licensing 成本、不同營運工具的管理員人數、每個資料庫中不一致的機器學習能力、不同語意告警的預留空間(headspace)。</span></p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p><span style="font-weight: 400;">將所有資訊放在一個操作型儲存庫中，並能夠在直觀的用戶界面中自動關聯這些資料越來越重要。對於 ELK 的用戶而言，Nirvana 讓維運人員都可以接觸和他們支援服務相關的每筆資料，無論是應用程式發出的 log line、檢測產生的 trace 資料，或是由時間序列中的 metrics 表示的資源利用率。我們接收到的需求強調對這些資料的統一，與無論來源如何的臨時訪問，從搜尋和過濾到整合，再到視覺化。從 metrics 開始，在不切換上下文的情況下，點擊即可深入了解 logs 和 traces，從而加快查詢速度。相同的，從結構化日誌中提取數值看起來與 metrics 十分相似，如將兩者合併視覺化，從操作的角度來看將具有極大的價值。</span></p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p><span style="font-weight: 400;">如前所述，只是單純地收集資料可能會導致磁碟上的資訊過多，並且在事件發生時沒有足夠的可操作訊息。越來越多的人期望收集操作資料的系統能夠自動檢測時間序列模式中的事件、traces 和異常。這有助於維運人員更快的找到問題的根本原因。這些異常檢測能力有時被稱為「observability 的第四支柱」。檢測正常運行時間資料、資源利用率、logging 模式中的異常和大多數相關 traces 中的異常是 observability 團隊提出的新需求。</span></p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:heading --></p>
<h2><strong><span style="font-size: 30px;">Observability 和 ELK Stack</span></strong></h2>
<p><!-- /wp:heading --></p>
<p><!-- wp:paragraph --></p>
<p><span style="font-weight: 400;">那麼 Observability 與 </span><a href="https://www.elastic.co/elk-stack" target="_blank" rel="noopener"><span style="font-weight: 400;">Elastic Stack</span></a><span style="font-weight: 400;"> 有什麼關係呢？</span><br /><span style="font-weight: 400;">ELK Stack 公認是集中操作系統日誌實際的方法， Elasticsearch（一種搜尋引擎）是存放基於文本的日誌( text-based logs）以進行自由正文搜尋(free-text search)的好選擇。事實上，以基於文本的日誌搜尋「error」或根據一組眾所周知的標籤過濾日誌是非常有效的，這也是大多數用戶最一開始的應用。</span></p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p><span style="font-weight: 400;">然而，正如大多數 ELK Stack 用戶所知，Elasticsearch 作為資料儲存提供的不僅僅是倒排索引（inverted index），還包含高效的全文檢索搜尋（full-text search）和簡單的過濾功能。它還包含一個列式儲存，針對密集資料時間序列的儲存和操作進行優化。列式儲存用於儲存從解析的日誌中提取的資料架構，包括字串（string）和數值（numerical）。事實上，將日誌轉換為 metrics 的用例是當初促使我們優化 Elasticsearch 以實現有效儲存和檢索數值的原因。</span></p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p><span style="font-weight: 400;">隨著時間的推移，用戶開始將 </span><a href="https://www.elastic.co/solutions/metrics" target="_blank" rel="noopener"><span style="font-weight: 400;">數值時間序列 </span></a><span style="font-weight: 400;">直接放入 Elasticsearch，以取代舊的時間序列資料庫。在這種需求的推動下，Elastic 最近推出了 </span><a href="https://www.elastic.co/guide/en/beats/metricbeat/6.6/metricbeat-modules.html" target="_blank" rel="noopener"><span style="font-weight: 400;">Metricbeat</span></a><span style="font-weight: 400;">，用於自動收集 metrics、自動打包的概念以及資料儲存和 UI 中的其他 metrics-specific 功能。因此，越來越多採用 ELK Stack 進行日誌的 </span><a href="https://www.elastic.co/webinars/ns1-leveraging-elasticsearch-as-a-time-series-database" target="_blank" rel="noopener"><span style="font-weight: 400;">用戶 </span></a><span style="font-weight: 400;">也開始將 metric 資料（例如資源利用率）放入 Elastic Stack。除了先前所提的節省營運之外，另一個吸引人的原因是 Elasticsearch 對符合數值聚合條件字段的 cardinality 沒有限制（許多現有的時間序列資料庫常見的問題）。</span></p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p><span style="font-weight: 400;">與 metrics 類似，</span><a href="https://www.elastic.co/beats/heartbeat" target="_blank" rel="noopener"><span style="font-weight: 400;">正常運行時間資料 </span></a><span style="font-weight: 400;">與日誌都是被高度重視的資料類型，是主動監測器的 SLO/SLI 告警的重要來源。通常是在用戶感受到影響之前，正常運行時間資料可以提供相關服務、API 和網站降級的資訊。好處是，就儲存需求而言，正常運行時間資料很少，因此只需很少的額外成本即可獲得價值。</span></p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p><span style="font-weight: 400;">在過去的一年中，Elastic 還引入了 Elastic APM，為堆棧增加應用程式追蹤和分佈式追蹤功能。這對 Elastic 來說是一個自然變化，因為一些開源項目和著名的 APM 供應商已經在使用 Elasticsearch 來儲存和搜尋 trace 資料。傳統 APM 工具的現狀是將 APM trace 資料、logs、metrics 分開，導致營運資料孤島永久存在。 Elastic APM 提供了一組 agents，從支援的語言和架構，以及支援 OpenTracing 收集 trace 資料，並且這些 trace 資料會自動與 metrics 和 logs 相關。</span></p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:heading --></p>
<h2><strong><span style="font-size: 18pt;"><img loading="lazy" data-recalc-dims="1" class="alignnone wp-image-17065" src="https://i0.wp.com/www.omniwaresoft.com.tw/wp-content/uploads/2022/02/Screen_Shot_2019-02-28_at_6.47.51_AM.png?resize=782%2C309&#038;ssl=1" alt="Elastic approach to observability" width="782" height="309" srcset="https://i0.wp.com/www.omniwaresoft.com.tw/wp-content/uploads/2022/02/Screen_Shot_2019-02-28_at_6.47.51_AM.png?w=924&amp;ssl=1 924w, https://i0.wp.com/www.omniwaresoft.com.tw/wp-content/uploads/2022/02/Screen_Shot_2019-02-28_at_6.47.51_AM.png?resize=300%2C119&amp;ssl=1 300w, https://i0.wp.com/www.omniwaresoft.com.tw/wp-content/uploads/2022/02/Screen_Shot_2019-02-28_at_6.47.51_AM.png?resize=768%2C303&amp;ssl=1 768w" sizes="(max-width: 782px) 100vw, 782px" /><img loading="lazy" data-recalc-dims="1" class="alignnone wp-image-17066" src="https://i0.wp.com/www.omniwaresoft.com.tw/wp-content/uploads/2022/02/Screen_Shot_2019-02-28_at_6.58.21_AM.png?resize=781%2C232&#038;ssl=1" alt="" width="781" height="232" srcset="https://i0.wp.com/www.omniwaresoft.com.tw/wp-content/uploads/2022/02/Screen_Shot_2019-02-28_at_6.58.21_AM.png?w=924&amp;ssl=1 924w, https://i0.wp.com/www.omniwaresoft.com.tw/wp-content/uploads/2022/02/Screen_Shot_2019-02-28_at_6.58.21_AM.png?resize=300%2C89&amp;ssl=1 300w, https://i0.wp.com/www.omniwaresoft.com.tw/wp-content/uploads/2022/02/Screen_Shot_2019-02-28_at_6.58.21_AM.png?resize=768%2C228&amp;ssl=1 768w" sizes="(max-width: 781px) 100vw, 781px" /></span></strong></h2>
<p><!-- /wp:heading --></p>
<p><!-- wp:heading --></p>
<h2><strong><span style="font-size: 30px;">Kubernetes 和 ELK Stack</span></strong></h2>
<p><!-- /wp:heading --></p>
<p><!-- wp:paragraph --></p>
<p><span style="font-weight: 400;">Observability 的概念在採用 Kubernetes 進行容器編排的用戶中是一個非常活躍的話題。由 </span><a href="https://www.cncf.io/" target="_blank" rel="noopener"><span style="font-weight: 400;">Cloud Native Computing Foundation (or CNCF)</span></a><span style="font-weight: 400;"> 推動的「原生雲」用戶，正面臨著獨特的挑戰。他們面臨著建立在或遷移到 Kubernetes 支援的容器編排平台上的應用程式和服務的集中化挑戰。以及將單體式應用程式拆分為「微服務」的趨勢。以往為在此基礎架構上運行的應用程式提供必要視覺化的工具和方法將不再適用。</span></p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p><span style="font-weight: 400;">參考 </span><a href="https://www.elastic.co/webinars/observable-kubernetes-with-the-elastic-stack" target="_blank" rel="noopener"><span style="font-weight: 400;">Observable Kubernetes webinar</span></a><span style="font-weight: 400;"> 和 </span><a href="https://www.elastic.co/blog/distributed-tracing-opentracing-and-elastic-apm" target="_blank" rel="noopener"><span style="font-weight: 400;">Distributed Tracing with Elastic APM blog post</span></a><span style="font-weight: 400;"> 以獲得更多資訊。</span><br />了解更多請參考 <a href="https://www.omniwaresoft.com.tw/elastic/" target="_blank" rel="noopener">歐立威 Elastic 產品介紹</a></p>
<p><!-- /wp:paragraph --></p>							</div>
										</div>
				</div>
					</div>
		</div>
					</div></div>
		</section>
				</div>
		]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">17067</post-id>	</item>
		<item>
		<title>在 Kubernetes 運行 Elasticsearch 和 Kibana</title>
		<link>https://www.omniwaresoft.com.tw/product-news/elastic-news/elk-cloud-on-kubernetes/</link>
		
		<dc:creator><![CDATA[Omni]]></dc:creator>
		<pubDate>Wed, 16 Feb 2022 08:01:30 +0000</pubDate>
				<category><![CDATA[Elastic 產品資訊]]></category>
		<category><![CDATA[Elastic]]></category>
		<category><![CDATA[Elastic Cloud]]></category>
		<category><![CDATA[Elastic Search]]></category>
		<category><![CDATA[K8s]]></category>
		<guid isPermaLink="false">http://www.omniwaresoft.com.tw/?p=17058</guid>

					<description><![CDATA[用 Kubernetes 運行Elastic Cloud ，簡化了在 Kubernetes 中運行 Elasticsearch 和 Kibana 的設定、升級、快照、擴展、高可用性、安全性等功能。也能多用途如使用官方 Elasticsearch 和 Kibana Helm Charts 在幾分鐘內完成部署]]></description>
										<content:encoded><![CDATA[		<div data-elementor-type="wp-post" data-elementor-id="17058" class="elementor elementor-17058" data-elementor-post-type="post">
						<section data-particle_enable="false" data-particle-mobile-disabled="false" class="elementor-section elementor-top-section elementor-element elementor-element-2dc0f4e3 elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="2dc0f4e3" data-element_type="section">
						<div class="elementor-container elementor-column-gap-thegem"><div class="elementor-row">
					<div class="elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-4e16ed84" data-id="4e16ed84" data-element_type="column">
			<div class="elementor-widget-wrap elementor-element-populated">
						<div class="elementor-element elementor-element-1ad8101f flex-horizontal-align-default flex-horizontal-align-tablet-default flex-horizontal-align-mobile-default flex-vertical-align-default flex-vertical-align-tablet-default flex-vertical-align-mobile-default elementor-widget elementor-widget-text-editor" data-id="1ad8101f" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
												<div class="elementor-text-editor elementor-clearfix">
						<p></p>
<figure class="wp-block-image aligncenter"><img data-recalc-dims="1" class="wp-image-17060" src="https://i0.wp.com/www.omniwaresoft.com.tw/wp-content/uploads/2022/02/illustration-elastic-cloud-on-kubernetes-608x445%402x-e1644998625468.png?w=1170&#038;ssl=1" alt="illustration-elastic-cloud-on-kubernetes" /></figure>
<p></p>
<p></p>
<p><br /><span style="font-weight: 400;">使用 Kubernetes 運行 Elastic Cloud ，簡化了在 Kubernetes 中運行 Elasticsearch 和 Kibana 的設定、升級、快照、擴展、高可用性、安全性等功能。</span></p>
<p></p>
<p></p>
<h2 class="wp-block-heading" style="font-size: 30px;"><b>Kubernetes 上的 Elastic Cloud</b></h2>
<p></p>
<p></p>
<p><span style="font-weight: 400;">我們的產品以 Kubernetes Operator 的模式建立，擴展了 Kubernetes 編排功能，以支援在 Kubernetes 上設定及管理 Elasticsearch 和 Kibana。</span></p>
<p></p>
<p></p>
<p><span style="font-weight: 400;">我們履行持續發展雲原生技術的承諾，將我們的產品帶到 Kubernetes 這樣的平台上，它是容器化架構的最佳開源首選。 </span></p>
<p></p>
<p></p>
<h2 class="wp-block-heading" style="font-size: 30px;"><b>使用託管的 K8s？管理自己的 K8s 集群？</b></h2>
<p></p>
<p></p>
<p><span style="font-weight: 400;">Elastic Cloud 讓在您可以自由地在最適合的平台作業，用自己的方式部署及群。使用 Vanilla Kubernetes 或您選擇的發行版進行部署，包括 Amazon Elastic Kubernetes Service、Google Kubernetes Engine、Microsoft Azure Kubernetes Service 和 Red Hat OpenShift。</span></p>
<p></p>
<p></p>
<h2 class="wp-block-heading" style="font-size: 30px;"><b>Elasticsearch Kubernetes Operator </b></h2>
<p></p>
<p></p>
<p><span style="font-weight: 400;">我們知道在 Kubernetes 上部署和管理 Elasticsearch 和 Kibana ，有一些值得考慮的的方案。</span></p>
<p><span style="font-weight: 400;">作為 Elastic Stack 的開發者，將我們特有的功能和預先包裝好的解決方案（例如 Elastic Observability）直接整合到 Elastic Cloud on Kubernetes 中。</span></p>
<p><span style="font-weight: 400;">（請參閱我們訂閱頁面上的完整功能列表)</span></p>
<p></p>
<p></p>
<ul class="wp-block-list">
<li style="list-style-type: none;">
<ul></ul>
</li>
</ul>
<ul>
<li style="list-style-type: none;">
<ul>
<li><b>內部式儲存，全球式搜索：</b><span style="font-weight: 400;">在單個 Kubernetes 環境中部署集群，並將它們與在另一個環境中運行的集群連接起來。使用 Cross Cluster 搜索或 Cross Cluster 複製來簡化資料轉移和搜索的運作。</span></li>
</ul>
</li>
</ul>
<p></p>
<p></p>
<ul>
<li style="list-style-type: none;">
<ul>
<li><b>功能齊全的集群：</b><span style="font-weight: 400;">使用我們所有的免費專屬功能（ Canva、 Maps）部署</span><span style="font-weight: 400;">全負載的集群</span><span style="font-weight: 400;">，這些功能在任何其他 Operator 或 Helm Charts 上均不可使用。</span></li>
</ul>
</li>
</ul>
<p></p>
<p></p>
<ul>
<li style="list-style-type: none;">
<ul>
<li><b>預設的安全性：</b><span style="font-weight: 400;">自動調度功能，如內部身份驗證、TLS 加密和以角色為基礎的訪問控制 (RBAC)。添加 SAML、OpenID、Kerberos 和自定義認證以滿足您的身份驗證及授權需求。</span></li>
</ul>
</li>
</ul>
<p></p>
<p></p>
<ul>
<li style="list-style-type: none;">
<ul>
<li><b>Open Code 和 Elastic 支援：</b><span style="font-weight: 400;">ECK 代碼是開放的，社群一起開發、貢獻、測試和學習。。 此外，還可以從 Elasticsearch 背後的社群和團隊得到支援。</span></li>
</ul>
</li>
</ul>
<p></p>
<p></p>
<p></p>
<p></p>
<p></p>
<ul class="wp-block-list">
<li style="list-style-type: none;">
<ul></ul>
</li>
</ul>
<ul>
<li style="list-style-type: none;">
<ul>
<li><b>備份及快照：</b><span style="font-weight: 400;">安排快照並將其發送到 Amazon S3、Google Cloud Storage 和 Azure Blog Storage。</span></li>
</ul>
</li>
</ul>
<p></p>
<p></p>
<ul>
<li style="list-style-type: none;">
<ul>
<li><b>Hot-warm-cold 模式：</b><span style="font-weight: 400;">為日誌、指標和其他時間佇列案例部署常見的 Elasticsearch 架構，使用凍結索引在不增加成本的情況下儲存 10 倍的資料。</span></li>
</ul>
</li>
</ul>
<p></p>
<p></p>
<ul>
<li style="list-style-type: none;">
<ul>
<li><b>簡單、快速的更新：</b><span style="font-weight: 400;">藉由滾動升級和內建 StatefulSet 在幾分鐘內升級 TB 級的集群。</span></li>
</ul>
</li>
</ul>
<p></p>
<p></p>
<ul>
<li style="list-style-type: none;">
<ul>
<li><b>靈活的調度和外掛：</b><span style="font-weight: 400;">添加自定義外掛、工具包（以及自定義調度）以便依照您的方式運行。</span></li>
</ul>
</li>
</ul>
<p></p>
<p></p>
<ul>
<li style="list-style-type: none;">
<ul>
<li><b>機器學習等更多功能：</b><span style="font-weight: 400;">升級到企業版，獲得機器學習、告警和安全維護等進階功能。</span></li>
</ul>
</li>
</ul>
<p></p>
<p></p>
<p></p>
<h2 class="wp-block-heading" style="font-size: 30px;"><b>Elasticsearch + Kubernetes 的多種風格</b></h2>
<p></p>
<p></p>
<p><span style="font-weight: 400;">Elastic Cloud on Kubernetes 只是 Elastic Stack 在 Kubernetes 系統中的一種方式。</span></p>
<p><span style="font-weight: 400;">使用官方 Elasticsearch 和 Kibana </span><a href="https://www.elastic.co/blog/alpha-helm-charts-for-elasticsearch-kibana-and-cncf-membership" target="_blank" rel="noopener"><b>Helm Charts</b></a><span style="font-weight: 400;"> 在幾分鐘內完成部署，使用 </span><a href="https://www.elastic.co/observability/kubernetes-monitoring" target="_blank" rel="noopener"><b>Beats</b></a><span style="font-weight: 400;"> 監控您的 Kubernetes 應用程式和基礎架構，或者使用 </span><a href="https://www.elastic.co/guide/en/elasticsearch/reference/current/docker.html" target="_blank" rel="noopener"><b>Docker Hub</b></a><span style="font-weight: 400;"> 中的官方容器在 Docker 上運行。</span></p>
<p></p>
<p></p>
<h2 class="wp-block-heading" style="font-size: 30px;"><b>如果不想用 Kubernetes 來調度？</b></h2>
<p></p>
<p></p>
<p><span style="font-weight: 400;">如果您不使用 Kubernetes 或想要為 Elasticsearch 特別訂製的更多生產方面的調度體驗，也可以參考 </span><a href="https://www.elastic.co/ece/" target="_blank" rel="noopener"><b>Elastic Cloud Enterprise</b></a><span style="font-weight: 400;">。</span></p>
<p><span style="font-weight: 400;">這是經過許多考驗的產品 —— 它也是我們 </span><a href="https://www.elastic.co/elasticsearch/service" target="_blank" rel="noopener"><b>Elasticsearch Service</b></a><span style="font-weight: 400;"> 的動力 —— 用在實際硬體、虛擬環境、私有雲和公有雲等大規模部署和管理 Elasticsearch。 </span><a href="https://www.elastic.co/downloads/enterprise" target="_blank" rel="noopener"><span style="font-weight: 400;">歡迎免費試用。</span></a></p>
<p>想了解更多資訊，<a href="https://www.omniwaresoft.com.tw/contact/" target="_blank" rel="noreferrer noopener">歡迎聯絡我們</a>，或是 <a href="https://page.line.me/870pcqyh?oat__id=4761625&amp;openQrModal=true" target="_blank" rel="noreferrer noopener">加入歐立威 Line 好友！</a></p>
<p></p>							</div>
										</div>
				</div>
					</div>
		</div>
					</div></div>
		</section>
				</div>
		]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">17058</post-id>	</item>
		<item>
		<title>Elasticㄧ加拿大貝爾公司 (Bell Canada) 用 Elastic Stack 鞏固資料安全</title>
		<link>https://www.omniwaresoft.com.tw/usecase/elastic-usecase/bell-canada/</link>
		
		<dc:creator><![CDATA[Omni]]></dc:creator>
		<pubDate>Mon, 07 Feb 2022 10:01:12 +0000</pubDate>
				<category><![CDATA[Elastic 成功案例]]></category>
		<category><![CDATA[成功案例]]></category>
		<category><![CDATA[Elastic]]></category>
		<category><![CDATA[K8s]]></category>
		<category><![CDATA[Kibana]]></category>
		<category><![CDATA[SIEM]]></category>
		<guid isPermaLink="false">http://www.omniwaresoft.com.tw/?p=16968</guid>

					<description><![CDATA[Bell Canada 的 SOC 開始使用 Elastic Stack 來加強其 ArcSight SIEM，可以自動處理高日誌量和高峰值。除了搜尋與分析資料之外， ELK 還能用角色型存取控制 (RBAC) 來保護安全。也使用使用 ArcSight SIEM 進行事件聚合和關聯，減少誤報的比率]]></description>
										<content:encoded><![CDATA[		<div data-elementor-type="wp-post" data-elementor-id="16968" class="elementor elementor-16968" data-elementor-post-type="post">
						<section data-particle_enable="false" data-particle-mobile-disabled="false" class="elementor-section elementor-top-section elementor-element elementor-element-106ce815 elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="106ce815" data-element_type="section">
						<div class="elementor-container elementor-column-gap-thegem"><div class="elementor-row">
					<div class="elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-647cc0ad" data-id="647cc0ad" data-element_type="column">
			<div class="elementor-widget-wrap elementor-element-populated">
						<div class="elementor-element elementor-element-587f4b0c flex-horizontal-align-default flex-horizontal-align-tablet-default flex-horizontal-align-mobile-default flex-vertical-align-default flex-vertical-align-tablet-default flex-vertical-align-mobile-default elementor-widget elementor-widget-text-editor" data-id="587f4b0c" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
												<div class="elementor-text-editor elementor-clearfix">
						<h2><b>公司介紹</b></h2>
<p><span style="font-weight: 400;">Bell Canada 是加拿大最大的電信公司之一，為全國的大公司、中小企業和個人提供電話、電視、互聯網和固網服務。Bell Canada 的安全營運中心 (SOC) 覆蓋了每個貝爾辦公室和業務部門，他們用日誌來檢測網路威脅。&nbsp;&nbsp;</span></p>
<h2><b>挑戰</b></h2>
<p><span style="font-weight: 400;">Bell Canada 的資安經理 Sylvain Proulx 表示，向客戶提供服務的業務部門（如 Bell TV、Bell Internet、Bell Media 或 Bell Mobility）都使用不同的技術和應用程式，因此他們收集的日誌很多樣且不常見。日誌來自路由器、防火牆、Web 日誌、OS 日誌、應用程式日誌和許多其他裝置，其中一些會變得 ”chatty” 並產生大量資料。</span></p>
<p><span style="font-weight: 400;">SOC 僅使用 ArcSight Security Information and Event Management (SIEM) 解決方案來分析日誌和事件關聯性，還有事件響應和報告。但隨著日誌量的增加，對來自各種設備的新型日誌進行標準化處理，會使系統停滯。他們的 SIEM 解決方案也只提供以規範為基礎的檢測，沒有機器學習，因此它產生很多誤報事件，會讓他們的分析師感到警覺疲勞 (alert-fatigue)。</span><br><span style="font-weight: 400;">Proulx 說他們的 SIEM 已達極限。他們發現沒有單一的供應商解決方案可以讓他們更快地提取更多資料、建立威脅偵測模型，以及將新型的日誌標準化，同時保留資料的所有權。因此，SOC 開始使用 Elastic Stack 來加強其 ArcSight SIEM，可以自動處理高日誌量和高峰值，並產生有意義的安全資料。</span></p>
<h2><b>Elastic Stack 的新旅程</b></h2>
<p><span style="font-weight: 400;">Bell Canada 從裸機伺服器、虛擬機以及越來越多的 Docker 和 Kubernetes 容器基礎架構獲取資料。他們需要一個簡單、輕量且易自動化的日誌傳輸工具，因此他們轉向了 </span><a href="https://www.elastic.co/beats/"><span style="font-weight: 400;">Beats</span></a><span style="font-weight: 400;">。Bell Canada 使用 </span><a href="https://www.elastic.co/beats/filebeat"><span style="font-weight: 400;">Filebeat</span></a><span style="font-weight: 400;"> 和 </span><a href="https://www.elastic.co/products/beats/winlogbeat"><span style="font-weight: 400;">Winlogbeat</span></a><span style="font-weight: 400;"> 來傳送日誌，因為它們容易設定、測試和部署。 此外，他們可以對其設定進行版本控制，且確保在網路中斷的情況下不會丟失資料。</span></p>
<p><span style="font-weight: 400;">資料在 Kafka 中排列好後，SOC 必須對各種格式的日誌進行拆解和標準化，以便進行安全分析。在 OpenShift 上執行 </span><a href="https://www.elastic.co/products/logstash"><span style="font-weight: 400;">Logstash</span></a><span style="font-weight: 400;"> 可以幫助它們在流量激增時快速擴展而不會丟失日誌，而且它消耗的資源比許多虛擬機少。Bell Canada 發現在容器中使用 Logstash 的另一個優勢是，他們可以先輕鬆用 RSpec 運行它來進行測試，然後再正式使用。</span></p>
<p><span style="font-weight: 400;">日誌標準化後，SOC 會將它們儲存在 </span><a href="https://www.elastic.co/elasticsearch/"><span style="font-weight: 400;">Elasticsearch</span></a><span style="font-weight: 400;"> 中。Bell Canada 之前的解決方案無法在不丟失日誌的情況下處理這麼多的日誌量。SOC 現在使用 Elasticsearch 來實現這一點，這使他們能快速擴展，讓工作變得更容易。</span></p>
<p><span style="font-weight: 400;">在事件被記錄下來的那天，SOC 使用多個查詢和進程來搜尋資料，這給集群帶來了很大的負擔，因此他們利用一個 “hot-warm” 架構，自動部署新節點。更強大的節點會不斷提取和搜索，但是當日誌失去價值時，它們會被運送到 warm node 以進行聚合和分析。「如果你在 Elasticsearch 中丟失了一個節點，你仍可以繼續工作。這都不是問題。您可以晚點再修復它，」Bell Canada 的資安專家暨工程師 Mathew Vandystadt 說。</span></p>
<p><span style="font-weight: 400;">保護資料安全是 SOC 的首要任務。角色型存取控制 (RBAC) 是必須的，但管理 RBAC 可能會很痛苦。有了 Elastic Stack 的安全功能，SOC 可以控制誰有資料存取權，他們可以在資料傳輸上進行加密，也可以輕鬆進行 RBAC 管理 —— 還可以與他們現有的 LDAP 綁定，這意味著他們不需要花額外的時間重新定義角色，將時間專注在更重要的安全任務。</span><br><span style="font-weight: 400;">一旦他們將資料放在他們想要的地方，SOC 分析師就可以使用它來查找安全事件 —— 有優良的資料視覺化是關鍵。</span><a href="https://www.elastic.co/kibana/"><span style="font-weight: 400;">Kibana</span></a><span style="font-weight: 400;"> 直觀的界面讓 Bell Canada 繁忙的專家們不用花額外時間來學習新查詢語言。</span></p>
<p><b><i>「Kibana 在我們的客戶案例中表現出色。原因很簡單，因為我們不需進行大量培訓，就可以獲得很好的視覺化效果。」—— Mathew Vandystadt，資安軟體工程師</i></b></p>
<p><span style="font-weight: 400;">Bell Canada 替針對規範的檢測找到了一種靈活的告警解決方案，但他們的分析師還需要可以與不同演算法配合的智能檢測，因此他們用了開源、以機器學習為重心的內部機器學習。Bell Canada 在 OpenShift 中的容器讓他們可以輕鬆將 Python 容器綁定到 Kafka 或 Elasticsearch，以便有所有資料的權限。然後，他們使用 ArcSight SIEM 進行事件聚合和關聯，減少誤報的比率，從而讓分析師免受警報轟炸。</span></p>
<p><span style="font-weight: 400;">Bell Canada 使用不同供應商的不同軟體建立了這整個管道，這是因為 Elastic 允許與開放的安全協定進行簡單的整合。在未來，SOC 計劃將網路威脅情報平台與其新的安全架構合併。 「有了這樣的基礎架構，我們可以比一年半前僅使用 ArcSight 解決方案時做更多的事，」Proulx 說。</span></p>							</div>
										</div>
				</div>
					</div>
		</div>
					</div></div>
		</section>
				</div>
		]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">16968</post-id>	</item>
		<item>
		<title>Mirantis (Docker, K8s) &#8211; 判斷是否受 Log4j 漏洞影響及官方建議處置</title>
		<link>https://www.omniwaresoft.com.tw/product-news/docker-news/apache-log4j-mirantis-docker/</link>
		
		<dc:creator><![CDATA[Omni]]></dc:creator>
		<pubDate>Wed, 22 Dec 2021 06:20:34 +0000</pubDate>
				<category><![CDATA[Docker 產品資訊]]></category>
		<category><![CDATA[產品資訊]]></category>
		<category><![CDATA[K8s]]></category>
		<category><![CDATA[Log4j]]></category>
		<category><![CDATA[Mirantis]]></category>
		<guid isPermaLink="false">http://www.omniwaresoft.com.tw/?p=16774</guid>

					<description><![CDATA[Mirantis 已經確認大部分產品都沒有受到該漏洞的影響，少數有問題的部分嚴重程度也較低。想要評估工作負載軟體是否受到影響的用戶可以使用 Mirantis Secure Registry (MSR)。Mirantis 已更新 MSR 中的漏洞資料庫以掃描 Log4j 漏洞 CVE-2021-44228。]]></description>
										<content:encoded><![CDATA[		<div data-elementor-type="wp-post" data-elementor-id="16774" class="elementor elementor-16774" data-elementor-post-type="post">
						<section data-particle_enable="false" data-particle-mobile-disabled="false" class="elementor-section elementor-top-section elementor-element elementor-element-8cc395b elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="8cc395b" data-element_type="section">
						<div class="elementor-container elementor-column-gap-thegem"><div class="elementor-row">
					<div class="elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-2e2e0532" data-id="2e2e0532" data-element_type="column">
			<div class="elementor-widget-wrap elementor-element-populated">
						<div class="elementor-element elementor-element-1a161110 flex-horizontal-align-default flex-horizontal-align-tablet-default flex-horizontal-align-mobile-default flex-vertical-align-default flex-vertical-align-tablet-default flex-vertical-align-mobile-default elementor-widget elementor-widget-text-editor" data-id="1a161110" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
												<div class="elementor-text-editor elementor-clearfix">
						<p></p>
<p>歐立威科技整理 Mirantis 官方針對本次 Log4j 漏洞的影響與建議的處置，更多關於本次漏洞訊息及其他產品處置請參考 <a rel="noreferrer noopener" href="https://www.omniwaresoft.com.tw/product-news/apache_log4j_security_vulnerabilities/" target="_blank">Apache Log4j 漏洞事件說明與建議處置</a>。&nbsp;</p>
<p></p>
<p></p>
<h2 class="wp-block-heading" style="font-size:24px">【前情提要】</h2>
<p></p>
<p></p>
<p>2021年12月9日，Apache Log4j 被揭漏有重大風險漏洞 Log4Shell，漏洞編號 CVE-2021-44228。駭客可以利用該漏洞發動遠端程式碼執行攻擊，最嚴重可以接管整台系統，影響範圍擴及 Apache Log4j 2 中 logging library 的多個版本，資安專家稱為近 10 年來最嚴重漏洞，研究人員也發現已經有針對該漏洞的攻擊行動。</p>
<p></p>
<p></p>
<h2 class="wp-block-heading" style="font-size:24px">評估是否受影響</h2>
<p></p>
<p></p>
<p>Mirantis 已經確認大部分產品都沒有受到該漏洞的影響，少數有問題的部分嚴重程度也較低。想要評估工作負載軟體是否受到影響的用戶可以使用 <a rel="noreferrer noopener" href="https://www.mirantis.com/software/mirantis-secure-registry" target="_blank">Mirantis Secure Registry (MSR)</a>。Mirantis 已更新 MSR 中的漏洞資料庫以掃描 Log4j 漏洞 CVE-2021-44228。</p>
<p></p>
<p></p>
<h2 class="wp-block-heading" style="font-size:24px">哪些 Mirantis 產品被影響？</h2>
<p></p>
<p></p>
<p>Mirantis 的大多數產品都沒有受到該漏洞的影響，詳細的資訊可以在 <a rel="noreferrer noopener" href="https://github.com/Mirantis/security/blob/main/news/cve-2021-44288.md#cve-2021-44228" target="_blank">GitHub security update</a>&nbsp;上找到。</p>
<p></p>
<p></p>
<h3 class="wp-block-heading" style="font-size:18px"><strong>不受影響的產品如下，您無需採取任何行動。</strong></h3>
<p></p>
<p></p>
<ul class="wp-block-list">
<li>Mirantis Container Runtime</li>
<li>Mirantis Kubernetes Engine</li>
<li>Mirantis Secure Registry</li>
<li>Mirantis OpenStack</li>
<li>Lens</li>
<li>k0s</li>
</ul>
<p></p>
<p></p>
<h3 class="wp-block-heading" style="font-size:18px"><strong>受影響的產品</strong></h3>
<p></p>
<p></p>
<p>有兩個受影響的產品，漏洞嚴重性較低，並且組件不易受到遠程執行代碼 (Remote Code Execution) 的影響。</p>
<p></p>
<p></p>
<p>• <strong><a rel="noreferrer noopener" href="https://k8slens.dev/spaces.html" target="_blank">Lens Spaces</a></strong>&nbsp;– 已應用補丁且未觀察到任何駭客攻擊 (Compromise) 跡象。<strong>用戶無需採取任何行動。</strong></p>
<p></p>
<p></p>
<p>• <strong><a rel="noreferrer noopener" href="https://docs.mirantis.com/mcp/q4-18/mcp-ref-arch/common/preface.html" target="_blank">Mirantis Cloud Platform (MCP)</a>&nbsp;</strong> (2019 年 2 月 16 日以前(含)) – MCP <a rel="noreferrer noopener" href="https://www.mirantis.com/software/mcp/stacklight/" target="_blank">StackLight</a> ElasticSearch 組件可能會透過 DNS 洩漏資訊，該組件不容易受到遠端代碼執行的影響，由於可以洩露的數據有限，Mirantis PSIRT 將漏洞嚴重性評分為 LOW (CVSSv3.1 評分 3.6)。</p>
<p></p>
<p></p>
<h2 class="wp-block-heading" style="font-size:24px">建議用戶的操作</h2>
<p></p>
<p></p>
<p>在 MCP StackLight 節點上，將 -Dlog4j2.formatMsgNoLookups=true 附加到文件 /etc/elasticsearch/jvm.options 並執行 systemctl restart elasticsearch 以重新啟動 elasticsearch 進程。建議在可用時升級到 MCP 2019.2.17。</p>
<p></p>
<p></p>
<h2 class="wp-block-heading" style="font-size:24px">如何評估工作負載中的漏洞？</h2>
<p></p>
<p></p>
<p>Mirantis Secure Registry 更新後已經可以掃描 CVE-2021-4428，用戶應檢查 MSR 中的漏洞資料庫更新、安裝最新的更新並執行掃描。 MSR 將檢測 Log4j 並回報漏洞。</p>
<p></p>
<p></p>
<p>由於 Log4j 在深植在眾多技術中，識別、緩解、解決 Log4Shell 漏洞將是一個漫長的過程。這個過程從找出可能受影響的組件開始，強烈建議所有企業盡快掃描資料庫，並聯繫相關廠商尋求幫助。</p>
<p></p>
<p></p>
<hr class="wp-block-separator has-css-opacity">
<p></p>
<p></p>
<p>本文章為歐立威科技整理原廠官方文件與網路資源，並非即時更新，僅供使用者參考，使用者應自行審慎評估自身環境及官方最新建議以採取最佳行動，若需要任何技術支援歡迎聯絡我們。</p>
<p></p>
<p></p>
<div class="wp-block-buttons is-horizontal is-content-justification-center is-layout-flex wp-container-core-buttons-is-layout-2 wp-block-buttons-is-layout-flex"><p></p>
<div class="wp-block-button"><a class="wp-block-button__link" href="https://www.omniwaresoft.com.tw/contactus/" target="_blank" rel="noreferrer noopener">聯絡我們</a></div>
<p></p></div>
<p></p>
<p></p>
<p>參考資料：</p>
<p></p>
<p></p>
<ul class="wp-block-list">
<li><a href="https://www.mirantis.com/blog/log4shell-and-log4j-2-vulnerabilities-explained/" target="_blank" rel="noreferrer noopener">What is Log4Shell, and How Can You Tell if You’re Affected?</a></li>
</ul>
<p></p>
<p></p>
<p></p>							</div>
										</div>
				</div>
					</div>
		</div>
					</div></div>
		</section>
				</div>
		]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">16774</post-id>	</item>
		<item>
		<title>Elasticㄧ蘇黎世保險 (Zurich Insurance) 利用 Elastic Cloud 提升顧客信任並拓展未來</title>
		<link>https://www.omniwaresoft.com.tw/usecase/elastic-usecase/elk-zurich-insurance/</link>
		
		<dc:creator><![CDATA[Omni]]></dc:creator>
		<pubDate>Wed, 15 Dec 2021 03:51:14 +0000</pubDate>
				<category><![CDATA[Elastic 成功案例]]></category>
		<category><![CDATA[成功案例]]></category>
		<category><![CDATA[Elastic]]></category>
		<category><![CDATA[Elastic Cloud]]></category>
		<category><![CDATA[Elastic Search]]></category>
		<category><![CDATA[K8s]]></category>
		<guid isPermaLink="false">http://www.omniwaresoft.com.tw/?p=16678</guid>

					<description><![CDATA[蘇黎世保險將資料遷移到 Kubernetes 上的 Elastic Cloud 讓員工快速解決理賠問題。轉移到 Elastic Cloud 大幅簡化了升級和基礎架構調整程序，也利用 Elasticsearch 加速資料洞察、整理與分析客戶資料，專員也能即時解決客戶問題]]></description>
										<content:encoded><![CDATA[		<div data-elementor-type="wp-post" data-elementor-id="16678" class="elementor elementor-16678" data-elementor-post-type="post">
						<section data-particle_enable="false" data-particle-mobile-disabled="false" class="elementor-section elementor-top-section elementor-element elementor-element-14d6a532 elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="14d6a532" data-element_type="section">
						<div class="elementor-container elementor-column-gap-thegem"><div class="elementor-row">
					<div class="elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-1fc4fa3" data-id="1fc4fa3" data-element_type="column">
			<div class="elementor-widget-wrap elementor-element-populated">
						<div class="elementor-element elementor-element-2be093b0 flex-horizontal-align-default flex-horizontal-align-tablet-default flex-horizontal-align-mobile-default flex-vertical-align-default flex-vertical-align-tablet-default flex-vertical-align-mobile-default elementor-widget elementor-widget-text-editor" data-id="2be093b0" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
												<div class="elementor-text-editor elementor-clearfix">
						<h2>Elastic Cloud 能做到以下事情</h2>
<ul>
<li style="font-weight: 400;" aria-level="1"><b>加快上市時間：</b><span style="font-weight: 400;">蘇黎世保險利用 Elastic 加快了保險產品和服務的上市時間，資料遷移到 Kubernetes 上的 Elastic Cloud 讓員工快速解決理賠問題，提升了顧客滿意與信任度。</span></li>
<li aria-level="1"><b>增強的顧客產品 : </b><span style="font-weight: 400;">蘇黎世利用 Elastic 提供客戶新的產品與服務。除了降低成本，遷移到 Elastic 還帶來最佳的投資報酬。</span></li>
<li aria-level="1"><b>提升資料洞察：</b><span style="font-weight: 400;">蘇黎世利用 Elastic 在幾分鐘內發現並解決了內部和客戶所面臨的問題。這種用 Elastic 所改善的應用可視度提升了客戶體驗，同時也保留與吸引新客戶。&nbsp;</span></li>
</ul>
<h2><b>超越客戶期待，用 Elastic 推動創新</b></h2>
<p><span style="font-weight: 400;">對</span><a href="https://www.zurich.com/"><span style="font-weight: 400;">蘇黎世保險集團</span></a><span style="font-weight: 400;">來說，保險不僅僅是一個職業，而是保護客戶和他們所愛的東西，讓他們安心並展望未來。這家擁有近 150 年歷史的公司始終把客戶擺在第一位，這項承諾成為該公司數位轉型的動力。</span><br>
<span style="font-weight: 400;">為了有效地服務客戶並招來新顧客，蘇黎世保險不斷在清理舊式的應用程式，也將許多工作移轉到 Elastic Cloud。雲端遷移使保險公司能規劃新的數位服務，如：優化理賠報告與遠端風險評估來提升價值。公司還推出新產品像是 Zurich Klinc，專為智慧型手機、相機和電動自行車等電子產品提供保險。</span></p>
<p><b>「在蘇黎世保險，我們希望超越客戶期望，並陪伴他們在數位時代下的生活方式。這也就是我們為何遷移到 Kubernetes 上的 Elastic Cloud。我們可以用 Elastic 持續關注客戶需求、推動創新，以及精簡 IT 環境。」─ </b><span style="font-weight: 400;">蘇黎世保險轉型科技長</span><b>：</b><span style="font-weight: 400;">Sandra Hauser</span></p>
<p><span style="font-weight: 400;">蘇黎世保險是全球最大的上市公司之一，擁有 55,000 名員工，客戶遍佈 215 個地區。推動公司發展需採取很全面的措施。但放大來看，公司的進展清晰可見，這歸功於各位和 Elastic 團隊的辛勞，包括蘇黎世的專案負責人 Brian Keegan 和解決方案負責人 Evgeny Sitnikov。</span><br>
<span style="font-weight: 400;">Brian Keegan 和&nbsp; Evgeny Sitnikov 帶領的專案幾乎是員工和客戶看不到的，但他們的工作可說是讓公司持續創新的一大功臣。 他們管理的核心技術之一是 Elastic，旨在協助理賠人員提高工作效率，提供更好的服務，並讓開發人員持續創新，使公司保持競爭力，這項技術攸關公司的利潤。</span></p>
<h2><b>加快理賠程序以提供更好的服務</b></h2>
<p><span style="font-weight: 400;">蘇黎世保險採用 Elastic 有五年的時間，Elastic 已成為該公司發展優質服務和保持客戶忠誠的重要工具。蘇黎世保險在理賠的應用程式中使用 Elasticsearch，讓代理人與客戶溝通時能快速調出聯繫和理賠紀錄。在過去，要取得這些資訊十分困難，甚至不可能，因為幾十年的資料散落在幾十個舊式的系統中。</span><span style="font-weight: 400;">這意味理賠專員需要花大量時間從客戶口中收集資料，不僅延長通話時間，也讓本來就焦躁不安的客戶在索賠過程中筋疲力竭。</span><span style="font-weight: 400;">現在多虧 Elastic，這些客戶資料對代理人來說伸手可得。</span><br>
<b></b></p>
<p><b>「利用 Elasticsearch 整合客戶資料並讓搜索變得容易，蘇黎世保險的理賠人員能實時獲得精確的資訊，也能更快回應客戶。」</b><b>Evgeny Sitnikov 説。</b><b>「這在每次通話中可減少幾秒到幾分鐘的時間 </b><b>─ 加起來真的是這樣，大幅提升客戶滿意度。」</b></p>
<h2><b>Kubernetes 上的 Elastic Cloud 帶來速度、擴展性和關聯性</b></h2>
<p><span style="font-weight: 400;">The Elastic Stack 在發展週期中也扮演重要的角色，因為蘇黎世保險仰賴創新來滿足客戶的各種需求。數百名的蘇黎世開發人員和測試人員利用 Elastic 收集日誌，從測試、部署到生產，以確保應用程式為員工和客戶保持良好效能與可用性。他們從多達 40 個內部和雲端應用程式中提取日誌，也能從 40 多年的傳統保險系統到新穎的應用程式中提取，使請求和事件一目瞭然，這也都是為了提供更好的服務。</span></p>
<p><span style="font-weight: 400;">在蘇黎世保險使用 Elastic 前，應用程式的日誌是孤立的，請求和檢索資料需花上幾天的時間，尤其是從第三方的管理系統。現在有了 Kibana 儀表板，便能實時視覺化這些日誌，讓團隊能在幾分鐘內解決 IT 問題。這使得平均解決時間 (MTTR) 大幅加快，這是蘇黎世保險轉向雲端並利用數位服務的關鍵，用來滿足競爭時代中員工和客戶不斷增加的期望。</span></p>
<p><span style="font-weight: 400;">然而要保持快速的創新步調，這意味著 IT 環境要不斷的發展。該團隊需要更多的儲存量和擴展性，來因應不斷增加的應用程式日誌需求 一 這意味著轉移到雲端的必要性。為了擴大規模、增加收入、擴大客戶群、提高客戶滿意度，蘇黎世保險選擇了 </span><a href="https://www.elastic.co/elastic-cloud-kubernetes"><span style="font-weight: 400;">Kubernetes 上的 Elastic Cloud (ECK)</span></a><span style="font-weight: 400;">。</span></p>
<h2><b>經 Elastic Consulting 認可的易用性和最佳實踐 (best practices)</b></h2>
<p><span style="font-weight: 400;">Brian Keegan 的團隊進行了一個概念驗證 (proof of concept)，測試 ECK 在 Microsoft Azure Kubernetes Services (AKS) 上的可行性，這次是與 Elastic Consulting 和 Microsoft 合作，並針對架構和案例進行腦力激盪，再用最佳實踐驗證該方法。Elastic 顧問在概念驗證期間為蘇黎世保險的 IT 團隊提供了完美的培訓。</span></p>
<p><span style="font-weight: 400;">Elastic 和蘇黎世保險合作，發展出提取 Kubernetes 中日誌的方法，並對 Azure 組件、物件大小和保存類別作出建議，這對工作效率有很大的幫助。這次合作為 ECK 立下了很好的開端，ECK 預設是可控管的，也可讓使用者自訂義宣告式使用者 (declarative users) 跟角色。</span></p>
<p><span style="font-weight: 400;">轉移到 Elastic Cloud 大幅簡化了升級和基礎架構調整的程序。也就是說蘇黎世保險藉由消除許多阻礙成長、收入和擴展的舊式解決方案，在 Elastic Stack 中有了最佳的投資報酬，同時讓員工能專注於產品與服務上，而不是花時間升級或處理耗時的問題。</span></p>
<p><span style="font-weight: 400;">Evgeny Sitnikov 説：「在過去的升級工作需耗費大量的人力，而且可能要幾週才能做完」「多虧 Elastic 的易用性，現在我們可以在幾小時內就完成基礎架構的調整，而非幾週那麼久。」</span></p>
<h2><b>在 Microsoft Azure Kubernetes 用 ECK 奠定未來基礎</b></h2>
<p><span style="font-weight: 400;">ECK 讓</span><span style="font-weight: 400;">專員回應理賠時間大幅加快、新穎又方便的線上服務、現代化的保險產品來保護他們重要的事物。而這只是個開始。</span><span style="font-weight: 400;">Evgeny Sitnikov 在和 Brian Keegan 探討該職業前景時，他們認為 Microsoft Azure Kubernetes 的 ECK 是推動創新和效率的方式，且</span><span style="font-weight: 400;">不只是IT上的創新，更是未來的趨勢。</span></p>							</div>
										</div>
				</div>
					</div>
		</div>
					</div></div>
		</section>
				</div>
		]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">16678</post-id>	</item>
		<item>
		<title>《2021 系列研討會 DevOpsDays 》11/24 &#124; HashiCorp Vault x Kubernetes &#8211; 如何在零信任環境下提高 Kubernetes 的安全性</title>
		<link>https://www.omniwaresoft.com.tw/all-events/hashicorp-vault-event/hashicorpvault-webinar-211124/</link>
		
		<dc:creator><![CDATA[Omni]]></dc:creator>
		<pubDate>Mon, 01 Nov 2021 11:56:44 +0000</pubDate>
				<category><![CDATA[HashiCorp Vault 活動]]></category>
		<category><![CDATA[Event]]></category>
		<category><![CDATA[HashiCorp Vault]]></category>
		<category><![CDATA[K8s]]></category>
		<guid isPermaLink="false">http://www.omniwaresoft.com.tw/?p=16448</guid>

					<description><![CDATA[本次研討會將介紹 K8s 的基礎面來探討其在安全性層面上的不足之處，並展示如何利用 HashiCorp Vault 解決這類安全性問題等。也將實際 demo 給各位參考。]]></description>
										<content:encoded><![CDATA[		<div data-elementor-type="wp-post" data-elementor-id="16448" class="elementor elementor-16448" data-elementor-post-type="post">
						<section data-particle_enable="false" data-particle-mobile-disabled="false" class="elementor-section elementor-top-section elementor-element elementor-element-626da179 elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="626da179" data-element_type="section">
						<div class="elementor-container elementor-column-gap-thegem"><div class="elementor-row">
					<div class="elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-3515e7e3" data-id="3515e7e3" data-element_type="column">
			<div class="elementor-widget-wrap elementor-element-populated">
						<div class="elementor-element elementor-element-5c9c5f1e flex-horizontal-align-default flex-horizontal-align-tablet-default flex-horizontal-align-mobile-default flex-vertical-align-default flex-vertical-align-tablet-default flex-vertical-align-mobile-default elementor-widget elementor-widget-text-editor" data-id="5c9c5f1e" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
												<div class="elementor-text-editor elementor-clearfix">
						<p></p>
<p>&nbsp;</p>
<p></p>
<p></p>
<div class="wp-block-columns is-layout-flex wp-container-core-columns-is-layout-2 wp-block-columns-is-layout-flex"><p></p>
<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow" style="flex-basis:100%"></div>
<p></p></div>
<p></p>
<p><img loading="lazy" data-recalc-dims="1" class="wp-image-16452 aligncenter" src="https://i0.wp.com/www.omniwaresoft.com.tw/wp-content/uploads/2021/11/2021-11-01-%E4%B8%8B%E5%8D%883.31.17.png?resize=576%2C288&#038;ssl=1" alt="omni x DevOpsDays" width="576" height="288"></p>
<h2 class="inner-title">如何在零信任環境下提高 Kubernetes 的安全性</h2>
<div class="agenda-content-txt p">
<h3><strong>活動資訊：</strong></h3>
<p>本議程將從 K8s 的基礎面來探討其在安全性層面上的不足之處，讓聽眾得以了解如何透過 CNCF 領域內最流行的 Secret Manager &#8211; Valut 來彌補這些安全性上的疑慮，讓企業朝向 DevSecOps 邁進：</p>
<ul>
<li>企業用戶使用 Kubernetes 在架構與應用面所遇到的安全問題，以及其所帶來的風險</li>
<li>HashiCorp Vault 如何幫助企業提高 Kubernetes 的安全性</li>
<li>透過現場 Demo 了解 K8s 整合 HashiCorp Vault 的實際方式&nbsp;</li>
</ul>
</div>
<p data-v-4f2417cc="">DevOpsDays Taipei 是由臺灣在地技術社群發起，結合社群、企業共同舉辦之年度 DevOps 盛會。DevOpsDays 由 DevOps 之父 Patrick Debois 發源自比利時，經過全球社群的共同響應，如今在全球，每年皆有多個城市舉辦以城市掛名的 DevOpsDays。</p>
<p data-v-4f2417cc="">
</p><p data-v-4f2417cc="">根據 iThome 的報導，不論是國內外的知名企業例如台積電、金士頓、趨勢科技、國泰金控等皆早已擁抱 DevOps，引領企業持續改善、邁向新一波的 IT 數位轉型。DevOps 作為同時蘊含技術與文化轉型雙主軸的 IT 熱門關鍵字，其影響力已不僅是 IT 圈內人人皆知，更擴展至企業組織的各個層面。</p>
<p data-v-4f2417cc="">
</p><p>DevOpsDays Taipei 2021 即將在 2021/11/24 於臺北文創盛大舉辦，Agile Community.tw、DevOps Taiwan Community、HashiCorp User Group Taipei 以及 iThome 再次攜手合作，期盼再創屬於臺灣在地的 DevOps 高峰盛會。</p>
<p></p>
<div class="wp-block-button aligncenter is-style-fill"><a class="wp-block-button__link wp-element-button" href="https://devopsdays.tw/#ticket">立刻報名 <strong>&gt;&gt;</strong></a></div>
<p></p>
<p></p>
<p>&nbsp;</p>
<p></p>							</div>
										</div>
				</div>
					</div>
		</div>
					</div></div>
		</section>
				</div>
		]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">16448</post-id>	</item>
		<item>
		<title>整合 Kubernetes 的 Docker 企業版進入beta測試階段</title>
		<link>https://www.omniwaresoft.com.tw/product-news/docker-news/docker-kubernetes-beta/</link>
		
		<dc:creator><![CDATA[Omni]]></dc:creator>
		<pubDate>Wed, 11 Apr 2018 03:59:46 +0000</pubDate>
				<category><![CDATA[Docker 產品資訊]]></category>
		<category><![CDATA[產品資訊]]></category>
		<category><![CDATA[Docker]]></category>
		<category><![CDATA[K8s]]></category>
		<guid isPermaLink="false">https://goodpoint-studio.com/?p=13211</guid>

					<description><![CDATA[企業能夠使用Swarm或完全符合Kubernetes規範來部署應用程式，並且保持用戶一如以往對於從Docker獲得開發人員至IT運維自動化工作流程兼具安全性的軟體交付作業流程之熱切期望，特別是在使用帶有Kubernetes整合支持的最新版 Docker for Mac。]]></description>
										<content:encoded><![CDATA[		<div data-elementor-type="wp-post" data-elementor-id="13211" class="elementor elementor-13211" data-elementor-post-type="post">
						<section data-particle_enable="false" data-particle-mobile-disabled="false" class="elementor-section elementor-top-section elementor-element elementor-element-1b70ce76 elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="1b70ce76" data-element_type="section">
						<div class="elementor-container elementor-column-gap-thegem"><div class="elementor-row">
					<div class="elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-5b1710a" data-id="5b1710a" data-element_type="column">
			<div class="elementor-widget-wrap elementor-element-populated">
						<div class="elementor-element elementor-element-4f92c18e flex-horizontal-align-default flex-horizontal-align-tablet-default flex-horizontal-align-mobile-default flex-vertical-align-default flex-vertical-align-tablet-default flex-vertical-align-mobile-default elementor-widget elementor-widget-text-editor" data-id="4f92c18e" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
												<div class="elementor-text-editor elementor-clearfix">
						<p></p>
<p><span style="font-size: 16px;">在歐洲舉辦的<span lang="en-US">DockerCon EU 17</span>首次宣布，更新的<span lang="en-US">Docker</span>企業版本將<span lang="en-US">Kubernetes</span>作為編配解決方案的選項之一，可同時與<span lang="en-US">Docker Swarm</span>在系統中運行，目前此版本已進入<span lang="en-US">beta</span>測試階段。</span></p>
<p></p>
<p></p>
<p><br><span style="font-size: 16px;">有了這個解決方案，企業就能夠使用<span lang="en-US">Swarm</span>或完全符合<span lang="en-US">Kubernetes</span>規範來部署應用程式，並且保持用戶一如以往對於從<span lang="en-US">Docker</span>獲得開發人員至<span lang="en-US">IT</span>運維自動化工作流程兼具安全性的軟體交付作業流程之熱切期望，特別是在使用帶有<span lang="en-US">Kubernetes</span>整合支持的最新版&nbsp;<span lang="en-US">Docker for Mac</span>。</span></p>
<p></p>
<p></p>
<p><br><span style="font-size: 16px;">除了整合<span lang="en-US">Kubernetes</span>之外，此版本還包括對<span lang="en-US">Swarm</span>和<span lang="en-US">Docker DTR</span>的增強功能。&nbsp;</span></p>
<p></p>
<p></p>
<p><br><span style="font-size: 16px;"><span lang="en-US">Swarm</span>和<span lang="en-US">Kubernetes</span>並行</span></p>
<p></p>
<p></p>
<figure class="wp-block-image aligncenter size-large is-resized"><img loading="lazy" data-recalc-dims="1" src="https://i0.wp.com/www.omniwaresoft.com.tw/wp-content/uploads/2022/07/Docker-K8s.png?resize=678%2C381&#038;ssl=1" alt="Docker K8s" class="wp-image-31952" width="678" height="381" srcset="https://i0.wp.com/www.omniwaresoft.com.tw/wp-content/uploads/2022/07/Docker-K8s.png?w=1920&amp;ssl=1 1920w, https://i0.wp.com/www.omniwaresoft.com.tw/wp-content/uploads/2022/07/Docker-K8s.png?resize=300%2C169&amp;ssl=1 300w, https://i0.wp.com/www.omniwaresoft.com.tw/wp-content/uploads/2022/07/Docker-K8s.png?resize=1024%2C576&amp;ssl=1 1024w, https://i0.wp.com/www.omniwaresoft.com.tw/wp-content/uploads/2022/07/Docker-K8s.png?resize=768%2C432&amp;ssl=1 768w, https://i0.wp.com/www.omniwaresoft.com.tw/wp-content/uploads/2022/07/Docker-K8s.png?resize=1536%2C864&amp;ssl=1 1536w" sizes="(max-width: 678px) 100vw, 678px" /></figure>
<p></p>
<p></p>
<p><br><span style="font-size: 10pt;"></span></p>
<p></p>							</div>
										</div>
				</div>
					</div>
		</div>
					</div></div>
		</section>
				</div>
		]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">13211</post-id>	</item>
	</channel>
</rss>
