Kubernetes - 实战:Ingress

本文详细介绍了如何在Kubernetes中部署和配置Ingress资源,包括安装IngressController(如Nginx),配置Ingress规则,支持HTTPS,以及高级特性配置。
摘要由CSDN通过智能技术生成

在 Kubernetes 中,Ingress 是一种资源对象,它提供了集群内部服务对外暴露 HTTP(S) 端点的功能,同时具备 URL 路由、SSL/TLS 终止、重写规则等多种功能。以下是部署和使用 Kubernetes Ingress 的实战步骤:

1. 安装 Ingress Controller

首先,你需要安装一个 Ingress Controller,常见的有 Nginx Ingress Controller、Traefik、Istio Gateway 等。这里以 Nginx Ingress Controller 为例:

# 使用 Helm 安装 Nginx Ingress Controller
helm repo add ingress-nginx https://kubernetes.github.io/ingress-nginx
helm install ingress-nginx ingress-nginx/ingress-nginx --create-namespace --namespace ingress-nginx

# 或者使用 kubectl 直接应用 YAML 文件
kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v1.2.0/deploy/static/provider/cloud/deploy.yaml

2. 配置 Ingress

创建一个 Ingress 对象,该对象会定义哪些 Service 应该如何通过 Ingress Controller 来暴露出去:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: example-ingress
  namespace: default
  annotations:
    nginx.ingress.kubernetes.io/rewrite-target: /
spec:
  rules:
  - host: yourdomain.com
    http:
      paths:
      - path: /service1
        pathType: Prefix
        backend:
          service:
            name: service1
            port:
              name: http
      - path: /service2
        pathType: Prefix
        backend:
          service:
            name: service2
            port:
              number: 8080

此配置将:

  • yourdomain.com/service1 的流量路由到名为 service1 的 Service 的 http 端口。
  • yourdomain.com/service2 的流量路由到名为 service2 的 Service 的 8080 端口。

3. 部署 Ingress 对象

将上述 Ingress 配置保存为 example-ingress.yaml,然后应用到集群中:

kubectl apply -f example-ingress.yaml

4. (可选)配置 SSL/TLS

若需要支持 HTTPS,可以创建 Secret 存储证书和私钥,然后在 Ingress 对象中引用该 Secret:

apiVersion: v1
kind: Secret
metadata:
  name: tls-secret
  namespace: default
data:
  tls.crt: base64-encoded-cert-file-content # 证书内容经过 base64 编码
  tls.key: base64-encoded-private-key-file-content # 私钥内容经过 base64 编码
type: kubernetes.io/tls

# 然后在 Ingress 中添加 tls 配置
---
apiVersion: networking.k8s.io/v1
kind: Ingress
...
spec:
  tls:
  - hosts:
    - yourdomain.com
    secretName: tls-secret
  ...

5. 验证和测试

确保 Ingress Controller 正确部署并运行,然后通过域名访问验证路由是否生效。注意,在实际环境中,你还需确保 DNS 设置正确,将域名指向 Ingress Controller 所在的负载均衡器(如果是 LoadBalancer 类型)或 NodePort。

6. 高级配置

Ingress Controller 还支持很多高级特性,例如路径重写、Header 重写、限流、缓存、HTTPS 强制跳转等,这些都可以通过 Ingress 对象的注解(annotations)来实现,具体配置请参阅相关 Ingress Controller 的文档。

  • 5
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值