Nginx-ingress部署及使用

目录

  • 一 手动部署-官网版
    • 1.1 获取资源
    • 1.2 安装RBAC
    • 1.3 安装基础资源
    • 1.4 安装ingress controllers
    • 1.5 创建ingress controllers service
  • 二 手动部署-github社区版(推荐)
    • 2.1 获取资源
    • 2.2 创建default backend
  • 2.3 确认验证
  • 三 ingress使用
    • 3.1 创建demo环境
    • 3.2 创建ingress策略
    • 3.3 确认验证
  • 四 ingress https使用
  • 4.1 创建证书
    • 4.2 创建secret
    • 4.3 创建TLS ingress策略
    • 4.4 确认验证

一 手动部署-官网版

1.1 获取资源

  1 [root@master01 ~]# mkdir ingress2 [root@master01 ~]# cd ingress/3 [root@master01 ingress]# git clone https://github.com/nginxinc/kubernetes-ingress/4 [root@master01 ingress]# cd kubernetes-ingress/deployments5 [root@master01 ingress]# git checkout v1.7.0

 

1.2 安装RBAC

  1 [root@master01 deployments]# kubectl apply -f common/ns-and-sa.yaml #部署namespace及ServiceAccount2 [root@master01 deployments]# kubectl apply -f rbac/rbac.yaml #部署RBAC角色及权限等

 

1.3 安装基础资源

  1 [root@master01 deployments]# kubectl apply -f common/default-server-secret.yaml

说明:

创建TLS证书和NGINX中默认服务器的secret。默认服务器返回Not Found页面,其中包含404状态代码,用于未定义的所有访问规则请求的返回值。默认包含了一个自签名的证书和生成的密钥。

  1 [root@master01 deployments]# kubectl apply -f common/nginx-config.yaml2 [root@master01 deployments]# kubectl apply -f common/vs-definition.yaml3 [root@master01 deployments]# kubectl apply -f common/vsr-definition.yaml4 [root@master01 deployments]# kubectl apply -f common/ts-definition.yaml #创建虚拟主机5 [root@master01 deployments]# kubectl apply -f common/gc-definition.yaml6 [root@master01 deployments]# kubectl apply -f common/global-configuration.yaml

 

1.4 安装ingress controllers

  1 [root@master01 deployments]# vi daemon-set/nginx-ingress.yaml
  1 ……2           - -global-configuration=$(POD_NAMESPACE)/nginx-configuration3 ……
  1 [root@master01 deployments]# kubectl apply -f daemon-set/nginx-ingress.yaml2 [root@master01 deployments]# kubectl get pods --namespace=nginx-ingress3 NAME READY STATUS RESTARTS AGE4 5 nginx-ingress-cqv2m 1/1 Running 0 43s6 nginx-ingress-fpmbv 1/1 Running 0 43s7 nginx-ingress-kdl9p 1/1 Running 0 43s8 nginx-ingress-lggw9 1/1 Running 0 43s9 nginx-ingress-lnw28 1/1 Running 0 43s10 nginx-ingress-z8rn8 1/1 Running 0 43s

1.5 创建ingress controllers service

[root@master01 deployments]# vi service/nodeport.yaml

复制代码

  1 apiVersion: v12 kind: Service3 metadata:4   name: nginx-ingress5   namespace: nginx-ingress6 spec:7   type: NodePort8   ports:9   - port: 8010     targetPort: 8011     protocol: TCP12     name: http13     nodePort: 3001114   - port: 44315     targetPort: 44316     protocol: TCP17     name: https18     nodePort: 3001219   selector:20     app: nginx-ingress
  1 [root@master01 deployments]# kubectl create -f service/nodeport.yaml2 [root@master01 deployments]# kubectl get svc nginx-ingress --namespace=nginx-ingress3 [root@master01 deployments]# kubectl describe svc nginx-ingress --namespace=nginx-ingress

clipboard

参考文档:https://docs.nginx.com/nginx-ingress-controller/installation/installation-with-manifests/。

二 手动部署-github社区版(推荐)

2.1 获取资源

  1 [root@master01 ~]# mkdir ingress2 [root@master01 ~]# cd ingress/3 [root@master01 ingress]# wget https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-0.32.0/deploy/static/provider/baremetal/deploy.yaml4 [root@master01 ingress]# vi deploy.yaml
  1 ……2 apiVersion: apps/v13 kind: Deployment4 ……5 spec:6   replicas: 37 ……8             - --default-backend-service=$(POD_NAMESPACE)/default-http-backend9 ……10 apiVersion: v111 kind: Service12 ……13   name: ingress-nginx-controller14 ……15 spec:16   type: NodePort17   externalTrafficPolicy: Local18   ports:19     - name: http20       port: 8021       protocol: TCP22       targetPort: http23       nodePort: 8024     - name: https25       port: 44326       protocol: TCP27       targetPort: https28       nodePort: 44329 ……

[root@master01 ingress]# kubectl create -f deploy.yaml

提示:添加默认backend需要等待default-backend创建完成controllers才能成功部署。

2.2 创建default backend

[root@master01 ingress]# vi default-backend.yaml

  1 ---2 apiVersion: apps/v13 kind: Deployment4 metadata:5   name: default-http-backend6   labels:7     app.kubernetes.io/name: default-http-backend8     app.kubernetes.io/part-of: ingress-nginx9   namespace: ingress-nginx10 spec:11   replicas: 112   selector:13     matchLabels:14       app.kubernetes.io/name: default-http-backend15       app.kubernetes.io/part-of: ingress-nginx16   template:17     metadata:18       labels:19         app.kubernetes.io/name: default-http-backend20         app.kubernetes.io/part-of: ingress-nginx21     spec:22       terminationGracePeriodSeconds: 6023       containers:24         - name: default-http-backend25           # Any image is permissible as long as:26           # 1. It serves a 404 page at /27           # 2. It serves 200 on a /healthz endpoint28           image: k8s.gcr.io/defaultbackend-amd64:1.529           livenessProbe:30             httpGet:31               path: /healthz32               port: 808033               scheme: HTTP34             initialDelaySeconds: 3035             timeoutSeconds: 536           ports:37             - containerPort: 808038           resources:39             limits:40               cpu: 10m41               memory: 20Mi42             requests:43               cpu: 10m44               memory: 20Mi45 46 ---47 apiVersion: v148 kind: Service49 metadata:50   name: default-http-backend51   namespace: ingress-nginx52   labels:53     app.kubernetes.io/name: default-http-backend54     app.kubernetes.io/part-of: ingress-nginx55 spec:56   ports:57     - port: 8058       targetPort: 808059   selector:60     app.kubernetes.io/name: default-http-backend61     app.kubernetes.io/part-of: ingress-nginx62 ---
  1 [root@master01 ingress]# kubectl create -f default-backend.yaml

2.3 确认验证

  1 [root@master01 ingress]# kubectl get pods -n ingress-nginx2 [root@master01 ingress]# kubectl get svc -n ingress-nginx

clipboard

参考文档:https://github.com/kubernetes/ingress-nginx/blob/master/docs/deploy/index.md

三 ingress使用

3.1 创建demo环境

  1 [root@master01 ingress]# vi deploy-demo01.yaml #创建第一个用于测试的svc和pod
  1 apiVersion: v12 kind: Service3 metadata:4   name: mydemo01svc5   namespace: default6 spec:7   selector:8     app: mydemo019   ports:10   - name: http11     port: 8012     targetPort: 8013 ---14 apiVersion: apps/v115 kind: Deployment16 metadata:17   name: mydemo01pod18 spec:19   replicas: 320   selector:21     matchLabels:22       app: mydemo0123   template:24     metadata:25       labels:26         app: mydemo0127     spec:28       containers:29       - name: myapp30         image: ikubernetes/myapp:v231         ports:32         - name: httpd33           containerPort: 80
  1 [root@master01 ingress]# echo '<h1>Hello world!</h1>' > index.html #创建Tomcat测试页面2 [root@master01 ingress]# scp index.html root@worker01:/etc/kubernetes/3 [root@master01 ingress]# scp index.html root@worker02:/etc/kubernetes/4 [root@master01 ingress]# scp index.html root@worker02:/etc/kubernetes/5 [root@master01 ingress]# vi deploy-demo02.yaml #创建第二个用于测试的svc和pod
  1 apiVersion: v12 kind: Service3 metadata:4   name: mydemo02svc5   namespace: default6 spec:7   selector:8     app: mydemo029   ports:10   - name: httpd11     port: 808012     targetPort: 808013 14 ---15 apiVersion: apps/v116 kind: Deployment17 metadata:18   name: mydemo02pod19 spec:20   replicas: 321   selector:22     matchLabels:23       app: mydemo0224   template:25     metadata:26       labels:27         app: mydemo0228     spec:29       containers:30       - name: mytomcat31         image: tomcat:932         ports:33         - name: httpd34           containerPort: 808035         volumeMounts:36         - mountPath: "/usr/local/tomcat/webapps/ROOT/index.html"37           name: sample-volume38           readOnly: true39       volumes:40       - name: sample-volume41         hostPath:42           type: File43           path: /etc/kubernetes/index.html
  1 [root@master01 ingress]# kubectl apply -f deploy-demo01.yaml2 [root@master01 ingress]# kubectl apply -f deploy-demo02.yaml3 [root@master01 ingress]# kubectl get pods -o wide4 [root@master01 ingress]# kubectl get svc -o wide

clipboard

3.2 创建ingress策略

  1 [root@master01 ingress]# vi deploy-demo-ingress-http.yaml
  1 apiVersion: networking.k8s.io/v1beta12 kind: Ingress3 metadata:4   name: ingress-mydemo5   namespace: default6   annotations:7     kubernetes.io/ingress.class: "nginx"8 spec:9   rules:10   - host: demo01.odocker.com11     http:12       paths:13       - path:14         backend:15           serviceName: mydemo01svc16           servicePort: 8017   - host: demo02.linuxsb.com18     http:19       paths:20       - path:21         backend:22           serviceName: mydemo02svc23           servicePort: 8080
  1 [root@master01 ingress]# kubectl apply -f deploy-demo-ingress-http.yaml2 [root@master01 ingress]# kubectl get pods -o wide3 [root@master01 ingress]# kubectl get svc -o wide4 [root@master01 ingress]# kubectl get ingress -o wide

clipboard

3.3 确认验证

添加demo01.odocker.com和demo02.odocker.com的解析。分别访问两个地址:

clipboard

参考:https://docs.nginx.com/nginx-ingress-controller/installation/installation-with-manifests/

四 ingress https使用

4.1 创建证书

使用自签名证书,证书创建参考《附008.Kubernetes TLS证书介绍及创建》。

4.2 创建secret

  1 [root@master01 ingress]# openssl req -x509 -nodes -days 3650 -newkey rsa:2048 -keyout demo02.key -out demo02.crt -subj "/CN=demo02.odocker.com"2 [root@master01 ingress]# kubectl create secret generic demo02-tls --from-file=demo02.crt --from-file=demo02.key -n default3 [root@master01 ingress]# kubectl get secret demo02-tls 4 NAME TYPE DATA AGE5 6 demo02-tls Opaque 2 27s

4.3 创建TLS ingress策略

[root@master01 ingress]# vi deploy-demo-ingress-https.yaml

  1 apiVersion: networking.k8s.io/v1beta12 kind: Ingress3 metadata:4   name: ingress-mydemo02-https5   namespace: default6   annotations:7     kubernets.io/ingress.class: "nginx"8 spec:9   tls:10   - hosts:11     - demo02.odocker.com12     secretName: demo02-tls13   rules:14   - host: demo02.odocker.com15     http:16       paths:17       - path:18         backend:19           serviceName: mydemo02svc20           servicePort: 8080

[root@master01 ingress]# kubectl apply -f deploy-demo-ingress-https.yaml

4.4 确认验证

浏览器访问:https://demo02.odocker.com/。

clipboard

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/547634.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

WinRAR(WinZip)压缩与解压实现(C#版Window平台)

本文的原理是借助Windows平台安装的WinRAR(WinZip)实现C#程序的调用&#xff08;注&#xff1a;WinRAR压缩解压WinZip同样适用&#xff09;。 先来看WinRAR&#xff08;WinZip&#xff09;自身的支持调用命令&#xff1a; 压缩命令&#xff1a;a {0} {1} -r 【{0}&#xff1a;…

Docker Consul 安装及使用服务发现

更多配置和原理&#xff1a;https://blog.csdn.net/liuzhuchen/article/details/81913562 从2016年起就开始接触Consul&#xff0c;使用的主要目的就是做服务发现&#xff0c;后来逐步应用于生产环境&#xff0c;并总结了少许使用经验。最开始使用Consul的人不多&#xff0c;为…

Visual Studio扩展工具添加与卸载

简介&#xff1a;vs 作为主流的开发工具之一&#xff0c;其强大的功能无可厚非&#xff0c;但日益增加的需求就使得vs的扩展工具成为优秀dev所必备的利器之一。 Visual Studio扩展工具添加 Visual Studio扩展工具的添加很简单&#xff0c;只需要选择需要的扩展工具然后一般安装…

php充值注入,PHP注入一路小跑

PHP注入一路小跑[ 2006-04-20 14:16:55 | 作者: 承諾 ]字体大小: 大 | 中 | 小很老的了&#xff0c;我是给我自己看的。忘了好多&#xff0c;补习一下‘ or ‘11‘/*‘%23‘ and password‘mypassid-1 union select 1,1,1id-1 union select char(97),char(97),char(97)id1 unio…

Visual Studio 扩展包(.vsix)制作

前言&#xff1a;上篇介绍了 Visual Studio扩展工具添加与卸载&#xff0c;本编要介绍的是Visual Studio 扩展包(.vsix)的制作。 方法&#xff1a; ①、下载并安装Visual Studio 2010 SDK。 vs 2010 开发工具下载SDK安装包官方下载地址&#xff1a;http://www.microsoft.com/d…

CDH6.2 Linux离线安装

1.概述 CDH&#xff0c;全称Clouderas Distribution, including Apache Hadoop。是Hadoop众多分支中对应中的一种&#xff0c;由Cloudera维护&#xff0c;基于稳定版本的Apache Hadoop构建&#xff0c;提供了Hadoop的核心&#xff08;可扩展存储、分布式计算&#xff09;&#…

vs怎么调试php程序,vscode如何调试运行c#程序

前提条件&#xff1a;安装.NET Core SDK安装vscode步骤&#xff1a;安装c#extension插件创建第一个项目&#xff0c;手动创建workspace文件夹在vscode中使用快捷键CTRLKCTRLO选择刚才创建的文件夹使用快捷键CTRLSHIFITY打开控制台使用下面的命令在打开的终端里面创建一个基础的…

Openshift 4.4 静态 IP 离线安装系列:准备离线资源

本系列文章描述了离线环境下以 UPI (User Provisioned Infrastructure) 模式安装 Openshift Container Platform (OCP) 4.4.5 的步骤&#xff0c;我的环境是 VMware ESXI 虚拟化&#xff0c;也适用于其他方式提供的虚拟机或物理主机。离线资源包括安装镜像、所有样例 Image Str…

[转]Install Windows Server 2012 in VMware Workstation

本文转自&#xff1a;http://kb4you.wordpress.com/2012/06/28/install-windows-server-2012-in-vmware-workstation-2/ This procedure describes how to install Windows Server 2012 in VMware Workstation. The following versions are used: VMware Workstation Technolog…

生成文件的另一种思路——共享文件同步

背景 由于网站访问量大&#xff0c;需要多台服务器生成静态文件&#xff0c;然后多机负载&#xff0c;所有生成成了头等大事&#xff0c;一是方式所需&#xff0c;二是生成环节消耗CPU与内存操作太大&#xff0c;经常出问题。常用的生成方式&#xff1a;1.多台服务器&#xff…

php window.onload,tp_window.onload+相应操作

[php]代码库window.οnlοadfunction(){if(0){document.getElementsByName(sex)[1].checkedchecked;}else{document.getElementsByName(sex)[0].checkedchecked;}}class UserAction extends Action{public function index(){$mM(User);$arr$m->select();//var_dump($arr);$t…

Openshift 4.4 静态 IP 离线安装系列:初始安装

Openshift 4.4 静态 IP 离线安装系列&#xff1a;初始安装 上篇文章准备了离线安装 OCP 所需要的离线资源&#xff0c;包括安装镜像、所有样例 Image Stream 和 OperatorHub 中的所有 RedHat Operators。本文就开始正式安装 OCP&#xff08;Openshift Container Platform&…

Vue + Element UI 实现 登陆注册基本demo实例

Vue Element UI 实现权限管理系统 前端篇&#xff08;二&#xff09;&#xff1a;Vue Element 案例 导入项目 打开 Visual Studio Code&#xff0c;File --> add Folder to Workspace&#xff0c;导入我们的项目。 安装 Element 安装依赖 Element 是国内饿了么公司提供…

svn 客户端批量备份数据(图+文)

缘由 商业用途的规则&#xff0c;数据与谨慎便成了不可替代的王道&#xff0c;我今天也说svn&#xff0c;在客户端批量备份数据。 前提 考虑跨平台与易用性&#xff0c;选择批处理&#xff08;.bat&#xff09;&#xff0c;既然是批处理&#xff0c;少不了的便是命令和执行命…

Vue项目 报错TypeError [ERR INVALID ARG TYPE]: The “path“ argument must be of type string

# Vue项目 报错TypeError [ERR INVALID ARG TYPE]: The “path“ argument must be of type string 卡了半天&#xff0c;原来是sassloader版本过高导致的&#xff0c; 解决方法: 回退7.版本npm uninstall sass-loader&#xff08;卸载当前版本&#xff09; npm install sass…

使用python来访问Hadoop HDFS存储实现文件的操作

在调试环境下&#xff0c;咱们用hadoop提供的shell接口测试增加删除查看&#xff0c;但是不利于复杂的逻辑编程查看文件内容www.xiaorui.cc用python访问hdfs是个很头疼的事情。。。。这个是pyhdfs的库import pyhdfs fs pyhdfs.connect("192.168.1.1", 9000) pyhdfs.…

vue+axios请求时设置request header请求头(带上token)

vueaxios请求时设置请求头&#xff08;带上token&#xff09; 1.在vue中&#xff0c;向后台发送请求&#xff0c;不管是get或post&#xff0c;url要带上userId&#xff0c;headers要带上token值&#xff08;本地存储的token&#xff0c;window.localStorage[‘token’]&#x…

LINQ能不能用系列(一)LINQ to Object 效率比对

前言 简介&#xff1a;LINQ&#xff0c;语言集成查询&#xff08;Language INtegrated Query&#xff09;是一组用于c#和Visual Basic语言的扩展。 分类&#xff1a;LINQ to Object, LINQ to XML, LINQ to SQL, LINQ to DataSet&#xff0c;LINQ to ADO.NET。 相关&#xff…

防雷避险手册

为什么80%的码农都做不了架构师&#xff1f;>>> 防雷避险手册 防雷避险手册.pdf 转载于:https://my.oschina.net/tadcat/blog/148504

OpenCV调用YOLOv4进行目标检测

目标检测就是对目标进行动态实时跟踪定位&#xff0c;常见的目标检测算法有 R-CNN、Fast R-CNN、Faster R-CNN、SSD、Yolo 等&#xff0c;其中 Yolo 的速度和精确度都比较高&#xff0c;且只需训练一次&#xff0c;使用起来比较方便。 这里我们就使用官方现成的模型来检测图片…