目的

使用kong作为目录/data/reports的静态资源服务器,为了测试,已于目录/data/reports下创建文件report.html,如下:

<html>
<head></head>
<body><h1>测试报告</h1></body>
</html>

一、编写nginx自定义模板

  1. 获取kong自定义的nginx配置
[root@justmine ~]# kubectl -n [kong所在的命名空间] exec -it [kong pod完全限定名] sh
[root@justmine ~]# cat /usr/local/kong/nginx.conf

nginx.conf内容复制出来,新的nginx模板将在此内容上进行修改,避免修改后无法启动kong容器。

  1. 添加托管静态资源配置
worker_processes auto;
daemon off; pid pids/nginx.pid;
error_log /dev/stderr notice; worker_rlimit_nofile 65536; events {
worker_connections 16384;
multi_accept on;
} http {
include 'nginx-kong.conf';
# 上面为kong本身配置,下面为提供静态资源的配置。
server {
listen 8005 default_server;
index index.html;
root /kong/nginx/www;
}
}
  1. 将上面的文件保存到k8s
[root@justmine ~]# kubectl -n [kong所在的命名空间] create configmap kong-nginx-custom-config --from-file=/data/kong/custom_nginx.template

二、配置kong

  1. 挂载自定义配置
volumes:
- configMap:
defaultMode: 420
name: kong-nginx-custom-config
name: kong-nginx-custom-config
---中间省略---
- mountPath: /usr/local/kong/nginx.conf
name: kong-nginx-custom-config
subPath: custom_nginx.template
  1. 挂载静态资源目录
- mountPath: /kong/nginx/www
name: staging-test-reports
---中间省略---
- hostPath:
path: /data/reports
type: DirectoryOrCreate
name: staging-test-reports
  1. 添加服务和路由
#!/bin/bash

set -e
IFS=$'\n\n' echo ""
echo "Start building the cnd-sure-route dynamically..." declare svcName="自定义服务名称"
declare kongServiceBaseUrl="http://[kong admin地址]/services"
declare sureRouteSvcUrl="http://localhost:8005" # resilience handle
# Maximum time in seconds that you allow the whole operation to take.
declare maxTime=5
# Maximum time in seconds that you allow the connection to the server to take.
declare maxConnectTime=2
declare retryCount=5 ## add services
function createService()
{
curl -X POST $1 \
--connect-timeout $2 \
--max-time $3 \
--retry $4 \
-H "accept: application/json" \
-H "Content-Type: application/json" \
-d "{ \"name\": \"$5\", \"url\": \"$6\"}";
}
createService $kongServiceBaseUrl $maxConnectTime $maxTime $retryCount $svcName $sureRouteSvcUrl ## add routes
declare kongRouteBaseUrl="http://[kong admin地址]/routes"
declare kongRouteDomain="[路由绑定的域名]" function createRoute()
{
declare svcResponse=$(curl -X GET $kongServiceBaseUrl/$5 --connect-timeout $2 --max-time $3 --retry $4)
declare JQ_EXEC=`which jq`
declare svcId=$(echo $svcResponse | ${JQ_EXEC} .id | sed 's/\"//g')
declare defMethods="[\"GET\"]" set +e
if [ -n "$8" ]; then
defMethods=$8
fi if [ -z "$svcId" ]; then
echo "Warnning, failed to get the service[$5] identifier, route cannot be created.";
else
curl -X POST $1 \
--connect-timeout $2 \
--max-time $3 \
--retry $4 \
-H "accept: application/json" \
-H "Content-Type: application/json" \
-d "{ \"service\": "{\"id\":\"$svcId\"}",\"paths\": "[\"$6\"]",\"methods\": "$defMethods",\"strip_path\":$7,\"hosts\": "[\"$kongRouteDomain\"]"}";
fi
set -e
} declare sureRouteRouteUrl="/" createRoute $kongRouteBaseUrl $maxConnectTime $maxTime $retryCount $svcName $sureRouteRouteUrl true echo ""
echo "Dynamicly building the cnd-sure-route successfully !!!"

备注:也可以使用kong的dashboad完成上面shell脚本的功能。

三、测试

k8s运维记 - 如何让部署到k8s的kong网关托管自定义静态资源?的更多相关文章

  1. k8s运维之pod排错

    k8s运维之pod排错 K8S是一个开源的,用于管理云平台中多个主机上的容器化应用,Kubernetes的目标是让部署容器化变得简单并且高效 K8S的核心优势: 1,基于yaml文件实现容器的自动创建 ...

  2. 自动化运维工具Ansible详细部署 (转载)

    自动化运维工具Ansible详细部署 标签:ansible 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://sofar.blog. ...

  3. 自动化运维工具Ansible详细部署 - 人生理想在于坚持不懈 - 51CTO技术博客

    自动化运维工具Ansible详细部署 - 人生理想在于坚持不懈 - 51CTO技术博客 自动化运维工具Ansible详细部署

  4. 运维自动化之系统部署 PXE(二)

    PXE介绍 Preboot Excution Environment 预启动执行环境 Intel公司研发 基于Client/Server的网络模式,支持远程主机通过网络从远端服务器下载映像,并由此支持 ...

  5. 自动化运维工具SaltStack详细部署【转】

    ==========================================================================================一.基础介绍==== ...

  6. k8s运维处理

    k8s运维处理 驱逐节点容器,进行docker,等重要组件的重启时,打驱逐标记 kubectl drain [option --node ip] 进行重启docker或kubelet等其他操作,操作完 ...

  7. nginx反向代理部署springboot项目报404无法加载静态资源

    问题:nginx反向代理部署springboot项目报404无法加载静态资源(css,js,jpg,png...) springboot默认启动端口为8080,如果需要通过域名(不加端口号)直接访问s ...

  8. 自动化运维工具Ansible详细部署

    本文来源:http://sofar.blog.51cto.com/353572/1579894/ 前言 一个由 Python 编写的强大的配置管理解决方案.尽管市面上已经有很多可供选择的配置管理解决方 ...

  9. 自动化运维工具Ansible的部署步骤详解

    本文来源于http://sofar.blog.51cto.com/353572/1579894,主要是看到这样一篇好文章,想留下来供各位同僚一起分享. 一.基础介绍 ================= ...

随机推荐

  1. 10 UA池和代理池

    在Scrapy中,引擎和下载器之间有一个组件,叫下载中间件(Downloader Middlewares).因它是介于Scrapy的request/response处理的钩子,所以有2方面作用: (1 ...

  2. 在React中使用Bootstrap

    这几天想在react中用一下bootstrap,尽管有一个适配react的很好的库叫react-bootstrap,但我还是想直接使用bootstrap 可以在react项目中执行以下命令安装boot ...

  3. 【Nginx】(主从热备)LVS+Keepalived+Nginx实现高性能负载均衡集群

    一.LVS 1.1 概述 1.2 Nginx与LVS区别什么 二.Keepalived 2.1 概述 2.2 keepalived和其工作原理 三.LVS+Keepalived+Nginx 搭建双机主 ...

  4. 【Spring】AOP注解方式实现机制

    一.概述 二.@EnableAspectJAutoProxy 注解分析 三.分析AnnotationAwareAspectJAutoProxyCreator 四.执行流程 1. registerBea ...

  5. maven学习笔记(超详细总结)

    目录 项目管理利器--maven 第1章 maven概述 1-1 项目管理利器-maven简介 1.1.1 什么是maven 1.1.2 什么是依赖管理 1.1.3 传统项目的依赖管理 1.1.4 m ...

  6. MySQL数据库(良心资料)

    一.MySQL数据库 1.数据库简介 1.1.数据库的概念 数据库就是用来存储和管理数据的仓库.数据库存储数据的优点: l  可存储大量数据: l  方便检索: l  保持数据的一致性.完整性: l  ...

  7. 6.final和static

    一.final final修饰类表示该类为最终类,不可被继承. final修饰方法表示该方法为最终方法,不可被重写. final修饰属性表示该属性不可变,不可变有两种含义.当其修饰基本类型变量时表明其 ...

  8. Solve Hibernate Lazy-Init issue with hibernate.enable_lazy_load_no_trans

    I have been suffering from infamous hibernate exception org.hibernate.LazyInitializationException: c ...

  9. 第二场周赛(递归递推个人Rank赛)——题解

    很高兴给大家出题,本次难度低于上一场,新生的六个题都可以直接裸递归式或者裸递推式解决,对于老生的汉诺塔3,需要找出一般式,后两题分别为裸ST算法(或线段树)/线性DP. 正确的难度顺序为 种花 角谷定 ...

  10. python 虚拟环境下导入模块出现no matching modules 的解决办法

    问题原因:pip版本过低 解决办法:升级pip                             命令行为   python -m pip install -U pip