k8s部署ingress-nginx的方法步驟
前言
k8s集群服務(wù)部署好之后,需要對(duì)外提域名訪問,這時(shí)候就需要ingress-nginx了,今天來給大家分享一下
一、部署配置Ingress
1、獲取配置文件
#文件已下載到本地 https://github.com/kubernetes/ingress-nginx/tree/nginx-0.20.0/deploy
2、準(zhǔn)備鏡像
unzip ingress-nginx-nginx-0.20.0.zip cd ingress-nginx-nginx-0.20.0/deploy/ vim mandatory.yaml #其他文件的集合 #編輯mandatory.yaml文件,將defaultbackend鏡像地址改成阿里云的鏡像地址(如下圖) image: registry.cn-hangzhou.aliyuncs.com/allinpay/defaultbackend-amd64:v1.5

3、安裝
kubectl apply -f mandatory.yaml

#稍等片刻,使用下列命令查詢 kubectl get namespace kubectl get pods -n ingress-nginx

4、創(chuàng)建后端pod和service (pod-B、service-B)
vim deploy-demo.yaml
apiVersion: v1
kind: Service
metadata:
name: myapp
namespace: default
spec:
selector:
app: myapp
release: canary
ports:
- name: http
targetPort: 80
port: 80
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: myapp-deploy
namespace: default
spec:
replicas: 3
selector:
matchLabels:
app: myapp
release: canary
template:
metadata:
labels:
app: myapp
release: canary
spec:
containers:
- name: myapp
image: ikubernetes/myapp:v2
ports:
- name: http
containerPort: 80
#應(yīng)用配置
kubectl apply -f deploy-demo.yaml
#查看
kubectl get pods

5、創(chuàng)建service-A
vim service-nodeport.yaml
apiVersion: v1
kind: Service
metadata:
name: ingress-nginx
namespace: ingress-nginx
labels:
app.kubernetes.io/name: ingress-nginx
app.kubernetes.io/part-of: ingress-nginx
spec:
type: NodePort
ports:
- name: http
port: 80
targetPort: 80
protocol: TCP
nodePort: 30080
- name: https
port: 443
targetPort: 443
protocol: TCP
nodePort: 30443
selector:
app.kubernetes.io/name: ingress-nginx
app.kubernetes.io/part-of: ingress-nginx
#應(yīng)用配置
kubectl apply -f service-nodeport.yaml
#查看
kubectl get svc -n ingress-nginx

在外部瀏覽器中中訪問:ip:30080

此時(shí)報(bào)錯(cuò)的原因是因?yàn)闆]有生成ingress-controller關(guān)聯(lián)到service-B的ingress規(guī)則;
6、定義ingress規(guī)則
定義ingress規(guī)則,此間規(guī)則會(huì)自動(dòng)注入到ingress-controller(pod)的nginx.conf中;
ingress-controller是直接關(guān)聯(lián)到service-B的,但是中間由ingress來生成各種規(guī)則;
vim ingress-myapp.yaml
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: ingress-myapp
namespace: default
annotations:
kubernetes.io/ingress.class: "nginx"
spec:
rules:
- host: myapp.magedu.com
http:
paths:
- path:
backend:
serviceName: myapp
servicePort: 80
此時(shí)ingress-controller的nginx.conf中會(huì)自動(dòng)生成一個(gè)server段的配置,也就是一個(gè)nginx的虛擬主機(jī)的字段,還包括upstream配置等;
upstream自動(dòng)代理到后端pod(pod-B),這些都是自動(dòng)生成,所以就實(shí)現(xiàn)了自動(dòng)生成配置,自動(dòng)更改配置等;
只需要改此yaml文件即可;
#應(yīng)用配置 kubectl apply -f ingress-myapp.yaml

在外部主機(jī)上配置好host文件

然后在瀏覽器中再訪問,發(fā)現(xiàn)已經(jīng)可以訪問到后端pod了

二、使用https
1、創(chuàng)建k8s證書(要注意和后端的pod使用相同的namespace)
kubectl -n default create secret tls ingress-test --key /home/centos/cert/cash432.key --cert /home/centos/cert/cash432.crt
2、創(chuàng)建ingress規(guī)則
注意namespace的相同性,要不然證書無法生效
vim ingress-myapp-cash432.yaml
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: ingress-myapp
namespace: default
annotations:
kubernetes.io/ingress.class: "nginx"
kubernetes.io/secure-backends: "true"
kubernetes.io/ssl-passthrough: "true"
spec:
tls:
- hosts:
- myapp.cash432.xyz
secretName: ingress-test
rules:
- host: myapp.cash432.xyz
http:
paths:
- path:
backend:
serviceName: myapp
servicePort: 80
#應(yīng)用配置
kubectl apply -f ingress-myapp-cash432.yaml
瀏覽器訪問

到此這篇關(guān)于k8s部署ingress-nginx的方法步驟的文章就介紹到這了,更多相關(guān)k8s部署ingress-nginx內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- nginx-ingress-controller日志持久化方案的解決
- nginx?ingress代理websocket流量的配置方法
- 解決國內(nèi)k8s的ingress-nginx鏡像無法正常pull拉取問題
- k8s之ingress-nginx詳解和部署方案
- 安裝ingress-nginx遇到的一些坑實(shí)戰(zhàn)記錄
- nginx?ingress限速那些事淺析
- 使用Nginx Ingress 優(yōu)雅顯示錯(cuò)誤頁面
- nginx-ingress-controller部署配置詳解
- k8s部署ingress-nginx的詳細(xì)步驟大全
- nginx ingress的具體使用
- Nginx ingress controller高可用的實(shí)現(xiàn)
相關(guān)文章
nginx利用referer指令實(shí)現(xiàn)防盜鏈配置
nginx模塊ngx_http_referer_module通常用于阻擋來源非法的域名請(qǐng)求,我們應(yīng)該牢記。下面這篇文章主要介紹了nginx利用referer指令實(shí)現(xiàn)防盜鏈配置的相關(guān)資料,需要的朋友可以參考借鑒,下面來一起看看吧。2017-03-03
在Nginx中使用X-Sendfile頭提升PHP文件下載的性能(針對(duì)大文件下載)
這篇文章主要介紹了在Nginx中使用X-Sendfile頭提升PHP文件下載的性能,可以用在針對(duì)大文件下載的情況,下載非網(wǎng)站W(wǎng)eb目錄文件的需求,提供下載權(quán)限控制的場景,需要的朋友可以參考下2014-07-07
Nginx proxy_set_header參數(shù)設(shè)置
本文主要介紹了Nginx proxy_set_header參數(shù)設(shè)置,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-09-09
使用Nginx實(shí)現(xiàn)服務(wù)器中多容器共存的方法
這篇文章主要介紹了使用Nginx實(shí)現(xiàn)服務(wù)器中多容器共存的方法,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2018-10-10

