第十章 Ingress

一、资料信息

Ingress-Nginx github 地址:https://github.com/kubernetes/ingress-nginx

Ingress-Nginx 官方网站:https://kubernetes.github.io/ingress-nginx/

进入官方下载

wget https://raw.githubusercontent.com/kubernetes/ingress-nginx/master/deploy/static/mandatory.yaml

 

 

 

二、部署 Ingress-Nginx

kubectl apply -f mandatory.yaml

kubectl apply -f service-nodeport.yaml

 

Ingress HTTP 代理访问

deploymentServiceIngress Yaml 文件

apiVersion: extensions/v1beta1

 

kind: Deployment

metadata:

name: nginx-dm

spec:

  replicas: 2

template:

 metadata:

labels:

 name: nginx

 spec:

 containers:

 - name: nginx

 image: wangyanglinux/myapp:v1

 imagePullPolicy: IfNotPresent

 ports:

 - containerPort: 80

 

 

apiVersion: v1

kind: Service

metadata:

 name: nginx-svc

spec:

 ports:

 - port: 80

 targetPort: 80

 protocol: TCP

 selector:

 name: nginx

 

 

apiVersion: extensions/v1beta1

kind: Ingress

metadata:

   name: nginx-test

spec:

 rules:

- host: www1.atguigu.com

 http:

paths:

 - path: /

backend:

 serviceName: nginx-svc

 servicePort: 80

 

 

三、Ingress HTTPS 代理访问

创建证书,以及 cert 存储方式

openssl req -x509 -sha256 -nodes -days 365 -newkey rsa:2048 -keyout tls.key -out tls.crt -subj"/CN=nginxsvc/O=nginxsvc"

kubectl create secret tls tls-secret --key tls.key --cert tls.crt

deploymentServiceIngress Yaml 文件

apiVersion: extensions/v1beta1

kind: Ingress

metadata:

 name: nginx-test

spec:

 tls:

- hosts:

 - foo.bar.com

 secretName: tls-secret

 rules:

- host: foo.bar.com

 http:

paths:

- path: /

backend:

serviceName: nginx-svc

servicePort: 80

 

四、Nginx 进行 BasicAuth

yum -y install httpd

htpasswd -c auth foo

kubectl create secret generic basic-auth --from-file=auth

 

apiVersion: extensions/v1beta1

kind: Ingress

metadata:

  name:ingress-with-auth

 annotations:

 nginx.ingress.kubernetes.io/auth-type: basic

 nginx.ingress.kubernetes.io/auth-secret: basic-auth

 nginx.ingress.kubernetes.io/auth-realm: 'Authentication Required - foo'

spec:

 rules:

 - host: foo2.bar.com

 http:

 paths:

 - path: /

backend:

serviceName: nginx-svc

 servicePort: 80

 

五、Nginx 进行重写

 

 

apiVersion: extensions/v1beta1

kind: Ingress

metadata:

  name: nginx-test

  annotations:

  nginx.ingress.kubernetes.io/rewrite-target: http://foo.bar.com:31795/hostname.html

spec:

rules:

- host: foo10.bar.com

   http:

     paths:

     - path: /

backend:

serviceName: nginx-svc

    servicePort: 80

链接:https://www.bilibili.com/video/av66617940/?p=35

 

转载于:https://www.cnblogs.com/LiuQizhong/p/11579924.html

<think>好的,我需要回答用户关于Kubernetes Ingress的使用与配置的问题。首先,我需要整理用户提供的引用资料,确保信息准确。用户提到了几个引用,其中引用[1]和[2]说明了Nginx作为Ingress控制器的优势,引用[3]和[5]提供了安装指南和官网链接,引用[4]是关于配置文件的示例。 首先,我应该解释Ingress的基本概念,说明它在Kubernetes中的作用,比如路由外部流量到集群内部服务。然后,需要介绍Nginx Ingress控制器的安装步骤,可能包括通过helm或kubectl安装,这部分可以参考引用[3]和[5]的安装指南。 接下来,配置部分需要详细说明如何编写Ingress资源文件,包括HTTP和HTTPS的配置。用户提供的引用[4]展示了删除和应用配置文件的命令,这里可以结合示例代码块,展示YAML文件的结构,特别是TLS部分的配置。 然后,需要提到一些高级配置,比如路径重写和负载均衡策略,这些是用户可能关心的优化和使用技巧。同时,注意事项部分要强调版本兼容性和监控的重要性,确保用户配置时不会遇到常见问题。 最后,生成相关问题时要覆盖概念、安装、配置和优化等方面,确保问题能引导用户进一步学习。需要检查所有LaTeX格式是否正确,行内公式用$...$,独立公式用$$...$$,但当前内容可能不需要数学公式,所以可能不需要添加。同时,确保回答结构清晰,步骤明确,引用标识正确放置在相关段落末尾。</think>### Kubernetes Ingress 使用与配置指南 #### 1. Ingress 核心概念 Ingress 是 Kubernetes 中管理外部访问的核心资源,通过定义路由规则将外部流量分发到集群内的服务。其核心组件包括: - **Ingress Controller**:实际执行流量路由的组件(如 Nginx Ingress Controller)[^2] - **Ingress 资源对象**:声明式路由规则的 YAML 配置 - **Service**:集群内部服务暴露端点 #### 2. Nginx Ingress 控制器安装 **通过 Helm 安装(推荐方式):** ```bash helm repo add ingress-nginx https://kubernetes.github.io/ingress-nginx helm install ingress-nginx ingress-nginx/ingress-nginx --namespace ingress-nginx ``` **验证安装:** ```bash kubectl get pods -n ingress-nginx # 应显示 Running 状态的控制器 Pod ``` #### 3. 基础配置示例 **HTTP 路由配置(ingress-http.yaml):** ```yaml apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: web-ingress spec: ingressClassName: nginx rules: - host: example.com http: paths: - path: / pathType: Prefix backend: service: name: web-service port: number: 80 ``` **HTTPS 配置(ingress-https.yaml):** ```yaml apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: secure-ingress spec: tls: - hosts: - secure.example.com secretName: tls-secret # 需提前创建 TLS 证书 rules: - host: secure.example.com http: paths: - path: / backend: service: name: secure-service port: number: 443 ``` #### 4. 高级配置技巧 - **路径重写**:通过注解实现 ```yaml annotations: nginx.ingress.kubernetes.io/rewrite-target: /$2 ``` - **负载均衡策略**:配置会话保持 ```yaml annotations: nginx.ingress.kubernetes.io/affinity: "cookie" ``` - **速率限制**:保护后端服务 ```yaml annotations: nginx.ingress.kubernetes.io/limit-rps: "100" ``` #### 5. 操作命令备忘 ```bash # 应用配置 kubectl apply -f ingress-http.yaml # 查看 Ingress 状态 kubectl get ingress # 查看控制器日志 kubectl logs -n ingress-nginx <controller-pod-name> ``` #### 6. 注意事项 1. **版本兼容性**:确保 Ingress 资源版本与 Kubernetes 集群版本匹配[^5] 2. **证书管理**:推荐使用 Cert-manager 自动管理 TLS 证书 3. **监控配置**:集成 Prometheus 监控流量指标 4. **性能调优**:根据流量规模调整 Nginx 的 worker_processes 参数[^2]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值