API网关Kong学习笔记(十五):KongIngress的定义细节

作者: 李佶澳   转载请保留:原文地址   更新时间:2018-11-20 16:43:45 +0800

说明

这是API网关Kong的学习笔记中的一篇,使用过程中遇到的问题和解决方法记录在API网关Kong的使用过程中遇到的问题以及解决方法

API网关Kong(二):Kong与Kubernetes集成的方法中提到过KongIngress的定义,这里详细展开。

定义

KongIngress在代码文件github.com/kong/kubernetes-ingress-controller/internal/apis/configuration/v1/types.go中定义:

// github.com/kong/kubernetes-ingress-controller/internal/apis/configuration/v1/types.go中定义
type KongIngress struct {
	metav1.TypeMeta `json:",inline"`
	// +optional
	metav1.ObjectMeta `json:"metadata,omitempty"`

	Upstream *Upstream `json:"upstream,omitempty"`
	Proxy    *Proxy    `json:"proxy,omitempty"`
	Route    *Route    `json:"route,omitempty"`
}

可以看到由三部分组成UpstreamProxyRoute

type Upstream struct {
	HashOn       string        `json:"hash_on"`
	HashOnHeader string        `json:"hash_on_header"`
	HashFallback string        `json:"hash_fallback"`
	Healthchecks *Healthchecks `json:"healthchecks,omitempty"`
	Slots        int           `json:"slots"`
}

type Proxy struct {
	Protocol       string `json:"protocol"`
	Path           string `json:"path"`
	ConnectTimeout int    `json:"connect_timeout"`
	Retries        int    `json:"retries"`
	ReadTimeout    int    `json:"read_timeout"`
	WriteTimeout   int    `json:"write_timeout"`
}

type Route struct {
	Methods       []string `json:"methods"`
	RegexPriority int      `json:"regex_priority"`
	StripPath     bool     `json:"strip_path"`
	PreserveHost  bool     `json:"preserve_host"`
	Protocols     []string `json:"protocols"`
}

需要注意的是,这里的Upstream、Proxy、Route中都是一些配置参数,不是Kong中的对应对象的完整定义,譬如说,这里明显缺失了Name、Host、以及Path等。这和KongIngress定位是匹配的,KongIngress只是对Kubernetes中原生的Ingress的补充,包含了一些Kong支持的参数。

Upstream中设置的是转发时使用的哈希算法,以及slot和健康检查。

Proxy中配置的是将请求转发给Upstream对应的Target时的参数,Kong中是没有Proxy这个对象的,这里的Proxy是Service的配置项的一部分:转发时使用的协议、转发目标路径、超时时间以及重试次数。

Route中设置路由的请求方法、用正则描述的Path的优先级、是否修改Path和Host,和支持的协议等。

API网关Kong(十六):Kong转发请求的工作过程

参考

  1. API网关Kong(十六):Kong转发请求的工作过程

本文原创首发于网站:www.lijiaocn.com

可以加微信,需备注姓名和方向

QQ交流群

区块链实践互助QQ群:576555864

Kubernetes实践互助QQ群:947371129

Prometheus实践互助QQ群:952461804

Kong/Envoy实践互助QQ群:952503851

Ansible实践互助QQ群:955105412

Copyright @2011-2019 All rights reserved. 转载请添加原文连接,合作请加微信lijiaocn或者发送邮件: lijiaocn@foxmail.com,备注网站合作 友情链接: lijiaocn github.com