使用kubeadm建立指定clusterName的Kubernetes叢集

使用kubeadm建立指定clusterName的Kubernetes叢集

早期經驗不足,對於 Kubernetes 的一切,一開始大多會採用預設值來進行組態設定,也因此踩了很多雷,對預設值的雷(例如 Calico IPPool 沒規劃好這件事)。另外如題碰到的問題是,我們早期建置的 Kubernetes 叢集,在導入一些工具後發現,每個名稱 Kubernetes 叢集名稱預設都是一模一樣的叫作 kubernetes,這在管理上就帶來了不便,從名稱上根本分不出,這個是測試區還是正式區的Kubernetes叢集

也因此,這裡會分成兩集:

  1. 如果是重頭新建立的 Kubernetes 叢集,我們應該怎麼指定 Kubernetes 叢集名稱。
  2. 如果是已經建立好的 Kubernetes 叢集,我們應該如何修改 Kubernetes 叢集名稱。

安裝Calico網路與調整Kubernetes Pod Network CIDR

安裝Calico網路與調整Kubernetes Pod Network CIDR

在設定新的 Kubernetes 叢集並安裝 Calico 網路發現,現在 Calico 網路設定之前有些差異,留個短篇筆記。

在設定新的 Kubernetes 叢集時,預設如果要採用 Calico 網路,那麼我們一開始 kubeadm init 就先指定好預設的 --pod-network-cidr,例如:

# Pod network add-on: calico
sudo kubeadm init --pod-network-cidr=192.168.0.0/16

NGINX for Windows轉移NGINX for Linux注意事項

NGINX for Windows轉移NGINX for Linux注意事項

最近終於把早期的 NGINX for Windows 轉移至 NGINX for Linux,在轉移過程有不少平台差異造成設定上需微調。以下整理 NGINX from Windows to Linux 一些組態的差異性,以及轉移後進行的一些調整。

如何在Azure Pipeline透過地端Agent使用SSH連線地端Ubuntu Server進行sudo作業

如何在Azure Pipeline透過地端Agent使用SSH連線地端Ubuntu Server進行sudo作業

我們想在地端原有的 Azure DevOps Agent(Based on Linux)對地端的另一台 Linux VM 下一些指令,但某些指令需要使用 sudo 來提權。大致架構如下:

Azure Pipeline(Cloud) ←-> Azure Agent (on-premise,Linux VM) ←-> SSH - sudo commands(on-premise,Linux VM)

調整 Visual Studio 的 Terminal 也擁有高又帥執行環境

調整 Visual Studio 的 Terminal 也擁有高又帥執行環境

蠻喜歡在 Visual Studio Code 去使用 Terminal 裡感覺。Visual Studio Code 的 Terminal 通常在 Windows Terminal 裡去設定好 pwsh 的環境後,除了要記得改 Nerd Fonts 字型設定外,Visual Studio Code 就自動把 pwsh 環境吃過去使用了。但在 Visual Studio 還需要動一些設定才能把 Terminal 改的跟 Visual Studio Code 一樣順手,筆記一下需要調整的部分。

追追追:SSL中繼憑證迷行記

追追追:SSL中繼憑證迷行記

AppInsights 01 Get crt.sectigo.com error

現在SSL憑證改成最長時效只有一年已經好幾年了。因此,一開始的故事很簡單,SSL憑證更新之後公司內網所有對此服務(我們暫定為:https://api.kkbruce.net/,雖有點圖文不符,反正就是個含正式SSL憑證的端點)的請求一律失敗(如上圖)!真的是嚇死寶寶了。整個追蹤的時間很長,我盡量整理重點說明就好,但這一路下來,對於整個SSL憑證又多瞭解了一些。

解決在Ubuntu Server 22.04安裝NGINX失敗(2)

解決在Ubuntu Server 22.04安裝NGINX失敗(2)

前一篇分享之後,收到社團朋友的提醒,原因是主機停用 IPv6 造成繫結失敗,不是我說的那樣,這要快點再寫一篇釐清一下。

其實安裝當下,提供的日誌寫的很清楚,是自己沒用心看。

nginx[1695]: nginx: [emerg] socket() [::]:80 failed (97: Unknown error)

解決在Ubuntu Server 22.04安裝NGINX失敗

解決在Ubuntu Server 22.04安裝NGINX(nginx.org)失敗

第一次在 Ubuntu Server 22.04 安裝 NGINX,參考官方教學與另一篇都覺得寫的不錯,反正就是 apt install nginx 就結束了。看到應該這裡就知道,事情沒那麼簡單,因為參考了一些文件,安裝的都不是很順利,因此記下此筆記一篇。

官方教學與另一篇我覺得都寫的不錯:

但執行起來怎麼問題一堆:

修正Calico 3.27升級至新版本後IP Pool無法修改的問題

修正Calico 3.27升級至新版本後IP Pool無法修改的問題

前情提要,我們在 Calico 3.27 升級至 Calico 3.28 之後的版本都會碰到 Defaul IP Pool 跑回 192.168.x.x 而且改不動的情況。

$ calicoctl version
Client Version:    v3.27.4
Git commit:        2183fee02
Cluster Version:   v3.27.4
Cluster Type:      typha,kdd,k8s,operator,bgp,kubeadm
$ calicoctl get ippool -o wide
NAME       CIDR            NAT    IPIPMODE   VXLANMODE     DISABLED   DISABLEBGPEXPORT   SELECTOR
new-pool   10.244.0.0/16   true   Never      CrossSubnet   false      false              all()

Ubuntu Server升級UEFI Firmware BIOS

Ubuntu Server升級UEFI Firmware BIOS

一早登入系統,注意到有二行提醒文字,第一次看到 Ubuntu 的 firmware upgrade 因此留個筆記。

1 device has a firmware upgrade available.
Run `fwupdmgr get-upgrades` for more information.

如何正確修改Ubuntu的50-cloud-init.yaml組態值

如何正確修改Ubuntu的50-cloud-init.yaml組態值

事情是這樣的,新申請的 Ubuntu VM 需要修改些 IP 相關組態,例如,DNS Server 或 Search Domain,結果發現,在 /etc/netplan 下的 00-installer-config.yaml 不見了,取而代之是一個 50-cloud-init.yaml 的組態檔。

cat /etc/netplan/50-cloud-init.yaml

# This file is generated from information provided by the datasource.  Changes
# to it will not persist across an instance reboot.  To disable cloud-init's
# network configuration capabilities, write a file
# /etc/cloud/cloud.cfg.d/99-disable-network-config.cfg with the following:
# network: {config: disabled}
network:
    ethernets:
        ens33:
            addresses:
            - 192.168.0.25/24
            nameservers:
                addresses:
                - 1.1.1.1
                - 8.8.8.8
                search: []
            routes:
            -   to: default
                via: 192.168.0.1
    version: 2

cat 會看到幾行重要的註解內容。直接對 50-cloud-init.yaml 的進行修改,在重開機後會覆寫回來。試了註解裡的 99-disable-network-config.cfg 沒什麼效果,對 50-cloud-init.yaml 的修改在重開機後還是會被覆寫回來。

好物市集:mozilla SSL組態產生器

好物市集:mozilla SSL組態產生器

前2集(1)(2),前同事在 FB 上給了很多指教,受益非淺(術業有專攻),其中有個 moz://a SSL Configuration Generator 好工具,真的是相見恨晚,非常值得介紹給大家。

NGINX的SSL TLS與Security Header的安全性強化

NGINX的SSL TLS與Security Header的安全性強化

前一篇,在取得 NGINX 可用的憑證格式與套用後,就開始以 HTTPS 來連線與測試。但 nginx.conf 裡還有許多安全性設定值可以調整。

  1. NGINX HTTP Server 組態
  2. SSL/TLS 組態
  3. Security Header 組態

為NGINX for Windows設定HTTPS的SSL/TLS憑證

為NGINX for Windows設定HTTPS的SSL/TLS憑證

故事是這樣,我們需要為NGINX(for Windows)服務加上 HTTPS 的 SSL/TLS 憑證。公司提供的是 .pfx 檔(PFX容器形式的憑證,PKCS#12格式),通常在 Windows Server/IIS Server 上使用沒什麼難度,一、匯入 .pfx 到 Windows Server;二、到 IIS Server 設定匯入 SSL/TLS 憑證。後來研究發現,NGINX 無法直接使用 .pfx 檔來設定,也是說需要轉換格式後才能提供 Linux Based 的應用程式來使用。

《無瑕的程式碼 函數式設計篇》推薦序

《無瑕的程式碼 函數式設計篇》推薦序

無瑕的程式碼 函數式設計篇

這本《無瑕的程式碼 函數式設計篇》並不是在討論「函數式程式設計」。它是談論更高層次的原則、模式與實踐。書中進行了大量的物件導向程式設計(Object-Oriented Programming,OOP)與函數式程式設計(Functional Programming,FP)的討論。OOP採用Java展示,FP則採用Clojure展示。

定期自動化執行ACR Repository維護Azure CLI指令碼的N種方法

定期自動化執行ACR Repository維護Azure CLI指令碼的N種方法

前篇使用Azure CLI-自動刪除Azure Container Registry過期映像檔,我寫好了維護 ACR Repository 維護指令碼。我們希望能定期自動化執行這份維護指令碼(或說排程執行也行),這份指令碼有幾個麻煩的地方,一、註解第一行「First we need to login to Azure」,你必須先登入 Azure 帳號,登入之後才能執行 Azure CLI。二、因為需要登入 Azure 帳號,也就被 Azure 帳號這件事給限制住了,它就不太可能離開你的主機去別的地方做自動化。因此,在自動化之前,我們必須先解決 ACR 訪問權限的問題。

使用Azure CLI-自動刪除Azure Container Registry過期映像檔

使用Azure CLI-自動刪除Azure Container Registry過期映像檔

ACR Repository Image List

Azure Container Registry裡會儲存大量的映像檔,但其中許多都是已過期或未使用的映像檔。因此,都需要定期清理 ACR 裡的映像檔,以節省空間與成本。