k8s-nginx实战部署1
yaml 资源清单
deploy.yaml
apiVersion: v1
kind: ConfigMap
metadata:
name: api-proxy-config-offline-map
data:
api_proxy.conf: |
server {
listen 80;
server_name offline-map;
client_max_body_size 10m;
# 配置前端静态文件目录
location / {
index index.html index.htm;
root /usr/share/nginx/html;
try_files $uri $uri/ /index.html;
}
}
---
kind: Deployment
apiVersion: apps/v1
metadata:
name: offline-map
labels:
k8s-app: offline-map
spec:
replicas: 1
selector:
matchLabels:
k8s-app: offline-map
template:
metadata:
name: offline-map
labels:
k8s-app: offline-map
spec:
nodeName: k8s-master
containers:
- name: offline-map
image: '{IMAGE}'
imagePullPolicy: IfNotPresent
volumeMounts:
- name: nginx-config
mountPath: /etc/nginx/conf.d
volumes:
- name: nginx-config
configMap:
name: api-proxy-config-offline-map
---
apiVersion: v1
kind: Service
metadata:
labels:
name: offline-map
name: offline-map
spec:
ports:
- name: port80
# 将Service的端口号映射到每个Node的一个端口号上,
# 这样集群中的任意Node都可以作为Service的访问入口地址,即NodeIP:NodePort
nodePort: 32001 # 向外暴露的端口
port: 80 # svc端口
protocol: TCP
targetPort: 80 # pod端口
selector:
k8s-app: offline-map
sessionAffinity: None
type: NodePort
run_deploy.sh
#!/bin/bash
# @zcf: 执行脚本文件需要和对应的k8s编排模板放到同一目录下才能生效!!!
path=$(cd `dirname $0`;pwd)
cd ${path}
res=0
# 镜像名
image_name=$1
echo "cert_view_image="${image_name}
sed -i "s@{IMAGE}@$image_name@g" deploy.yaml
r=$?
res=`expr ${res} + ${r}`
echo "$res"
# 执行部署
if [ $res -ne 0 ]; then
exit 1
fi
.gitlab-ci.yml
variables:
SOFT_VERSION: ${SOFT_VERSION}
DOCK_HUB: 192.168.2.103:80
DOCK_HUB_USER: admin
DOCK_HUB_PASSWD: '123456'
HUB_GROUP: 512cert
HUB_GROUP_PASSWD: 1234QWERasdf
LAY_OUT_URL: ${DOCK_HUB}/512cert
TEST_INFRA_NAMESPACE: ${TEST_INFRA_NAMESPACE}
PROD_INFRA_NAMESPACE: ${PROD_INFRA_NAMESPACE}
stages:
- build
- test-deploy
- prod-deploy
before_script:
# npm install的依赖配置
- git config --global url."https://".insteadOf git://
- docker login -u ${DOCK_HUB_USER} -p${DOCK_HUB_PASSWD} http://${DOCK_HUB}
# TAG版本号
- export TM=`date +%y%m%d%H%M`
- export TAG="${CI_COMMIT_REF_NAME}-${CI_COMMIT_SHA:0:8}-build${CI_PIPELINE_ID}-${SOFT_VERSION}"
# 打包镜像
build:
stage: build
tags:
- baler #这里写 runner 的标签名 ,按标签名选择打包的服务器
rules:
- if: $CI_PIPELINE_SOURCE == "schedule"
when: on_success
- if: $CI_PIPELINE_SOURCE != "schedule"
when: manual
artifacts:
paths:
- scripts/k8s/deploy.yaml
script:
- docker build -t ${LAY_OUT_URL}/offlinemap:${TAG} .
- docker push ${LAY_OUT_URL}/offlinemap:${TAG}
- scripts/k8s/run_deploy.sh ${LAY_OUT_URL}/offlinemap:${TAG}
- docker rmi ${LAY_OUT_URL}/offlinemap:${TAG}
# 部署微服务
test-deploy:
stage: test-deploy
tags:
- test-env #这里写k8s主节点的runner的标签名,下面的script命令就会在主节点执行
rules:
- if: $CI_PIPELINE_SOURCE == "schedule"
when: on_success
- if: $CI_PIPELINE_SOURCE != "schedule"
when: manual
script:
- kubectl apply -f scripts/k8s/deploy.yaml -n ${TEST_INFRA_NAMESPACE}
.gitlab-ci.yml 中的 tags 要和 runner中的标签对应上

k8s-nginx实战部署1的更多相关文章
- Nginx实战部署常用功能演示(超详细版),绝对给力~~~
前言 上次分享了一些开发过程中常用的功能,但如果到真实环境中,其实还需要一些额外的配置,比如说跨域.缓存.配置SSL证书.高可用等,老规矩,还是挑几个平时比较常用的进行演示分享.上篇详见Nginx超详 ...
- K8S(13)监控实战-部署prometheus
k8s监控实战-部署prometheus 目录 k8s监控实战-部署prometheus 1 prometheus前言相关 1.1 Prometheus的特点 1.2 基本原理 1.2.1 原理说明 ...
- 基于k8s集群部署prometheus监控ingress nginx
目录 基于k8s集群部署prometheus监控ingress nginx 1.背景和环境概述 2.修改prometheus配置 3.检查是否生效 4.配置grafana图形 基于k8s集群部署pro ...
- k8s经典实战—搭建WordPress
k8s经典实战—搭建WordPress说明:需要在k8s上部署lnmp环境,建议跟着步骤来端口最好不要改,希望你也能搭建成功,完成这个搭建后你对Kubernetes的技术基本上是入门了.首先看下效果图 ...
- Kubernetes(k8s)集群部署(k8s企业级Docker容器集群管理)系列目录
0.目录 整体架构目录:ASP.NET Core分布式项目实战-目录 k8s架构目录:Kubernetes(k8s)集群部署(k8s企业级Docker容器集群管理)系列目录 一.感谢 在此感谢.net ...
- Kubernetes(k8s)集群部署(k8s企业级Docker容器集群管理)系列之集群部署环境规划(一)
0.前言 整体架构目录:ASP.NET Core分布式项目实战-目录 k8s架构目录:Kubernetes(k8s)集群部署(k8s企业级Docker容器集群管理)系列目录 一.环境规划 软件 版本 ...
- Kubernetes(k8s)集群部署(k8s企业级Docker容器集群管理)系列之自签TLS证书及Etcd集群部署(二)
0.前言 整体架构目录:ASP.NET Core分布式项目实战-目录 k8s架构目录:Kubernetes(k8s)集群部署(k8s企业级Docker容器集群管理)系列目录 一.服务器设置 1.把每一 ...
- Kubernetes(k8s)集群部署(k8s企业级Docker容器集群管理)系列之flanneld网络介绍及部署(三)
0.前言 整体架构目录:ASP.NET Core分布式项目实战-目录 k8s架构目录:Kubernetes(k8s)集群部署(k8s企业级Docker容器集群管理)系列目录 一.flanneld介绍 ...
- Kubernetes(k8s)集群部署(k8s企业级Docker容器集群管理)系列之部署master/node节点组件(四)
0.前言 整体架构目录:ASP.NET Core分布式项目实战-目录 k8s架构目录:Kubernetes(k8s)集群部署(k8s企业级Docker容器集群管理)系列目录 1.部署master组件 ...
- 在nginx上部署vue项目(history模式)--demo实列;
在很早之前,我写了一篇 关于 在nginx上部署vue项目(history模式) 但是讲的都是理论,所以今天做个demo来实战下.有必要让大家更好的理解,我发现搜索这类似的问题还是挺多的,因此在写一篇 ...
随机推荐
- UE4_C++实现TimeLine
主要实现蓝图节点中时间轴的功能. 目前UE提供了两种实现方式,一个是使用FTimeLine其是一个时间轴的结构体:另一种方式是使用UTimeLineComponent,其是一个时间轴组件类.两者内部定 ...
- oracle建表语句,添加主键、索引、注释,插入数据,添加序列
create table FND_COMPANIES_42624( COMPANY_ID number(3) primary key, -- 公司ID number 序列 COMPANY_CODE V ...
- C语言简易万年历带注释
同学问的课后作业,顺便加了写注释. #include<stdio.h> /* * 注意 每周的第一天是星期天 */ int main() { int day_per_mo[12] = { ...
- Pandas通用函数和运算
Pandas继承了Numpy的运算功能,可以快速对每个元素进行运算,即包括基本运算(加减乘除等),也包括复杂运算(三角函数.指数函数和对数函数等). 通用函数使用 apply和applymap app ...
- 通过path在windows下临时修改python和pip路径 以便于配置环境只对当前命令行窗口生效
配置前 在cmd命令行下输入新env的路径 path=D:\Miniconda2\envs\openmmlab\openmmlab;D:\Miniconda2\envs\openmmlab\openm ...
- HarmonyOS音视频开发概述
在音视频开发指导中,将介绍各种涉及音频.视频播放或录制功能场景的开发方式,指导开发者如何使用系统提供的音视频API实现对应功能.比如使用TonePlayer实现简单的提示音,当设备接收到新消息时, ...
- 带你走进红帽企业级 Linux 6体验之旅(安装篇)
红帽在11月10日发布了其企业级Linux,RHEL 6的正式版(51CTO编辑注:红帽官方已经不用RHEL这个简称了,其全称叫做Red Hat Enterprise Linux).新版带来了将近18 ...
- 低成本FPGA的MIPI测试GOWIN和LATTICE CROSSLINK
本次实验MIPI屏,2.0寸,分辨率是240*320 RGB888, 接口如下: 接上IO就是RST和MIPI的时钟和数据接口,另外就是电源和地. 一:GOWIN的测试方案 Gowin的案例中,首先是 ...
- java调用QQ影音进行截图
import java.awt.Graphics2D; import java.awt.Image; import java.awt.Robot; import java.awt.Toolkit; i ...
- shell编程实现用户循环输入
如果你想在Shell脚本中实现一个循环判断用户输入是否正确,并根据情况决定是否退出系统,可以使用一个无限循环(如while true)和条件语句来实现. 以下是一个示例代码,用于演示这种情况: #!/ ...