十九、Service Ingress
Service Ingress


Ingress-Nginx github 地址:https://github.com/kubernetes/ingress-nginx
Ingress-Nginx 官方网站:https://kubernetes.github.io/ingress-nginx
部署 Ingress-Nginx
https://kubernetes.github.io/ingress-nginx/deploy/
kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/nginx-0.27.0/deploy/static/mandatory.yaml
kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/nginx-0.27.0/deploy/static/provider/baremetal/service-nodeport.yaml
Ingress HTTP 代理访问
vim ingress-nginx.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx
spec:
selector:
matchLabels:
name: nginx
replicas: 2
template:
metadata:
labels:
name: nginx
spec:
containers:
- name: nginx
image: docker.io/nginx
imagePullPolicy: IfNotPresent
ports:
- containerPort: 80
---
apiVersion: v1
kind: Service
metadata:
name: nginx-svc
spec:
ports:
- port: 80
targetPort: 80
protocol: TCP
selector:
name: nginx
#-----------------------------# 分割线 #--------------------------------------#
vim ingress-nginx-svc.yaml
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: nginx-test
spec:
rules:
- host: aaa.zutuanxue.com
http:
paths:
- path: /
backend:
serviceName: nginx-svc
servicePort: 80
我们可以通过命令 kubectl get svc -n ingress-nginx 查看对外宣告的端口:

然后使用浏览器通过域名:http://aaa.zutuanxue.com:31363/ 进行访问,因为需要进行域名解析,记得现在 hosts 文件内添加我们使用的域名的解析:

通过 Ingress 实现虚拟主机:
vim ingress-nginx-1.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-1
spec:
selector:
matchLabels:
name: nginx-1
replicas: 2
template:
metadata:
labels:
name: nginx-1
spec:
containers:
- name: nginx-1
image: docker.io/nginx
imagePullPolicy: IfNotPresent
ports:
- containerPort: 80
---
apiVersion: v1
kind: Service
metadata:
name: nginx-svc-1
spec:
ports:
- port: 80
targetPort: 80
protocol: TCP
selector:
name: nginx-1
#-----------------------------# 分割线 #--------------------------------------#
vim ingress-nginx-2.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-2
spec:
selector:
matchLabels:
name: nginx-2
replicas: 2
template:
metadata:
labels:
name: nginx-2
spec:
containers:
- name: nginx-2
image: docker.io/nginx
imagePullPolicy: IfNotPresent
ports:
- containerPort: 80
---
apiVersion: v1
kind: Service
metadata:
name: nginx-svc-2
spec:
ports:
- port: 80
targetPort: 80
protocol: TCP
selector:
name: nginx-2
#-----------------------------# 分割线 #--------------------------------------#
vim ingress-nginx-svc-1.yaml
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: ingress-1
spec:
rules:
- host: bbb.zutuanxue.com
http:
paths:
- path: /
backend:
serviceName: nginx-svc-1
servicePort: 80
---
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: ingress-2
spec:
rules:
- host: ccc.zutuanxue.com
http:
paths:
- path: /
backend:
serviceName: nginx-svc-2
servicePort: 80
创建完成后,我们来查看下一下相关的信息:

为了区分,我们对 Pod 内的 index.html 文件进行了对应的修改,然后我们通过不同的域名进行访问:

Ingress HTTPS 代理访问
创建证书,以及 cert 存储方式:
openssl req -x509 -sha256 -nodes -days 365 -newkey rsa:2048 -keyout tls.key -out tls.crt -subj "/CN=nginxsvc/O=nginxsvc"
kubectl create secret tls tls-secret --key tls.key --cert tls.crt

创建deployment、Service、Ingress Yaml 文件:
vim ingress-nginx-3.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-3
spec:
selector:
matchLabels:
name: nginx-3
replicas: 2
template:
metadata:
labels:
name: nginx-3
spec:
containers:
- name: nginx-3
image: docker.io/nginx
imagePullPolicy: IfNotPresent
ports:
- containerPort: 80
---
apiVersion: v1
kind: Service
metadata:
name: nginx-svc-3
spec:
ports:
- port: 80
targetPort: 80
protocol: TCP
selector:
name: nginx-3
#-----------------------------# 分割线 #--------------------------------------#
vim ingress-nginx-svc-2.yaml
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: ingress-3
spec:
tls:
- hosts:
- ddd.zutuanxue.com
secretName: tls-secret
rules:
- host: ddd.zutuanxue.com
http:
paths:
- path: /
backend:
serviceName: nginx-svc-3
servicePort: 80
创建完成后我们来查看一下效果:


Nginx 进行 BasicAuth
安装 httpd ,因为我们要使用相关的功能模块:
yum -y install httpd
htpasswd -c auth 用户名
kubectl create secret generic basic-auth --from-file=auth

创建 Ingress Yaml 文件:
vim ingress-nginx-svc-3.yaml
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: ingress-with-auth
annotations:
nginx.ingress.kubernetes.io/auth-type: basic
nginx.ingress.kubernetes.io/auth-secret: basic-auth
nginx.ingress.kubernetes.io/auth-realm: 'Authentication Required - tyschool'
spec:
rules:
- host: eee.zutuanxue.com
http:
paths:
- path: /
backend:
serviceName: nginx-svc
servicePort: 80
官方参考文档:https://kubernetes.github.io/ingress-nginx/examples/auth/basic/
创建完成后,我们来看一下相关的信息:

因为是重复使用的 aaa.zutuanxue.com 的信息,所以可以看到,域名是 “eee” 的,但是内容是 “aaa” 的。

Nginx 重定向:
| 名称 | 描述 | 值 |
|---|---|---|
| nginx.ingress.kubernetes.io/rewrite-target | 必须重定向流量的目标URI | 串 |
| nginx.ingress.kubernetes.io/ssl-redirect | 指示位置部分是否仅可访问SSL(当Ingress包含证书时默认为True) | 布尔 |
| nginx.ingress.kubernetes.io/force-ssl-redirect | 即使Ingress未启用TLS,也强制重定向到HTTPS | 布尔 |
| nginx.ingress.kubernetes.io/app-root | 定义Controller必须重定向的应用程序根,如果它在’/'上下文中 | 串 |
| nginx.ingress.kubernetes.io/use-regex | 指示Ingress上定义的路径是否使用正则表达式 | 布尔 |
vim rewrite-ingress-nginx-svc.yaml
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: nginx-rewrite
annotations:
nginx.ingress.kubernetes.io/rewrite-target: https://eee.zutuanxue.com:31434
spec:
rules:
- host: fff.zutuanxue.com
http:
paths:
- path: /
backend:
serviceName: nginx-svc
servicePort: 80
我们来看一下效果:

跳转到了:

十九、Service Ingress的更多相关文章
- Python之路【第十九篇】:爬虫
Python之路[第十九篇]:爬虫 网络爬虫(又被称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本.另外一些不常使用 ...
- WCF技术剖析之二十九:换种不同的方式调用WCF服务[提供源代码下载]
原文:WCF技术剖析之二十九:换种不同的方式调用WCF服务[提供源代码下载] 我们有两种典型的WCF调用方式:通过SvcUtil.exe(或者添加Web引用)导入发布的服务元数据生成服务代理相关的代码 ...
- centos shell编程5 LANMP一键安装脚本 lamp sed lnmp 变量和字符串比较不能用-eq cat > /usr/local/apache2/htdocs/index.php <<EOF重定向 shell的变量和函数命名不能有横杠 平台可以用arch命令,获取是i686还是x86_64 curl 下载 第三十九节课
centos shell编程5 LANMP一键安装脚本 lamp sed lnmp 变量和字符串比较不能用-eq cat > /usr/local/apache2/htdocs/ind ...
- centos MySQL主从配置 ntsysv chkconfig setup命令 配置MySQL 主从 子shell MySQL备份 kill命令 pid文件 discuz!论坛数据库读写分离 双主搭建 mysql.history 第二十九节课
centos MySQL主从配置 ntsysv chkconfig setup命令 配置MySQL 主从 子shell MySQL备份 kill命令 pid文件 discuz!论坛数 ...
- centos LAMP第一部分-环境搭建 Linux软件删除方式,mysql安装,apache,PHP,apache和php结合,phpinfo页面,ldd命令 第十九节课
centos LAMP第一部分-环境搭建 Linux软件删除方式,mysql安装,apache,PHP,apache和php结合,phpinfo页面,ldd命令 第十九节课 打命令之后可以输入: e ...
- service---七月十九号实验
目录 service---七月十九号实验 1 startService.bindService 2 分析生命周期变化 问题思考: service---七月十九号实验 1 startService.bi ...
- 学习笔记:CentOS7学习之十九:Linux网络管理技术
目录 学习笔记:CentOS7学习之十九:Linux网络管理技术 本文用于记录学习体会.心得,兼做笔记使用,方便以后复习总结.内容基本完全参考学神教育教材,图片大多取材自学神教育资料,在此非常感谢MK ...
- Spring Boot 2.X(十九):集成 mybatis-plus 高效开发
前言 之前介绍了 SpringBoot 整合 Mybatis 实现数据库的增删改查操作,分别给出了 xml 和注解两种实现 mapper 接口的方式:虽然注解方式干掉了 xml 文件,但是使用起来并不 ...
- Flask 教程 第十九章:Docker容器上的部署
本文翻译自The Flask Mega-Tutorial Part XIX: Deployment on Docker Containers 这是Flask Mega-Tutorial系列的第十九部分 ...
随机推荐
- 刷题记录:Codeforces Round #734 (Div. 3)
Codeforces Round #734 (Div. 3) 20210920.网址:https://codeforces.com/contest/1551. 编程细节:下标定义不要一会[1,n]一会 ...
- HDU4372 Count the Buildings (+题解:斯特林数)
题面 (笔者翻译) There are N buildings standing in a straight line in the City, numbered from 1 to N. The h ...
- Linux的NIS配置
快速命令 # Server和Client设置NIS域名 nisdomainname nis_server echo 'NISDOMAIN=nis_server' >> /etc/sysco ...
- Golang 随机淘汰算法缓存实现
缓存如果写满, 它必须淘汰旧值以容纳新值, 最近最少使用淘汰算法 (LRU) 是一个不错的选择, 因为你如果最近使用过某些值, 这些值更可能被保留. 你如果构造一个比缓存限制还长的循环, 当循环最后的 ...
- 理解virt、res、shr之间的关系(linux系统篇)
前言 想必在linux上写过程序的同学都有分析进程占用多少内存的经历,或者被问到这样的问题--你的程序在运行时占用了多少内存(物理内存)? 通常我们可以通过top命令查看进程占用了多少内存.这里我们可 ...
- Django ORM 事务和查询优化
一.事务操作 模块 from django.db import transaction 1 开启事务:with transaction.atomic() from django.db import t ...
- 安装krew
地址:https://krew.sigs.k8s.io/docs/user-guide/setup/install/ macOS/Linux Bash or ZSH shells 确保已安装git 2 ...
- MySQL 数据更新过程
文章转载自:https://mp.weixin.qq.com/s?__biz=MzI1MDgwNzQ1MQ==&mid=2247486441&idx=1&sn=fcf93709 ...
- Elasticsearch索引生命周期管理探索
文章转载自: https://mp.weixin.qq.com/s?__biz=MzI2NDY1MTA3OQ==&mid=2247484130&idx=1&sn=454f199 ...
- 多字段特性及配置自定义Analyzer
PUT logs/_doc/1 {"level":"DEBUG"} GET /logs/_mapping POST _analyze { "token ...