1、配置部署模板

配置好用户权限之后就可以部署应用了oc常用的两种部署方式:

Deploy Image方式

优点:这种方式是最简单的部署方式,你只需要有一个容器镜像就行了或者公开的docker hub 镜像

缺点:但是这种方式的确定是不能随时变更,也不能提前定义其他配置

比较适合部署那些不经常变更的第三方服务

catalog方式(template)

优点:可以基于模板提前定义各种配置包括build、service、deployments等

缺点:一个类型的应用需要独立的模板

比较适合自己开发的应用使用,使用template可以省去上线新应用的时间

oc的catalog里面包括大量的模板常用的一些数据库一些开发环境都有

下面主要说一下自定义个模板怎么创建

# vim nginx-openresty.yaml

apiVersion: template.openshift.io/v1
kind: Template
metadata:
annotations:
description: OpenResty(又称:ngx_openresty) 是一个基于 NGINX 的可伸缩的 Web 平台,由中国人章亦春发起,提供了很多高质量的第三方模块。
tags: nodejs
creationTimestamp: --10T07::57Z
name: nginx-openresty
namespace: openshift
resourceVersion: ""
selfLink: /apis/template.openshift.io/v1/namespaces/openshift/templates/nginx-openresty
uid: 9d1b5626-cc5c-11e8-a187-00163e0e008f
objects:
- apiVersion: v1
kind: Route
metadata:
name: ${APP_NAME}
spec:
host: ${DOMAIN_NAME}
to:
kind: Service
name: ${APP_NAME}
- apiVersion: v1
kind: Service
metadata:
name: ${APP_NAME}
spec:
ports:
- name: ${APP_NAME}
port:
targetPort:
selector:
name: ${APP_NAME}
type: ClusterIP
- apiVersion: v1
kind: ImageStream
metadata:
name: ${APP_NAME}
- apiVersion: v1
kind: BuildConfig
metadata:
labels:
name: ${APP_NAME}
name: ${APP_NAME}
spec:
output:
to:
kind: ImageStreamTag
name: ${APP_NAME}:latest
postCommit: {}
resources: {}
runPolicy: Serial
source:
contextDir: /
git:
ref: ${APP_SOURCE_REPOSITORY_REF}
uri: ${APP_SOURCE_REPOSITORY_URL}
sourceSecret:
name: gitlab-user
type: Git
strategy:
sourceStrategy:
env:
- name: env
value: ${ENV}
- name: Project_Name
value: ${APP_NAME}
from:
kind: ImageStreamTag
name: ${APP_BUILDER_IMAGE}
namespace: openshift
type: Source
triggers:
- imageChange: {}
- type: ImageChang
- apiVersion: v1
kind: DeploymentConfig
metadata:
labels:
name: ${APP_NAME}
name: ${APP_NAME}
spec:
replicas:
selector:
name: ${APP_NAME}
strategy:
customParams:
command:
- /bin/sh
- -c
- sleep ; echo slept for ; /usr/bin/openshift-deploy
type: Rolling
template:
metadata:
labels:
name: ${APP_NAME}
spec:
containers:
- env:
- name: ETCD_URL
value: ${ETCD_URL}
- name: env
value: ${ENV}
- name: NODE_ENV
value: container
image: ${APP_NAME}:latest
livenessProbe:
failureThreshold:
httpGet:
path: /status
port:
scheme: HTTP
initialDelaySeconds:
periodSeconds:
successThreshold:
timeoutSeconds:
name: ${APP_NAME}
ports:
- containerPort:
protocol: TCP
readinessProbe:
failureThreshold:
httpGet:
path: /status
port:
scheme: HTTP
initialDelaySeconds:
periodSeconds:
successThreshold:
timeoutSeconds:
resources:
limits:
cpu: ${CPU_LIMIT}
memory: ${MEMORY_LIMIT}
requests:
cpu: 50m
memory: 64Mi
volumeMounts:
- mountPath: /opt/configration
name: configration
- mountPath: /etc/localtime
name: localtime
- mountPath: /etc/timezone
name: timezone
volumes:
- configMap:
defaultMode:
name: configration
name: configration
- hostPath:
path: /etc/localtime
name: localtime
- hostPath:
path: /etc/timezone
name: timezone
test: false
triggers:
- imageChangeParams:
automatic: true
containerNames:
- ${APP_NAME}
from:
kind: ImageStreamTag
name: ${APP_NAME}:latest
type: ImageChange
- type: ConfigChange
parameters:
- description: 项目名
displayName: Name
name: APP_NAME
required: true
- description: 对外暴露域名
displayName: Project domain name
name: DOMAIN_NAME
required: true
- description: 请输入Git地址.仅支持HTTP方式.
displayName: Source Repository URL
name: APP_SOURCE_REPOSITORY_URL
required: true
value: http://git.xxx.cn/ops/nginx-config.git
- description: git仓库的默认分支或者版本号
displayName: Git Reference
name: APP_SOURCE_REPOSITORY_REF
required: true
value: config-a
- description: git仓库的路径
displayName: Context Directory
name: CONTEXT_DIR
value: /
- description: 设定当前环境,比如test、bts
displayName: ENV
name: ENV
required: true
- description: build 时使用的基础镜像
displayName: Base builder image of your app
name: APP_BUILDER_IMAGE
required: true
value: openresty:1.11.2.3
- description: 超过此请求额度会被强制重启.单位Mi/Gi.
displayName: Memory Limits
name: MEMORY_LIMIT
required: true
value: 64Mi
- description: 超过此请求额度会被强制重启.单位m/g.
displayName: CPU Limits
name: CPU_LIMIT
required: true
value: 50m

下一步导入到oc catalog里面

# oc project openshift
# oc oc create -f nginx-openresty.yaml

在登陆oc的web console 就可以使用nginx-openresty模板部署应用了

2、deployment策略

deployment顾名思义是最终部署应用的重要环节,包括了变更策略、最终POD的运行配置等关键信息

Deployment Strategy:

这个是部署应用是的变更策略一共有三种策略

Rolling(滚动升级)

spec:
strategy:
rollingParams:
intervalSeconds:
maxSurge: %
maxUnavailable: %
timeoutSeconds:
updatePeriodSeconds:
type: Rolling

Recreate(重新创建)

spec:
strategy:
type: Recreate

Custom(自定义)

不常用

Deployment Triggers:

这个配置决定了什么情况下Deployment 才会触发

ImageChange 镜像变更

ConfigChange Deployment 配置变更

 
spec:
triggers:
- imageChangeParams:
automatic: true
containerNames:
- nginx-template
from:
kind: ImageStreamTag
name: 'nginx-template:latest'
namespace: test
type: ImageChange
- type: ConfigChange
  triggers:
- imageChangeParams:
automatic: true
containerNames:
- nginx-template
from:
kind: ImageStreamTag
name: 'nginx-template:latest'
namespace: test
type: ImageChange #镜像更新
- type: ConfigChange #Deployment 配置更新

openshift 容器云从入门到崩溃之五《部署应用》的更多相关文章

  1. openshift 容器云从入门到崩溃之八《日志聚合》

    日志可以分为两部分 业务日志 业务日志一般是要长期保留的,以供以后有问题随时查询,elk是现在比较流行的日志方案,但是容器日志最好不要落地所以不能把logstash客户端包在容器里面 可以使用logs ...

  2. openshift 容器云从入门到崩溃之六《Source-to-Image》

    上次说到了怎么在oc上面部署应用而且说道了怎么定义模板部署应用,也许你会奇怪那个我代码打包编译在哪一步,那就要说道oc的s2i流程了 下面是基本s2i流程 1.制作base-image镜像 要使用s2 ...

  3. openshift 容器云从入门到崩溃之二《准备环境》

    openshift 从3.9开始就开始支持系统组件在容器里运行了,之前版本都是直接运行在操作系统上,名字也改了叫OKD 目前最新的稳定版本是3.11,所以就安装3.11版本 准备环境: 主机名 系统 ...

  4. openshift 容器云从入门到崩溃之一《容器能解决什么问题》

    容器前时代 说到容器大多数人想到的就是docker,docker的迅速崛起使得使用容器的门槛大大降低了,我第一次接触docker还是14年,那时候作为一名运维部署应用还在大量使用虚拟化,从vmware ...

  5. openshift 容器云从入门到崩溃之九《容器监控-报警》

    容器状态监控 主要是监控POD的状态包括重启.不健康等等这些k8s api 状态本身会报出来,在配合zabbix报警 导入zabbix模板关联上oc master主机 <?xml version ...

  6. openshift 容器云从入门到崩溃之七《数据持久化》

    数据持久化常用的有两种: hostPath 挂载容器宿主机的本地文件夹,直接修改pod的配置 volumes: - hostPath: path: /data/logging-es type: '' ...

  7. openshift 容器云从入门到崩溃之三《安装openshift》

    准备好环境,在安装之前请先了解openshift提供的ansible有大量的安装选项 文档地址:https://docs.okd.io/latest/install/configuring_inven ...

  8. openshift 容器云从入门到崩溃之十《容器监控-数据展示》

    POD资源历史曲线(CPU.内存.网络) 监控方案heapster+hawkular-metrics+hawkular-cassandra heapster负责收集数据 hawkular-cassan ...

  9. openshift 容器云从入门到崩溃之四《配置用户验证》

    1.配置本地用户 之前安装的时候选择了htpasswd验证方式 先创建用户 # htpasswd -c /etc/origin/master/htpasswd admin 授权为集群管理员 # oc ...

随机推荐

  1. (6) MySQL慢查询日志的使用

    一. 设置方法 使用慢查询日志里捕获 启用之前需要先进行一些设置 方法一:全局变量设置 设置慢查询日志的日志文件位置 set global slow_query_log_file = "D: ...

  2. ffmpeg转码器移植VC的project:ffmpeg for MFC

    本文介绍一个自己做的FFMPEG移植到VC下的开源project:ffmpeg for MFC.本project将ffmpegproject中的ffmpeg转码器(ffmpeg.c)移植到了VC环境下 ...

  3. 第四百一十六节,Tensorflow简介与安装

    第四百一十六节,Tensorflow简介与安装 TensorFlow是什么 Tensorflow是一个Google开发的第二代机器学习系统,克服了第一代系统DistBelief仅能开发神经网络算法.难 ...

  4. mvc 根据模板导出excel,直接导出文件流

    1.c# /// <summary> /// 导出员工 /// </summary> /// <returns></returns> [HttpGet] ...

  5. 【腾讯云的1001种玩法】 Laravel 整合微视频上传管理能力,轻松打造视频App后台

    版权声明:本文由白宦成原创文章,转载请注明出处: 文章原文链接:https://www.qcloud.com/community/article/108597001488193402 来源:腾云阁 h ...

  6. Go 用JSON加载表格数据

    支持热重载reload,但会有一些问题,下面注释有写 package table import ( "runtime/debug" ) //IntArray int类型数组 typ ...

  7. MQTT 嵌入式端通讯协议解析(转)

    MQTT,目前物联网的最主要的协议,基本所有收费的云平台都是基于MQTT协议,比如机智云,和所有的开放云平台比如中国移动的oneNet.百度的云平台也都支持MQTT的接入.虽然MQTT很火,但是目前对 ...

  8. 管理菜单 结贴回复 来自 202.112.36.253 的回复: TTL 传输中过期

    发表于 2010-08-26 18:29:14 楼主 其实标题是我执行如下命令时的输出:C:\Users\ChenWeiguang>ping 218.198.81.190 正在 Ping 218 ...

  9. webpack使用小记

    前言 webpack是目前前端开发必不可少的一款模块加载器兼构建工具,它能极其方便的处理各种资源的打包和使用, 让前端开发获得与后端开发几乎一致的体验. webpack特点 webpack 是以 co ...

  10. 第五天 py if使用

    if 的结果缩进  用个Tab 缩进四个空格就好了