首页 > 系统相关 >k8s-nginx实战部署1

k8s-nginx实战部署1

时间:2023-10-23 12:03:14浏览次数:43  
标签:实战 map name HUB deploy nginx offline k8s

目录

  • yaml 资源清单
  • run_deploy.sh
  • .gitlab-ci.yml

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

[Haima的博客]



标签:实战,map,name,HUB,deploy,nginx,offline,k8s
From: https://blog.51cto.com/u_6192297/7985487

相关文章

  • jenkins安装部署、主从架构、slave镜像、K8S对接
    介绍CI/CD工具,自动化持续集成和持续部署,用于构建各种自动化任务。官方提供了docker镜像https://hub.docker.com/r/jenkins/jenkins使用Deployments部署镜像,然后通过暴露jenkins的8080端口(web端口)和50000端口(slave通信端口),另外容器启动后所有数据都是存储在容器内的/var/jenkin......
  • K8S集群搭建
    集群搭建的几种方式kubeadm通过kubeadminit、kubeadmjoin快速部署集群。二进制包下载官方编译好的二进制文件,手动部署,比较麻烦。。第三方工具、web端第三方提供的部署工具、web部署端。kubeadm部署k8s集群实验环境master节点:IP:10.0.1.140worker节点1:IP:10......
  • 《玩转翻译》实战连载№2:如何批量实现多语言翻译的格式对齐?
    《玩转翻译》实战连载№2:如何批量实现多语言翻译的格式对齐?引言 生活和工作很多时候都会遇到翻译的情况,如果是几个单词或几句话,则有很多途径可以实现翻译。但如果需要翻译的词汇量比较大、句子、段落比较多,又需要保持原先的格式或者保持行或段落,如何解决? 一般的方法,可能会......
  • 鱼类识别系统:基于深度学习的生态保护与渔业管理利器【鱼类识别系统实战】
    当今,人工智能和深度学习已经成为许多领域的关键技术。在生态学和环境保护领域,鱼类识别是一项重要的任务,因为准确识别和监测鱼类种群对于保护水生生物多样性和可持续渔业管理至关重要。基于深度学习的鱼类识别系统能够自动识别和分类不同种类的鱼类,为生态学研究和渔业管理提供有力的......
  • 构建交互式待办事项应用:使用React和Redux实现技术深度实战
    本文将介绍如何使用React和Redux框架构建一个交互式的待办事项应用。我们将使用React组件化的思想和Redux的状态管理,实现待办事项的添加、完成和过滤功能。通过本文的实战演示,读者将深入了解React和Redux的使用方式和相关概念,为构建复杂的前端应用打下坚实的基础。技术栈:React:一个......
  • 【matplotlib 实战】--漏斗图
    漏斗图,形如“漏斗”,用于展示数据的逐渐减少或过滤过程。它的起始总是最大,并在各个环节依次减少,每个环节用一个梯形来表示,整体形如漏斗。一般来说,所有梯形的高度应是一致的,这会有助人们辨别数值间的差异。需要注意的是,漏斗图的各个环节,有逻辑上的顺序关系。同时,漏斗图的所有环节的......
  • Nginx+Keepalived
    学习自:https://www.nhooo.com/note/qa3jz9.html最终效果主从两个节点都安装nginx与keepalived,安装到相同路径安装Nginx点此:https://www.jianshu.com/p/1a51f2384c11安装keepalived下载安装包:https://www.keepalived.org/download.html#tar命令解压#进入解压后目录./c......
  • 云计算实战(2)-MariaDB(1)
    目录概述概述MariaDB社区服务器设置了开源关系数据库的标准,具有Oracle数据库兼容性(例如,序列和PL/SQL),时态表,透明分片,即时模式更改,时间点回滚和现代SQL(即,通用表表达式,窗口函数,JSON函数等)。MariaDB社区服务器现在包含了用于大规模实时分析的ColumnStore。当要进行生产时,推荐......
  • 统信桌面操作系统UOS上安装arm64版nginx
    hello,大家好啊,今天给大家带来一篇在统信桌面操作系统UOS上安装arm64版nginx的文章,本篇文章主要是给大家提供一种下载离线nginx软件包的方法,拿到软件包可以去不能链接互联网又没有仓库环境的电脑上安装,欢迎大家浏览分享,点一个关注可好。1、下载nginx离线包到本地pdsyw@pdsyw-PC:~/De......
  • k8s-命名空间namespace
    查看namespace:kubectlgetnamespaces#namespaces可以简写为namespace或ns创建namespace:kubectlcreatenamespace命名空间名称kubectlcreatenamespacenamespace1删除namespace:kubectldeletenamespace命名空间名称kubectldeletenamespacenamespace1可以通过......