[单master节点k8s部署]36.ingress 配置https(三)

目前我们的tomcat服务在浏览器上通过http来访问。为了提升安全性,我们将配置TLS secret 证书,从而可以进行https访问。

一对TLS密钥包括一个证书(trs.crt)和一个私钥,证书是公钥证书,用于加密数据并标识服务器,而服务器的私钥,用于解密通过公钥加密的数据,并用于签署服务器发送给客户端的数据。

当我想要配置我的ingress 资源从而支持https访问时,Ingress Controller 需要一个证书和私钥来处理 TLS 握手和加密通信。

创建TLS证书
复制代码
openssl genrsa -out tls.key 2048
openssl req -new -x509 -key tls.key -out tls.crt -subj 
 /C=CN/ST=Beijing/L=Beijing/O=DevOps/CN=tomcat.lucky.com

第一句话用于生成一个rsa格式的密钥,保存在tls.key文件中。

第二句话生成一个 自签名 X.509 证书 ,而不是生成一个证书签名请求(CSR)。X.509 是公钥证书的标准格式,广泛用于 SSL/TLS 协议中。使用 -x509 会直接生成证书,而不是请求证书颁发机构(CA)签署的证书。这个证书是配套tls.key的内容。将生成的自签名证书保存到 tls.crt 文件中。

-subj "/C=CN/ST=Beijing/L=Beijing/O=DevOps/CN=tomcat.lucky.com"用于指定密钥的主题,

  • C=CNC 表示 国家名称 (Country)。在这个例子中,CN 代表中国 (China)。
  • /ST=BeijingST 表示 省/州 (State or Province)。这里指定为 Beijing,表示北京市。
  • /L=BeijingL 表示 城市名称 (Locality)。这里同样为 Beijing
  • /O=DevOpsO 表示 组织名称 (Organization)。在这个例子中,DevOps 代表组织的名称。
  • /CN=tomcat.lucky.comCN 表示 通用名称 (Common Name)。这是最重要的字段,通常用于指定证书的域名。在这个例子中,tomcat.lucky.com 是证书所保护的域名
生成secret文件
复制代码
[root@master 35ingress]# kubectl create secret tls nginx-ingress-secret --cert=tls.crt --key=tls.key
secret/nginx-ingress-secret created
您在 /var/spool/mail/root 中有新邮件
[root@master 35ingress]# kubectl get secret
NAME                   TYPE                DATA   AGE
nginx-ingress-secret   kubernetes.io/tls   2      6s
[root@master 35ingress]# kubectl describe secret nginx-ingress-secret
Name:         nginx-ingress-secret
Namespace:    default
Labels:       <none>
Annotations:  <none>

Type:  kubernetes.io/tls

Data
====
tls.crt:  1245 bytes
tls.key:  1675 bytes
创建ingress

这个ingress是有tls的ingress,用来代替之前的ingress

复制代码
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: ingress-tomcat-tls
  namespace: default
  annotations:
    kubernetes.io/ingress.class: "nginx"
spec:
  tls:
  - hosts:
    - tomcat.lucky.com
    secretName: nginx-ingress-secret  # 指定使用的 TLS Secret
  rules:
  - host: tomcat.lucky.com
    http:
      paths:
      - pathType: Prefix
        path: /
        backend:
          service:
            name: tomcat  # 服务名称
            port:
              number: 8080  # 服务端口

[root@master 35ingress]# kubectl get ingress
NAME                 CLASS   HOSTS              ADDRESS           PORTS     AGE
ingress-myapp        nginx   tomcat.lucky.com                     80        11s
ingress-tomcat-tls   nginx   tomcat.lucky.com   192.168.244.129   80, 443   103s

可以看到有tls的ingress还开启了443服务。

在 Kubernetes 的 Ingress 资源中,当你配置了 TLS 时,Ingress 控制器会自动为你启用 443 端口以处理 HTTPS 请求。这是因为 TLS (Transport Layer Security) 是用于加密 HTTP 请求的协议,而 HTTPS(即 HTTP over TLS)默认使用 443 端口来传输加密的流量。

可以看到用https访问域名,页面如下:

相关推荐
yuguo.im11 小时前
Docker 两大基石:Namespace 和 Cgroups
运维·docker·容器
会飞的土拨鼠呀11 小时前
docker部署 outline(栗子云笔记)
笔记·docker·容器
没有bug.的程序员12 小时前
高频IO服务优化实战指南
java·jvm·spring·容器
lisanmengmeng13 小时前
docker 方式安装部署禅道zentao(五)
运维·docker·容器
露临霜15 小时前
Docker安装nginx
nginx·docker·容器
CAFEBABE 3417 小时前
安装完docker之后怎么使用
运维·docker·容器
测试人社区—小叶子18 小时前
测试开发面试高频“灵魂八问”深度解析与应答策略
网络·人工智能·测试工具·云原生·容器·面试·职场和发展
VermiliEiz19 小时前
使用二进制文件方式部署kubernetes(1)
kubernetes·云计算
kevin_水滴石穿20 小时前
centos7 离线安装docker-compose(纯绿色安装)
运维·docker·容器