【转帖】kubernetes 部署ingress
kubernetes 部署ingress
https://www.cnblogs.com/dingbin/p/9754993.html 明天尝试一下 之前的文档里面一直没有提 需要改host文件 我有点懵逼了。
kubernetes Ingess 是有2部分组成,Ingress Controller 和Ingress服务组成,常用的Ingress Controller 是ingress-nginx,工作的原理是:
Ingress Controller 会动态感知集群中的Ingress的规则变化,然后读取,动态生成Nginx的配置文件,最后注入到运行nginx的pod的中,然后会自动reload,配置生效。
用kubernetes Ingress 是由于它是7层调度,可以直接卸载https会话,代理的后端的pod可以直接使用明文的http协议。
而Service NodePort得类型,是4层得调度,做不到这点,然而现在https是一种趋势,所以在kubernetes 对外暴露服务得时候我们还是要选择Ingress。
下面我们来看下Ingress得部署:
首先创建一个文件夹专门放置Igress得yaml得文件,mkdir ingress
创建后端代理得pod得yaml文件,如下:

apiVersion: v1
kind: Service
metadata:
name: myapp-ding
namespace: default
spec:
selector:
app: myapp
release: ding
ports:
- name: http
port: 80
targetPort: 80
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: myapp-ding
namespace: default
spec:
replicas: 3
selector:
matchLabels:
app: myapp
release: ding
template:
metadata:
labels:
app: myapp
release: ding
spec:
containers:
- name: myapp-ding
image: ikubernetes/myapp:v2
ports:
- name: http
containerPort: 80

pod得yaml文件一定要有Service,
部署Ingress Controller
在kubernetes 得github上下载ingress得yaml文件,地址:https://github.com/kubernetes/ingress-nginx/tree/master/deploy
ingress得所需得文件:configmap.yaml ,namespace.yaml,rbac.yaml,tcp-services-configmap.yaml,with-rbac.yaml
同时在ingress得官方文档中介绍到,需要下载service-nodeport.yaml文件,这个文件得目的是为Ingress Controller 接入外部得流量,如果没有这个文件,是无法通过
外部访问得。这个文件其实就是为Ingress Controller 创建一个NodePort 类型得Service,这里我稍微修改了下service-nodeport.yaml,如下:

apiVersion: v1
kind: Service
metadata:
name: ingress-nginx
namespace: ingress-nginx
labels:
app.kubernetes.io/name: ingress-nginx
app.kubernetes.io/part-of: ingress-nginx
spec:
type: NodePort
ports:
- name: http
port: 80
targetPort: 80
protocol: TCP
nodePort: 30080 添加了这行,固定下外部访问的端口
- name: https
port: 443
targetPort: 443
protocol: TCP
nodePort: 30443 添加了这行
selector:
app.kubernetes.io/name: ingress-nginx
app.kubernetes.io/part-of: ingress-nginx

开始安装,应用namespace.yaml kubectl apply -f namespace.yaml
其他得yaml为文件可以一起应用 cd ingress ,kubectl apply -f . 应用所有的文件


Ingress Controller 部署部署好了,现在要写ingress的规则,注入到ingress-nginx pod的配置文件中
vim ingress-myapp.yaml

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: ingress-ding
namespace: default
annotations:
kubernetes.io/ingress.class: "nginx" 这里是说明ingress的类型使用的nginx,一定要说明这点,否则ingress Controller 不知道是配置成那种类型的配置文件
spec:
rules:
- host: test.ding.com 使用的是虚拟主机的来访问的
http:
paths:
- path:
backend:
serviceName: myapp-ding 代理的后端的pod的service,通过这个service来生成nginx的upstrm
servicePort: 80

kubectl apply -f ingress-myapp.yaml

访问的客户端的机器配置下域名解析

现在我们可以通过test.ding.com:30080来访问到后端代理的pod了

这里是使用http访问的,如果要用https,首先我们要创建一个证书,步骤如下

[root@master ingrss]# openssl genrsa -out tls.key 2048 Generating RSA private key, 2048 bit long modulus .........................................................................................................................................................................................................................................................+++ ..............................................................+++ e is 65537 (0x10001) [root@master ingrss]# openssl req -new -x509 -key tls.key -out tls.crt You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter '.', the field will be left blank. ----- Country Name (2 letter code) [XX]:CN State or Province Name (full name) []:Hefei Locality Name (eg, city) [Default City]:Hefei Organization Name (eg, company) [Default Company Ltd]:test Organizational Unit Name (eg, section) []:test Common Name (eg, your name or your server's hostname) []:test.ding.com Email Address []:

证书生成好了,然后把证书转成secret,
kubectl create secret tls ding-ingress-secret --cert=tls.crt --key=tls.key

修改下 ingress-myapp.yaml 加入刚刚添加的secret,修改后的文件如下:

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: ingress-ding
namespace: default
annotations:
kubernetes.io/ingress.class: "nginx"
spec:
tls: 添加了tls这一段
- hosts:
- test.ding.com
secretName: ding-ingress-secret 这里结束
rules:
- host: test.ding.com
http:
paths:
- path:
backend:
serviceName: myapp-ding
servicePort: 80

现在我们可以通过https访问了

总结下,部署ingress,首先要部署下后端代理的pod,这组pod必须要有service,service的作用是用于ingress规则代理到后端pod的,通俗点就是这个service仅仅是给这组pod分组的,没有其他的左右。接着部署Ingress Controller,最后是写ingress的规则,让Ingress Controller 发现注入到ingress-nginx的pod中生成配置文件
最后补一张ingress-nginx pod里nignx的配置文件的图:
kubectl exec -n ingress-nginx -it nginx-ingress-controller-6dc8769b5-zljbw -- /bin/bash

好了,ingress部署完成,哪里有不对的地方希望各位朋友指出,大家相互学习!
【转帖】kubernetes 部署ingress的更多相关文章
- kubernetes 部署ingress
kubernetes Ingess 是有2部分组成,Ingress Controller 和Ingress服务组成,常用的Ingress Controller 是ingress-nginx,工作的原理 ...
- kubernetes nginx ingress controller部署
Kubernetes nginx ingress controller部署 1.下载kubernetes nginx的yaml文件 Wget https://raw.githubusercontent ...
- Kubernetes 部署 Nginx Ingress Controller 之 nginxinc/kubernetes-ingress
更新:这里用的是 nginxinc/kubernetes-ingress ,还有个 kubernetes/ingress-nginx ,它们的区别见 Differences Between nginx ...
- [转帖]Kubernetes的部署策略
Kubernetes的部署策略,你常用哪种? https://www.sohu.com/a/318731931_100159565?spm=smpc.author.fd-d.78.1574127778 ...
- [系统集成] 基于Kubernetes 部署 jenkins 并动态分配资源
基于kubernetes 部署 jenkins master 比较简单,难点是为 jenkins 动态分配资源.基于kubernetes 为 jenkins 动态分配资源需要实现下述功能: 资源分配: ...
- kubernetes之ingress及ingress controller
什么是ingress Ingress是授权入站连接到达集群服务的规则集合. 从外部流量调度到nodeprot上的service 从service调度到ingress-controller ingres ...
- nuclio kubernetes 部署
一张参考架构图: 从图中可以看到nuclio可以运行到docker 以及kubernetes中 提供了kubernetes 部署的脚本 安装 创建命名空间 kubectl create namespa ...
- kubernetes 之ingress
www.cnblogs.com/hellojackyleon/p/8420911.html apiVersion: extensions/v1beta1 kind: Deployment metada ...
- 使用traefik作为kubernetes的ingress
目录 说明 部署 创建一个独立的命名空间 配置rbac授权 配置secret 创建一个configmap用于存放traefik的配置文件 配置traefik的deployment文件 配置服务 通过p ...
随机推荐
- 我们一起分析一下这个刚刚修复的RDP漏洞CVE-2019-0708
写在前面的话 在微软今年五月份的漏洞更新安全公告中,提到了一个跟远程桌面协议(RDP)有关的漏洞.我们之所以要在这里专门针对这个漏洞进行分析,是因为这个漏洞更新涉及到Windows XP以及其他多个W ...
- XAMPP+TestLink
XAMPP(Apache+MySQL+PHP+PERL)是一个功能强大的建站集成软件包.这个软件包原来的名字是 LAMPP,但是为了避免误解,最新的几个版本就改名为 XAMPP 了.它可以在Windo ...
- Vue导出ZIP
Export2Zip /* eslint-disable */ require('script-loader!file-saver'); import JSZip from 'jszip' expor ...
- 【原创】aws s3 lambda缩略图生成
参考资料: https://github.com/sagidm/s3-resizer https://aws.amazon.com/cn/blogs/compute/resize-images-on- ...
- 利用 Memory Dump Diagnostic for Java (MDD4J) 分析内存管理问题
利用 Memory Dump Diagnostic for Java (MDD4J) 分析内存管理问题(2) 启动和理解 MDD4J[size=1.0625]为了充分理解如何使用 MDD4J,您需要了 ...
- Java基础 println print 实现输出换行
JDK :OpenJDK-11 OS :CentOS 7.6.1810 IDE :Eclipse 2019‑03 typesetting :Markdown code ...
- 一起入门Python1之python的介绍
之前在某安全论坛发表的一些关于python的文章,但是由于一些问题一直没有完成,那个论坛也歇菜了.放到这儿来吧. 说句默心掏肺的话,我也是才学习python.之所以要这个版主,是为了锻炼自己,也是为了 ...
- Dart 自增++自减--和循环语句
void main(){ /* ++ -- 表示自增 自减 1 在赋值运算里面 如果++ -- 写在前面 这时候先运算 再赋值,如果++ --写在后面 先赋值后运行运算 var a=10; var b ...
- RabbitMQ 入门教程(PHP版) 第三部分:发布/订阅(Publish/Subscribe)
发布/订阅 在上篇第二部分教程中,我们搭建了一个工作队列.每个任务之分发给一个工作者(worker).在本篇教程中,我们要做的之前完全不一样——分发一个消息给多个消费者(consumers).这种模式 ...
- Laya的屏幕适配,UI组件适配
参考: 屏幕适配API概述 版本2.1.1.1 目录 一 适配模式 二 UI组件适配 一 适配模式 基本和白鹭的适配模式一样. Laya官方也推荐了竖屏使用fiexedwidth,横屏使用fixedh ...