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,一经查实,立即删除!

相关文章

转:数字对讲机常识介绍

一、国内外数字对讲机发展动态 从整个移动通信的应用来划分&#xff0c;通信网络可分为公众移动通信和专业移动通信两大类&#xff0c;其中公众移动通信就是社会上广大消费者正在使用的2G、3G移动手机&#xff0c;它是为广大公众提供移动通信服务的&#xff0c;任何人都有权购买…

mac 启动php70 fpm,mac 启动php-fpm

Mac OS X 10.9已经自带有php-fpm&#xff0c;对于有干净系统强迫症的人&#xff0c;或者原装控来说&#xff0c;用brewhome重装一遍总感觉心里会有小兔子&#xff0c;下面把原装的php-fpm配置起来。直接运行&#xff0c;有报错找不到配置文件。$ php-fpm[11-Jan-2014 16:03:03]…

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;只需要选择需要的扩展工具然后一般安装…

python代码风格检查工具──pylint

pylint是一个python代码检查工具&#xff0c;可以帮助python程序员方便地检查程序代码的语法和风格&#xff0c;通过这个工具&#xff0c;可以使你的python代码尽量保持完美&#xff0c;哈哈。具体可以检查什么东西呢&#xff1f;比如你写了 from XXX import * 了&#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…

php5..6中文帮助,6.5. IDE integration

IDE 集成理想情况下&#xff0c;应用程序代码不应直接使用DI容器&#xff1a;应首选依赖项注入。但是&#xff0c;在某些情况下&#xff0c;可能会直接调用容器&#xff1a;编写根应用程序类(前端控制器等)或更通用的框架时编写工厂时维护或迁移旧版应用程序时编写功能测试时..…

公主病 - 百度百科

http://wapbaike.baidu.com/view/287227.htm?ssid0&from844b&uid3151E6C0905477A13653132D762BB6FB&pusz%401320_1001%2Cta%40iphone_2_4.1_3_537%2Cusm%403&bd_page_type1&tjXk_1_0_10_title

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&…

【JavaScript学习】JavaScript对象创建

1.最简单的方法&#xff0c;创建一个对象&#xff0c;然后添加属性 1 var person new Object();2 person.age 23;3 person.name "David";4 person.job "student";5 person.sayName function ()6 {7 alert(this.name);8 };9 10 //类似于定义键…

C# ArrayList 与 string、string[] 的转换

1、ArrarList 转换为 string[] ArrayList list new ArrayList(); list.Add("aaa"); list.Add("bbb"); //转换成数组 string[] arrString (string[])list.ToArray(typeof( string)); 2、string[] 转换为 ArrarList ArrayList list new ArrayList(new st…

oracle不能访问管理页面,Oracle Grid Control CONSOLE无法打开9i数据库的管理维护页面...

今天在Solaris平台的测试环境上安装了Oracle Grid control 10.2.0.1&#xff0c;安装及配置完成后&#xff0c;发现在登录9i数据库的tablespace维护页面时&#xff0c;页面处于长时间的等待状况。最终返回错误信息。该页面在打开其他较小的数据库的页面时&#xff0c;均能正常访…