K8S之Ingress實現 HTTPS 代理


k8s之Ingress 實現 http 代理訪問

前提:

1、服務器已經運行了 ingress-controller 服務

2、測試用 Nginx 鏡像已經上傳到倉庫(方便測試用,也可忽略)

一、查看運行環境是否正常

復制代碼
[root@k8s-master ingress]# kubectl get pods -n ingress-nginx
NAME                                        READY   STATUS    RESTARTS   AGE
default-http-backend-5c9bb94849-snbm7       1/1     Running   0          19h
nginx-ingress-controller-84d5b54fdf-hrx7p   1/1     Running   0          19h
[root@k8s-master ingress]# kubectl get svc -n ingress-nginx
NAME                   TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)                      AGE
default-http-backend   ClusterIP   10.103.169.169   <none>        80/TCP                       19h
ingress-nginx          NodePort    10.107.203.11    <none>        80:32080/TCP,443:32443/TCP   18h
[root@k8s-master ingress]# 
復制代碼

 二、創建並生成證書

# 生成證書
openssl req -newkey rsa:4096 -nodes -sha256 -keyout /opt/k8s/https/tls.key -x509 -out /opt/k8s/https/tls.crt -subj /C=CN/ST=BJ/L=BJ/O=DEVOPS/CN=wangzy -days 3650

# 創建證書
kubectl create secret tls tls-secret --key=tls.key --cert tls.crt


req     產生證書簽發申請命令
-newkey  生成新私鑰
rsa:4096  生成秘鑰位數
-nodes   表示私鑰不加密
-sha256  使用SHA-2哈希算法
-keyout  將新創建的私鑰寫入的文件名
-x509   簽發X.509格式證書命令。X.509是最通用的一種簽名證書格式。
-out 指定要寫入的輸出文件名
-subj    指定用戶信息
-days    有效期

 

 三、配置 Web 測試訪問頁面

 屬性 https.yml 配置文件並允許

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: nginx-v3
spec:
  replicas: 2
  template:
    metadata:
      labels:
        name: nginx-version3 
    spec:
      containers:
      - name: nginx-version
        image: registry.cn-hangzhou.aliyuncs.com/wangzy001/nginx:v3 #阿里雲事前准備好的測試鏡像
        imagePullPolicy: IfNotPresent 
        ports:
        - containerPort: 80
---
apiVersion: v1
kind: Service
metadata: 
  name: test-v3
spec:
  ports:
    - port: 80
      targetPort: 80
      protocol: TCP
  selector:
    name: nginx-version3

步驟如下

# 1、書寫並運行資源配置文件
[root@k8s-master https]# vi https.yml
[root@k8s-master https]# kubectl apply -f https.yml 

# 2、查看 pod 
[root@k8s-master https]# kubectl get pods
NAME                        READY   STATUS    RESTARTS   AGE
nginx-v3-79cc8b69cd-tsp4z   1/1     Running   0          68s
nginx-v3-79cc8b69cd-zhf8b   1/1     Running   0          68s

# 3、查看服務
[root@k8s-master https]# kubectl get svc
NAME         TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)   AGE
kubernetes   ClusterIP   10.96.0.1        <none>        443/TCP   9d
test-v3      ClusterIP   10.104.184.146   <none>        80/TCP    84s

# 4、訪問測試
[root@k8s-master https]# curl 10.104.184.146
Hello wangzy! This is v3 version
[root@k8s-master https]# 

 

四、配置 Ingress 規則

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: test-nginxv3
spec:
  tls:
    - hosts:
      - www3.wangzy.com
      secretName: tls-secret
  rules:
    - host: www3.wangzy.com
      http:
        paths:
        - path: /
          backend:
            serviceName: test-v3  # 與需要訪問的web服務名稱一致
            servicePort: 80

步驟如下

# 1、書寫配置文件
[root@k8s-master https]# vi ingress-https.yml [root@k8s-master https]# kubectl apply -f ingress-https.yml ingress.extensions/test-nginxv3 created

# 2、查看信息 [root@k8s
-master https]# kubectl get svc NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 9d test-v3 ClusterIP 10.104.184.146 <none> 80/TCP 15m [root@k8s-master https]# kubectl get ingress NAME HOSTS ADDRESS PORTS AGE test-nginxv3 www3.wangzy.com 80, 443 15s

# 3、查看訪問暴露端口 [root@k8s
-master https]# kubectl get svc -n ingress-nginx NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE default-http-backend ClusterIP 10.103.169.169 <none> 80/TCP 145m ingress-nginx NodePort 10.107.203.11 <none> 80:32080/TCP,443:32443/TCP 59m [root@k8s-master https]#

 五、配置本地 Hosts 文件

# 目錄位置:C:\Windows\System32\drivers\etc

部署服務的IP www3.wangzy.com

六、頁面訪問測試

1、登入頁面

2、顯示頁面信息

 

 

 

 

 

 

 

 

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM