發表文章

如何取得docker container中的ip address與網路界面

How to discover the IP address and interface for a docker container 這篇主要講述如何取得docker container的IP位置與網路界面資訊。當你的docker container中並沒有安裝IP相關的工具程式,無法透過docker exec的方式執行ip相關的工具程式來取得IP位置與網路界面資訊,並且該網路界面的IP設定與docker DHCP預設配發的不一樣的時候,你可以這樣做。 Step 1 取得network namespace file # docker inspect abay-test -f "{{.NetworkSettings.SandboxKey}}" 假設我們要取得的docker container的名稱為abay-test,執行這行指令後會得到/var/run/docker/netns/6f6c87265050  Step 2.  建立network namespace連結 # ln -s /var/run/docker/netns/6f6c87265050 /var/run/netns/6f6c87265050 這個檔案會在下次重新開機的時候就會不見 Setp 3. 在指定namespace下執行ip a # ip netns exec 6f6c87265050 ip a 輸出的結果 abay@vm-01:~$ sudo ip netns exec 6f6c87265050 ip a 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever 87: eth0@if88: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP

使用在Ubuntu中PowerShell

圖片
Using PowerShell on Ubuntu 本篇文章介紹如何在Ubuntu中使用PowerShell,通常會需要這樣使用可能是有你特定使用的command在powershell中也希望可以在Linux環境中執行。PowerShell是一個開源專案相關的細節可以在https://github.com/powershell/powershell中查閱到詳細的資訊。 安裝 PowerShell 這邊介紹在Ubuntu 20.04中安裝PowerShell 更新系統的套件資訊資料庫 sudo apt-get update 安裝必要套件 sudo apt-get install -y wget apt-transport-https software-properties-common 下載Microsoft repository GPG keys wget -q https://packages.microsoft.com/config/ubuntu/20.04/packages-microsoft-prod.deb 註冊Microsoft repository GPG keys sudo dpkg -i packages-microsoft-prod.deb 更新套件清單 sudo apt-get update 安裝PowerShell sudo apt-get install -y powershell 執行 PowerShell pwsh

Kubernetes Dashboard登入?

圖片
圖1 登入畫面截圖 依照線上文件安裝Kubernetes Dashboard(Web UI)後,是不是會遇到需要登入的畫面? 安裝的文件參考https://kubernetes.io/docs/tasks/access-application-cluster/web-ui-dashboard/ 目前Kubernetes Dashboard驗證提供兩種方式,在圖1中可以到可以使用Token或是Kubeconfig的方式來登入Kubernetes Dashboard,這邊我主要來介紹使用Token的方式來登入。 步驟 1. 建立dashboard service帳號 $kubectl create serviceaccount dashboard-admin-sa 透過kubectl建立帳號dashboard-admin-sa在預設的namespace中 2. 將dashboard-admin-sa關聯到cluster-admin role $kubectl create clusterrolebinding dashboard-admin-sa --clusterrole=cluster-admin --serviceaccount=default:dashboard-admin-sa 3. 取出帳號的token $kubectl get secrets 圖2 secrets資源列表 $kubectl describe secret dashboard-admin-sa-token-lcr24 圖3 列出token 圖3顯示透過kubectl指令取得token就可以登入Kubernetes dashboard 圖4 登入後畫面

如何建立KVM(qemu-kvm)虛擬機器

1. 建立虛擬機器 建立虛擬磁碟 qemu-img create -f qcow2 /home/abay/kvm/ubuntu1804.qcow2 60G 建立VM virt-install --virt-type kvm --name ubuntu1804 --ram 2048 --disk /home/abay/kvm/ ubuntu1804.qcow2,format =qcow2 --network network =default --graphics vnc,listen = 0.0.0.0,password =YOUR_PASSWORD --noautoconsole --os-type=linux --os-variant=ubuntu20.04 --accelerate --cdrom=/home/abay/Downloads/ubuntu-20.04-desktop-amd64.iso 列出VM virsh list --all 2. 複製(Clone) VM virt-clone --original VM-NAME  --name NEW-VM-NAME  --auto-clone

如何測試伺服器端CORS是否有正常作用

圖片
如何測試與驗證CORS是否有正常運作,首先先檢查關於HTTP Header的組態設定是否有正確。 CORS的HTTP header組態指定參數如下: 伺服器端的HTTP header設定完成後,要確定設定沒有生效可以使用cURL工具在客戶端來,直接觀察驗證HTTP header資訊。 以www.example.com為例,我們可以透過觀察HTTP OPTIONS的header資訊來驗證。 # curl -v -X OPTIONS https://www.example.com 透過cURL輸出的header資訊如下: < HTTP/1.1 200 OK < Date: Tue, 19 May 2020 00:55:22 GMT < Content-Type: application/json < Content-Length: 0 < Connection: keep-alive < x-amzn-RequestId: a1b2c3d4-5678-90ab-cdef-abc123 < Access-Control-Allow-Origin: * < Access-Control-Allow-Headers: Content-Type,Authorization < Access-Control-Allow-Methods: DELETE,GET,HEAD,OPTIONS,PATCH,POST,PUT 透過HTTP Header資訊輸出來觀察伺服器端的CORS設定是否正確。由輸出的資訊我們可以確認有包含 Access-Control-Allow-Origin Access-Control-Allow-Headers Access-Control-Allow-Methods 有這三個Header其對應的值,依據自行服務的不同有不同的設定。

如何在Nginx所設置的Proxy中可以取得真實客戶的IP位址

如何在Nginx所設置的Proxy架構中可以取得真實客戶的IP位址 常見的情境是需要對客戶端IP進行特定的處理,例如:限定存去次數、流量或是啟用快取服務,此時及需要藉由來源客戶端的IP位置來關聯。 設定前先來說明一下一些變數名稱: $remote_addr Nginx核心模組中( ngx_http_core_module )中的內建變數$remote_addr就是用戶端的IP位址。 X-Forwarded-For X-Forwarded-For(XFF),是一個用來辨識通過HTTP Proxy或是load balance連接到web server,用戶端最原始的IP位址使用的HTTP Request header欄位。 X-Real-IP X-Real-IP為傳統上HTTP reverse proxy會使用非標準的header去告知upstream server關於來源戶端的IP位址,之一個HTTP header欄位。在Nginx的文件( http://nginx.org/en/docs/http/ngx_http_proxy_module.html )範例中可以看到。 $proxy_add_x_forwarded_for Nginx Http proxy模組中( ngx_http_proxy_module )中的內建變數$proxy_add_x_forwarded_for,會使用HTTP Request Header, X-Forwarded-For將來源IP記錄於此,當request經過多台proxy或是load balance產生的多筆IP位址會以逗號分開來,如果一開始沒有設置X-Forwarded-For,那麼在模組中的$proxy_add_x_forwarded_for的值就會跟$remote_addr一樣。 通常可以透過下列的指令來設定 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 設定方法: 在第一層的proxy或是load balancer就先設定nginx的default.conf proxy_set_header X-Real-IP $remote_addr; proxy_set_hea