对于k8s传统的svc来说 它仅支持4层代理,如果遇到7层代理的话,是没有办法去实现的
k8s官方在1.11中推出了ingress api接口,通过ingress达到7层代理的效果
对于ingress来说,必须要绑定一个域名,因为它是基于7层代理的
 
资料信息 
Ingress-Nginx github 地址:httos://github.com/kubernetes/ingress-nginx 
Ingress-Nginx 官方网站:https:/kubernetes.github.io/ingress-nginx/
 
访问流程图
  本质上是创建了一个Nginx的Node pod,只不过这个无需手写Nginx的配置文件而是通过自动生成的方式实现

⒈部署Ingress-Nginx

  1.下载资源文件

#下载资源文件
wget https://raw.githubusercontent.com/kubernetes/ingress-nginx/master/deploy/static/mandatory.yaml

  ⒉创建

kubectl apply -f mandatory.yaml

  ⒊查看

kubectl get pod -n ingress-nginx

  ⒋选择不同的暴露方案执行【此处选择裸机暴露方案,就是以svc暴露】

#下载
wget https://raw.githubusercontent.com/kubernetes/ingress-nginx/master/deploy/static/provider/baremetal/service-nodeport.yaml #创建
kubectl apply -f service-nodeport.yaml

  ⒌查看

kubectl get svc -n ingress-nginx

⒉Ingress方案

  1.Ingress HTTP 代理访问

    ㈠Deployment

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: nginx-dm
spec:
replicas: 2
template:
metadata:
labels:
name: nginx
spec:
containers:
- name: nginx
image: fanqisoft/myapp:v1
imagePullPolicy: IfNotPresent
ports:
- containerPort: 80

    ㈡Service

apiVersion: v1
kind: Service
metadata:
name: nginx-svc
spec:
ports:
- port: 80
targetPort: 80
protocol: TCP
selector:
name: nginx

    ㈢Ingress

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: nginx-test
spec:
rules:
- host: www.coreqi.cn
http:
paths:
- path: /
backend:
serviceName: nginx-svc
servicePort: 80

    3.查看服务端口

kubectl get svc -n ingress-nginx

    4.将相关域名写入host文件

    5.在浏览器中进行HTTP访问

  2.Ingress HTTPS代理访问

    1.创建证书及cert存储方式

openssl req -x509 -sha256 -nodes -days  -newkey rsa: -keyout tls.key -out tls.crt -subj "/CN=nginxsvc/O=nginxsvc"
kubectl create secret tls tls-secret --key tls.key --cert tls.crt

    2.创建相关资源

      ㈠Deployment

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: deployment3
spec:
replicas: 2
template:
metadata:
labels:
name: nginx3
spec:
containers:
- name: nginx3
image: fanqisoft/myapp:v3
imagePullPolicy: IfNotPresent
ports:
- containerPort: 80

        ㈡Service

apiVersion: v1
kind: Service
metadata:
name: svc-3
spec:
ports:
- port: 80
targetPort: 80
protocol: TCP
selector:
name: nginx3

        ㈢Ingress

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: svc-3
servicePort: 80

    3.查看服务端口

kubectl get svc -n ingress-nginx

    4.将相关域名写入host文件

    5.在浏览器中进行HTTP访问

⒊Nginx添加BasicAuth(基础认证)功能

  1.安装相关模块并创建密钥

  对于Nginx的认证方案来说,采用的是Apache的一个模块,所以在配置Nginx的认证之前,需要先安装Apache的模块.
  因为Ingress的实现方案采用的是Nginx的软件,所以Nginx的相关特性Ingress都支持.

#密码文件的创建
yum -y install httpd
htpasswd -c auth fanqi #创建密钥文件,文件名为auth,用户名为fanqi
#把该文件以secret方式进行保存,类型为generic
kubectl create secret generic basic-auth --from-file=auth

  2.创建Ingress资源

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进行URL重定向

  1.相关属性

名称 描述 值类型

nginx.ingress.kubernetes.io/rewrite-

target

必须重定向流量的目标URI string

nginx.ingress.kubernetes.io/ssl-

redirect

指示位置部分是否仅可访问SSL(当Ingress包含证书时
默认为True)

bool

nginx.ingress.kubernetes.io/force-

ssl-redirect

即使lngress未启用TLS,也强制重定向到HTTPS bool

nginx.ingress.kubernetes.io/app-

root

定义Controller必须重定向的应用程序根,如果它在‘/’上下文中 string

nginx.ingress.kubernetes.io/use-

regex

指示Ingress上定义的路径是否使用正则表达式 bool

  2.创建资源示例

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

Kubernetes---Service(SVC)服务--ingress api的更多相关文章

  1. Docker Kubernetes Service 网络服务代理模式详解

    Docker Kubernetes  Service 网络服务代理模式详解 Service service是实现kubernetes网络通信的一个服务 主要功能:负载均衡.网络规则分布到具体pod 注 ...

  2. Service Mesh服务网格新生代--Istio(转)

    万字解读:Service Mesh服务网格新生代--Istio  官网地址:https://preliminary.istio.io/zh/docs/concepts/security/ Servic ...

  3. C# 开源一个基于 yarp 的 API 网关 Demo,支持绑定 Kubernetes Service

    关于 Neting 刚开始的时候是打算使用微软官方的 Yarp 库,实现一个 API 网关,后面发现坑比较多,弄起来比较麻烦,就放弃了.目前写完了查看 Kubernetes Service 信息.创建 ...

  4. Kubernetes基于haproxy实现ingress服务暴露

    HAproxy Ingress控制器 HAproxy Ingress简介 HAProxy Ingress watches in the k8s cluster and how it builds HA ...

  5. 干货分享:如何使用Kubernetes的Ingress API

    您可以通过使用诸如Kong for Kubernetes的Ingress控制器(使用自定义资源定义并提供许多插件)来极大地扩展Ingress资源的功能. Kubernetes正在整个技术行业中得到采用 ...

  6. WCF 在VS中,添加服务引用,地址输入http://ip/Service.svc,点击前往,提示错误,内容如下:

    WCF的service端的webconfig如下: <?xml version="1.0"?> <configuration> <system.ser ...

  7. Kubernetes---Service(SVC)服务

    ⒈介绍 kubernetes 通过标签选择的方式来匹配一组pod,然后提供对外访问的一种机制 一组pod可以对应到多个svc的 每一个service(svc)都可以理解为一个微服务 Service有且 ...

  8. 【解构云原生】初识Kubernetes Service

    编者按:云原生是网易杭州研究院(网易杭研)奉行的核心技术方向之一,开源容器平台Kubernetes作为云原生产业技术标准.云原生生态基石,在设计上不可避免有其复杂性,Kubernetes系列文章基于网 ...

  9. kubernetes系列(十) - 通过Ingress实现七层代理

    1. Ingress入门 1.1 Ingress简介 1.2 原理和组成部分 1.3 资料信息 2. Ingress部署的几种方式 2.1 前言 2.1 Deployment+LoadBalancer ...

随机推荐

  1. [Codevs] 矩形面积求并

    http://codevs.cn/problem/3044/ 线段树扫描线矩形面积求并 基本思路就是将每个矩形的长(平行于x轴的边)投影到线段树上 下边+1,上边-1: 然后根据线段树的权值和与相邻两 ...

  2. GAN生成式对抗网络(二)——tensorflow代码示例

    代码实现 当初学习时,主要学习的这个博客 https://xyang35.github.io/2017/08/22/GAN-1/ ,写的挺好的. 本文目的,用GAN实现最简单的例子,帮助认识GAN算法 ...

  3. 【概率论】1-1:概率定义(Definition of Probability)

    title: [概率论]1-1:概率定义(Definition of Probability) categories: Mathematic Probability keywords: Sample ...

  4. Linux进程通信之mmap

    mmap()函数: void *mmap(void* addr,size_t length,int port,int flags,int fd,off_t offset); 返回:成功:返回创建的映射 ...

  5. vue项目,前端导出excel

    今天研究一下前端如何导出excel,边查边实践,边记录 1.安装依赖库 xlsx:这是一个功能强大的excel处理库,但是上手难度也很大,还涉及不少二进制的东西 file-saver:ES5新增了相关 ...

  6. 记录下我用Jenkins打包碰到的坑

    使用Andorid Studio 打包都是正常的,但是使用Jenkins自动打包一直报错,尝试过网上的各种方案,依然都不行,报错如下. FAILURE: Build failed with an ex ...

  7. javaEE项目部署方式

    1.手动部署 2.自动化部署 “自动化”的具体体现:向版本库提交新的代码后,应运服务器上自动部署

  8. HearthAgent A Hearthstone agent

    http://www.intelligence.tuc.gr/~robots/ARCHIVE/2015w/Projects/LAB51326833/download.html The project ...

  9. java获取远程图片分辨率

    package com.haiyisoft.hyoaPc; import java.awt.image.BufferedImage;import java.io.IOException;import ...

  10. embeddable persistent key-value store for fast storage

    A persistent key-value store for fast storage environmentsRocksDB is an embeddable persistent key-va ...