找回密码
 立即注册
查看: 795|回复: 0

[域名] 在 k8s 中通过 Ingress 配置域名访问

[复制链接]

36

主题

1

回帖

177

积分

注册会员

积分
177
发表于 2024-5-18 19:43:14 | 显示全部楼层 |阅读模式
本帖最后由 0xlavon 于 2024-5-18 19:44 编辑

在 Kubernetes 中,通过 Ingress 配置域名访问是一个常见的需求,下面是一个完整的示例步骤,教你如何实现这一目标:

前提条件

1. Kubernetes 集群已经部署并正常运行。
2. 已经安装并配置了 Ingress 控制器(如 NGINX Ingress Controller)。
3. 已经有一个域名,并将其指向了你的 Kubernetes 集群的外部 IP 地址。

步骤一:部署应用

首先,你需要在 Kubernetes 中部署一个应用。例如,这里我们将部署一个简单的 Nginx 应用。
  1. # nginx-deployment.yaml
  2. apiVersion: apps/v1
  3. kind: Deployment
  4. metadata:
  5.   name: nginx-deployment
  6. spec:
  7.   replicas: 2
  8.   selector:
  9.     matchLabels:
  10.       app: nginx
  11.   template:
  12.     metadata:
  13.       labels:
  14.         app: nginx
  15.     spec:
  16.       containers:
  17.       - name: nginx
  18.         image: nginx:1.17.1
  19.         ports:
  20.         - containerPort: 80
  21. ---
  22. apiVersion: v1
  23. kind: Service
  24. metadata:
  25.   name: nginx-service
  26. spec:
  27.   selector:
  28.     app: nginx
  29.   ports:
  30.   - protocol: TCP
  31.     port: 80
  32.     targetPort: 80
  33.   type: ClusterIP
复制代码

应用该文件:
  1. kubectl apply -f nginx-deployment.yaml
复制代码

步骤二:配置 Ingress 资源

创建一个 Ingress 资源,将你的域名指向上面部署的 Nginx 服务。
  1. # nginx-ingress.yaml
  2. apiVersion: networking.k8s.io/v1
  3. kind: Ingress
  4. metadata:
  5.   name: nginx-ingress
  6.   annotations:
  7.     nginx.ingress.kubernetes.io/rewrite-target: /
  8. spec:
  9.   rules:
  10.   - host: yourdomain.com  # 替换为你的域名
  11.     http:
  12.       paths:
  13.       - path: /
  14.         pathType: Prefix
  15.         backend:
  16.           service:
  17.             name: nginx-service
  18.             port:
  19.               number: 80
复制代码

应用该文件:

  1. kubectl apply -f nginx-ingress.yaml
复制代码

步骤三:验证配置

1. 确认 Ingress 控制器正在运行,并且你的 Ingress 资源已经被控制器识别:
  1.     kubectl get pods -n ingress-nginx
  2.     kubectl get ingress
复制代码

2. 确认你的域名 DNS 已正确指向 Ingress 控制器的外部 IP:
  1.     nslookup yourdomain.com
复制代码

3. 在浏览器中访问 `http://yourdomain.com`,你应该能够看到 Nginx 的欢迎页面。

其他注意事项


TLS/SSL:如果你需要启用 HTTPS,可以在 Ingress 资源中配置 TLS:
  1.     apiVersion: networking.k8s.io/v1
  2.     kind: Ingress
  3.     metadata:
  4.       name: nginx-ingress
  5.       annotations:
  6.         nginx.ingress.kubernetes.io/rewrite-target: /
  7.     spec:
  8.       tls:
  9.       - hosts:
  10.         - yourdomain.com
  11.         secretName: tls-secret  # 预先创建的包含证书的 Secret
  12.       rules:
  13.       - host: yourdomain.com
  14.         http:
  15.           paths:
  16.           - path: /
  17.             pathType: Prefix
  18.             backend:
  19.               service:
  20.                 name: nginx-service
  21.                 port:
  22.                   number: 80
复制代码

多域名支持:如果你需要支持多个域名,可以在 `rules` 中添加多个规则。

通过这些步骤,你应该能够成功配置 Kubernetes Ingress 以通过域名访问你的应用。如果遇到问题,请检查 Ingress 控制器的日志以获取更多调试信息。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

联系站长|Archiver|手机版|小黑屋|主机论坛

GMT+8, 2025-4-4 09:25 , Processed in 0.066475 second(s), 24 queries .

Powered by 主机论坛 HostSsss.Com

HostSsss.Com

快速回复 返回顶部 返回列表