0xlavon 发表于 2024-5-18 19:43:14

在 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]
查看完整版本: 在 k8s 中通过 Ingress 配置域名访问