Văn chương mục lục
Nhất, vi thập ma nhu yếu Ingress
Ngã môn sử dụng truyện thống đích NodePort loại hình đích Service đích xác năng tương tập quần nội đích phục vụ bạo lộ cấp tập quần ngoại bộ khách hộ đoan khứ phóng vấn, đãn thị sử dụng giá chủng loại hình đích Service tồn tại dĩ hạ vấn đề:
Nhất cá đoan khẩu chỉ năng sử dụng nhất cá phục vụ, sở hữu thông quá NodePort bạo lộ đích đoan khẩu đô nhu yếu đề tiền quy hoa;
Như quả tập quần thượng đích Service đích sổ lượng thái đa đích thoại, bạo lộ đích NodePort đoan khẩu bất cụ hữu liên tục tính. Hậu kỳ duy hộ thành bổn thái đại, thả bất nghi vu quản lý;
Vô luận thị Iptables hoặc giả thị Ipvs mô hình đích Service đô phối trí tại Linux nội hạch trung đích Netfilter chi thượng tiến hành tứ tằng điều độ. Thị nhất chủng bỉ giác thông dụng đích điều độ khí. Chi trì điều độ HTTP, Mysql đẳng ứng dụng tằng phục vụ, bất quá, dã chính thị công tác vu truyện thâu tằng tòng nhi sử đắc tha vô pháp tố đáo loại tự tá tái HTTPS trung đích SSL hội thoại, dã bất chi trì cơ vu URL đích thỉnh cầu điều độ cơ chế, nhân vi tha công tác tại truyện thâu tằng. kubernetes dã bất chi trì vi thử loại phụ tái quân hành phối trí nhậm hà loại hình đích kiện khang trạng thái kiểm trắc cơ chế.
Vi liễu giải quyết giá chủng nhu cầu, đề cung liễu nhất chủng cao cấp đích lưu lượng quản lý, dã tựu Ingress hòa Ingress Controller, kubernetes sử dụng Ingress Controller lai tiếp thu sở hữu nhập khẩu đích lưu lượng, nhiên hậu thông quá Ingress tư nguyên lai định nghĩa lưu lượng như hà khu phân, dĩ cập như hà chuyển phát đích quy tắc. Hữu liễu Ingress hòa Ingress khống chế khí. Ngã môn tựu khả dĩ trực tiếp định nghĩa lưu lượng chuyển phát quy tắc lai phát bố phục vụ, nhi vô nhu sang kiến hứa đa đích NodePort hòa LoadBalancer loại hình đích Service.
Nhị, thập ma thị Ingress,Ingress Controller
Ingress thị Kubernetes trung đích nhất cá API đối tượng, dụng vu định nghĩa tập quần nội bộ phục vụ đích ngoại bộ khả phóng vấn tính. Giản nhi ngôn chi, Ingress thị dụng lai miêu thuật như hà tương ngoại bộ thỉnh cầu lộ do đáo tập quần nội bộ đích phục vụ đích quy tắc tập hợp. Ingress đề cung liễu nhất chủng định nghĩa HTTP lộ do quy tắc đích phương thức, sử đắc ngoại bộ khách hộ đoan khả dĩ thông quá nhất cá thống nhất đích nhập khẩu điểm phóng vấn tập quần nội bộ đích phục vụ.
Ingress tương đương vu nhất cá 7 tằng đích phụ tái quân hành khí, thị kubernetes đối phản hướng đại lý đích nhất cá trừu tượng, tha đích công tác nguyên lý loại tự vu Nginx, khả dĩ lý giải thành tại Ingress lí kiến lập chư đa ánh xạ quy tắc, Ingress Controller thông quá giam thính giá ta phối trí quy tắc tịnh chuyển hóa thành Nginx đích phản hướng đại lý phối trí, nhiên hậu đối ngoại bộ đề cung phục vụ.
Tại giá lí hữu lưỡng cá hạch tâm khái niệm:
- ingress: kubernetes trung đích nhất cá đối tượng, tác dụng thị định nghĩa thỉnh cầu như hà chuyển phát đáo service đích quy tắc
- ingress controller: Cụ thể thật hiện phản hướng đại lý cập phụ tái quân hành đích trình tự, đối ingress định nghĩa đích quy tắc tiến hành giải tích, căn cư phối trí đích quy tắc lai thật hiện thỉnh cầu chuyển phát, thật hiện phương thức hữu ngận đa, bỉ như Nginx, Contour, Haproxy đẳng đẳng
Tam, Ingress đích công tác nguyên lý
Ingress ( dĩ Nginx vi lệ ) đích công tác nguyên lý như hạ:
- Dụng hộ biên tả Ingress quy tắc, thuyết minh na cá vực danh đối ứng kubernetes tập quần trung đích na cá Service
- Ingress khống chế khí động thái cảm tri Ingress phục vụ quy tắc đích biến hóa, nhiên hậu sinh thành nhất đoạn đối ứng đích Nginx phản hướng đại lý phối trí
- Ingress khống chế khí hội tương sinh thành đích Nginx phối trí tả nhập đáo nhất cá vận hành trứ đích Nginx phục vụ trung, tịnh động thái canh tân
- Đáo thử vi chỉ, kỳ thật chân chính tại công tác đích tựu thị nhất cá Nginx liễu, nội bộ phối trí liễu dụng hộ định nghĩa đích thỉnh cầu chuyển phát quy tắc
Tứ, Ingress phối trí tư nguyên mô bản
apiVersion:networking.k8s.io/v1# tư nguyên sở chúc đích API quần tổ hòa bản bổn
kind:Ingress# tư nguyên loại hình
metadata:# nguyên sổ cư
name:<string># tư nguyên danh xưng
namespace:<string># mệnh danh không gian
spec:
ingressClassName:"nginx"# thích dụng đích Ingress khống chế khí loại biệt, tu minh xác chỉ minh
rules:<[]object># Ingress quy tắc liệt biểu
-host:<string># hư nghĩ chủ cơ đích FQDN, tục xưng vực danh
http:<object>
paths:<[]object># hư nghĩ chủ cơ đích PATH định nghĩa liệt biểu
-path:<string># thất phối dĩ thập ma khai đầu loại tự vu nginx trung đích location
pathType:<string># Prefix tiền chuế thất phối, bất khu phân đại tiểu tả Exact. Tinh xác thất phối URL, khu phân đại tiểu tả
backend:<object># hậu đoan
service:<object># quan liên hậu đoan đích Service
name:<string># hậu đoan Service đích danh xưng
port:<object># hậu đoan Service đích đoan khẩu
name:# đoan khẩu danh xưng
number:# đoan khẩu hào
Ngũ, thật lệ
1, đáp kiến Ingress hoàn cảnh
1.1, Ingress-Nginx quan võng địa chỉ
#Ingress-Nginx quan võng địa chỉ
https://kubernetes.github.io/ingress-nginx/
#Ingress-Nginx GitHub địa chỉ
https://github.com/kubernetes/ingress-nginx
1.2, master tiết điểm hạ tái deploy.yaml
wgethttps://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v1.0.4/deploy/static/provider/baremetal/deploy.yaml
1.3, sở hữu tiết điểm đề tiền pull tất tu đích kính tượng
dockerpull registry.cn-hangzhou.aliyuncs.com/eagleslab/service:ingresswebhook111
dockertag c41e9fcadf5a k8s.gcr.io/ingress-nginx/kube-webhook-certgen:v1.1.1
dockerpull registry.cn-hangzhou.aliyuncs.com/eagleslab/service:ingresscontroller104
dockertag a9f76bcccfb5 k8s.gcr.io/ingress-nginx/controller:v1.0.4
1.4, tu cải tịnh ứng dụng deploy.yaml văn kiện
Như quả thị đề tiền pull đích kính tượng, yếu san trừ điệu deploy.yaml trung đối kính tượng sha256 đích kiểm tra, tại image tiêu thiêm trung, san trừ @sha256 đáo hành vĩ
sed-i's/@sha256:.*//g'deploy.yaml
kubectl apply-fdeploy.yaml
1.5, tra khán ingress-nginx
kubectl get pods-ningress-nginx-lapp.kubernetes.io/name=ingress-nginx
1.6, tra khán service
kubectl get svc-ningress-nginx
2, chuẩn bị service hòa pod
2.1, sang kiến nginx hòa tomcat đích Deployment
apiVersion:v1
kind:Namespace
metadata:
name:dev
---
apiVersion:apps/v1
kind:Deployment
metadata:
name:nginx-deployment
namespace:dev
spec:
replicas:3
selector:
matchLabels:
app:nginx-pod
template:
metadata:
labels:
app:nginx-pod
spec:
containers:
-name:nginx
image:nginx:1.17.1
ports:
-containerPort:80
---
apiVersion:apps/v1
kind:Deployment
metadata:
name:tomcat-deployment
namespace:dev
spec:
replicas:3
selector:
matchLabels:
app:tomcat-pod
template:
metadata:
labels:
app:tomcat-pod
spec:
containers:
-name:tomcat
image:tomcat:8.5-jre10-slim
ports:
-containerPort:8080
---
apiVersion:v1
kind:Service
metadata:
name:nginx-service
namespace:dev
spec:
selector:
app:nginx-pod
clusterIP:None
type:ClusterIP
ports:
-port:80
targetPort:80
---
apiVersion:v1
kind:Service
metadata:
name:tomcat-service
namespace:dev
spec:
selector:
app:tomcat-pod
clusterIP:None
type:ClusterIP
ports:
-port:8080
targetPort:8080
2.2, sang kiến tịnh tra khán đối ứng svc,pod
kubectl apply-ftomcat-nginx.yaml
kubectl get pods,svc-ndev
3, HTTP đại lý
3.1, sang kiến ingress-http.yaml
ingressClassName: nginx
Sử dụng nginx đích IngressClass ( quan liên đích ingress-nginx khống chế khí )
apiVersion:networking.k8s.io/v1
kind:Ingress
metadata:
name:ingress-nginx
namespace:dev
spec:
rules:
-host:nginx.bbj1030.cn
http:
paths:
-path:/
pathType:Prefix
backend:
service:
name:nginx-service
port:
number:80
ingressClassName:nginx
---
apiVersion:networking.k8s.io/v1
kind:Ingress
metadata:
name:ingress-tomcat
namespace:dev
spec:
rules:
-host:tomcat.bbj1030.cn
http:
paths:
-path:/
pathType:Prefix
backend:
service:
name:tomcat-service
port:
number:8080
ingressClassName:nginx
3.2, ứng dụng tịnh tra khán
kubectl get ing-ndev
kubectl describe ing-ndev
3.3, bổn địa điện não phối trí hosts giải tích
Tương dĩ thượng nginx.bbj1030.cn hòa tomcat.bbj1030.cn giải tích đáo master tiết điểm 192.168.112.10 thượng
192.168.112.10 nginx.bbj1030.cn
192.168.112.10 tomcat.bbj1030.cn
3.4, thông quá vực danh + đoan khẩu hào tra khán
nginx.bbj1030.cn:32596
tomcat.bbj1030.cn:32596
4, HTTPS đại lý
4.1, sinh thành chứng thư
openssl req-x509-sha256-nodes-days365-newkeyrsa:2048-keyouttls.key-outtls.crt-subj"/C=CN/ST=BJ/L=BJ/O=nginx/CN=bbj1030.cn"
4.2, sang kiến mật thược
kubectl create secret tls tls-secret--keytls.key--certtls.crt
4.3, sang kiến ingress-https.yaml
apiVersion:networking.k8s.io/v1
kind:Ingress
metadata:
name:https-nginx
namespace:dev
spec:
tls:
-hosts:
-nginx.bbj1030.cn
secretName:tls-secret# chỉ định bí thược
rules:
-host:nginx.bbj1030.cn
http:
paths:
-path:/
pathType:Prefix
backend:
service:
name:nginx-service
port:
number:80
ingressClassName:nginx
---
apiVersion:networking.k8s.io/v1
kind:Ingress
metadata:
name:tomcat-https
namespace:dev
spec:
tls:
-hosts:
-tomcat.bbj1030.cn
secretName:tls-secret# chỉ định bí thược
rules:
-host:tomcat.bbj1030.cn
http:
paths:
-path:/
pathType:Prefix
backend:
service:
name:tomcat-service
port:
number:8080
ingressClassName:nginx
4.4, ứng dụng tịnh tra khán
Nhu yếu tiên san trừ chi tiền sang kiến đích ingress bất nhiên hội báo thác
kubectl delete-fingress-http.yaml
kubectl apply-fingress-https.yaml
kubectl get ing-ndev
kubectl describe ing-ndev
4.5, thông quá https:// vực danh + đoan khẩu hào phóng vấn
https://nginx.bbj1030.cn:31563
https://tomcat.bbj1030.cn:31563