openshift 容器云从入门到崩溃之五《部署应用》
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 容器云从入门到崩溃之五《部署应用》的更多相关文章
- openshift 容器云从入门到崩溃之八《日志聚合》
日志可以分为两部分 业务日志 业务日志一般是要长期保留的,以供以后有问题随时查询,elk是现在比较流行的日志方案,但是容器日志最好不要落地所以不能把logstash客户端包在容器里面 可以使用logs ...
- openshift 容器云从入门到崩溃之六《Source-to-Image》
上次说到了怎么在oc上面部署应用而且说道了怎么定义模板部署应用,也许你会奇怪那个我代码打包编译在哪一步,那就要说道oc的s2i流程了 下面是基本s2i流程 1.制作base-image镜像 要使用s2 ...
- openshift 容器云从入门到崩溃之二《准备环境》
openshift 从3.9开始就开始支持系统组件在容器里运行了,之前版本都是直接运行在操作系统上,名字也改了叫OKD 目前最新的稳定版本是3.11,所以就安装3.11版本 准备环境: 主机名 系统 ...
- openshift 容器云从入门到崩溃之一《容器能解决什么问题》
容器前时代 说到容器大多数人想到的就是docker,docker的迅速崛起使得使用容器的门槛大大降低了,我第一次接触docker还是14年,那时候作为一名运维部署应用还在大量使用虚拟化,从vmware ...
- openshift 容器云从入门到崩溃之九《容器监控-报警》
容器状态监控 主要是监控POD的状态包括重启.不健康等等这些k8s api 状态本身会报出来,在配合zabbix报警 导入zabbix模板关联上oc master主机 <?xml version ...
- openshift 容器云从入门到崩溃之七《数据持久化》
数据持久化常用的有两种: hostPath 挂载容器宿主机的本地文件夹,直接修改pod的配置 volumes: - hostPath: path: /data/logging-es type: '' ...
- openshift 容器云从入门到崩溃之三《安装openshift》
准备好环境,在安装之前请先了解openshift提供的ansible有大量的安装选项 文档地址:https://docs.okd.io/latest/install/configuring_inven ...
- openshift 容器云从入门到崩溃之十《容器监控-数据展示》
POD资源历史曲线(CPU.内存.网络) 监控方案heapster+hawkular-metrics+hawkular-cassandra heapster负责收集数据 hawkular-cassan ...
- openshift 容器云从入门到崩溃之四《配置用户验证》
1.配置本地用户 之前安装的时候选择了htpasswd验证方式 先创建用户 # htpasswd -c /etc/origin/master/htpasswd admin 授权为集群管理员 # oc ...
随机推荐
- 解决通过Nginx转发的服务请求头header中含有下划线的key,其值取不到的问题
1. 问题 由于在http请求头的头部中设置了一些自定义字段,刚好这些字段中含有下划线,比如bundle_name这种,后端在进去获取头部信息时,发现取不到对应的值 2. 原因及解决办法 分析 首先看 ...
- ios app qbw.plist demo
qbw.plist <?xml version="1.0" encoding="UTF-8"?><!DOCTYPE plist PUBLIC ...
- 通过动态SQL语句创建游标
DECLARE @sql varchar(100); DECLARE @TableName varchar(32); DECLARE @FieldName varchar(32); DECLARE @ ...
- 蜕变成蝶~Linux设备驱动之中断与定时器
“我叮咛你的 你说 不会遗忘 你告诉我的 我也全部珍藏 对于我们来说 记忆是飘不落的日子 永远不会发黄 相聚的时候 总是很短 期待的时候 总是很长 岁月的溪水边 捡拾起多少闪亮的诗行 如果你要想念我 ...
- mysql问题解决SELECT list is not in GROUP BY clause and contains nonaggregated column
今天在Ubuntu下的部署项目,发现一些好好的列表页面发生 :Expression # of SELECT list is not in GROUP BY clause and contains no ...
- Scikit-learn使用总结
在机器学习和数据挖掘的应用中,scikit-learn是一个功能强大的python包.在数据量不是过大的情况下,可以解决大部分问题.学习使用scikit-learn的过程中,我自己也在补充着机器学习和 ...
- 基于VS Code创建Spring Boot项目开发REST API(一)
公司从.NET转向Java不仅仅是简单的代码变成Java,趁此机会对原有的架构和代码重构,融入新的概念和技术.目前通过前后端分离,将后端更多的微服务化.从.NET转向Java我们更多的是用Java开发 ...
- TemplateBuilder Android Studio
TemplateBuilder:是Android Studio的一个开发模板,大大提高开发效率.
- [Manthan, Codefest 18][Codeforces 1037E. Trips]
题目链接:1037E - Trips 题目大意:有n个人,m天,每天晚上都会有一次聚会,一个人会参加一场聚会当且仅当聚会里有至少k个人是他的朋友.每天早上都会有一对人成为好朋友,问每天晚上最多能有多少 ...
- web项目访问地址前添加小图片
修改HTML 1.head标签添加 <link rel="icon" type="image/x-icon" href="images/icon ...