使用 Kustomize 管理 Kubernetes 配置檔

Kustomize 是 SIG-CLI 的一個子項目,其目的是為 Kubernetes 提供一種可以重複使用配置檔的管理工具。舉例來說,我們今天開發了一個前端應用 v1 並且撰寫了一個 Deployment、Service 以及 ConfigMap 的 YAML,接著透過kubectl指令將其部署在 Kubernetes 環境之中。但之後此前端應用經過開發與升級至 v2 並需要將其部署至 Kubernetes 環境,但其中 Kubernetes 的配置檔有些參數與 v1 略有不同。此時,我們通常會將 v1 所撰寫的 YAML 複製一份並修改部分內容,再透過kubectl部署到 Kubernetes 環境之中。但這樣的情況下我們同時保存兩份 YAML 且其他人也無法輕易地看出兩份 YAML 之間的配置有哪些不同。而 Kustomize 就可以很好的幫我們解決這些問題。

Read More

Share Comments

使用 Helm 在 Kubernetes 上部署 Harbor

在之前已經介紹過 Harbor,且是在實體機上的透過docker-compose簡單且快速的部署 Harbor。而本篇將介紹如何透過 Kubernetes Helm 來部署 Harbor。而官方在早期有提供 YAML 來直接部署 Harbor 在 Kubernetes 之上,且 Harbor 的版本為 v1.2。但後來官方不建議直接使用 YAML 來部署 Harbor,而是透過 Helm 來部署。因此本文將介紹如何用 Kubernetes Helm 來部署 Harbor 在 Kubernetes 上。

Read More

Share Comments

Hexo 新增 Color Quote

最近看到 hexo-theme-minos 提供了一個非常漂亮的 Color Quote 功能,如下面所示。因此,想把它加入到自己的部落格之中。而開始從它的 Github 中搜尋它的原始碼,發現原來它是利用 Hexo 提供的 extend tag 功能,而它的使用方法很簡單,使用者只要註冊了一個 extend tag,之後再文章中就可以使用此 extend tag,但是 extend tag 僅限於使用 Hexo 的語法;而不是原本 Markdown 的語法。

Read More

Share Comments

企業等級的 Docker Registry Harbor

Harbor 是一個企業級 Registry 伺服器用於儲存和分散 Docker Image 的,透過新增一些企業常用的功能,例如:安全性、身分驗證和管理等功能擴展了開源的 Docker Distribution。作為一個企業級的私有 Registry 伺服器,Harbor 提供了更好的效能與安全性。Harbor 支援安裝多個 Registry 並將 Image 在多個 Registry 做 replicated。除此之外,Harbor 亦提供了高級的安全性功能,像是用戶管理(user managment),存取控制(access control)和活動審核(activity auditing)。

Read More

Share Comments

基於 Kubernetes 的 Serverless 框架 Kubeless

Kubeless 是一個基於 Kubernetes 的無伺服器(Serverless)框架,由 Go 語言所撰寫而成。Kubeless 利用 Kubernetes 資源提供自動擴展(auto-scaling)、API 路由、監控以及故障排除等功能。

而 Kubeless 為什麼能在如此多的無伺服器(Serverless)框架中脫穎而出呢?這是因為 Kubeless 使用 Kubernetes 的 CRD(Custom Resource Definition) 來建立 Function,而每個 Function 建立時都會是一個 Deployment,並同時暴露(expose)出一個 Service,透過 Kubernetes 的好處省去開發者開發上的麻煩。而 Kubeless 僅需執行一個in-cluster的 Controller 來監控這些 CRD,並按需求啟動與執行。

Read More

Share Comments

NVIDIA Docker v2 安裝

2017 年 11 月 NVIDIA 已將 NVIDIA Docker v2 的版本合併(merged)至 NVIDIA/nvidia-docker 的 repository,這意味著 v2 會逐漸取代 v1。

而根據官方的說明,v1 與 v2 差異如下:

  • 不需要封裝的 Docker CLI 以及獨立的背景程式(daemon)
  • GPU 的隔離現在透過環境變數NVIDIA_VISIBLE_DEVICES
  • 任何的 Docker image 都可以啟動 GPU 支援,不只是基於官方的 CUDA image
  • Ubuntu 與 CentOS 都有 Package repositories,意味著安裝更為簡單與方便
  • 基於libnvidia-container來重新實現

而本文將介紹如何使用 NVIDIA Docker v2 來讓容器使用 GPU。

Read More

Share Comments

在 Ubuntu 上安裝 Docker CE

在安裝 Docker CE 時,官方在 get.docker.comtest.docker.com 提供一個很方便的腳本來進行安裝。但若要在 production 環境使用此安裝腳本是不建議的,因為它具有以下風險:

  • 使用快速安裝腳本需要使用到rootsudo特權來執行,因此在執行腳本之前你需要特別檢查與確認是否使用;
  • 快速安裝腳本會自動偵測你的 Linux 發行版與版本,並為你配置 package management 系統。此外,腳本不允許設定任何安裝參數;
  • 快速安裝腳本會安裝所有的相依性與推薦的套件,且不需要經過確認;
  • 快速安裝腳本不提供選項來指定安裝 Docker 的版本,它會安裝最新的版本(非 stable release 版本);
  • 如果主機已經安裝了 Docker 請不要使用快速安裝腳本。

因此,官方建議使用以下方式來安裝 Docker CE。

Read More

Share Comments

Kubernetes on Mesos

Kubernetes 是一個基於容器技術的分散式架構解決方案,並且是 Google 十幾年大規模使用容器技術的經驗累積的成果。因此,在今年七月 Mesosphere 宣布與 Google 合作,將 Kubernetes 結合 Mesos,讓使用者能夠使用 Kubernetes 與其他一流的 data center 服務(例如:Hadoop、Spark 以及 Chronos)一起使用。這允許 Kubernetes 應用程式同時與其他類型的應用程式在同一組伺服器中一起執行,而 Mesos 可以確保資源被公平的分配且隔離每個應用程式。

Kubernetes-Mesos 目前屬於 alpha 階段,仍然還在開發中,並不建議使用在生產環境。請參考 這裏

Read More

Share Comments

OpenVPN 手把手教學

虛擬私人網路(Virtual Private Network, VPN)為了解決跨區域之大型企業的網路連線與安全問題而衍生,VPN 在公用的網路架構(如:網際網路)上建立私有通道,而訊息透過私有通透進行傳送。VPN 可以利用已加密的通道協議(Tunneling Protocol)來達到保密、傳送端認證、訊息準確性等私人訊息安全效果。這種技術可以用不安全的網路(如:網際網路)來傳送可靠、安全的訊息。需要注意的是,沒有加密的 VPN 訊息依然有被竊取的危險。而 OpenVPN 無疑是 Linux 下開源 VPN 的先鋒,其提供了良好的效能友善的 GUI,而本文將介紹如何在 Ubuntu 上安裝 OpenVPN,但不使用 GUI 介面。

Read More

Share Comments

Mac OS X 製作 USB 開機碟

本文將介紹如何在 Mac OS X 環境中製作用來安裝作業系統(Operating system)的 USB 隨身碟,即不需要光碟就可以直接安裝作業系統。

請勿用來製作需要授權(license)付費之作業系統,請製作開源作業系統;如:Ubuntu, CentOS 等等。

Read More

Share Comments