当前位置: 首页 > wzjs >正文

可以搜索任何网站的浏览器关于做网站书籍

可以搜索任何网站的浏览器,关于做网站书籍,上海网站架设,软文发稿网站目录 一、基本概念 1.Ingress 组成 2. Ingress 工作过程 3. Ingress 工作原理 二、安装 Ingress Nginx Controller 1.下载并安装helm 2. 下载并修改 Ingress Controller 参数 3. 部署 Ingress Nginx Controller 三、 Ingress Nginx 使用入门 1. 创建学习命名空间 2. …

目录

一、基本概念

1.Ingress 组成

2. Ingress 工作过程

3. Ingress 工作原理

二、安装 Ingress Nginx Controller

1.下载并安装helm

2. 下载并修改 Ingress Controller 参数

3. 部署 Ingress Nginx Controller

三、 Ingress Nginx 使用入门

1. 创建学习命名空间

2. 部署 Nginx 服务

3. 暴露为 Service

4. 编写 Ingress 配置

5.  应用配置

6.  测试

四、 域名重定向

1. 编写 redirect.yaml

2. 应用与测试

五、前后端分离

1.  部署后端服务

2. 编写 rewrite.yaml

3. 应用与测试

六、 SSL 配置(自签名证书)

1.生成证书

2.创建证书 Secret

3. 编写 HTTPS Ingress

4. 应用与测试

七、Ingress Nginx 实现基本认证

1. 安装 httpd

2. 创建用户密码文件

3. 生成认证 Secret

4. 编写 Ingress 配置

5. 部署认证 Ingress

6. 测试


一、基本概念

1.Ingress 组成

(1) ingress

Ingress 是 Kubernetes 中的一个 API 对象,主要功能是管理从集群外部到集群服务的 HTTP/HTTPS 路由。它能够依据设定的规则,把外部的流量精准转发到集群内部对应的服务上。通过 Ingress,用户可以配置基于域名和路径的路由规则,实现如基于名称的虚拟主机、SSL 终止、HTTP 重定向等功能。Ingress 本身并不直接处理流量,而是需要 Ingress Controller 来具体实现其定义的路由规则。

(2) ingree-controller

Ingress-controller 是实现 Ingress 功能的关键控制器,必须部署在 Kubernetes 集群里。它会时刻监听 Ingress 资源的变化,以及后端 Service 和 Pod 的状态变化,然后按照 Ingress 中设定的规则来配置负载均衡器(如 Nginx、Traefik 等),从而实现流量的转发。Ingress-controller 是 Ingress 的 “执行者”,没有它,Ingress 中定义的路由规则只是一些静态的配置,无法真正发挥作用。Ingress 和 Ingress-controller 相辅相成,Ingress 定义了路由规则的 “蓝图”,而 Ingress-controller 则负责将这个 “蓝图” 付诸实践,确保外部流量能够按照预期的规则流转到集群内部的服务。

2. Ingress 工作过程

首先,用户通过 Kubernetes API 创建 Ingress 资源,在其中定义了从外部到集群服务的路由规则,比如基于域名、路径等的转发规则。然后,部署在集群中的 Ingress-controller 会持续监听 Ingress 资源的变化,当检测到新的 Ingress 资源创建或者已有 Ingress 资源更新时,Ingress-controller 会读取其中的路由规则。接着,Ingress-controller 根据这些规则配置对应的负载均衡器(如 Nginx 配置文件),同时它也会监听后端 Service 和 Pod 的状态,确保所配置的路由能够指向可用的服务端点。当外部流量(如用户的 HTTP/HTTPS 请求)到达集群边缘时,会被负载均衡器接收,负载均衡器再根据 Ingress-controller 配置的规则,将流量转发到集群内部对应的 Service,进而由 Service 转发到后端的 Pod 上,完成一次请求的处理。

3. Ingress 工作原理

Ingress 的核心工作原理是通过 Ingress 资源定义路由规则,由 Ingress-controller 负责将这些规则转化为实际的流量转发配置,并作用于负载均衡器。从本质上来说,Ingress 是一种声明式的配置,它抽象了集群外部访问集群服务的方式,而 Ingress-controller 则是这种抽象的具体实现者。Ingress-controller 通常会以 Pod 的形式运行在集群中,它通过 Kubernetes 的 API 与集群进行交互,实时获取 Ingress、Service、Pod 等资源的状态信息。当 Ingress 资源中定义的路由规则涉及到域名时,Ingress-controller 会确保外部的 DNS 解析能够将该域名指向负载均衡器的入口地址。当外部流量进入负载均衡器后,负载均衡器就会依据 Ingress-controller 配置的规则(这些规则来自于 Ingress 资源的定义),结合请求的域名、路径等信息,将流量转发到对应的 Service。由于 Service 会通过选择器与后端的 Pod 关联,所以流量最终会到达提供相应服务的 Pod。整个过程中,Ingress-controller 持续监控各种资源的变化,一旦有更新,就会重新配置负载均衡器,以保证路由规则的实时有效性和服务的可用性。

二、安装 Ingress Nginx Controller

1.下载并安装helm

# 下载 Helm 安装包(以 v3.9.4 为例,可替换为最新版本)  
[root@k8s-master ~]# wget https://get.helm.sh/helm-v3.9.4-linux-amd64.tar.gz  # 解压安装包  
[root@k8s-master ~]# tar zxvf helm-v3.9.4-linux-amd64.tar.gz  # 移动 helm 可执行文件到系统路径(确保可全局调用)  
[root@k8s-master ~]# mv linux-amd64/helm /usr/local/bin/  # 验证安装(显示版本即成功)  
[root@k8s-master ~]# helm version  

2. 下载并修改 Ingress Controller 参数

(1) 将Controller 的registry 仓库地址修改为国内的

controller:  name: controller  image:  chroot: false  registry: registry.cn-hangzhou.aliyuncs.com  image: tanzu/controller  tag: "v1.6.4"   #digest: sha256:15be4666c53052484dd2992efacf2f50ea77a78ae8aa21ccd91af6baaa7ea2f  #digestChroot: sha256:0de01e2c316c3ca7847ca13b32d077af7910d07f21a4a82f81061839764f8f1  

(2) 修改 opentelemetry 镜像地址

opentelemetry:  enabled: false  # 国内仓库地址  image: registry.cn-hangzhou.aliyuncs.com/tanzu/opentelemetry:v20230107  containerSecurityContext:  allowPrivilegeEscalation: false  

(3) 将 admissionWebhook 的地址修改为国内的

patchWebhookJob:  securityContext:  allowPrivilegeEscalation: false  resources: {}  patch:  enabled: true  image:  # 国内仓库地址  registry: registry.cn-hangzhou.aliyuncs.com  image: tanzu/kube-webhook-certgen  tag: v20220916-gd32f8c343  # 注释摘要信息  #digest: sha256:543c40f0d93964bc5ab59d93e791f9989963021f1e9e4c9c7b6700b02bfb227b  pullPolicy: IfNotPresent  

(4) 修改 HostNetwork 的值为 true

设置为 true 后,Pod 直接使用宿主机网络命名空间,适合需要绑定宿主机端口(如 80/443 )的场景

controller:  hostNetwork: true  

(5) dnspolicy 设置为 ClusterFirsWitHostNet

与 hostNetwork: true 配合,优先用集群 DNS 解析,集群 DNS 无法解析时 fallback 到宿主机 DNS:

controller:  dnsPolicy: ClusterFirstWithHostNet  

(6) nodeSelector 添加 Ingress:“true”

让 Ingress Controller 仅调度到带有 ingress: "true" 标签的节点(需提前给 k8s-node01 打标签:kubectl label node k8s-node01 ingress=true ):

controller:  nodeSelector:  ingress: true  kubernetes.io/os: linux  

(7) 修改 kind 类型为 DeamonSet

DaemonSet 确保每个符合条件的节点(通过 nodeSelector 筛选)都运行一个 Ingress Controller Pod,适合需要节点级流量接入的场景:

controller:  kind: DaemonSet  

3. 部署 Ingress Nginx Controller

(1)给目标节点打标签

kubectl label node k8s-node01 ingress=true  

(2)创建命名空间

kubectl create ns ingress-nginx  

(3)安装 Ingress Nginx

cd ingress-nginx  
helm install ingress-nginx -n ingress-nginx .  

(4)验证安装

kubectl get po -n ingress-nginx -o wide  

三、 Ingress Nginx 使用入门

1. 创建学习命名空间

kubectl create ns study-ingress  

2. 部署 Nginx 服务

kubectl create deployment nginx --image=nginx:1.7.9 -n study-ingress  

3. 暴露为 Service

kubectl expose deployment nginx --port 80 -n study-ingress  

4. 编写 Ingress 配置

apiVersion: networking.k8s.io/v1  
kind: Ingress  
metadata:  name: nginx-ingress  namespace: study-ingress  
spec:  ingressClassName: nginx  rules:  - host: nginx.test.com  http:  paths:  - backend:  service:  name: nginx  port: {number: 80}  path: /  pathType: ImplementationSpecific  

5.  应用配置

kubectl create -f web-ingress.yaml  

6.  测试

curl http://nginx.test.com  

四、 域名重定向

1. 编写 redirect.yaml

apiVersion: networking.k8s.io/v1  
kind: Ingress  
metadata:  name: nginx-redirect  namespace: study-ingress  annotations:  nginx.ingress.kubernetes.io/permanent-redirect: https://www.baidu.com  
spec:  ingressClassName: nginx  rules:  - host: nginx.redirect.com  http:  paths:  - backend:  service: {name: nginx, port: {number: 80}}  path: /  pathType: ImplementationSpecific  

2. 应用与测试

kubectl create -f redirect.yaml  
# 本地 hosts 绑定 nginx.redirect.com 后访问测试  

五、前后端分离

1.  部署后端服务

kubectl create deployment backend-api --image=nginx:1.7.9 -n study-ingress  
kubectl expose deployment backend-api --port 80 -n study-ingress  

2. 编写 rewrite.yaml

apiVersion: networking.k8s.io/v1  
kind: Ingress  
metadata:  name: backend-api  namespace: study-ingress  annotations:  nginx.ingress.kubernetes.io/rewrite-target: /$2  
spec:  ingressClassName: nginx  rules:  - host: nginx.test.com  http:  paths:  - backend:  service: {name: backend-api, port: {number: 80}}  path: /api-a(/|$)(.*)  pathType: ImplementationSpecific  

3. 应用与测试

kubectl create -f rewrite.yaml  
curl http://nginx.test.com/api-a  

六、 SSL 配置(自签名证书)

1.生成证书

openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout tls.key -out tls.crt -subj "/CN=nginx.test.com"  

2.创建证书 Secret

kubectl create secret tls nginx-tls --key tls.key --cert tls.crt -n study-ingress  

3. 编写 HTTPS Ingress

apiVersion: networking.k8s.io/v1  
kind: Ingress  
metadata:  name: nginx-tls-ingress  namespace: study-ingress  
spec:  ingressClassName: nginx  tls:  - hosts: [nginx.test.com]  secretName: nginx-tls  rules:  - host: nginx.test.com  http:  paths:  - backend: {service: {name: nginx, port: {number: 80}}}  path: /  pathType: ImplementationSpecific  

4. 应用与测试

kubectl apply -f tls-ingress.yaml  
curl -k https://nginx.test.com  # -k 忽略证书校验  

七、Ingress Nginx 实现基本认证

1. 安装 httpd

yum -y install httpd  

2. 创建用户密码文件

htpasswd -c auth zhangsan  
# 按提示输入密码,生成 `auth` 文件  

3. 生成认证 Secret

kubectl create secret generic basic-auth \  
--from-file=auth \  
-n study-ingress  

4. 编写 Ingress 配置

apiVersion: networking.k8s.io/v1  
kind: Ingress  
metadata:  name: ingress-with-auth  namespace: study-ingress  annotations:  nginx.ingress.kubernetes.io/auth-realm: "Please Input Your Username and Password"  nginx.ingress.kubernetes.io/auth-secret: basic-auth  nginx.ingress.kubernetes.io/auth-type: basic  
spec:  ingressClassName: nginx  rules:  - host: auth.test.com  http:  paths:  - backend:  service:  name: nginx  port: {number: 80}  path: /  pathType: ImplementationSpecific  

5. 部署认证 Ingress

kubectl create -f ingress-with-auth.yaml  

6. 测试

访问 http://auth.test.com,弹出认证框,输入设置的密码,验证访问。

http://www.dtcms.com/wzjs/556662.html

相关文章:

  • 电子商务网站有哪些高质量发展
  • 创建网站需要哪些工作ui设计自学教程500集
  • 郑州网站建设网站制作英语网站开发
  • 石家庄模板做网站wordpress怎么编辑网站
  • 如何做阿里巴巴企业网站鲜花网站建设方案
  • 单页网站修改网页制作个人简历网页的步骤
  • 定陶网站建设网站屏蔽右键
  • 国外js网站wordpress 友情链接页
  • 牛网站wordpress 幻灯片手机端字体
  • 网站打不开的解决方法网络教育网站如何做营销推广
  • 网站建设主要包括哪些南通住房和城乡建设部网站首页
  • 注册公司在哪个网站系统免费推广的平台
  • icp网站备案查询无锡网站搜索引擎优化
  • 十堰网站整站优化公司给网站网站做代理
  • 做网站需要什么费用wordpress有什么好玩的插件
  • wordpress建站简单吗网站建设规范
  • 网站建设需求调研问卷洛阳建设银行官方网站
  • 有什么自学网站建设的网站we建站
  • 有自媒体谁还做网站网站程序前台
  • 品牌网站制作流程图珠海企业网站制作费用
  • 简单网站建设视频wordpress注册页面美化
  • 威海市建设局官方网站软件页面设计用哪个软件比较好
  • 商业网站 模板中国电子加工网
  • 企业网站建设与网络营销的关系wordpress添加目录
  • 电商培训网站北京微信公众号定制开发
  • 单位建设网站的作用意义浏览器入口
  • c语言程序设计网站受欢迎的大连网站建设
  • 电子商务网站建设需要做好哪些准备6中国it企业排行榜
  • 万户做网站怎么样卖域名的公司 骗做网站
  • 网站建设公司(深圳信科)双语网站建设定制开发