1、ingress TLS 配置

我们之前的设置不够安全,我应该要安全的访问443端口。

创建证书和密钥

在这里插入图片描述

创建secret

在这里插入图片描述

vim ingress-https.yaml 编辑文件
[root@server2 ingress]# cat ingress-https.yaml 
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
  name: ingress-myapp
spec:
  tls:
  - hosts:
    - www1.westos.org
    secretName: tls-secret
  rules:
  - host: www1.westos.org
    http:
      paths:
      - path: /
        backend:
          serviceName: myapp-svc
          servicePort: 80

查看ingress信息已配置好TLS

在这里插入图片描述

www1.westos.org被重定向为https://www1.westos.org

在这里插入图片描述

加入-k参数,成功访问加密网址

在这里插入图片描述

2、ingress认证

安装httpd-tools认证生成插件,创建认证用户和密钥,导入到k8s中的secret

在这里插入图片描述
在这里插入图片描述

编辑ingress.yaml文件

[root@server2 ingress]# cat ingress.yaml 
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
  name: ingress-myapp
  annotations:
    nginx.ingress.kubernetes.io/auth-type: basic
    nginx.ingress.kubernetes.io/auth-secret: basic-auth              
    nginx.ingress.kubernetes.io/auth-realm: 'Authentication Required - mj'
spec:
  tls:
  - hosts:
    - www1.westos.org
    secretName: tls-secret
  rules:
  - host: www1.westos.org
    http:
      paths:
      - path: /
        backend:
          serviceName: myapp-svc
          servicePort: 80

创建后查看详细信息,认证模块已经添加

在这里插入图片描述
登陆网页测试,访问www1.westos.org,会自动跳转到https://www1.westos.org,输入认证信息才能进入
在这里插入图片描述

3、ingress地址重写

我们想把默认的发布页地址重写为一个特定的网页,访问页面直接看到内容
编辑ingress.yaml文件
在这里插入图片描述进入myapp镜像中的容器
在这里插入图片描述可以查看,/hostname.html就是/etc/hostname的别名,二者就是一个东西,ingress.yaml文件中写/hostname.html,就等于写/etc/hostname,用来查看主机名
在这里插入图片描述
更新ingress,在主机上访问域名,可以看到www1.westos.org自动地址重写为www1.westos.org/hostname.html,改变了默认发布目录
在这里插入图片描述

现在既有TLS也有地址重写,谁先触发?

先地址重写,再TLS安全访问

在这里插入图片描述www1.westos.org/westos/变为www1.westos.org,怎样做最快捷呢?
更新ingress.yaml文件

apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
  name: ingress-myapp
  annotations:
    #nginx.ingress.kubernetes.io/app-root: /hostname.html
    nginx.ingress.kubernetes.io/rewrite-target: /$2		%抓取第二列输入内容
    nginx.ingress.kubernetes.io/auth-type: basic
    nginx.ingress.kubernetes.io/auth-secret: basic-auth
    nginx.ingress.kubernetes.io/auth-realm: 'Authentication Required - mj'
spec:
  tls:
  - hosts:
    - www1.westos.org
    secretName: tls-secret
  rules:
  - host: www1.westos.org
    http:
      paths:
      - path: /westos(/|$)(.*)		## 自动抓取westos后的内容,即忽略westos  (/|$)表示有没有/都可以
        backend:
          serviceName: myapp-svc
          servicePort: 80

应用ingress后,测试,访问www1.westos.org/westos/自动跳转到www1.westos.org;访问www1.westos.org/westos/hostname.html自动跳转到www1.westos.org/hostname.html,忽略westos

在这里插入图片描述

补充

HTTP与HTTPS的区别:
HTTP:超文本传输协议HTTP协议被用于在Web浏览器和网站服务器之间传递信息,HTTP协议以明文方式发送内容,不提供任何方式的数据加密,如果攻击者截取了Web浏览器和网站服务器之间的传输报文,就可以直接读懂其中的信息,因此,HTTP协议不适合传输一些敏感信息,比如:信用卡号、密码等支付信息。
HTTPS:为了解决HTTP协议的这一缺陷,需要使用另一种协议:安全套接字层超文本传输协议HTTPS,为了数据传输的安全,HTTPS在HTTP的基础上加入了SSL协议,SSL依靠证书来验证服务器的身份,并为浏览器和服务器之间的通信加密。

简单讲HTTPS是HTTP的安全版

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐