k8s运维记 - 如何让部署到k8s的kong网关托管自定义静态资源?
目的
使用kong作为目录/data/reports
的静态资源服务器,为了测试,已于目录/data/reports
下创建文件report.html
,如下:
<html>
<head></head>
<body><h1>测试报告</h1></body>
</html>
一、编写nginx自定义模板
- 获取kong自定义的nginx配置
[root@justmine ~]# kubectl -n [kong所在的命名空间] exec -it [kong pod完全限定名] sh
[root@justmine ~]# cat /usr/local/kong/nginx.conf
将nginx.conf内容复制出来,新的nginx
模板将在此内容上进行修改,避免修改后无法启动kong容器。
- 添加托管静态资源配置
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;
}
}
- 将上面的文件保存到k8s
[root@justmine ~]# kubectl -n [kong所在的命名空间] create configmap kong-nginx-custom-config --from-file=/data/kong/custom_nginx.template
二、配置kong
- 挂载自定义配置
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
- 挂载静态资源目录
- mountPath: /kong/nginx/www
name: staging-test-reports
---中间省略---
- hostPath:
path: /data/reports
type: DirectoryOrCreate
name: staging-test-reports
- 添加服务和路由
#!/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网关托管自定义静态资源?的更多相关文章
- k8s运维之pod排错
k8s运维之pod排错 K8S是一个开源的,用于管理云平台中多个主机上的容器化应用,Kubernetes的目标是让部署容器化变得简单并且高效 K8S的核心优势: 1,基于yaml文件实现容器的自动创建 ...
- 自动化运维工具Ansible详细部署 (转载)
自动化运维工具Ansible详细部署 标签:ansible 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://sofar.blog. ...
- 自动化运维工具Ansible详细部署 - 人生理想在于坚持不懈 - 51CTO技术博客
自动化运维工具Ansible详细部署 - 人生理想在于坚持不懈 - 51CTO技术博客 自动化运维工具Ansible详细部署
- 运维自动化之系统部署 PXE(二)
PXE介绍 Preboot Excution Environment 预启动执行环境 Intel公司研发 基于Client/Server的网络模式,支持远程主机通过网络从远端服务器下载映像,并由此支持 ...
- 自动化运维工具SaltStack详细部署【转】
==========================================================================================一.基础介绍==== ...
- k8s运维处理
k8s运维处理 驱逐节点容器,进行docker,等重要组件的重启时,打驱逐标记 kubectl drain [option --node ip] 进行重启docker或kubelet等其他操作,操作完 ...
- nginx反向代理部署springboot项目报404无法加载静态资源
问题:nginx反向代理部署springboot项目报404无法加载静态资源(css,js,jpg,png...) springboot默认启动端口为8080,如果需要通过域名(不加端口号)直接访问s ...
- 自动化运维工具Ansible详细部署
本文来源:http://sofar.blog.51cto.com/353572/1579894/ 前言 一个由 Python 编写的强大的配置管理解决方案.尽管市面上已经有很多可供选择的配置管理解决方 ...
- 自动化运维工具Ansible的部署步骤详解
本文来源于http://sofar.blog.51cto.com/353572/1579894,主要是看到这样一篇好文章,想留下来供各位同僚一起分享. 一.基础介绍 ================= ...
随机推荐
- MySQL EXPLAIN结果集分析 - 附带大量案例
大量实例助你看懂Explain的输出内容,轻松搞定慢查询 EXPLAIN:查看SQL语句的执行计划 EXPLAIN命令可以帮助我们深入了解MySQL基于开销的优化器,还可以获得很多可能被优化器考虑到的 ...
- 安卓手机360浏览器神奇bug,难以理解的
今天渠道组,说广告在安卓手机360浏览器上显示不了,我就去排查这个问题,发现所有安卓浏览器还真看不到广告,本来以为是360浏览器屏蔽了,,但是另一个项目就没事,后来经过几个小时的不断alert断点调试 ...
- 【LeetCode】DFS 总结
DFS(深度优先搜索) 常用来解决可达性的问题. 两个要点: 栈:用栈来保存当前节点信息,当遍历新节点返回时能够继续遍历当前节点.可以使用递归栈. 标记:和 BFS 一样同样需要对已经遍历过的节点进行 ...
- IDEA新建一个最简单的Maven的JavaWeb项目
1.项目环境 IDEA:2016.2 JDK:1.8.0_76 Maven:3.2.5 2.File-->New-->Project-->Maven 3.选择Project SDK: ...
- 用Python分析2000款避孕套,得出这些有趣的结论
到现在为止,我们的淘宝教程已经写到了第四篇,前三篇分别是: 第一篇:Python模拟登录淘宝,详细讲解如何使用requests库登录淘宝pc端. 第二篇:淘宝自动登录2.0,新增Cookies序列化, ...
- Redis常用命令(key、string、List)
1.Key 1.keys * 查询所有数据 2.exists key名 判断key名是否存在 3.move key名 数据库号(0-15) 移动数据key名到相应的数据库 4.expire ...
- 算法与数据结构基础 - 图(Graph)
图基础 图(Graph)应用广泛,程序中可用邻接表和邻接矩阵表示图.依据不同维度,图可以分为有向图/无向图.有权图/无权图.连通图/非连通图.循环图/非循环图,有向图中的顶点具有入度/出度的概念. 面 ...
- Elastic Stack 笔记(九)Elasticsearch5.6 集群管理
博客地址:http://www.moonxy.com 一.前言 集群搭建好以后,在日常中就要对集群的使用情况进行监控,对于一个多节点集群,由于网络连接问题,出现宕机.脑裂等异常情况都是有可能发生的.E ...
- 001: html基础标签
一:浏览器内核(理解) 序言: 1:web标准 主要包括结构(Structure).表现(Presentation)和行为(Behavior)三个方面. 2:常见标签 2.1:HTML head bo ...
- 5分钟学linux命令之split
情景介绍 平时工作中,我习惯使用rz从本地上传文件到服务器,sz从服务器下载文件到本地,但对传输文件大小有限制,例如排查线上jvm的问题,需要生成了dump文件,可能有10G大,超过了限制,怎么下载呢 ...