You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求生成EKS部署裸nginx容器所需Kubernetes清单的脚本

实现方案

核心思路

  • 一共需要生成三类Kubernetes资源:承载裸Nginx容器的Deployment、端口映射为80的Service、绑定example.nginx.com域名的Ingress规则
  • EKS环境部署需要提前满足两个前置条件:集群已安装AWS Load Balancer Controller(EKS默认不会预装)、example.nginx.com的DNS解析可配置指向Ingress对应的AWS ALB地址
  • 脚本采用Shell实现,支持直接输出yaml清单到本地文件,也支持直接调用kubectl部署到集群

可直接使用的生成脚本

#!/bin/bash
# 输出到本地文件执行:bash generate_nginx_eks.sh > nginx-eks-deploy.yaml
# 直接部署到EKS集群执行:bash generate_nginx_eks.sh | kubectl apply -f -

cat <<EOF
# Nginx Deployment(裸容器无额外配置)
apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-bare
  namespace: default
  labels:
    app: nginx
spec:
  replicas: 2
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:stable-alpine
        ports:
        - containerPort: 80
        resources:
          requests:
            cpu: 100m
            memory: 128Mi
          limits:
            cpu: 200m
            memory: 256Mi
---
# Nginx Service 端口配置为80
apiVersion: v1
kind: Service
metadata:
  name: nginx-service
  namespace: default
  labels:
    app: nginx
spec:
  type: ClusterIP
  ports:
  - port: 80
    targetPort: 80
    protocol: TCP
  selector:
    app: nginx
---
# EKS环境专用Ingress规则
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: nginx-ingress
  namespace: default
  annotations:
    # AWS Load Balancer Controller 专用注解,可按需调整
    alb.ingress.kubernetes.io/scheme: internet-facing
    alb.ingress.kubernetes.io/target-type: ip
    alb.ingress.kubernetes.io/listen-ports: '[{"HTTPS":443}, {"HTTP":80}]'
    # 如需强制HTTP跳HTTPS可开启下方注解
    # alb.ingress.kubernetes.io/ssl-redirect: "443"
spec:
  ingressClassName: alb # 需和集群内AWS Load Balancer Controller配置的ingress class名称一致
  rules:
  - host: example.nginx.com
    http:
      paths:
      - path: /
        pathType: Prefix
        backend:
          service:
            name: nginx-service
            port:
              number: 80
EOF

EKS部署注意事项

  • 部署前确认集群内的AWS Load Balancer Controller运行正常,Ingress配置的ingressClassName和集群实际配置匹配
  • 部署完成后等待AWS ALB资源创建完成,将example.nginx.com的DNS记录解析到ALB的公网地址即可正常访问
  • 如果需要配置HTTPS访问,可在Ingress的annotations中添加alb.ingress.kubernetes.io/certificate-arn: <你的AWS ACM证书ARN>,证书需要和EKS集群属于同一AWS区域

内容的提问来源于stack exchange,提问作者Melissa Jenner

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 03:06:01