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

相关推荐
wuxingge7 小时前
k8s1.30.0高可用集群部署
云原生·容器·kubernetes
网络安全-老纪8 小时前
iOS应用网络安全之HTTPS
web安全·ios·https
志凌海纳SmartX8 小时前
趋势洞察|AI 能否带动裸金属 K8s 强势崛起?
云原生·容器·kubernetes
锅总8 小时前
nacos与k8s service健康检查详解
云原生·容器·kubernetes
BUG弄潮儿9 小时前
k8s 集群安装
云原生·容器·kubernetes
Code_Artist9 小时前
Docker镜像加速解决方案:配置HTTP代理,让Docker学会科学上网!
docker·云原生·容器
颜淡慕潇10 小时前
【K8S系列】kubectl describe pod显示ImagePullBackOff,如何进一步排查?
后端·云原生·容器·kubernetes
Linux运维日记11 小时前
k8s1.31版本最新版本集群使用容器镜像仓库Harbor
linux·docker·云原生·容器·kubernetes
一名路过的小码农12 小时前
ceph 18.2.4二次开发,docker镜像制作
ceph·docker·容器
AI_小站13 小时前
RAG 示例:使用 langchain、Redis、llama.cpp 构建一个 kubernetes 知识库问答
人工智能·程序人生·langchain·kubernetes·llama·知识库·rag