2272 lines
		
	
	
		
			74 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
		
		
			
		
	
	
			2272 lines
		
	
	
		
			74 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
|   | <h1><center>Kubernetes集群调用Ingress</center></h1> | |||
|  | 
 | |||
|  | 作者:行癫(盗版必究) | |||
|  | 
 | |||
|  | ------ | |||
|  | 
 | |||
|  | ## 一:Ingress简介	
 | |||
|  | 
 | |||
|  | 	Ingress 是从  Kubernetes 集群外部访问集群内部服务的入口 | |||
|  | 
 | |||
|  |  | |||
|  | 
 | |||
|  | #### 1.什么是 Ingress
 | |||
|  | 
 | |||
|  | 	在 Kubernetes 中,Ingress 是一种资源对象,它定义了如何从集群外部访问集群内部服务的规则;Ingress 提供了一种更高级别的抽象,允许用户管理进入集群的 HTTP 和 HTTPS 流量,而无需直接暴露每个服务 | |||
|  | 
 | |||
|  | 
 | |||
|  | 
 | |||
|  | Service 主要处理集群内部的服务间通信以及如何从集群外部访问服务 | |||
|  | 
 | |||
|  | Ingress 处理集群外部对集群内多个服务的高级路由规则,并且可以提供额外的网络功能 | |||
|  | 
 | |||
|  | ##### Service:
 | |||
|  | 
 | |||
|  | 	Service 主要处理集群内部的服务间通信以及如何从集群外部访问服务 | |||
|  | 
 | |||
|  |  | |||
|  | 
 | |||
|  | 主要功能: | |||
|  | 
 | |||
|  | 	将流量路由到一组后端 Pod | |||
|  | 
 | |||
|  | 	提供服务发现机制 | |||
|  | 
 | |||
|  | 	支持基于轮询或其他策略的负载均衡 | |||
|  | 
 | |||
|  | 使用场景: | |||
|  | 
 | |||
|  | 	当需要在集群内部访问应用时(例如,一个前端服务调用一个后端服务) | |||
|  | 
 | |||
|  | 	当希望在集群外部通过特定节点端口访问应用时(NodePort 类型) | |||
|  | 
 | |||
|  | 	当需要通过云提供商的负载均衡器公开应用时(LoadBalancer 类型) | |||
|  | 
 | |||
|  | ##### Ingress:
 | |||
|  | 
 | |||
|  | 	Ingress 控制了进入集群的 HTTP 和 HTTPS 流量,并允许将这些流量路由到不同的 Service;Ingress 通常与反向代理或负载均衡器(如 Nginx 等)一起使用,以实现更高级别的路由规则和特性 | |||
|  | 
 | |||
|  |  | |||
|  | 
 | |||
|  | 主要功能: | |||
|  | 
 | |||
|  | 	基于 URL 路径或主机名的路由 | |||
|  | 
 | |||
|  | 	SSL 证书管理 | |||
|  | 
 | |||
|  | 	提供额外的特性,如重写 URL、限流等 | |||
|  | 
 | |||
|  | 使用场景: | |||
|  | 
 | |||
|  | 	当需要通过单一的入口点访问多个 Service 时 | |||
|  | 
 | |||
|  | 	当需要支持基于名称的虚拟主机(多个域名指向同一 IP) | |||
|  | 
 | |||
|  | 	当需要高级的网络功能,如 SSL/TLS 加密、HTTP 重定向等 | |||
|  | 
 | |||
|  | #### 2.Ingress controller
 | |||
|  | 
 | |||
|  | 	为了使  Ingress 正常工作,集群中必须运行  Ingress controller | |||
|  | 
 | |||
|  | 	Kong Kubernetes Ingress是一个 Kubernetes Ingress 控制器,通过支持Ingress来管理对集群服务的访问 | |||
|  | 
 | |||
|  | ## 二:基于Kubernetes部署Kong
 | |||
|  | 
 | |||
|  | #### 1.集群环境
 | |||
|  | 
 | |||
|  | kubernetes集群正常运行 | |||
|  | 
 | |||
|  | NFS提供持久化存储 | |||
|  | 
 | |||
|  | DNS服务器提供域名解析 | |||
|  | 
 | |||
|  | #### 2.创建命名空间kong
 | |||
|  | 
 | |||
|  | ```shell | |||
|  | [root@xingdiancloud-master kong]# kubectl create ns kong | |||
|  | ``` | |||
|  | 
 | |||
|  | #### 3.创建CRD的RBAC
 | |||
|  | 
 | |||
|  | 	CRD:CustomResourceDefinition(自定义资源定义)是 Kubernetes 用来扩展其 API 和资源模型的重要特性,允许用户定义自己的资源类型以适应特定的应用场景或需求,通过自定义资源定义,可以让 Kubernetes 管理任何类型的资源,而不仅仅是标准的容器化应用;这为 Kubernetes 带来了极大的灵活性和可扩展性 | |||
|  | 
 | |||
|  | 	RBAC:Role-Based Access Control(基于角色的访问控制)是一种访问控制机制,用于管理对资源的访问权限,在 Kubernetes 中,RBAC 是一种核心机制,用于授予用户、服务账户或其他身份验证主体对 Kubernetes API 的访问权限 | |||
|  | 
 | |||
|  | 	官方地址:https://raw.githubusercontent.com/Kong/kubernetes-ingress-controller/v2.9.3/deploy/single/all-in-one-dbless.yaml | |||
|  | 
 | |||
|  | ```yaml | |||
|  | [root@xingdiancloud-master kong]# cat crd.yaml  | |||
|  | apiVersion: apiextensions.k8s.io/v1 | |||
|  | kind: CustomResourceDefinition | |||
|  | metadata: | |||
|  |   annotations: | |||
|  |     controller-gen.kubebuilder.io/version: v0.11.3 | |||
|  |   creationTimestamp: null | |||
|  |   name: ingressclassparameterses.configuration.konghq.com | |||
|  | spec: | |||
|  |   group: configuration.konghq.com | |||
|  |   names: | |||
|  |     kind: IngressClassParameters | |||
|  |     listKind: IngressClassParametersList | |||
|  |     plural: ingressclassparameterses | |||
|  |     singular: ingressclassparameters | |||
|  |   scope: Namespaced | |||
|  |   versions: | |||
|  |   - name: v1alpha1 | |||
|  |     schema: | |||
|  |       openAPIV3Schema: | |||
|  |         description: IngressClassParameters is the Schema for the IngressClassParameters | |||
|  |           API. | |||
|  |         properties: | |||
|  |           apiVersion: | |||
|  |             description: 'APIVersion defines the versioned schema of this representation | |||
|  |               of an object. Servers should convert recognized schemas to the latest | |||
|  |               internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' | |||
|  |             type: string | |||
|  |           kind: | |||
|  |             description: 'Kind is a string value representing the REST resource this | |||
|  |               object represents. Servers may infer this from the endpoint the client | |||
|  |               submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' | |||
|  |             type: string | |||
|  |           metadata: | |||
|  |             type: object | |||
|  |           spec: | |||
|  |             description: Spec is the IngressClassParameters specification. | |||
|  |             properties: | |||
|  |               enableLegacyRegexDetection: | |||
|  |                 default: false | |||
|  |                 description: EnableLegacyRegexDetection automatically detects if ImplementationSpecific | |||
|  |                   Ingress paths are regular expression paths using the legacy 2.x | |||
|  |                   heuristic. The controller adds the "~" prefix to those paths if | |||
|  |                   the Kong version is 3.0 or higher. | |||
|  |                 type: boolean | |||
|  |               serviceUpstream: | |||
|  |                 default: false | |||
|  |                 description: Offload load-balancing to kube-proxy or sidecar. | |||
|  |                 type: boolean | |||
|  |             type: object | |||
|  |         type: object | |||
|  |     served: true | |||
|  |     storage: true | |||
|  | --- | |||
|  | apiVersion: apiextensions.k8s.io/v1 | |||
|  | kind: CustomResourceDefinition | |||
|  | metadata: | |||
|  |   annotations: | |||
|  |     controller-gen.kubebuilder.io/version: v0.11.3 | |||
|  |   creationTimestamp: null | |||
|  |   name: kongclusterplugins.configuration.konghq.com | |||
|  | spec: | |||
|  |   group: configuration.konghq.com | |||
|  |   names: | |||
|  |     categories: | |||
|  |     - kong-ingress-controller | |||
|  |     kind: KongClusterPlugin | |||
|  |     listKind: KongClusterPluginList | |||
|  |     plural: kongclusterplugins | |||
|  |     shortNames: | |||
|  |     - kcp | |||
|  |     singular: kongclusterplugin | |||
|  |   scope: Cluster | |||
|  |   versions: | |||
|  |   - additionalPrinterColumns: | |||
|  |     - description: Name of the plugin | |||
|  |       jsonPath: .plugin | |||
|  |       name: Plugin-Type | |||
|  |       type: string | |||
|  |     - description: Age | |||
|  |       jsonPath: .metadata.creationTimestamp | |||
|  |       name: Age | |||
|  |       type: date | |||
|  |     - description: Indicates if the plugin is disabled | |||
|  |       jsonPath: .disabled | |||
|  |       name: Disabled | |||
|  |       priority: 1 | |||
|  |       type: boolean | |||
|  |     - description: Configuration of the plugin | |||
|  |       jsonPath: .config | |||
|  |       name: Config | |||
|  |       priority: 1 | |||
|  |       type: string | |||
|  |     name: v1 | |||
|  |     schema: | |||
|  |       openAPIV3Schema: | |||
|  |         description: KongClusterPlugin is the Schema for the kongclusterplugins API. | |||
|  |         properties: | |||
|  |           apiVersion: | |||
|  |             description: 'APIVersion defines the versioned schema of this representation | |||
|  |               of an object. Servers should convert recognized schemas to the latest | |||
|  |               internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' | |||
|  |             type: string | |||
|  |           config: | |||
|  |             description: Config contains the plugin configuration. It's a list of | |||
|  |               keys and values required to configure the plugin. Please read the documentation | |||
|  |               of the plugin being configured to set values in here. For any plugin | |||
|  |               in Kong, anything that goes in the `config` JSON key in the Admin API | |||
|  |               request, goes into this property. Only one of `config` or `configFrom` | |||
|  |               may be used in a KongClusterPlugin, not both at once. | |||
|  |             type: object | |||
|  |             x-kubernetes-preserve-unknown-fields: true | |||
|  |           configFrom: | |||
|  |             description: ConfigFrom references a secret containing the plugin configuration. | |||
|  |               This should be used when the plugin configuration contains sensitive | |||
|  |               information, such as AWS credentials in the Lambda plugin or the client | |||
|  |               secret in the OIDC plugin. Only one of `config` or `configFrom` may | |||
|  |               be used in a KongClusterPlugin, not both at once. | |||
|  |             properties: | |||
|  |               secretKeyRef: | |||
|  |                 description: Specifies a name, a namespace, and a key of a secret | |||
|  |                   to refer to. | |||
|  |                 properties: | |||
|  |                   key: | |||
|  |                     description: The key containing the value. | |||
|  |                     type: string | |||
|  |                   name: | |||
|  |                     description: The secret containing the key. | |||
|  |                     type: string | |||
|  |                   namespace: | |||
|  |                     description: The namespace containing the secret. | |||
|  |                     type: string | |||
|  |                 required: | |||
|  |                 - key | |||
|  |                 - name | |||
|  |                 - namespace | |||
|  |                 type: object | |||
|  |             type: object | |||
|  |           consumerRef: | |||
|  |             description: ConsumerRef is a reference to a particular consumer. | |||
|  |             type: string | |||
|  |           disabled: | |||
|  |             description: Disabled set if the plugin is disabled or not. | |||
|  |             type: boolean | |||
|  |           kind: | |||
|  |             description: 'Kind is a string value representing the REST resource this | |||
|  |               object represents. Servers may infer this from the endpoint the client | |||
|  |               submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' | |||
|  |             type: string | |||
|  |           metadata: | |||
|  |             type: object | |||
|  |           ordering: | |||
|  |             description: 'Ordering overrides the normal plugin execution order. It''s | |||
|  |               only available on Kong Enterprise. `<phase>` is a request processing | |||
|  |               phase (for example, `access` or `body_filter`) and `<plugin>` is the | |||
|  |               name of the plugin that will run before or after the KongPlugin. For | |||
|  |               example, a KongPlugin with `plugin: rate-limiting` and `before.access: | |||
|  |               ["key-auth"]` will create a rate limiting plugin that limits requests | |||
|  |               _before_ they are authenticated.' | |||
|  |             properties: | |||
|  |               after: | |||
|  |                 additionalProperties: | |||
|  |                   items: | |||
|  |                     type: string | |||
|  |                   type: array | |||
|  |                 description: PluginOrderingPhase indicates which plugins in a phase | |||
|  |                   should affect the target plugin's order | |||
|  |                 type: object | |||
|  |               before: | |||
|  |                 additionalProperties: | |||
|  |                   items: | |||
|  |                     type: string | |||
|  |                   type: array | |||
|  |                 description: PluginOrderingPhase indicates which plugins in a phase | |||
|  |                   should affect the target plugin's order | |||
|  |                 type: object | |||
|  |             type: object | |||
|  |           plugin: | |||
|  |             description: PluginName is the name of the plugin to which to apply the | |||
|  |               config. | |||
|  |             type: string | |||
|  |           protocols: | |||
|  |             description: Protocols configures plugin to run on requests received on | |||
|  |               specific protocols. | |||
|  |             items: | |||
|  |               description: KongProtocol is a valid Kong protocol. This alias is necessary | |||
|  |                 to deal with https://github.com/kubernetes-sigs/controller-tools/issues/342 | |||
|  |               enum: | |||
|  |               - http | |||
|  |               - https | |||
|  |               - grpc | |||
|  |               - grpcs | |||
|  |               - tcp | |||
|  |               - tls | |||
|  |               - udp | |||
|  |               type: string | |||
|  |             type: array | |||
|  |           run_on: | |||
|  |             description: RunOn configures the plugin to run on the first or the second | |||
|  |               or both nodes in case of a service mesh deployment. | |||
|  |             enum: | |||
|  |             - first | |||
|  |             - second | |||
|  |             - all | |||
|  |             type: string | |||
|  |         required: | |||
|  |         - plugin | |||
|  |         type: object | |||
|  |     served: true | |||
|  |     storage: true | |||
|  |     subresources: | |||
|  |       status: {} | |||
|  | --- | |||
|  | apiVersion: apiextensions.k8s.io/v1 | |||
|  | kind: CustomResourceDefinition | |||
|  | metadata: | |||
|  |   annotations: | |||
|  |     controller-gen.kubebuilder.io/version: v0.11.3 | |||
|  |   creationTimestamp: null | |||
|  |   name: kongconsumers.configuration.konghq.com | |||
|  | spec: | |||
|  |   group: configuration.konghq.com | |||
|  |   names: | |||
|  |     categories: | |||
|  |     - kong-ingress-controller | |||
|  |     kind: KongConsumer | |||
|  |     listKind: KongConsumerList | |||
|  |     plural: kongconsumers | |||
|  |     shortNames: | |||
|  |     - kc | |||
|  |     singular: kongconsumer | |||
|  |   scope: Namespaced | |||
|  |   versions: | |||
|  |   - additionalPrinterColumns: | |||
|  |     - description: Username of a Kong Consumer | |||
|  |       jsonPath: .username | |||
|  |       name: Username | |||
|  |       type: string | |||
|  |     - description: Age | |||
|  |       jsonPath: .metadata.creationTimestamp | |||
|  |       name: Age | |||
|  |       type: date | |||
|  |     name: v1 | |||
|  |     schema: | |||
|  |       openAPIV3Schema: | |||
|  |         description: KongConsumer is the Schema for the kongconsumers API. | |||
|  |         properties: | |||
|  |           apiVersion: | |||
|  |             description: 'APIVersion defines the versioned schema of this representation | |||
|  |               of an object. Servers should convert recognized schemas to the latest | |||
|  |               internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' | |||
|  |             type: string | |||
|  |           credentials: | |||
|  |             description: Credentials are references to secrets containing a credential | |||
|  |               to be provisioned in Kong. | |||
|  |             items: | |||
|  |               type: string | |||
|  |             type: array | |||
|  |           custom_id: | |||
|  |             description: CustomID is a Kong cluster-unique existing ID for the consumer | |||
|  |               - useful for mapping Kong with users in your existing database. | |||
|  |             type: string | |||
|  |           kind: | |||
|  |             description: 'Kind is a string value representing the REST resource this | |||
|  |               object represents. Servers may infer this from the endpoint the client | |||
|  |               submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' | |||
|  |             type: string | |||
|  |           metadata: | |||
|  |             type: object | |||
|  |           username: | |||
|  |             description: Username is a Kong cluster-unique username of the consumer. | |||
|  |             type: string | |||
|  |         type: object | |||
|  |     served: true | |||
|  |     storage: true | |||
|  |     subresources: | |||
|  |       status: {} | |||
|  | --- | |||
|  | apiVersion: apiextensions.k8s.io/v1 | |||
|  | kind: CustomResourceDefinition | |||
|  | metadata: | |||
|  |   annotations: | |||
|  |     controller-gen.kubebuilder.io/version: v0.11.3 | |||
|  |   creationTimestamp: null | |||
|  |   name: kongingresses.configuration.konghq.com | |||
|  | spec: | |||
|  |   group: configuration.konghq.com | |||
|  |   names: | |||
|  |     categories: | |||
|  |     - kong-ingress-controller | |||
|  |     kind: KongIngress | |||
|  |     listKind: KongIngressList | |||
|  |     plural: kongingresses | |||
|  |     shortNames: | |||
|  |     - ki | |||
|  |     singular: kongingress | |||
|  |   scope: Namespaced | |||
|  |   versions: | |||
|  |   - name: v1 | |||
|  |     schema: | |||
|  |       openAPIV3Schema: | |||
|  |         description: KongIngress is the Schema for the kongingresses API. | |||
|  |         properties: | |||
|  |           apiVersion: | |||
|  |             description: 'APIVersion defines the versioned schema of this representation | |||
|  |               of an object. Servers should convert recognized schemas to the latest | |||
|  |               internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' | |||
|  |             type: string | |||
|  |           kind: | |||
|  |             description: 'Kind is a string value representing the REST resource this | |||
|  |               object represents. Servers may infer this from the endpoint the client | |||
|  |               submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' | |||
|  |             type: string | |||
|  |           metadata: | |||
|  |             type: object | |||
|  |           proxy: | |||
|  |             description: Proxy defines additional connection options for the routes | |||
|  |               to be configured in the Kong Gateway, e.g. `connection_timeout`, `retries`, | |||
|  |               etc. | |||
|  |             properties: | |||
|  |               connect_timeout: | |||
|  |                 description: "The timeout in milliseconds for\testablishing a connection | |||
|  |                   to the upstream server. Deprecated: use Service's \"konghq.com/connect-timeout\" | |||
|  |                   annotation instead." | |||
|  |                 minimum: 0 | |||
|  |                 type: integer | |||
|  |               path: | |||
|  |                 description: '(optional) The path to be used in requests to the upstream | |||
|  |                   server. Deprecated: use Service''s "konghq.com/path" annotation | |||
|  |                   instead.' | |||
|  |                 pattern: ^/.*$ | |||
|  |                 type: string | |||
|  |               protocol: | |||
|  |                 description: 'The protocol used to communicate with the upstream. | |||
|  |                   Deprecated: use Service''s "konghq.com/protocol" annotation instead.' | |||
|  |                 enum: | |||
|  |                 - http | |||
|  |                 - https | |||
|  |                 - grpc | |||
|  |                 - grpcs | |||
|  |                 - tcp | |||
|  |                 - tls | |||
|  |                 - udp | |||
|  |                 type: string | |||
|  |               read_timeout: | |||
|  |                 description: 'The timeout in milliseconds between two successive read | |||
|  |                   operations for transmitting a request to the upstream server. Deprecated: | |||
|  |                   use Service''s "konghq.com/read-timeout" annotation instead.' | |||
|  |                 minimum: 0 | |||
|  |                 type: integer | |||
|  |               retries: | |||
|  |                 description: 'The number of retries to execute upon failure to proxy. | |||
|  |                   Deprecated: use Service''s "konghq.com/retries" annotation instead.' | |||
|  |                 minimum: 0 | |||
|  |                 type: integer | |||
|  |               write_timeout: | |||
|  |                 description: 'The timeout in milliseconds between two successive write | |||
|  |                   operations for transmitting a request to the upstream server. Deprecated: | |||
|  |                   use Service''s "konghq.com/write-timeout" annotation instead.' | |||
|  |                 minimum: 0 | |||
|  |                 type: integer | |||
|  |             type: object | |||
|  |           route: | |||
|  |             description: Route define rules to match client requests. Each Route is | |||
|  |               associated with a Service, and a Service may have multiple Routes associated | |||
|  |               to it. | |||
|  |             properties: | |||
|  |               headers: | |||
|  |                 additionalProperties: | |||
|  |                   items: | |||
|  |                     type: string | |||
|  |                   type: array | |||
|  |                 description: 'Headers contains one or more lists of values indexed | |||
|  |                   by header name that will cause this Route to match if present in | |||
|  |                   the request. The Host header cannot be used with this attribute. | |||
|  |                   Deprecated: use Ingress'' "konghq.com/headers" annotation instead.' | |||
|  |                 type: object | |||
|  |               https_redirect_status_code: | |||
|  |                 description: 'HTTPSRedirectStatusCode is the status code Kong responds | |||
|  |                   with when all properties of a Route match except the protocol. Deprecated: | |||
|  |                   use Ingress'' "ingress.kubernetes.io/force-ssl-redirect" or "konghq.com/https-redirect-status-code" | |||
|  |                   annotations instead.' | |||
|  |                 type: integer | |||
|  |               methods: | |||
|  |                 description: 'Methods is a list of HTTP methods that match this Route. | |||
|  |                   Deprecated: use Ingress'' "konghq.com/methods" annotation instead.' | |||
|  |                 items: | |||
|  |                   type: string | |||
|  |                 type: array | |||
|  |               path_handling: | |||
|  |                 description: 'PathHandling controls how the Service path, Route path | |||
|  |                   and requested path are combined when sending a request to the upstream. | |||
|  |                   Deprecated: use Ingress'' "konghq.com/path-handling" annotation | |||
|  |                   instead.' | |||
|  |                 enum: | |||
|  |                 - v0 | |||
|  |                 - v1 | |||
|  |                 type: string | |||
|  |               preserve_host: | |||
|  |                 description: 'PreserveHost sets When matching a Route via one of the | |||
|  |                   hosts domain names, use the request Host header in the upstream | |||
|  |                   request headers. If set to false, the upstream Host header will | |||
|  |                   be that of the Service’s host. Deprecated: use Ingress'' "konghq.com/preserve-host" | |||
|  |                   annotation instead.' | |||
|  |                 type: boolean | |||
|  |               protocols: | |||
|  |                 description: 'Protocols is an array of the protocols this Route should | |||
|  |                   allow. Deprecated: use Ingress'' "konghq.com/protocols" annotation | |||
|  |                   instead.' | |||
|  |                 items: | |||
|  |                   description: KongProtocol is a valid Kong protocol. This alias is | |||
|  |                     necessary to deal with https://github.com/kubernetes-sigs/controller-tools/issues/342 | |||
|  |                   enum: | |||
|  |                   - http | |||
|  |                   - https | |||
|  |                   - grpc | |||
|  |                   - grpcs | |||
|  |                   - tcp | |||
|  |                   - tls | |||
|  |                   - udp | |||
|  |                   type: string | |||
|  |                 type: array | |||
|  |               regex_priority: | |||
|  |                 description: 'RegexPriority is a number used to choose which route | |||
|  |                   resolves a given request when several routes match it using regexes | |||
|  |                   simultaneously. Deprecated: use Ingress'' "konghq.com/regex-priority" | |||
|  |                   annotation instead.' | |||
|  |                 type: integer | |||
|  |               request_buffering: | |||
|  |                 description: 'RequestBuffering sets whether to enable request body | |||
|  |                   buffering or not. Deprecated: use Ingress'' "konghq.com/request-buffering" | |||
|  |                   annotation instead.' | |||
|  |                 type: boolean | |||
|  |               response_buffering: | |||
|  |                 description: 'ResponseBuffering sets whether to enable response body | |||
|  |                   buffering or not. Deprecated: use Ingress'' "konghq.com/response-buffering" | |||
|  |                   annotation instead.' | |||
|  |                 type: boolean | |||
|  |               snis: | |||
|  |                 description: 'SNIs is a list of SNIs that match this Route when using | |||
|  |                   stream routing. Deprecated: use Ingress'' "konghq.com/snis" annotation | |||
|  |                   instead.' | |||
|  |                 items: | |||
|  |                   type: string | |||
|  |                 type: array | |||
|  |               strip_path: | |||
|  |                 description: 'StripPath sets When matching a Route via one of the | |||
|  |                   paths strip the matching prefix from the upstream request URL. Deprecated: | |||
|  |                   use Ingress'' "konghq.com/strip-path" annotation instead.' | |||
|  |                 type: boolean | |||
|  |             type: object | |||
|  |           upstream: | |||
|  |             description: Upstream represents a virtual hostname and can be used to | |||
|  |               loadbalance incoming requests over multiple targets (e.g. Kubernetes | |||
|  |               `Services` can be a target, OR `Endpoints` can be targets). | |||
|  |             properties: | |||
|  |               algorithm: | |||
|  |                 description: Algorithm is the load balancing algorithm to use. | |||
|  |                 enum: | |||
|  |                 - round-robin | |||
|  |                 - consistent-hashing | |||
|  |                 - least-connections | |||
|  |                 type: string | |||
|  |               hash_fallback: | |||
|  |                 description: 'HashFallback defines What to use as hashing input if | |||
|  |                   the primary hash_on does not return a hash. Accepted values are: | |||
|  |                   "none", "consumer", "ip", "header", "cookie".' | |||
|  |                 type: string | |||
|  |               hash_fallback_header: | |||
|  |                 description: HashFallbackHeader is the header name to take the value | |||
|  |                   from as hash input. Only required when "hash_fallback" is set to | |||
|  |                   "header". | |||
|  |                 type: string | |||
|  |               hash_fallback_query_arg: | |||
|  |                 description: HashFallbackQueryArg is the "hash_fallback" version of | |||
|  |                   HashOnQueryArg. | |||
|  |                 type: string | |||
|  |               hash_fallback_uri_capture: | |||
|  |                 description: HashFallbackURICapture is the "hash_fallback" version | |||
|  |                   of HashOnURICapture. | |||
|  |                 type: string | |||
|  |               hash_on: | |||
|  |                 description: 'HashOn defines what to use as hashing input. Accepted | |||
|  |                   values are: "none", "consumer", "ip", "header", "cookie", "path", | |||
|  |                   "query_arg", "uri_capture".' | |||
|  |                 type: string | |||
|  |               hash_on_cookie: | |||
|  |                 description: The cookie name to take the value from as hash input. | |||
|  |                   Only required when "hash_on" or "hash_fallback" is set to "cookie". | |||
|  |                 type: string | |||
|  |               hash_on_cookie_path: | |||
|  |                 description: The cookie path to set in the response headers. Only | |||
|  |                   required when "hash_on" or "hash_fallback" is set to "cookie". | |||
|  |                 type: string | |||
|  |               hash_on_header: | |||
|  |                 description: HashOnHeader defines the header name to take the value | |||
|  |                   from as hash input. Only required when "hash_on" is set to "header". | |||
|  |                 type: string | |||
|  |               hash_on_query_arg: | |||
|  |                 description: HashOnQueryArg is the query string parameter whose value | |||
|  |                   is the hash input when "hash_on" is set to "query_arg". | |||
|  |                 type: string | |||
|  |               hash_on_uri_capture: | |||
|  |                 description: HashOnURICapture is the name of the capture group whose | |||
|  |                   value is the hash input when "hash_on" is set to "uri_capture". | |||
|  |                 type: string | |||
|  |               healthchecks: | |||
|  |                 description: Healthchecks defines the health check configurations | |||
|  |                   in Kong. | |||
|  |                 properties: | |||
|  |                   active: | |||
|  |                     description: ActiveHealthcheck configures active health check | |||
|  |                       probing. | |||
|  |                     properties: | |||
|  |                       concurrency: | |||
|  |                         minimum: 1 | |||
|  |                         type: integer | |||
|  |                       healthy: | |||
|  |                         description: Healthy configures thresholds and HTTP status | |||
|  |                           codes to mark targets healthy for an upstream. | |||
|  |                         properties: | |||
|  |                           http_statuses: | |||
|  |                             items: | |||
|  |                               type: integer | |||
|  |                             type: array | |||
|  |                           interval: | |||
|  |                             minimum: 0 | |||
|  |                             type: integer | |||
|  |                           successes: | |||
|  |                             minimum: 0 | |||
|  |                             type: integer | |||
|  |                         type: object | |||
|  |                       http_path: | |||
|  |                         pattern: ^/.*$ | |||
|  |                         type: string | |||
|  |                       https_sni: | |||
|  |                         type: string | |||
|  |                       https_verify_certificate: | |||
|  |                         type: boolean | |||
|  |                       timeout: | |||
|  |                         minimum: 0 | |||
|  |                         type: integer | |||
|  |                       type: | |||
|  |                         type: string | |||
|  |                       unhealthy: | |||
|  |                         description: Unhealthy configures thresholds and HTTP status | |||
|  |                           codes to mark targets unhealthy. | |||
|  |                         properties: | |||
|  |                           http_failures: | |||
|  |                             minimum: 0 | |||
|  |                             type: integer | |||
|  |                           http_statuses: | |||
|  |                             items: | |||
|  |                               type: integer | |||
|  |                             type: array | |||
|  |                           interval: | |||
|  |                             minimum: 0 | |||
|  |                             type: integer | |||
|  |                           tcp_failures: | |||
|  |                             minimum: 0 | |||
|  |                             type: integer | |||
|  |                           timeouts: | |||
|  |                             minimum: 0 | |||
|  |                             type: integer | |||
|  |                         type: object | |||
|  |                     type: object | |||
|  |                   passive: | |||
|  |                     description: PassiveHealthcheck configures passive checks around | |||
|  |                       passive health checks. | |||
|  |                     properties: | |||
|  |                       healthy: | |||
|  |                         description: Healthy configures thresholds and HTTP status | |||
|  |                           codes to mark targets healthy for an upstream. | |||
|  |                         properties: | |||
|  |                           http_statuses: | |||
|  |                             items: | |||
|  |                               type: integer | |||
|  |                             type: array | |||
|  |                           interval: | |||
|  |                             minimum: 0 | |||
|  |                             type: integer | |||
|  |                           successes: | |||
|  |                             minimum: 0 | |||
|  |                             type: integer | |||
|  |                         type: object | |||
|  |                       type: | |||
|  |                         type: string | |||
|  |                       unhealthy: | |||
|  |                         description: Unhealthy configures thresholds and HTTP status | |||
|  |                           codes to mark targets unhealthy. | |||
|  |                         properties: | |||
|  |                           http_failures: | |||
|  |                             minimum: 0 | |||
|  |                             type: integer | |||
|  |                           http_statuses: | |||
|  |                             items: | |||
|  |                               type: integer | |||
|  |                             type: array | |||
|  |                           interval: | |||
|  |                             minimum: 0 | |||
|  |                             type: integer | |||
|  |                           tcp_failures: | |||
|  |                             minimum: 0 | |||
|  |                             type: integer | |||
|  |                           timeouts: | |||
|  |                             minimum: 0 | |||
|  |                             type: integer | |||
|  |                         type: object | |||
|  |                     type: object | |||
|  |                   threshold: | |||
|  |                     type: number | |||
|  |                 type: object | |||
|  |               host_header: | |||
|  |                 description: HostHeader is The hostname to be used as Host header | |||
|  |                   when proxying requests through Kong. | |||
|  |                 type: string | |||
|  |               slots: | |||
|  |                 description: Slots is the number of slots in the load balancer algorithm. | |||
|  |                 minimum: 10 | |||
|  |                 type: integer | |||
|  |             type: object | |||
|  |         type: object | |||
|  |     served: true | |||
|  |     storage: true | |||
|  |     subresources: | |||
|  |       status: {} | |||
|  | --- | |||
|  | apiVersion: apiextensions.k8s.io/v1 | |||
|  | kind: CustomResourceDefinition | |||
|  | metadata: | |||
|  |   annotations: | |||
|  |     controller-gen.kubebuilder.io/version: v0.11.3 | |||
|  |   creationTimestamp: null | |||
|  |   name: kongplugins.configuration.konghq.com | |||
|  | spec: | |||
|  |   group: configuration.konghq.com | |||
|  |   names: | |||
|  |     categories: | |||
|  |     - kong-ingress-controller | |||
|  |     kind: KongPlugin | |||
|  |     listKind: KongPluginList | |||
|  |     plural: kongplugins | |||
|  |     shortNames: | |||
|  |     - kp | |||
|  |     singular: kongplugin | |||
|  |   scope: Namespaced | |||
|  |   versions: | |||
|  |   - additionalPrinterColumns: | |||
|  |     - description: Name of the plugin | |||
|  |       jsonPath: .plugin | |||
|  |       name: Plugin-Type | |||
|  |       type: string | |||
|  |     - description: Age | |||
|  |       jsonPath: .metadata.creationTimestamp | |||
|  |       name: Age | |||
|  |       type: date | |||
|  |     - description: Indicates if the plugin is disabled | |||
|  |       jsonPath: .disabled | |||
|  |       name: Disabled | |||
|  |       priority: 1 | |||
|  |       type: boolean | |||
|  |     - description: Configuration of the plugin | |||
|  |       jsonPath: .config | |||
|  |       name: Config | |||
|  |       priority: 1 | |||
|  |       type: string | |||
|  |     name: v1 | |||
|  |     schema: | |||
|  |       openAPIV3Schema: | |||
|  |         description: KongPlugin is the Schema for the kongplugins API. | |||
|  |         properties: | |||
|  |           apiVersion: | |||
|  |             description: 'APIVersion defines the versioned schema of this representation | |||
|  |               of an object. Servers should convert recognized schemas to the latest | |||
|  |               internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' | |||
|  |             type: string | |||
|  |           config: | |||
|  |             description: Config contains the plugin configuration. It's a list of | |||
|  |               keys and values required to configure the plugin. Please read the documentation | |||
|  |               of the plugin being configured to set values in here. For any plugin | |||
|  |               in Kong, anything that goes in the `config` JSON key in the Admin API | |||
|  |               request, goes into this property. Only one of `config` or `configFrom` | |||
|  |               may be used in a KongPlugin, not both at once. | |||
|  |             type: object | |||
|  |             x-kubernetes-preserve-unknown-fields: true | |||
|  |           configFrom: | |||
|  |             description: ConfigFrom references a secret containing the plugin configuration. | |||
|  |               This should be used when the plugin configuration contains sensitive | |||
|  |               information, such as AWS credentials in the Lambda plugin or the client | |||
|  |               secret in the OIDC plugin. Only one of `config` or `configFrom` may | |||
|  |               be used in a KongPlugin, not both at once. | |||
|  |             properties: | |||
|  |               secretKeyRef: | |||
|  |                 description: Specifies a name and a key of a secret to refer to. The | |||
|  |                   namespace is implicitly set to the one of referring object. | |||
|  |                 properties: | |||
|  |                   key: | |||
|  |                     description: The key containing the value. | |||
|  |                     type: string | |||
|  |                   name: | |||
|  |                     description: The secret containing the key. | |||
|  |                     type: string | |||
|  |                 required: | |||
|  |                 - key | |||
|  |                 - name | |||
|  |                 type: object | |||
|  |             type: object | |||
|  |           consumerRef: | |||
|  |             description: ConsumerRef is a reference to a particular consumer. | |||
|  |             type: string | |||
|  |           disabled: | |||
|  |             description: Disabled set if the plugin is disabled or not. | |||
|  |             type: boolean | |||
|  |           kind: | |||
|  |             description: 'Kind is a string value representing the REST resource this | |||
|  |               object represents. Servers may infer this from the endpoint the client | |||
|  |               submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' | |||
|  |             type: string | |||
|  |           metadata: | |||
|  |             type: object | |||
|  |           ordering: | |||
|  |             description: 'Ordering overrides the normal plugin execution order. It''s | |||
|  |               only available on Kong Enterprise. `<phase>` is a request processing | |||
|  |               phase (for example, `access` or `body_filter`) and `<plugin>` is the | |||
|  |               name of the plugin that will run before or after the KongPlugin. For | |||
|  |               example, a KongPlugin with `plugin: rate-limiting` and `before.access: | |||
|  |               ["key-auth"]` will create a rate limiting plugin that limits requests | |||
|  |               _before_ they are authenticated.' | |||
|  |             properties: | |||
|  |               after: | |||
|  |                 additionalProperties: | |||
|  |                   items: | |||
|  |                     type: string | |||
|  |                   type: array | |||
|  |                 description: PluginOrderingPhase indicates which plugins in a phase | |||
|  |                   should affect the target plugin's order | |||
|  |                 type: object | |||
|  |               before: | |||
|  |                 additionalProperties: | |||
|  |                   items: | |||
|  |                     type: string | |||
|  |                   type: array | |||
|  |                 description: PluginOrderingPhase indicates which plugins in a phase | |||
|  |                   should affect the target plugin's order | |||
|  |                 type: object | |||
|  |             type: object | |||
|  |           plugin: | |||
|  |             description: PluginName is the name of the plugin to which to apply the | |||
|  |               config. | |||
|  |             type: string | |||
|  |           protocols: | |||
|  |             description: Protocols configures plugin to run on requests received on | |||
|  |               specific protocols. | |||
|  |             items: | |||
|  |               description: KongProtocol is a valid Kong protocol. This alias is necessary | |||
|  |                 to deal with https://github.com/kubernetes-sigs/controller-tools/issues/342 | |||
|  |               enum: | |||
|  |               - http | |||
|  |               - https | |||
|  |               - grpc | |||
|  |               - grpcs | |||
|  |               - tcp | |||
|  |               - tls | |||
|  |               - udp | |||
|  |               type: string | |||
|  |             type: array | |||
|  |           run_on: | |||
|  |             description: RunOn configures the plugin to run on the first or the second | |||
|  |               or both nodes in case of a service mesh deployment. | |||
|  |             enum: | |||
|  |             - first | |||
|  |             - second | |||
|  |             - all | |||
|  |             type: string | |||
|  |         required: | |||
|  |         - plugin | |||
|  |         type: object | |||
|  |     served: true | |||
|  |     storage: true | |||
|  |     subresources: | |||
|  |       status: {} | |||
|  | --- | |||
|  | apiVersion: apiextensions.k8s.io/v1 | |||
|  | kind: CustomResourceDefinition | |||
|  | metadata: | |||
|  |   annotations: | |||
|  |     controller-gen.kubebuilder.io/version: v0.11.3 | |||
|  |   creationTimestamp: null | |||
|  |   name: tcpingresses.configuration.konghq.com | |||
|  | spec: | |||
|  |   group: configuration.konghq.com | |||
|  |   names: | |||
|  |     categories: | |||
|  |     - kong-ingress-controller | |||
|  |     kind: TCPIngress | |||
|  |     listKind: TCPIngressList | |||
|  |     plural: tcpingresses | |||
|  |     singular: tcpingress | |||
|  |   scope: Namespaced | |||
|  |   versions: | |||
|  |   - additionalPrinterColumns: | |||
|  |     - description: Address of the load balancer | |||
|  |       jsonPath: .status.loadBalancer.ingress[*].ip | |||
|  |       name: Address | |||
|  |       type: string | |||
|  |     - description: Age | |||
|  |       jsonPath: .metadata.creationTimestamp | |||
|  |       name: Age | |||
|  |       type: date | |||
|  |     name: v1beta1 | |||
|  |     schema: | |||
|  |       openAPIV3Schema: | |||
|  |         description: TCPIngress is the Schema for the tcpingresses API. | |||
|  |         properties: | |||
|  |           apiVersion: | |||
|  |             description: 'APIVersion defines the versioned schema of this representation | |||
|  |               of an object. Servers should convert recognized schemas to the latest | |||
|  |               internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' | |||
|  |             type: string | |||
|  |           kind: | |||
|  |             description: 'Kind is a string value representing the REST resource this | |||
|  |               object represents. Servers may infer this from the endpoint the client | |||
|  |               submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' | |||
|  |             type: string | |||
|  |           metadata: | |||
|  |             type: object | |||
|  |           spec: | |||
|  |             description: Spec is the TCPIngress specification. | |||
|  |             properties: | |||
|  |               rules: | |||
|  |                 description: A list of rules used to configure the Ingress. | |||
|  |                 items: | |||
|  |                   description: IngressRule represents a rule to apply against incoming | |||
|  |                     requests. Matching is performed based on an (optional) SNI and | |||
|  |                     port. | |||
|  |                   properties: | |||
|  |                     backend: | |||
|  |                       description: Backend defines the referenced service endpoint | |||
|  |                         to which the traffic will be forwarded to. | |||
|  |                       properties: | |||
|  |                         serviceName: | |||
|  |                           description: Specifies the name of the referenced service. | |||
|  |                           minLength: 1 | |||
|  |                           type: string | |||
|  |                         servicePort: | |||
|  |                           description: Specifies the port of the referenced service. | |||
|  |                           format: int32 | |||
|  |                           maximum: 65535 | |||
|  |                           minimum: 1 | |||
|  |                           type: integer | |||
|  |                       required: | |||
|  |                       - serviceName | |||
|  |                       - servicePort | |||
|  |                       type: object | |||
|  |                     host: | |||
|  |                       description: Host is the fully qualified domain name of a network | |||
|  |                         host, as defined by RFC 3986. If a Host is not specified, | |||
|  |                         then port-based TCP routing is performed. Kong doesn't care | |||
|  |                         about the content of the TCP stream in this case. If a Host | |||
|  |                         is specified, the protocol must be TLS over TCP. A plain-text | |||
|  |                         TCP request cannot be routed based on Host. It can only be | |||
|  |                         routed based on Port. | |||
|  |                       type: string | |||
|  |                     port: | |||
|  |                       description: Port is the port on which to accept TCP or TLS | |||
|  |                         over TCP sessions and route. It is a required field. If a | |||
|  |                         Host is not specified, the requested are routed based only | |||
|  |                         on Port. | |||
|  |                       format: int32 | |||
|  |                       maximum: 65535 | |||
|  |                       minimum: 1 | |||
|  |                       type: integer | |||
|  |                   required: | |||
|  |                   - backend | |||
|  |                   - port | |||
|  |                   type: object | |||
|  |                 type: array | |||
|  |               tls: | |||
|  |                 description: TLS configuration. This is similar to the `tls` section | |||
|  |                   in the Ingress resource in networking.v1beta1 group. The mapping | |||
|  |                   of SNIs to TLS cert-key pair defined here will be used for HTTP | |||
|  |                   Ingress rules as well. Once can define the mapping in this resource | |||
|  |                   or the original Ingress resource, both have the same effect. | |||
|  |                 items: | |||
|  |                   description: IngressTLS describes the transport layer security. | |||
|  |                   properties: | |||
|  |                     hosts: | |||
|  |                       description: Hosts are a list of hosts included in the TLS certificate. | |||
|  |                         The values in this list must match the name/s used in the | |||
|  |                         tlsSecret. Defaults to the wildcard host setting for the loadbalancer | |||
|  |                         controller fulfilling this Ingress, if left unspecified. | |||
|  |                       items: | |||
|  |                         type: string | |||
|  |                       type: array | |||
|  |                     secretName: | |||
|  |                       description: SecretName is the name of the secret used to terminate | |||
|  |                         SSL traffic. | |||
|  |                       type: string | |||
|  |                   type: object | |||
|  |                 type: array | |||
|  |             type: object | |||
|  |           status: | |||
|  |             description: TCPIngressStatus defines the observed state of TCPIngress. | |||
|  |             properties: | |||
|  |               loadBalancer: | |||
|  |                 description: LoadBalancer contains the current status of the load-balancer. | |||
|  |                 properties: | |||
|  |                   ingress: | |||
|  |                     description: Ingress is a list containing ingress points for the | |||
|  |                       load-balancer. Traffic intended for the service should be sent | |||
|  |                       to these ingress points. | |||
|  |                     items: | |||
|  |                       description: 'LoadBalancerIngress represents the status of a | |||
|  |                         load-balancer ingress point: traffic intended for the service | |||
|  |                         should be sent to an ingress point.' | |||
|  |                       properties: | |||
|  |                         hostname: | |||
|  |                           description: Hostname is set for load-balancer ingress points | |||
|  |                             that are DNS based (typically AWS load-balancers) | |||
|  |                           type: string | |||
|  |                         ip: | |||
|  |                           description: IP is set for load-balancer ingress points | |||
|  |                             that are IP based (typically GCE or OpenStack load-balancers) | |||
|  |                           type: string | |||
|  |                         ports: | |||
|  |                           description: Ports is a list of records of service ports | |||
|  |                             If used, every port defined in the service should have | |||
|  |                             an entry in it | |||
|  |                           items: | |||
|  |                             properties: | |||
|  |                               error: | |||
|  |                                 description: 'Error is to record the problem with | |||
|  |                                   the service port The format of the error shall comply | |||
|  |                                   with the following rules: - built-in error values | |||
|  |                                   shall be specified in this file and those shall | |||
|  |                                   use CamelCase names - cloud provider specific error | |||
|  |                                   values must have names that comply with the format | |||
|  |                                   foo.example.com/CamelCase. --- The regex it matches | |||
|  |                                   is (dns1123SubdomainFmt/)?(qualifiedNameFmt)' | |||
|  |                                 maxLength: 316 | |||
|  |                                 pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$ | |||
|  |                                 type: string | |||
|  |                               port: | |||
|  |                                 description: Port is the port number of the service | |||
|  |                                   port of which status is recorded here | |||
|  |                                 format: int32 | |||
|  |                                 type: integer | |||
|  |                               protocol: | |||
|  |                                 default: TCP | |||
|  |                                 description: 'Protocol is the protocol of the service | |||
|  |                                   port of which status is recorded here The supported | |||
|  |                                   values are: "TCP", "UDP", "SCTP"' | |||
|  |                                 type: string | |||
|  |                             required: | |||
|  |                             - port | |||
|  |                             - protocol | |||
|  |                             type: object | |||
|  |                           type: array | |||
|  |                           x-kubernetes-list-type: atomic | |||
|  |                       type: object | |||
|  |                     type: array | |||
|  |                 type: object | |||
|  |             type: object | |||
|  |         type: object | |||
|  |     served: true | |||
|  |     storage: true | |||
|  |     subresources: | |||
|  |       status: {} | |||
|  | --- | |||
|  | apiVersion: apiextensions.k8s.io/v1 | |||
|  | kind: CustomResourceDefinition | |||
|  | metadata: | |||
|  |   annotations: | |||
|  |     controller-gen.kubebuilder.io/version: v0.11.3 | |||
|  |   creationTimestamp: null | |||
|  |   name: udpingresses.configuration.konghq.com | |||
|  | spec: | |||
|  |   group: configuration.konghq.com | |||
|  |   names: | |||
|  |     categories: | |||
|  |     - kong-ingress-controller | |||
|  |     kind: UDPIngress | |||
|  |     listKind: UDPIngressList | |||
|  |     plural: udpingresses | |||
|  |     singular: udpingress | |||
|  |   scope: Namespaced | |||
|  |   versions: | |||
|  |   - additionalPrinterColumns: | |||
|  |     - description: Address of the load balancer | |||
|  |       jsonPath: .status.loadBalancer.ingress[*].ip | |||
|  |       name: Address | |||
|  |       type: string | |||
|  |     - description: Age | |||
|  |       jsonPath: .metadata.creationTimestamp | |||
|  |       name: Age | |||
|  |       type: date | |||
|  |     name: v1beta1 | |||
|  |     schema: | |||
|  |       openAPIV3Schema: | |||
|  |         description: UDPIngress is the Schema for the udpingresses API. | |||
|  |         properties: | |||
|  |           apiVersion: | |||
|  |             description: 'APIVersion defines the versioned schema of this representation | |||
|  |               of an object. Servers should convert recognized schemas to the latest | |||
|  |               internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' | |||
|  |             type: string | |||
|  |           kind: | |||
|  |             description: 'Kind is a string value representing the REST resource this | |||
|  |               object represents. Servers may infer this from the endpoint the client | |||
|  |               submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' | |||
|  |             type: string | |||
|  |           metadata: | |||
|  |             type: object | |||
|  |           spec: | |||
|  |             description: Spec is the UDPIngress specification. | |||
|  |             properties: | |||
|  |               rules: | |||
|  |                 description: A list of rules used to configure the Ingress. | |||
|  |                 items: | |||
|  |                   description: UDPIngressRule represents a rule to apply against incoming | |||
|  |                     requests wherein no Host matching is available for request routing, | |||
|  |                     only the port is used to match requests. | |||
|  |                   properties: | |||
|  |                     backend: | |||
|  |                       description: Backend defines the Kubernetes service which accepts | |||
|  |                         traffic from the listening Port defined above. | |||
|  |                       properties: | |||
|  |                         serviceName: | |||
|  |                           description: Specifies the name of the referenced service. | |||
|  |                           minLength: 1 | |||
|  |                           type: string | |||
|  |                         servicePort: | |||
|  |                           description: Specifies the port of the referenced service. | |||
|  |                           format: int32 | |||
|  |                           maximum: 65535 | |||
|  |                           minimum: 1 | |||
|  |                           type: integer | |||
|  |                       required: | |||
|  |                       - serviceName | |||
|  |                       - servicePort | |||
|  |                       type: object | |||
|  |                     port: | |||
|  |                       description: Port indicates the port for the Kong proxy to accept | |||
|  |                         incoming traffic on, which will then be routed to the service | |||
|  |                         Backend. | |||
|  |                       format: int32 | |||
|  |                       maximum: 65535 | |||
|  |                       minimum: 1 | |||
|  |                       type: integer | |||
|  |                   required: | |||
|  |                   - backend | |||
|  |                   - port | |||
|  |                   type: object | |||
|  |                 type: array | |||
|  |             type: object | |||
|  |           status: | |||
|  |             description: UDPIngressStatus defines the observed state of UDPIngress. | |||
|  |             properties: | |||
|  |               loadBalancer: | |||
|  |                 description: LoadBalancer contains the current status of the load-balancer. | |||
|  |                 properties: | |||
|  |                   ingress: | |||
|  |                     description: Ingress is a list containing ingress points for the | |||
|  |                       load-balancer. Traffic intended for the service should be sent | |||
|  |                       to these ingress points. | |||
|  |                     items: | |||
|  |                       description: 'LoadBalancerIngress represents the status of a | |||
|  |                         load-balancer ingress point: traffic intended for the service | |||
|  |                         should be sent to an ingress point.' | |||
|  |                       properties: | |||
|  |                         hostname: | |||
|  |                           description: Hostname is set for load-balancer ingress points | |||
|  |                             that are DNS based (typically AWS load-balancers) | |||
|  |                           type: string | |||
|  |                         ip: | |||
|  |                           description: IP is set for load-balancer ingress points | |||
|  |                             that are IP based (typically GCE or OpenStack load-balancers) | |||
|  |                           type: string | |||
|  |                         ports: | |||
|  |                           description: Ports is a list of records of service ports | |||
|  |                             If used, every port defined in the service should have | |||
|  |                             an entry in it | |||
|  |                           items: | |||
|  |                             properties: | |||
|  |                               error: | |||
|  |                                 description: 'Error is to record the problem with | |||
|  |                                   the service port The format of the error shall comply | |||
|  |                                   with the following rules: - built-in error values | |||
|  |                                   shall be specified in this file and those shall | |||
|  |                                   use CamelCase names - cloud provider specific error | |||
|  |                                   values must have names that comply with the format | |||
|  |                                   foo.example.com/CamelCase. --- The regex it matches | |||
|  |                                   is (dns1123SubdomainFmt/)?(qualifiedNameFmt)' | |||
|  |                                 maxLength: 316 | |||
|  |                                 pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$ | |||
|  |                                 type: string | |||
|  |                               port: | |||
|  |                                 description: Port is the port number of the service | |||
|  |                                   port of which status is recorded here | |||
|  |                                 format: int32 | |||
|  |                                 type: integer | |||
|  |                               protocol: | |||
|  |                                 default: TCP | |||
|  |                                 description: 'Protocol is the protocol of the service | |||
|  |                                   port of which status is recorded here The supported | |||
|  |                                   values are: "TCP", "UDP", "SCTP"' | |||
|  |                                 type: string | |||
|  |                             required: | |||
|  |                             - port | |||
|  |                             - protocol | |||
|  |                             type: object | |||
|  |                           type: array | |||
|  |                           x-kubernetes-list-type: atomic | |||
|  |                       type: object | |||
|  |                     type: array | |||
|  |                 type: object | |||
|  |             type: object | |||
|  |         type: object | |||
|  |     served: true | |||
|  |     storage: true | |||
|  |     subresources: | |||
|  |       status: {} | |||
|  | --- | |||
|  | apiVersion: v1 | |||
|  | kind: ServiceAccount | |||
|  | metadata: | |||
|  |   name: kong-serviceaccount | |||
|  |   namespace: kong | |||
|  | --- | |||
|  | apiVersion: rbac.authorization.k8s.io/v1 | |||
|  | kind: Role | |||
|  | metadata: | |||
|  |   name: kong-leader-election | |||
|  |   namespace: kong | |||
|  | rules: | |||
|  | - apiGroups: | |||
|  |   - "" | |||
|  |   - coordination.k8s.io | |||
|  |   resources: | |||
|  |   - configmaps | |||
|  |   - leases | |||
|  |   verbs: | |||
|  |   - get | |||
|  |   - list | |||
|  |   - watch | |||
|  |   - create | |||
|  |   - update | |||
|  |   - patch | |||
|  |   - delete | |||
|  | - apiGroups: | |||
|  |   - "" | |||
|  |   resources: | |||
|  |   - events | |||
|  |   verbs: | |||
|  |   - create | |||
|  |   - patch | |||
|  | --- | |||
|  | apiVersion: rbac.authorization.k8s.io/v1 | |||
|  | kind: ClusterRole | |||
|  | metadata: | |||
|  |   creationTimestamp: null | |||
|  |   name: kong-ingress | |||
|  | rules: | |||
|  | - apiGroups: | |||
|  |   - "" | |||
|  |   resources: | |||
|  |   - endpoints | |||
|  |   verbs: | |||
|  |   - list | |||
|  |   - watch | |||
|  | - apiGroups: | |||
|  |   - "" | |||
|  |   resources: | |||
|  |   - endpoints/status | |||
|  |   verbs: | |||
|  |   - get | |||
|  |   - patch | |||
|  |   - update | |||
|  | - apiGroups: | |||
|  |   - "" | |||
|  |   resources: | |||
|  |   - events | |||
|  |   verbs: | |||
|  |   - create | |||
|  |   - patch | |||
|  | - apiGroups: | |||
|  |   - "" | |||
|  |   resources: | |||
|  |   - nodes | |||
|  |   verbs: | |||
|  |   - list | |||
|  |   - watch | |||
|  | - apiGroups: | |||
|  |   - "" | |||
|  |   resources: | |||
|  |   - pods | |||
|  |   verbs: | |||
|  |   - get | |||
|  |   - list | |||
|  |   - watch | |||
|  | - apiGroups: | |||
|  |   - "" | |||
|  |   resources: | |||
|  |   - secrets | |||
|  |   verbs: | |||
|  |   - list | |||
|  |   - watch | |||
|  | - apiGroups: | |||
|  |   - "" | |||
|  |   resources: | |||
|  |   - secrets/status | |||
|  |   verbs: | |||
|  |   - get | |||
|  |   - patch | |||
|  |   - update | |||
|  | - apiGroups: | |||
|  |   - "" | |||
|  |   resources: | |||
|  |   - services | |||
|  |   verbs: | |||
|  |   - get | |||
|  |   - list | |||
|  |   - watch | |||
|  | - apiGroups: | |||
|  |   - "" | |||
|  |   resources: | |||
|  |   - services/status | |||
|  |   verbs: | |||
|  |   - get | |||
|  |   - patch | |||
|  |   - update | |||
|  | - apiGroups: | |||
|  |   - configuration.konghq.com | |||
|  |   resources: | |||
|  |   - ingressclassparameterses | |||
|  |   verbs: | |||
|  |   - get | |||
|  |   - list | |||
|  |   - watch | |||
|  | - apiGroups: | |||
|  |   - configuration.konghq.com | |||
|  |   resources: | |||
|  |   - kongclusterplugins | |||
|  |   verbs: | |||
|  |   - get | |||
|  |   - list | |||
|  |   - watch | |||
|  | - apiGroups: | |||
|  |   - configuration.konghq.com | |||
|  |   resources: | |||
|  |   - kongclusterplugins/status | |||
|  |   verbs: | |||
|  |   - get | |||
|  |   - patch | |||
|  |   - update | |||
|  | - apiGroups: | |||
|  |   - configuration.konghq.com | |||
|  |   resources: | |||
|  |   - kongconsumers | |||
|  |   verbs: | |||
|  |   - get | |||
|  |   - list | |||
|  |   - watch | |||
|  | - apiGroups: | |||
|  |   - configuration.konghq.com | |||
|  |   resources: | |||
|  |   - kongconsumers/status | |||
|  |   verbs: | |||
|  |   - get | |||
|  |   - patch | |||
|  |   - update | |||
|  | - apiGroups: | |||
|  |   - configuration.konghq.com | |||
|  |   resources: | |||
|  |   - kongingresses | |||
|  |   verbs: | |||
|  |   - get | |||
|  |   - list | |||
|  |   - watch | |||
|  | - apiGroups: | |||
|  |   - configuration.konghq.com | |||
|  |   resources: | |||
|  |   - kongingresses/status | |||
|  |   verbs: | |||
|  |   - get | |||
|  |   - patch | |||
|  |   - update | |||
|  | - apiGroups: | |||
|  |   - configuration.konghq.com | |||
|  |   resources: | |||
|  |   - kongplugins | |||
|  |   verbs: | |||
|  |   - get | |||
|  |   - list | |||
|  |   - watch | |||
|  | - apiGroups: | |||
|  |   - configuration.konghq.com | |||
|  |   resources: | |||
|  |   - kongplugins/status | |||
|  |   verbs: | |||
|  |   - get | |||
|  |   - patch | |||
|  |   - update | |||
|  | - apiGroups: | |||
|  |   - configuration.konghq.com | |||
|  |   resources: | |||
|  |   - tcpingresses | |||
|  |   verbs: | |||
|  |   - get | |||
|  |   - list | |||
|  |   - watch | |||
|  | - apiGroups: | |||
|  |   - configuration.konghq.com | |||
|  |   resources: | |||
|  |   - tcpingresses/status | |||
|  |   verbs: | |||
|  |   - get | |||
|  |   - patch | |||
|  |   - update | |||
|  | - apiGroups: | |||
|  |   - configuration.konghq.com | |||
|  |   resources: | |||
|  |   - udpingresses | |||
|  |   verbs: | |||
|  |   - get | |||
|  |   - list | |||
|  |   - watch | |||
|  | - apiGroups: | |||
|  |   - configuration.konghq.com | |||
|  |   resources: | |||
|  |   - udpingresses/status | |||
|  |   verbs: | |||
|  |   - get | |||
|  |   - patch | |||
|  |   - update | |||
|  | - apiGroups: | |||
|  |   - discovery.k8s.io | |||
|  |   resources: | |||
|  |   - endpointslices | |||
|  |   verbs: | |||
|  |   - get | |||
|  |   - list | |||
|  |   - watch | |||
|  | - apiGroups: | |||
|  |   - extensions | |||
|  |   resources: | |||
|  |   - ingresses | |||
|  |   verbs: | |||
|  |   - get | |||
|  |   - list | |||
|  |   - watch | |||
|  | - apiGroups: | |||
|  |   - extensions | |||
|  |   resources: | |||
|  |   - ingresses/status | |||
|  |   verbs: | |||
|  |   - get | |||
|  |   - patch | |||
|  |   - update | |||
|  | - apiGroups: | |||
|  |   - networking.k8s.io | |||
|  |   resources: | |||
|  |   - ingressclasses | |||
|  |   verbs: | |||
|  |   - get | |||
|  |   - list | |||
|  |   - watch | |||
|  | - apiGroups: | |||
|  |   - networking.k8s.io | |||
|  |   resources: | |||
|  |   - ingresses | |||
|  |   verbs: | |||
|  |   - get | |||
|  |   - list | |||
|  |   - watch | |||
|  | - apiGroups: | |||
|  |   - networking.k8s.io | |||
|  |   resources: | |||
|  |   - ingresses/status | |||
|  |   verbs: | |||
|  |   - get | |||
|  |   - patch | |||
|  |   - update | |||
|  | --- | |||
|  | apiVersion: rbac.authorization.k8s.io/v1 | |||
|  | kind: ClusterRole | |||
|  | metadata: | |||
|  |   creationTimestamp: null | |||
|  |   name: kong-ingress-gateway | |||
|  | rules: | |||
|  | - apiGroups: | |||
|  |   - gateway.networking.k8s.io | |||
|  |   resources: | |||
|  |   - gatewayclasses | |||
|  |   verbs: | |||
|  |   - get | |||
|  |   - list | |||
|  |   - watch | |||
|  | - apiGroups: | |||
|  |   - gateway.networking.k8s.io | |||
|  |   resources: | |||
|  |   - gatewayclasses/status | |||
|  |   verbs: | |||
|  |   - get | |||
|  |   - update | |||
|  | - apiGroups: | |||
|  |   - gateway.networking.k8s.io | |||
|  |   resources: | |||
|  |   - gateways | |||
|  |   verbs: | |||
|  |   - get | |||
|  |   - list | |||
|  |   - update | |||
|  |   - watch | |||
|  | - apiGroups: | |||
|  |   - gateway.networking.k8s.io | |||
|  |   resources: | |||
|  |   - gateways/status | |||
|  |   verbs: | |||
|  |   - get | |||
|  |   - update | |||
|  | - apiGroups: | |||
|  |   - gateway.networking.k8s.io | |||
|  |   resources: | |||
|  |   - grpcroutes | |||
|  |   verbs: | |||
|  |   - get | |||
|  |   - list | |||
|  |   - watch | |||
|  | - apiGroups: | |||
|  |   - gateway.networking.k8s.io | |||
|  |   resources: | |||
|  |   - grpcroutes/status | |||
|  |   verbs: | |||
|  |   - get | |||
|  |   - patch | |||
|  |   - update | |||
|  | - apiGroups: | |||
|  |   - gateway.networking.k8s.io | |||
|  |   resources: | |||
|  |   - httproutes | |||
|  |   verbs: | |||
|  |   - get | |||
|  |   - list | |||
|  |   - watch | |||
|  | - apiGroups: | |||
|  |   - gateway.networking.k8s.io | |||
|  |   resources: | |||
|  |   - httproutes/status | |||
|  |   verbs: | |||
|  |   - get | |||
|  |   - update | |||
|  | - apiGroups: | |||
|  |   - gateway.networking.k8s.io | |||
|  |   resources: | |||
|  |   - referencegrants | |||
|  |   verbs: | |||
|  |   - get | |||
|  |   - list | |||
|  |   - watch | |||
|  | - apiGroups: | |||
|  |   - gateway.networking.k8s.io | |||
|  |   resources: | |||
|  |   - referencegrants/status | |||
|  |   verbs: | |||
|  |   - get | |||
|  | - apiGroups: | |||
|  |   - gateway.networking.k8s.io | |||
|  |   resources: | |||
|  |   - tcproutes | |||
|  |   verbs: | |||
|  |   - get | |||
|  |   - list | |||
|  |   - watch | |||
|  | - apiGroups: | |||
|  |   - gateway.networking.k8s.io | |||
|  |   resources: | |||
|  |   - tcproutes/status | |||
|  |   verbs: | |||
|  |   - get | |||
|  |   - update | |||
|  | - apiGroups: | |||
|  |   - gateway.networking.k8s.io | |||
|  |   resources: | |||
|  |   - tlsroutes | |||
|  |   verbs: | |||
|  |   - get | |||
|  |   - list | |||
|  |   - watch | |||
|  | - apiGroups: | |||
|  |   - gateway.networking.k8s.io | |||
|  |   resources: | |||
|  |   - tlsroutes/status | |||
|  |   verbs: | |||
|  |   - get | |||
|  |   - update | |||
|  | - apiGroups: | |||
|  |   - gateway.networking.k8s.io | |||
|  |   resources: | |||
|  |   - udproutes | |||
|  |   verbs: | |||
|  |   - get | |||
|  |   - list | |||
|  |   - watch | |||
|  | - apiGroups: | |||
|  |   - gateway.networking.k8s.io | |||
|  |   resources: | |||
|  |   - udproutes/status | |||
|  |   verbs: | |||
|  |   - get | |||
|  |   - update | |||
|  | --- | |||
|  | apiVersion: rbac.authorization.k8s.io/v1 | |||
|  | kind: ClusterRole | |||
|  | metadata: | |||
|  |   creationTimestamp: null | |||
|  |   name: kong-ingress-knative | |||
|  | rules: | |||
|  | - apiGroups: | |||
|  |   - networking.internal.knative.dev | |||
|  |   resources: | |||
|  |   - ingresses | |||
|  |   verbs: | |||
|  |   - get | |||
|  |   - list | |||
|  |   - watch | |||
|  | - apiGroups: | |||
|  |   - networking.internal.knative.dev | |||
|  |   resources: | |||
|  |   - ingresses/status | |||
|  |   verbs: | |||
|  |   - get | |||
|  |   - patch | |||
|  |   - update | |||
|  | --- | |||
|  | apiVersion: rbac.authorization.k8s.io/v1 | |||
|  | kind: RoleBinding | |||
|  | metadata: | |||
|  |   name: kong-leader-election | |||
|  |   namespace: kong | |||
|  | roleRef: | |||
|  |   apiGroup: rbac.authorization.k8s.io | |||
|  |   kind: Role | |||
|  |   name: kong-leader-election | |||
|  | subjects: | |||
|  | - kind: ServiceAccount | |||
|  |   name: kong-serviceaccount | |||
|  |   namespace: kong | |||
|  | --- | |||
|  | apiVersion: rbac.authorization.k8s.io/v1 | |||
|  | kind: ClusterRoleBinding | |||
|  | metadata: | |||
|  |   name: kong-ingress | |||
|  | roleRef: | |||
|  |   apiGroup: rbac.authorization.k8s.io | |||
|  |   kind: ClusterRole | |||
|  |   name: kong-ingress | |||
|  | subjects: | |||
|  | - kind: ServiceAccount | |||
|  |   name: kong-serviceaccount | |||
|  |   namespace: kong | |||
|  | --- | |||
|  | apiVersion: rbac.authorization.k8s.io/v1 | |||
|  | kind: ClusterRoleBinding | |||
|  | metadata: | |||
|  |   name: kong-ingress-gateway | |||
|  | roleRef: | |||
|  |   apiGroup: rbac.authorization.k8s.io | |||
|  |   kind: ClusterRole | |||
|  |   name: kong-ingress-gateway | |||
|  | subjects: | |||
|  | - kind: ServiceAccount | |||
|  |   name: kong-serviceaccount | |||
|  |   namespace: kong | |||
|  | --- | |||
|  | apiVersion: rbac.authorization.k8s.io/v1 | |||
|  | kind: ClusterRoleBinding | |||
|  | metadata: | |||
|  |   name: kong-ingress-knative | |||
|  | roleRef: | |||
|  |   apiGroup: rbac.authorization.k8s.io | |||
|  |   kind: ClusterRole | |||
|  |   name: kong-ingress-knative | |||
|  | subjects: | |||
|  | - kind: ServiceAccount | |||
|  |   name: kong-serviceaccount | |||
|  |   namespace: kong | |||
|  |    | |||
|  | [root@xingdiancloud-master kong]# kubectl apply -f crd.yaml  | |||
|  | ``` | |||
|  | 
 | |||
|  | #### 4.部署数据库PostgreSql
 | |||
|  | 
 | |||
|  | 创建持久卷PV | |||
|  | 
 | |||
|  | 提前在NFS服务器上创建共享目录 | |||
|  | 
 | |||
|  | ```yaml | |||
|  | [root@xingdiancloud-master kong]# cat postgres-pv.yaml  | |||
|  | apiVersion: v1 | |||
|  | kind: PersistentVolume | |||
|  | metadata: | |||
|  |   name: postgrespv01 | |||
|  |   labels: | |||
|  |     name: postgrespv01 | |||
|  |     function: postgres | |||
|  | spec: | |||
|  |   nfs: | |||
|  |     path: /data/xingdiancloud/master/postgresql/ | |||
|  |     server: 10.9.12.250 | |||
|  |   accessModes: ["ReadWriteMany","ReadWriteOnce"] | |||
|  |   capacity: | |||
|  |     storage: 10Gi | |||
|  | [root@xingdiancloud-master kong]# kubectl apply -f postgres-pv.yaml  | |||
|  | ``` | |||
|  | 
 | |||
|  | 创建对应的StatefulSet控制器运行PostgreSql | |||
|  | 
 | |||
|  | 创建对应的SVC | |||
|  | 
 | |||
|  | ```yaml | |||
|  | [root@xingdiancloud-master kong]# cat postgres-sts.yaml  | |||
|  | --- | |||
|  | apiVersion: v1 | |||
|  | kind: Service | |||
|  | metadata: | |||
|  |   name: postgres | |||
|  |   namespace: kong | |||
|  | spec: | |||
|  |   ports: | |||
|  |   - name: pgql | |||
|  |     port: 5432 | |||
|  |     protocol: TCP | |||
|  |     targetPort: 5432 | |||
|  |   selector: | |||
|  |     app: postgres | |||
|  | 
 | |||
|  | --- | |||
|  | apiVersion: apps/v1 | |||
|  | kind: StatefulSet | |||
|  | metadata: | |||
|  |   name: postgres | |||
|  |   namespace: kong | |||
|  | spec: | |||
|  |   replicas: 1 | |||
|  |   selector: | |||
|  |     matchLabels: | |||
|  |       app: postgres | |||
|  |   serviceName: postgres | |||
|  |   template: | |||
|  |     metadata: | |||
|  |       labels: | |||
|  |         app: postgres | |||
|  |     spec: | |||
|  |       containers: | |||
|  |       - env: | |||
|  |         - name: POSTGRES_USER | |||
|  |           value: kong | |||
|  |         - name: POSTGRES_PASSWORD | |||
|  |           value: kong | |||
|  |         - name: POSTGRES_DB | |||
|  |           value: kong | |||
|  |         - name: PGDATA | |||
|  |           value: /var/lib/postgresql/data/pgdata | |||
|  |         image: 10.9.12.201/kong/postgres:9.5 | |||
|  |         name: postgres | |||
|  |         ports: | |||
|  |         - containerPort: 5432 | |||
|  |         volumeMounts: | |||
|  |         - mountPath: /var/lib/postgresql/data | |||
|  |           name: postgres-pvc | |||
|  |           subPath: pgdata | |||
|  |       terminationGracePeriodSeconds: 60 | |||
|  |   volumeClaimTemplates: | |||
|  |   - metadata: | |||
|  |       name: postgres-pvc | |||
|  |     spec: | |||
|  |       selector: | |||
|  |         matchLabels: | |||
|  |           function: postgres | |||
|  |       accessModes: ["ReadWriteOnce"] | |||
|  |       resources: | |||
|  |         requests: | |||
|  |           storage: 9Gi | |||
|  |            | |||
|  | [root@xingdiancloud-master kong]# kubectl apply -f postgres-sts.yaml  | |||
|  | ``` | |||
|  | 
 | |||
|  | 数据导入 | |||
|  | 
 | |||
|  | ```yaml | |||
|  | [root@xingdiancloud-master kong]# cat kong-postgresql.yaml  | |||
|  | --- | |||
|  | apiVersion: batch/v1 | |||
|  | kind: Job | |||
|  | metadata: | |||
|  |   name: kong-migrations | |||
|  |   namespace: kong | |||
|  | spec: | |||
|  |   template: | |||
|  |     metadata: | |||
|  |       name: kong-migrations | |||
|  |     spec: | |||
|  |       containers: | |||
|  |       - command: | |||
|  |         - /bin/sh | |||
|  |         - -c | |||
|  |         - kong migrations bootstrap | |||
|  |         env: | |||
|  |         - name: KONG_PG_PASSWORD | |||
|  |           value: kong | |||
|  |         - name: KONG_PG_HOST | |||
|  |           value: postgres | |||
|  |         - name: KONG_PG_PORT | |||
|  |           value: "5432" | |||
|  |         image: 10.9.12.201/kong/kong:3.2 | |||
|  |         name: kong-migrations | |||
|  |       initContainers: | |||
|  |       - command: | |||
|  |         - /bin/sh | |||
|  |         - -c | |||
|  |         - until nc -zv $KONG_PG_HOST $KONG_PG_PORT -w1; do echo 'waiting for db'; | |||
|  |           sleep 1; done | |||
|  |         env: | |||
|  |         - name: KONG_PG_HOST | |||
|  |           value: postgres | |||
|  |         - name: KONG_PG_PORT | |||
|  |           value: "5432" | |||
|  |         image: 10.9.12.201/xingdian/busybox | |||
|  |         name: wait-for-postgres | |||
|  |       restartPolicy: OnFailure | |||
|  | ``` | |||
|  | 
 | |||
|  | #### 5.创建配置ConfigMap
 | |||
|  | 
 | |||
|  | ```yaml | |||
|  | [root@xingdiancloud-master kong]# cat configmap.yaml  | |||
|  | --- | |||
|  | kind: ConfigMap | |||
|  | apiVersion: v1 | |||
|  | metadata: | |||
|  |   name: kong-server-blocks | |||
|  |   namespace: kong | |||
|  | data: | |||
|  |   servers.conf: | | |||
|  |     # Prometheus metrics server | |||
|  |     server { | |||
|  |         server_name kong_prometheus_exporter; | |||
|  |         listen 0.0.0.0:9542; # can be any other port as well | |||
|  |         access_log off; | |||
|  | 
 | |||
|  |         location /metrics { | |||
|  |             default_type text/plain; | |||
|  |             content_by_lua_block { | |||
|  |                  local prometheus = require "kong.plugins.prometheus.exporter" | |||
|  |                  prometheus:collect() | |||
|  |             } | |||
|  |         } | |||
|  | 
 | |||
|  |         location /nginx_status { | |||
|  |             internal; | |||
|  |             stub_status; | |||
|  |         } | |||
|  |     } | |||
|  |     # Health check server | |||
|  |     server { | |||
|  |         server_name kong_health_check; | |||
|  |         listen 0.0.0.0:9001; # can be any other port as well | |||
|  | 
 | |||
|  |         access_log off; | |||
|  |         location /health { | |||
|  |           return 200; | |||
|  |         } | |||
|  |     } | |||
|  |      | |||
|  | [root@xingdiancloud-master kong]# kubectl apply -f configmap.yaml  | |||
|  | ``` | |||
|  | 
 | |||
|  | #### 6.部署Kong Ingress
 | |||
|  | 
 | |||
|  | 创建SVC | |||
|  | 
 | |||
|  | 使用Deployment创建kong ingress | |||
|  | 
 | |||
|  | 创建IngressClass | |||
|  | 
 | |||
|  | ```yaml | |||
|  | [root@xingdiancloud-master kong]# cat kong-ingress.yaml | |||
|  | 
 | |||
|  | apiVersion: v1 | |||
|  | kind: Service | |||
|  | metadata: | |||
|  |   annotations: | |||
|  |     service.beta.kubernetes.io/aws-load-balancer-backend-protocol: tcp | |||
|  |     service.beta.kubernetes.io/aws-load-balancer-type: nlb | |||
|  |   name: kong-proxy | |||
|  |   namespace: kong | |||
|  | spec: | |||
|  |   ports: | |||
|  |   - name: proxy | |||
|  |     port: 80 | |||
|  |     protocol: TCP | |||
|  |     targetPort: 8000 | |||
|  |   - name: proxy-ssl | |||
|  |     port: 443 | |||
|  |     protocol: TCP | |||
|  |     targetPort: 8443 | |||
|  |   - name: kong-admin | |||
|  |     port: 8001 | |||
|  |     protocol: TCP | |||
|  |     targetPort: 8001 | |||
|  |   - name: kong-admin-ssl | |||
|  |     port: 8444 | |||
|  |     protocol: TCP | |||
|  |     targetPort: 8444 | |||
|  |   selector: | |||
|  |     app: ingress-kong | |||
|  |   type: NodePort | |||
|  | --- | |||
|  | apiVersion: v1 | |||
|  | kind: Service | |||
|  | metadata: | |||
|  |   name: kong-validation-webhook | |||
|  |   namespace: kong | |||
|  | spec: | |||
|  |   ports: | |||
|  |   - name: webhook | |||
|  |     port: 443 | |||
|  |     protocol: TCP | |||
|  |     targetPort: 8080 | |||
|  |   selector: | |||
|  |     app: ingress-kong | |||
|  | --- | |||
|  | apiVersion: apps/v1 | |||
|  | kind: Deployment | |||
|  | metadata: | |||
|  |   labels: | |||
|  |     app: ingress-kong | |||
|  |   name: ingress-kong | |||
|  |   namespace: kong | |||
|  | spec: | |||
|  |   replicas: 3 | |||
|  |   selector: | |||
|  |     matchLabels: | |||
|  |       app: ingress-kong | |||
|  |   template: | |||
|  |     metadata: | |||
|  |       annotations: | |||
|  |         kuma.io/gateway: enabled | |||
|  |         prometheus.io/port: "8100" | |||
|  |         prometheus.io/scrape: "true" | |||
|  |         traffic.sidecar.istio.io/includeInboundPorts: "" | |||
|  |       labels: | |||
|  |         app: ingress-kong | |||
|  |     spec: | |||
|  |       containers: | |||
|  |       - env: | |||
|  |         - name: KONG_PROXY_LISTEN | |||
|  |           value: 0.0.0.0:8000, 0.0.0.0:8443 ssl http2 | |||
|  |         - name: KONG_ADMIN_LISTEN | |||
|  |           value: 0.0.0.0:8001, 0.0.0.0:8444 ssl | |||
|  |         - name: KONG_STATUS_LISTEN | |||
|  |           value: 0.0.0.0:8100 | |||
|  |         - name: KONG_DATABASE | |||
|  |           value: postgres | |||
|  |         - name: KONG_PG_HOST | |||
|  |           value: postgres | |||
|  |         - name: KONG_PG_PASSWORD | |||
|  |           value: kong | |||
|  |         - name: KONG_NGINX_WORKER_PROCESSES | |||
|  |           value: "1" | |||
|  |         - name: KONG_ADMIN_ACCESS_LOG | |||
|  |           value: /dev/stdout | |||
|  |         - name: KONG_ADMIN_ERROR_LOG | |||
|  |           value: /dev/stderr | |||
|  |         - name: KONG_PROXY_ERROR_LOG | |||
|  |           value: /dev/stderr | |||
|  |         image: 10.9.12.201/kong/kong:3.2 | |||
|  |         lifecycle: | |||
|  |           preStop: | |||
|  |             exec: | |||
|  |               command: | |||
|  |               - /bin/sh | |||
|  |               - -c | |||
|  |               - kong quit | |||
|  |         livenessProbe: | |||
|  |           failureThreshold: 3 | |||
|  |           httpGet: | |||
|  |             path: /status | |||
|  |             port: 8100 | |||
|  |             scheme: HTTP | |||
|  |           initialDelaySeconds: 5 | |||
|  |           periodSeconds: 10 | |||
|  |           successThreshold: 1 | |||
|  |           timeoutSeconds: 1 | |||
|  |         name: proxy | |||
|  |         ports: | |||
|  |         - containerPort: 8000 | |||
|  |           name: proxy | |||
|  |           protocol: TCP | |||
|  |         - containerPort: 8443 | |||
|  |           name: proxy-ssl | |||
|  |           protocol: TCP | |||
|  |         - containerPort: 8100 | |||
|  |           name: metrics | |||
|  |           protocol: TCP | |||
|  |         readinessProbe: | |||
|  |           failureThreshold: 3 | |||
|  |           httpGet: | |||
|  |             path: /status | |||
|  |             port: 8100 | |||
|  |             scheme: HTTP | |||
|  |           initialDelaySeconds: 5 | |||
|  |           periodSeconds: 10 | |||
|  |           successThreshold: 1 | |||
|  |           timeoutSeconds: 1 | |||
|  |         securityContext: | |||
|  |           runAsUser: 1000 | |||
|  |       - env: | |||
|  |         - name: CONTROLLER_KONG_ADMIN_URL | |||
|  |           value: https://127.0.0.1:8444 | |||
|  |         - name: CONTROLLER_KONG_ADMIN_TLS_SKIP_VERIFY | |||
|  |           value: "true" | |||
|  |         - name: CONTROLLER_PUBLISH_SERVICE | |||
|  |           value: kong/kong-proxy | |||
|  |         - name: POD_NAME | |||
|  |           valueFrom: | |||
|  |             fieldRef: | |||
|  |               apiVersion: v1 | |||
|  |               fieldPath: metadata.name | |||
|  |         - name: POD_NAMESPACE | |||
|  |           valueFrom: | |||
|  |             fieldRef: | |||
|  |               apiVersion: v1 | |||
|  |               fieldPath: metadata.namespace | |||
|  |         image: 10.9.12.201/kong/kubernetes-ingress-controller:2.9.3 | |||
|  |         imagePullPolicy: IfNotPresent | |||
|  |         livenessProbe: | |||
|  |           failureThreshold: 3 | |||
|  |           httpGet: | |||
|  |             path: /healthz | |||
|  |             port: 10254 | |||
|  |             scheme: HTTP | |||
|  |           initialDelaySeconds: 5 | |||
|  |           periodSeconds: 10 | |||
|  |           successThreshold: 1 | |||
|  |           timeoutSeconds: 1 | |||
|  |         name: ingress-controller | |||
|  |         ports: | |||
|  |         - containerPort: 8080 | |||
|  |           name: webhook | |||
|  |           protocol: TCP | |||
|  |         readinessProbe: | |||
|  |           failureThreshold: 3 | |||
|  |           httpGet: | |||
|  |             path: /healthz | |||
|  |             port: 10254 | |||
|  |             scheme: HTTP | |||
|  |           initialDelaySeconds: 5 | |||
|  |           periodSeconds: 10 | |||
|  |           successThreshold: 1 | |||
|  |           timeoutSeconds: 1 | |||
|  |       serviceAccountName: kong-serviceaccount | |||
|  | --- | |||
|  | apiVersion: networking.k8s.io/v1 | |||
|  | kind: IngressClass | |||
|  | metadata: | |||
|  |   name: kong | |||
|  | spec: | |||
|  |   controller: ingress-controllers.konghq.com/kong | |||
|  |    | |||
|  | [root@xingdiancloud-master kong]# kubectl apply -f kong-ingress.yaml | |||
|  | ``` | |||
|  | 
 | |||
|  | #### 7.部署Konga
 | |||
|  | 
 | |||
|  | 数据导入 | |||
|  | 
 | |||
|  | ```yaml | |||
|  | [root@xingdiancloud-master kong]# cat magrations.yaml  | |||
|  | 
 | |||
|  | --- | |||
|  | apiVersion: batch/v1 | |||
|  | kind: Job | |||
|  | metadata: | |||
|  |   name: konga-migrations | |||
|  |   namespace: kong | |||
|  | spec: | |||
|  |   template: | |||
|  |     metadata: | |||
|  |       name: konga-migrations | |||
|  |     spec: | |||
|  |       imagePullSecrets: | |||
|  |         - name: harbor-secret | |||
|  |       containers: | |||
|  |       - command: | |||
|  |         - /bin/sh | |||
|  |         - -c | |||
|  |         - /app/start.sh -c prepare -a postgres -u postgresql://kong:kong@postgres:5432/konga | |||
|  |         env: | |||
|  |         - name: KONG_PG_PASSWORD | |||
|  |           value: kong | |||
|  |         - name: KONG_PG_HOST | |||
|  |           value: postgres | |||
|  |         - name: KONG_PG_PORT | |||
|  |           value: "5432" | |||
|  |         image: 10.9.12.201/kong/konga:latest | |||
|  |         name: kong-migrations | |||
|  |       initContainers: | |||
|  |       - command: | |||
|  |         - /bin/sh | |||
|  |         - -c | |||
|  |         - until nc -zv $KONG_PG_HOST $KONG_PG_PORT -w1; do echo 'waiting for db'; | |||
|  |           sleep 1; done | |||
|  |         env: | |||
|  |         - name: KONG_PG_HOST | |||
|  |           value: postgres | |||
|  |         - name: KONG_PG_PORT | |||
|  |           value: "5432" | |||
|  |         image: 10.9.12.201/xingdian/busybox | |||
|  |         name: wait-for-postgres | |||
|  |       restartPolicy: OnFailure | |||
|  |        | |||
|  | [root@xingdiancloud-master kong]# kubectl apply -f magrations.yaml  | |||
|  | ``` | |||
|  | 
 | |||
|  | 部署Konga | |||
|  | 
 | |||
|  | ```yaml | |||
|  | [root@xingdiancloud-master kong]# cat konga.yaml  | |||
|  | --- | |||
|  | apiVersion: v1 | |||
|  | kind: Service | |||
|  | metadata: | |||
|  |   name: konga-proxy | |||
|  |   namespace: kong | |||
|  | spec: | |||
|  |   type: NodePort | |||
|  |   ports: | |||
|  |   - name: konga-proxy | |||
|  |     port: 1337 | |||
|  |     targetPort: 1337 | |||
|  |     nodePort: 1337 | |||
|  |     protocol: TCP | |||
|  |   selector: | |||
|  |     app: dashboard-konga | |||
|  | 
 | |||
|  | --- | |||
|  | apiVersion: apps/v1 | |||
|  | kind: Deployment | |||
|  | metadata: | |||
|  |   labels: | |||
|  |     app: dashboard-konga | |||
|  |   name: konga | |||
|  |   namespace: kong | |||
|  | spec: | |||
|  |   replicas: 1 | |||
|  |   selector: | |||
|  |     matchLabels: | |||
|  |       app: dashboard-konga | |||
|  |   template: | |||
|  |     metadata: | |||
|  |       labels: | |||
|  |         app: dashboard-konga | |||
|  |     spec: | |||
|  |       nodeSelector: | |||
|  |         ingress: proxy | |||
|  |       containers: | |||
|  |       - env: | |||
|  |         - name: NODE_ENV | |||
|  |           value: production | |||
|  |         - name: DB_ADAPTER | |||
|  |           value: postgres | |||
|  |         - name: DB_URI | |||
|  |           value: postgresql://kong:kong@postgres:5432/konga | |||
|  |         image: 10.9.12.201/kong/konga:latest | |||
|  |         name: konga | |||
|  |         ports: | |||
|  |         - containerPort: 1337 | |||
|  |           name: konga-port | |||
|  |           protocol: TCP | |||
|  |       tolerations: | |||
|  |       - key: "node-role.kubernetes.io/control-plane" | |||
|  |         operator: "Equal" | |||
|  |         value: "" | |||
|  |         effect: "NoSchedule" | |||
|  |          | |||
|  | [root@xingdiancloud-master kong]# kubectl apply -f konga.yaml  | |||
|  | ``` | |||
|  | 
 | |||
|  | #### 8.验证
 | |||
|  | 
 | |||
|  | ```shell | |||
|  | [root@xingdiancloud-master kong]# kubectl get pod -n kong | |||
|  | ``` | |||
|  | 
 | |||
|  |  | |||
|  | 
 | |||
|  | #### 9.浏览器访问
 | |||
|  | 
 | |||
|  | 需要先按照要求创建管理员账户 | |||
|  | 
 | |||
|  | 使用创建的管理员账户登录konga | |||
|  | 
 | |||
|  |  | |||
|  | 
 | |||
|  | #### 10.Konga连接kong
 | |||
|  | 
 | |||
|  | Name:自定义 | |||
|  | 
 | |||
|  | Kong Admin URL:kong-proxy 这个是 kong的svc的名字;kong 这个是svc对应的命名空间;svc固定 | |||
|  | 
 | |||
|  |  | |||
|  | 
 | |||
|  |  | |||
|  | 
 | |||
|  |  | |||
|  | 
 | |||
|  | ## 三.使用kong ingress
 | |||
|  | 
 | |||
|  | #### 1.创建upsteams
 | |||
|  | 
 | |||
|  | 只需要起个名字,其他的默认 | |||
|  | 
 | |||
|  |  | |||
|  | 
 | |||
|  | 配置 Targets | |||
|  | 
 | |||
|  | Target:访问项目的地址,konga-proxy:项目对应svc的名字;kong:项目的命名空间;svc固定;1337:端口 | |||
|  | 
 | |||
|  |  | |||
|  | 
 | |||
|  | #### 2.创建Services
 | |||
|  | 
 | |||
|  |  | |||
|  | 
 | |||
|  | Name:自定义 | |||
|  | 
 | |||
|  | Protocol:http和https均可 没有证书的情况下使用http | |||
|  | 
 | |||
|  | Host:关联Upstreams,写对应的upstreams的名字 | |||
|  | 
 | |||
|  | Port:项目对应svc访问端口 | |||
|  | 
 | |||
|  |  | |||
|  | 
 | |||
|  | #### 3.创建Route
 | |||
|  | 
 | |||
|  |  | |||
|  | 
 | |||
|  | Name:自定义 | |||
|  | 
 | |||
|  | Host:指定对应项目访问域名 kong.xingdian.com 该域名需要跟访问IP地址做域名解析 | |||
|  | 
 | |||
|  | Paths:请求路径 使用默认的 / | |||
|  | 
 | |||
|  |  | |||
|  | 
 | |||
|  | #### 4.配置域名解析
 | |||
|  | 
 | |||
|  | 如果使用DNS服务器,将域名与IP加入配置zone即可 | |||
|  | 
 | |||
|  | 如果没有使用DNS服务器,在客户端访问时添加本地域名解析(实验环境) | |||
|  | 
 | |||
|  | #### 5.浏览器访问
 | |||
|  | 
 | |||
|  | 如果成功使用域名访问到,说明使用kong ingress引流成功 | |||
|  | 
 | |||
|  |  | |||
|  | 
 | |||
|  | #### 6.应用场景
 | |||
|  | 
 | |||
|  | 	未来在kubernetes集群中发布的任何项目,如果使用Kong Ingress进行引流,均可采用上述流程 | |||
|  | 
 |