使用nginx统一代理dashboard,grafana,Prometheus二级目录访问
k8s上的这些管理工具必不可少,可以统一在nginx下的二级目录下。
ingress是好,但我们不方便使用内部域名,相信么。。。:)
一,prometheus改造
在prometheus的deployment中传递一下—web.external-url参数。如下所示:
- name: prometheus image: xxx/3rd_part/prometheus:v2.4.3 imagePullPolicy: IfNotPresent args: - '--storage.tsdb.path=/prometheus/data/' - '--storage.tsdb.retention=1d' - '--config.file=/etc/prometheus/prometheus.yaml' - '--web.enable-lifecycle' - '--web.external-url=/prometheus' ports: - name: webui containerPort: 9090 resources: requests: cpu: 400m memory: 500M # limits: # cpu: 500m # memory: 500M
二,grafana改造
在grafana的deployment中,env环境变量更新GF_SERVER_ROOT_URL的值。如下所示:
containers: - name: grafana image: xxx/3rd_part/grafana/grafana:5.3.1 imagePullPolicy: IfNotPresent ports: - containerPort: 3000 name: grafana env: - name: GF_SECURITY_ADMIN_USER value: [usr] - name: GF_SECURITY_ADMIN_PASSWORD value: [pwd] - name: GF_SERVER_ROOT_URL value: "%(protocol)s://%(domain)s:%(http_port)s/grafana" resources: limits: cpu: 100m memory: 256Mi requests: cpu: 100m memory: 256Mi
三,dashboard改造
dashboard不再使用443端口,使用最简单的方式来达到目的。其yaml文件如下所示:
# ------------------- Dashboard Service Account ------------------- # apiVersion: v1 kind: ServiceAccount metadata: labels: k8s-app: kubernetes-dashboard name: kubernetes-dashboard namespace: kube-system --- # ------------------- Dashboard Deployment ------------------- # kind: Deployment apiVersion: apps/v1beta2 metadata: labels: k8s-app: kubernetes-dashboard name: kubernetes-dashboard namespace: kube-system spec: replicas: 1 revisionHistoryLimit: 3 selector: matchLabels: k8s-app: kubernetes-dashboard template: metadata: labels: k8s-app: kubernetes-dashboard spec: containers: - name: kubernetes-dashboard image: k8s.gcr.io/kubernetes-dashboard-amd64:v1.8.3 ports: - containerPort: 9090 protocol: TCP livenessProbe: httpGet: path: / port: 9090 initialDelaySeconds: 30 timeoutSeconds: 30 serviceAccountName: kubernetes-dashboard # Comment the following tolerations if Dashboard must not be deployed on master tolerations: - key: node-role.kubernetes.io/master effect: NoSchedule --- # ------------------- Dashboard Service ------------------- # kind: Service apiVersion: v1 metadata: labels: k8s-app: kubernetes-dashboard name: kubernetes-dashboard namespace: kube-system spec: type: NodePort ports: - port: 80 targetPort: 9090 nodePort: 3xxxxx selector: k8s-app: kubernetes-dashboard
四,nginx配置
1, 用htpasswd命令生成包含用户名和加密的密码文件nginx_passwd。
2, 将nginx配置和nginx_passwd作成configmap文件。
apiVersion: v1 kind: ConfigMap metadata: name: proxy-nginx namespace: kube-system data: default.conf: |- upstream prometheus { server prometheus:9090; } upstream grafana { server monitoring-grafana:80; } upstream dashboard { server [master_ip]:[3xxxx]; } server { listen 80; server_name localhost; location / { root /usr/share/nginx/html; index index.html index.htm; } location /check { default_type text/plain; return 200 "serving is ok!"; } location /status { stub_status on; access_log off; } location /prometheus { proxy_pass http://prometheus; proxy_set_header Host $host; } location /grafana { proxy_pass http://grafana; rewrite ^/grafana/(.*) /$1 break; proxy_set_header Host $host; } location /dashboard { auth_basic "Password please"; auth_basic_user_file /etc/nginx/conf.d/nginx_passwd; proxy_pass http://dashboard; rewrite ^/dashboard/(.*) /$1 break; proxy_set_header Host $host; } # redirect server error pages to the static page /50x.html # chengang from k8s config map file error_page 500 502 503 504 /50x.html; location = /50x.html { root /usr/share/nginx/html; } } nginx_passwd: |- user:${password}
3, 制作nginx的deployment和service文件。
挂载了nginx的configmap文件。在其中加了一个[3xxxx]端口,这就是其它应用的入口。
apiVersion: extensions/v1beta1 kind: Deployment metadata: name: proxy-nginx namespace: kube-system spec: replicas: 1 template: metadata: labels: k8s-app: proxy-nginx spec: containers: - name: nginx image: xxx/official_hub/nginx:1.13-alpine imagePullPolicy: IfNotPresent ports: - containerPort: 80 protocol: TCP volumeMounts: - name: nginx-conf mountPath: /etc/nginx/conf.d volumes: - name: nginx-conf configMap: name: proxy-nginx nodeSelector: node-role.kubernetes.io/master: "" tolerations: - key: "node-role.kubernetes.io/master" effect: "NoSchedule" --- apiVersion: v1 kind: Service metadata: name: proxy-nginx namespace: kube-system spec: type: NodePort ports: - port: 80 targetPort: 80 nodePort: [3xxxx] selector: k8s-app: proxy-nginx
五,测试URL
http://[master_ip:3xxxx]/grafana
http://[master_ip:3xxxx]/prometheus
http://[master_ip:3xxxx]/dashboard
使用nginx统一代理dashboard,grafana,Prometheus二级目录访问的更多相关文章
- 使用nginx反向代理处理前后端跨域访问
本文主要解决:使用nginx反向代理处理前后端跨域访问的问题 1.何为跨域访问? 以下类型为跨域访问 1)不同域名间访问 www.zuiyoujie.com和www.baidu.com 2)同域名不同 ...
- Thinkphp在nginx设置同域名二级目录访问
Thinkphp在nginx设置同域名二级目录访问,是因为最近弄一个小程序项目,要https,但是只有单个域名,不能通配域名,所有只好用二级目录,thinkphp二级目录访问要怎么设置呢 下面是ngi ...
- 修改vue的配置项支持生产环境下二级目录访问的方法
本文主要记录如何配置vue的打包文件配置项,使打包后的文件可以支持二级目录的访问. 1.常规打包 在实际的项目中,我们通常都使用 npm run build 直接打包文件后丢到服务器上访问 打包后的文 ...
- vue通过(NGINX)部署在子目录或者二级目录实践
1.修改 router/index.js 添加一行 base: 'admin', 2.然后修改 config/index.js 增加一行 const assetsPublicPath = '/admi ...
- nginx配置ThinkPHP5二级目录访问
可以通过 http://www.mracale.com/项目名/模块名/方法名 进行访问 第一步 首先,你要确保在不配置二级目录的情况下,可以通过浏览器访问到.例如:http://www.mracal ...
- apache虚拟主机配置: 设置二级目录访问跳转
<VirtualHost *:> DocumentRoot "d:/www/abc" ServerName www.abc.com Alias /course &quo ...
- 搬运 centos7.2 apache 绑定二级目录 访问依然是apache页面
<VirtualHost *:80>ServerName xx.comDocumentRoot /var/www/html/xx</VirtualHost>
- Nginx做代理
0 查看日志 tail -f /var/log/nginx/access.log 1 Nginx代理配置语法 1.Nginx代理配置语法 Syntax: proxy_pass URL; Default ...
- 由Nginx反向代理引出的JCaptcha验证码验证失败的问题
搜索关键字: 1)Windows本地开发正常,部署到Linux远程服务器上JCaptcha验证失败 2)Linux远程服务器上JCpatcha验证失败 3)Nginx反向代理后JCaptcha验证失败 ...
随机推荐
- 想转C++了
暑假想学一学C++ 早退役了高考后才转C++的oier——我真是太蒻了
- A · F · O —— JLOI2018翻车记(附Day1简要题解)
JLOI2018翻车记 并不知道该怎么写... 算了还是按照标准剧情来吧 这应该是一篇写得非常差的流水账... 2018.04.04 Day -1 省选前在机房的最后一天. 压力并不是很大,毕竟联赛 ...
- 【刷题】LOJ 6011 「网络流 24 题」运输问题
题目描述 W 公司有 \(m\) 个仓库和 \(n\) 个零售商店.第 \(i\) 个仓库有 \(a_i\) 个单位的货物:第 \(j\) 个零售商店需要 \(b_j\) 个单位的货物.货物供需平衡, ...
- 循环取月的三位英语名 Jan Feb
CultureInfo ci = new CultureInfo("en-US"); DateTime now = DateTime.Now; for (int i = 0; i ...
- Installshield 打包安装程序时写入注册表,及运行bat文件
一.写入注册表 1. 打开project assistant –> Project Registry 可以像注册表里一样操作,其中[INSTALLDIR]是指的安装路径 二. 运行bat文件 ...
- psutil库
psutil是一个非常强大的第三方库,用法简单,这里主要是做一下梳理. 先看看官方说明: psutil (python system and process utilities) is a cross ...
- Cocos2d-x 3.2 打包Android平台APK
(转自:http://www.cnblogs.com/Richard-Core/p/3855130.html) 从cocos2dx 3.2项目打包成apk安卓应用文件,搭建安卓环境的步骤有点繁琐,但搭 ...
- oracle 查询重复数据并且删除, 只保留一条数据
数据库操作中,经常会因为导数据造成数据重复,需要进行数据清理,去掉冗余的数据,只保留正确的数据 一:重复数据根据单个字段进行判断 1.首先,查询表中多余的数据,由关键字段(name)来查询. sele ...
- Hadoop生态圈-Azkaban实现hive脚本执行
Hadoop生态圈-Azkaban实现hive脚本执行 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 本篇博客中在HDFS分布式系统取的数据,而这个数据的是有之前我通过MapRed ...
- Hadoop生态圈-Kafka的旧API实现生产者-消费者
Hadoop生态圈-Kafka的旧API实现生产者-消费者 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.旧API实现生产者-消费者 1>.开启kafka集群 [yinz ...