在 k8s 中通过 Ingress 配置域名访问
本帖最后由 0xlavon 于 2024-5-18 19:44 编辑在 Kubernetes 中,通过 Ingress 配置域名访问是一个常见的需求,下面是一个完整的示例步骤,教你如何实现这一目标:
前提条件
1. Kubernetes 集群已经部署并正常运行。
2. 已经安装并配置了 Ingress 控制器(如 NGINX Ingress Controller)。
3. 已经有一个域名,并将其指向了你的 Kubernetes 集群的外部 IP 地址。
步骤一:部署应用
首先,你需要在 Kubernetes 中部署一个应用。例如,这里我们将部署一个简单的 Nginx 应用。
# nginx-deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
spec:
replicas: 2
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:1.17.1
ports:
- containerPort: 80
---
apiVersion: v1
kind: Service
metadata:
name: nginx-service
spec:
selector:
app: nginx
ports:
- protocol: TCP
port: 80
targetPort: 80
type: ClusterIP
应用该文件:
kubectl apply -f nginx-deployment.yaml
步骤二:配置 Ingress 资源
创建一个 Ingress 资源,将你的域名指向上面部署的 Nginx 服务。
# nginx-ingress.yaml
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: nginx-ingress
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /
spec:
rules:
- host: yourdomain.com# 替换为你的域名
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: nginx-service
port:
number: 80
应用该文件:
kubectl apply -f nginx-ingress.yaml
步骤三:验证配置
1. 确认 Ingress 控制器正在运行,并且你的 Ingress 资源已经被控制器识别:
kubectl get pods -n ingress-nginx
kubectl get ingress
2. 确认你的域名 DNS 已正确指向 Ingress 控制器的外部 IP:
nslookup yourdomain.com
3. 在浏览器中访问 `http://yourdomain.com`,你应该能够看到 Nginx 的欢迎页面。
其他注意事项
TLS/SSL:如果你需要启用 HTTPS,可以在 Ingress 资源中配置 TLS:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: nginx-ingress
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /
spec:
tls:
- hosts:
- yourdomain.com
secretName: tls-secret# 预先创建的包含证书的 Secret
rules:
- host: yourdomain.com
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: nginx-service
port:
number: 80
多域名支持:如果你需要支持多个域名,可以在 `rules` 中添加多个规则。
通过这些步骤,你应该能够成功配置 Kubernetes Ingress 以通过域名访问你的应用。如果遇到问题,请检查 Ingress 控制器的日志以获取更多调试信息。
页:
[1]