Ingress暴露服务的方式

方式—∶ Deployment+LoadBalancer模式的Service:

        如果要把ingress部署在公有云,那用这种方式比较合适。用Deployment部署ingress-controller,创建一个type为LoadBalancer的service关联这组pod。大部分公有云,都会为LoadBalancer的service自动创建一个负载均衡器,通常还绑定了公网地址。只要把域名解析指向该地址,就实现了集群服务的对外暴露。

方式二∶DaemonSet+HostNetwork+nodeselector

        用DaemonSet结合nodeselector来部署ingress-controller到特定的node上,然后使用HostNetwork直接把该pod与宿主机node的网络打通,直接使用宿主机的80/433端口就能访问服务。这时,ingress-controller所在的node机器就很类似传统架构的边缘节点,比如机房入口的nginx服务器。该方式整个请求链路最简单,性能相对NodePort模式更好。缺点是由于直接利用宿主机节点的网络和端口,一个node只能部署一个ingress-controllerpod。比较适合大并发的生产环境使用。

方式三∶Deployment+NodePort模式的Service

        同样用deployment模式部署ingres-controller,并创建对应的服务 ,但是type为NodePort,这样,ingress就会暴露在集群节点ip的特定端口上。由于nodeport暴露的端口是随机器口,一般会在前面再搭建一套负载均衡器来转发请求。该方式一般用于宿主机是相对固定的环境ip地址不变的场景。NodePort方式暴露ingress虽然简单方便,但是NodePort多了一层NAT,在请求量级很大时可能对性能会有一定影响

### Kubernetes Ingress 配置 HTTPS 服务教程 在 Kubernetes 中,可以通过配置 Ingress 来实现对外部流量的安全访问,并启用 HTTPS 协议。以下是详细的配置方法和步骤: #### 1. 准备证书 为了支持 HTTPS,需要准备 SSL/TLS 证书及其私钥文件。可以使用 Let's Encrypt 或其他 CA 提供商获取正式证书,或者生成自签名证书用于测试环境。 ```bash openssl req -x509 -nodes -days 365 -newkey rsa:2048 \ -keyout example.key -out example.crt ``` 将生成的 `.crt` 和 `.key` 文件保存以便后续创建 Secret 使用[^4]。 --- #### 2. 创建 TLS Secret TLS 证书需存储为 Kubernetes 的 `secret` 对象,类型应设为 `tls`。这一步骤确保敏感信息被安全地传递给 Ingress Controller。 运行以下命令以创建名为 `cloud-yueyang-city-tls` 的 Secret: ```bash kubectl create secret tls cloud-yueyang-city-tls --cert=example.crt --key=example.key ``` 也可以通过 YAML 文件定义 Secret 并应用: ```yaml apiVersion: v1 kind: Secret metadata: name: cloud-yueyang-city-tls type: kubernetes.io/tls data: tls.crt: <base64-encoded-certificate> tls.key: <base64-encoded-private-key> --- # 应用时解码 crt 和 key 内容至 base64 格式后填入上述字段 ``` 执行如下命令加载配置: ```bash kubectl apply -f secret.yaml ``` --- #### 3. 定义 Ingress 资源 接下来编写一个 Ingress 资源描述符,指定要暴露服务以及绑定先前创建的 TLS Secret。 示例 YAML 文件 (`ingress.yaml`) 如下所示: ```yaml apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: example-ingress annotations: nginx.ingress.kubernetes.io/ssl-redirect: "true" # 强制重定向到 HTTPS spec: tls: - hosts: - example.com secretName: cloud-yueyang-city-tls # 绑定之前创建的 Secret rules: - host: example.com http: paths: - path: / pathType: Prefix backend: service: name: example-service port: number: 80 ``` 在此配置中: - `annotations`: 启用了强制跳转到 HTTPS 的行为。 - `tls`: 明确指定了主机名与对应的 TLS Secret 名称。 - `rules`: 描述了如何路由请求到目标服务。 --- #### 4. 部署 Ingress 资源 利用 `kubectl` 工具提交 Ingress 配置文件: ```bash kubectl apply -f ingress.yaml ``` 确认 Ingress 是否成功部署: ```bash kubectl get ingress ``` 输出类似于下面的内容表示正常工作: ``` NAME CLASS HOSTS ADDRESS PORTS AGE example-ingress None example.com xx.xx.xx.xx 80, 443 1m ``` --- #### 5. 测试 HTTPS 功能 打开浏览器输入 URL 地址 (https://example.com/) ,验证是否能正确返回预期页面内容。如果一切顺利,则表明已成功完成基于 Ingress 的 HTTPS 服务发布流程。 --- ### 注意事项 - **域名解析**: 确保 DNS 解析指向正确的 IP 地址(通常是 LoadBalancer 类型 Service 的公网地址)。 - **Ingress Controller**: 上述例子假设已经安装并启用了 NGINX Ingress Controller。如果没有,请先按照官方指南完成相应设置[^3]。 - **安全性考量**: 生产环境中建议定期更新证书以防泄露风险。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值