[单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访问域名,页面如下:

相关推荐
2501_941881404 小时前
Kubernetes 容器集群资源调度与弹性扩容高可用架构在互联网业务实战经验总结
云原生·容器·kubernetes
究極の法則に通じた野犬4 小时前
k8s设计理念-k8s中哪些服务要部署成StatefulSet哪些部署成Deployment
云原生·容器·kubernetes
wuxingge4 小时前
k8s集群误删node节点,怎么添加回去
云原生·容器·kubernetes
观测云8 小时前
Kubernetes CRD 方式配置容器日志采集最佳实践
容器·kubernetes·日志分析
赖small强12 小时前
【Linux 网络基础】libwebsockets HTTPS 服务端实现机制详解
linux·网络·https·tls·libwebsockets
运维-大白同学14 小时前
2025最全面开源devops运维平台功能介绍
linux·运维·kubernetes·开源·运维开发·devops
布朗克16814 小时前
HTTP 与 HTTPS 的工作原理及其区别
http·https
tianyuanwo18 小时前
多平台容器化RPM构建流水线全指南:Fedora、CentOS与Anolis OS
linux·运维·容器·centos·rpm
赖small强19 小时前
【Linux 网络基础】HTTPS 技术文档
linux·网络·https·tls
敲上瘾20 小时前
【探索实战】:Kurator分布式统一应用分发平台的全面解析与实践指南
分布式·容器·kubernetes·serverless