Ingress——2

目錄

?一. 域名重定向(HTTP→HTTPS/舊域名跳轉)?

?二. 前后端分離Rewrite(路徑改寫)?

?三. 混合配置示例(重定向+Rewrite)?

?四. SSL/TLS配置(HTTPS加密)?

?五. 基本認證(Basic Auth)?


?一. 域名重定向(HTTP→HTTPS/舊域名跳轉)?

https-redirect.yaml


apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:name: https-redirectannotations:nginx.ingress.kubernetes.io/permanent-redirect: https://$host$request_uri
spec:rules:- host: old.example.comhttp:paths:- path: /pathType: Prefixbackend:service:name: dummy-serviceport:number: 80

?逐行解釋?:

  • nginx.ingress.kubernetes.io/permanent-redirect:Nginx特有注解,返回301永久重定向
  • $host$request_uri:保留原始請求的域名和路徑
  • dummy-service:虛擬服務(實際不會處理請求)

?二. 前后端分離Rewrite(路徑改寫)?

rewrite-frontend.yaml

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:name: rewrite-demoannotations:nginx.ingress.kubernetes.io/rewrite-target: /$2
spec:rules:- host: app.example.comhttp:paths:- path: /api(/|$)(.*)pathType: Prefixbackend:service:name: backend-serviceport:number: 8080

?逐行解釋?:

  • rewrite-target: /$2:將捕獲的(.*)部分拼接到根路徑
  • path: /api(/|$)(.*):正則匹配/api開頭的路徑,$2對應第二個捕獲組
  • backend-service:8080:實際處理請求的后端服務

?三. 混合配置示例(重定向+Rewrite)?

combined-ingress.yaml

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:name: combined-ingressannotations:nginx.ingress.kubernetes.io/configuration-snippet: |if ($host = 'deprecated.com') {return 301 https://new.example.com$request_uri;}nginx.ingress.kubernetes.io/rewrite-target: /$1
spec:rules:- host: new.example.comhttp:paths:- path: /static/(.*)pathType: Prefixbackend:service:name: frontend-serviceport:number: 80

?關鍵點說明?:

  • configuration-snippet:插入自定義Nginx代碼片段實現復雜邏輯
  • 此配置同時完成舊域名跳轉和靜態資源路徑改寫

?部署驗證命令?

# 應用配置 
kubectl apply -f https-redirect.yaml 
kubectl apply -f rewrite-frontend.yaml 
# 檢查注解是否生效 
kubectl describe ingress combined-ingress | grep Annotations 
# 測試重定向(返回301頭) 
curl -I http://old.example.com 

?注意事項?:

  1. Rewrite規則需與后端服務路由規則匹配
  2. 生產環境建議使用cert-manager自動管理HTTPS證書
  3. 不同Ingress Controller(如Traefik)注解語法可能不同

?四. SSL/TLS配置(HTTPS加密)?

tls-secret.yaml


apiVersion: v1
kind: Secret
metadata:name: example-tlsnamespace: default
type: kubernetes.io/tls
data:tls.crt: <base64編碼的證書>tls.key: <base64編碼的私鑰>

證書需提前base64編碼:cat cert.pem | base64 -w0

ssl-ingress.yaml

Version: networking.k8s.io/v1
kind: Ingress
metadata:name: secure-ingressannotations:nginx.ingress.kubernetes.io/ssl-redirect: "true"
spec:tls:- hosts:- secure.example.comsecretName: example-tlsrules:- host: secure.example.comhttp:paths:- path: /backend:service:name: web-serviceport: number: 80

關鍵參數說明:

  • ssl-redirect: "true"?強制HTTP跳轉到HTTPS
  • tls塊定義證書關聯的域名和Secret

?五. 基本認證(Basic Auth)?

auth-secret.yaml

apiVersion: v1
kind: Secret
metadata:name: basic-authnamespace: default
type: Opaque
data:auth: $(echo -n 'username:password' | openssl base64 -A)

生成命令:htpasswd -c auth foo?然后base64編碼

auth-ingress.yaml

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:name: auth-ingressannotations:nginx.ingress.kubernetes.io/auth-type: basicnginx.ingress.kubernetes.io/auth-secret: basic-authnginx.ingress.kubernetes.io/auth-realm: "Authentication Required"
spec:rules:- host: private.example.comhttp:paths:- path: /backend:service:name: private-serviceport:number: 8080

核心注解說明:

  • auth-type?指定認證方式為basic
  • auth-secret?關聯存儲憑據的Secret
  • auth-realm?瀏覽器彈出的認證提示文本

?部署驗證命令?

# 應用配置 
kubectl apply -f tls-secret.yaml 
kubectl apply -f ssl-ingress.yaml 
# 檢查證書狀態 
kubectl describe ingress secure-ingress | grep -A3 'TLS' 
# 測試認證(返回401未授權) 
curl -v http://private.example.com 

注意事項:

  1. 生產環境建議使用Let's Encrypt通過cert-manager自動簽發證書
  2. Basic Auth需配合HTTPS使用避免密碼泄露
  3. 不同Controller可能使用不同注解(如Traefik的auth注解前綴為traefik.ingress)

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/87812.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/87812.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/87812.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

12. grafana-Dashboard的Variable(過濾)使用

說明制作這樣一個選擇過濾的下拉框&#xff0c;可以選擇某個服務器的步驟1. 點擊最上面的Dashboard settings2. 選擇Variables 并點擊ADD variable3. 寫出過濾的標簽名和查詢條件&#xff08;label_values(查詢條件)&#xff09;4. 點擊 save as... 保存退出5. 出來后左上角就…

Cursor一鍵續杯pro教程,支持最新1.0系列版本

使用前檢查&#xff1a; 使用前請先看左下角&#xff0c;是否獲取到Cursor的版本號 如果沒有請先在 功能頁面 -→ 自定義Cursor路徑 選擇你Cursor的安裝的路徑&#xff0c;并開啟后重啟YCursor&#xff0c;獲取到版本后才能正常使用功能 檢查軟件左下角的權限標識是否為綠色 如…

pyhton基礎【25】面向對象進階六

目錄 十七.單例模式 實現單例模式的兩種方式 __new__方法概述 單例模式的使用場景 十七.單例模式 引入 單例模式是一種常用的軟件設計模式&#xff0c;它確保一個類只有一個實例&#xff0c;并提供一個全局訪問點來獲取這個實例。 實現單例模式的兩種方式 使用類屬性創…

后端樹形結構

案例 在后端開發中&#xff0c;樹形結構數據的查詢和處理是一個常見的需求&#xff0c;比如部門管理、分類目錄展示等場景。接下來&#xff0c;我們以一個部門管理系統為例&#xff0c;詳細介紹如何實現后端的樹查詢功能。 案例背景 假設我們正在開發一個公司的內部管理系統&am…

高效溝通04-RIDE說服模型

高效溝通專欄–組織運轉的命脈與個人成功的基石 目錄 1. RIDE模型的核心理念2. RIDE模型的應用場景3. RIDE模型使用步驟4. RIDE模型示例與練習4.1 應用RIDE模型:4.2 練習:你來試試!5. 總結RIDE模型是一種結構化的說服框架,旨在幫助你在溝通(尤其是書面溝通或需要清晰邏輯…

利用selenium獲取網頁數據,腳本加載慢問題的解決辦法

問題&#xff1a;最近在寫一個腳本去獲取一個網站的數據&#xff0c;用到一個表格中的數據&#xff0c;條目是1000條&#xff0c;需要逐條去獲取網站上對應的數據&#xff0c;遇到的問題是腳本運行后&#xff0c;很久才開始打開驅動瀏覽器。經過很多次嘗試&#xff0c;主要原因…

Ubuntu查看本機代理的實操指南

快速確認代理狀態的必要性在Ubuntu系統中&#xff0c;代理設置是跨境訪問、企業內網連接、開發調試的重要配置。無論是排查網絡卡頓、驗證代理是否生效&#xff0c;還是確保特定應用走代理通道&#xff0c;快速查看當前代理狀態都是關鍵步驟。圖形界面查看&#xff0c;可視化操…

三格電子——雙通道 CAN(FD)轉以太網

【SG-CAN(FD)NET-210】 一、功能描述 CANFD 完全向下兼容 CAN &#xff0c;以下統稱 CAN(FD) 。 SG-CAN(FD)NET-210 是一款用來把 CANFD 總線數據轉為網口數據的設 備。 網口支持 TCP Sever 、 TCP Client 、 UDP Sever 、 UDP Client 四種模式。 可以通過軟件配置…

【一起來學AI大模型】卷積神經網絡(CNN):視覺識別的革命性架構

一、CNN的核心思想與生物啟示 卷積神經網絡&#xff08;Convolutional Neural Networks&#xff09;是受生物視覺皮層啟發的深度學習架構&#xff0c;專門用于處理網格狀拓撲數據&#xff08;如圖像、視頻、音頻&#xff09;。其核心創新在于&#xff1a; 局部感受野&#xff…

創建和編輯Crontab的方法

計劃任務&#xff0c;在 Linux 中一般使用Crontab&#xff0c;通過crontab命令&#xff0c;我們可以在固定的間隔時間執行指定的系統指令或 Shell 腳本。時間間隔的單位可以是分鐘、小時、日、月、周及以上的任意組合。這個命令非常適合周期性的日志分析或數據備份等工作。 創建…

在職場中如何培養創新思維?

芯片研發人員&#xff0c;授權發明專利40&#xff0c;聊聊技術層面的創新&#xff0c; 創新的本質&#xff0c;是舊有知識的創造性組合&#xff0c; 不存在無中生有的創新&#xff0c; 你必須建立本領域的知識體系&#xff0c;對過往各種創新&#xff0c;爛熟于心&#xff0…

設備健康管理平臺功能深度對比:中訊燭龍如何以預測性維護重構工業運維范式?

全球制造業因非計劃停機每年損失超千億美元?&#xff0c;而搭載預測性維護系統的企業&#xff0c;設備可用率可提升至99.8%??。 在工業4.0與智能制造浪潮下&#xff0c;設備健康管理平臺已從“可選工具”升級為“核心生產力工具”。面對市場上功能繁雜的解決方案&#xff0c…

YOLOv11 架構優化:提升目標檢測性能

YOLOv11 作為目標檢測領域的最新成果&#xff0c;其架構優化是提升性能的關鍵。本文將詳細探討 YOLOv11 的架構改進&#xff0c;以及這些改進如何幫助模型在實時應用中實現更高的準確性和效率。 一、架構改進 &#xff08;一&#xff09;C3K2 塊 C3K2 塊是對 CSP 塊的增強&a…

特別放送:關于一個無法修復的系統級Bug

大家好&#xff0c;我是阿威。 熟悉我的朋友都知道&#xff0c;我的博客基本只聊三件事&#xff1a;代碼、架構和偶爾的職業生涯吐槽。但今天&#xff0c;我想破個例。起因是上周熬夜排查一個線上問題&#xff0c;一個分布式系統&#xff0c;流量洪峰一來&#xff0c;某個下游…

云原生-集群管理

1.集群管理命令&#xff1a;a.如何管理集群&#xff1f;-kubectl是用于控制Kubernetes集群的命令行工具b.語法格式&#xff1a;-kubectl [command] [TYPE] [NAME] [flages]command:子命令&#xff0c;如create、get、descrbe、deletetype&#xff1a;資源類型&#xff…

基于Linux下的vscode c/c++開發環境搭建詳細教程

vscode是文本編輯而非集成開發環境&#xff0c;需要經過配置才能在其上編譯執行代碼。本教程將具體詳解在linux上配置Visual Studio Code使用GCC C 編譯器&#xff08;g&#xff09;和GDB調試器的方法&#xff08;GCC是GNU 編譯器集合&#xff0c;GDB則是 GNU調試器&#xff09…

【EGSR2025】材質+擴散模型+神經網絡相關論文整理隨筆

MatSwap: Light-aware material transfers in images 介紹任務&#xff1a;輸入一張拍攝圖像、示例材質紋理圖像&#xff08;這里跟BRDF無關&#xff0c;通常我們講到材質一般指的是SVBRDF&#xff0c;但是這里的材質指的只是紋理&#xff09;、用戶為拍攝圖像指定的遮罩區域&…

WebRTC 雙向視頻通話

WebRTC 雙向視頻通話 一、項目概述 WebRTC&#xff08;Web Real - Time Communication&#xff09;是一種支持瀏覽器之間進行實時通信的技術&#xff0c;它使得在網頁上實現音視頻通話、文件共享等功能變得更加容易。為了體驗這個技術&#xff0c;所以我實現了webrtc - local…

Paimon lookup核心過程:分級查找、二分和緩存創建

LookupLevels LookupLevels 在 Paimon 中扮演著**“帶緩存的、基于 Key 的數據查找引擎”**的角色。它的核心使命是&#xff1a;當需要根據主鍵&#xff08;Key&#xff09;查找某條數據時&#xff0c;能夠高效地在 LSM-Tree 的多層&#xff08;Levels&#xff09;數據文件中定…

Ruby大會演講實錄:Baklib 如何用 AI 重構內容管理賽道

“2015 年成都 Ruby 大會時&#xff0c;我們還在做大數據項目&#xff1b;2025 年的今天&#xff0c;Baklib 已服務 800 多家企業。” 在 RubyConf China 2025 的演講臺上&#xff0c;Baklib 創始人Song以十年對比開篇&#xff0c;講述了從技術愛好者到企業服務創業者的蛻變&am…