【K8S】helm chart多环境部署最佳实践-示例
Chart.yaml
apiVersion: v1
appVersion: "1.0"
description: A Helm chart for Kubernetes
name: nginx
version: 0.1.
values.yaml
# Default values for nginx.
# This is a YAML-formatted file.
# Declare variables to be passed into your templates. replicaCount: image:
repository: nginx
tag: 1.15-alpine envs:
PARAM_JVMTOOL: ""
PARAM_SPRING: "" resources:
requests:
cpu: "0.1"
memory: "256M"
values-dev.yaml
# Default values for nginx.
# This is a YAML-formatted file.
# Declare variables to be passed into your templates. envs:
PARAM_AAA: "123456_aaa_dev"
PARAM_BBB: "123456_bbb_dev"
PARAM_CCC: "123456_ccc_dev"
PARAM_DDD: "123456_ddd_dev" resources:
limits:
cpu: "0.5"
memory: "512M"
values-test.yaml
# Default values for nginx.
# This is a YAML-formatted file.
# Declare variables to be passed into your templates. envs:
PARAM_AAA: "123456_aaa_test"
PARAM_BBB: "123456_bbb_test"
PARAM_CCC: "123456_ccc_test"
PARAM_DDD: "123456_ddd_test" resources:
limits:
cpu: "0.5"
memory: "512M"
values-stage.yaml
# Default values for nginx.
# This is a YAML-formatted file.
# Declare variables to be passed into your templates. envs:
PARAM_AAA: "123456_aaa_stage"
PARAM_BBB: "123456_bbb_stage"
PARAM_CCC: "123456_ccc_stage"
PARAM_DDD: "123456_ddd_stage" resources:
limits:
cpu: "0.5"
memory: "1024M"
values-prod.yaml
# Default values for nginx.
# This is a YAML-formatted file.
# Declare variables to be passed into your templates. envs:
PARAM_AAA: "123456_aaa_prod"
PARAM_BBB: "123456_bbb_prod"
PARAM_CCC: "123456_ccc_prod"
PARAM_DDD: "123456_ddd_prod" resources:
limits:
cpu: "0.5"
memory: "1024M"
templates/deployment.yaml
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: nginx
spec:
selector:
matchLabels:
app: nginx
replicas: {{ .Values.replicaCount }}
template:
metadata:
labels:
app: nginx
spec:
containers:
- image: {{ .Values.image.repository }}:{{ .Values.image.tag }}
imagePullPolicy: Always
name: nginx
command: ["/bin/sh", "-c", "echo $HOSTNAME > /usr/share/nginx/html/index.html && exec nginx -g 'daemon off;'"]
ports:
- containerPort:
resources:
{{- toYaml .Values.resources | nindent }}
env:
{{- range $key, $value := .Values.envs }}
- name: {{ $key }}
value: {{ $value | quote }}
{{- end }}
templates/service.yaml
apiVersion: v1
kind: Service
metadata:
name: nginx
spec:
ports:
- port:
targetPort:
protocol: TCP
selector:
app: nginx
sessionAffinity: None
type: ClusterIP
clusterIP: None ---
---
apiVersion: v1
kind: Service
metadata:
name: nginx-nodeport
spec:
ports:
- port:
protocol: TCP
targetPort:
# -
# nodePort:
selector:
app: hello-world
#sessionAffinity: None
type: NodePort
deploy.sh
#!/bin/bash
envType=${:-dev}
helm install --name=nginx -f values.yaml -f values-dev.yaml --set image.repository=docker-repo.xxx.com/k2/nginx --set image.tag=1.12. --set envs.PARAM_JVMTOOL=xxxxxxxx --set envs.PARAM_AAA=yyyyyyyyy --dry-run --debug .
debug.txt
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: nginx
spec:
selector:
matchLabels:
app: nginx
replicas:
template:
metadata:
labels:
app: nginx
spec:
containers:
- image: docker-repo.xxx.com/k2/nginx:1.12.
imagePullPolicy: Always
name: nginx
command: ["/bin/sh", "-c", "echo $HOSTNAME > /usr/share/nginx/html/index.html && exec nginx -g 'daemon off;'"]
ports:
- containerPort:
resources:
limits:
cpu: "0.5"
memory: 512M
requests:
cpu: "0.1"
memory: 256M env:
- name: PARAM_AAA
value: "yyyyyyyyy"
- name: PARAM_BBB
value: "123456_bbb_dev"
- name: PARAM_CCC
value: "123456_ccc_dev"
- name: PARAM_DDD
value: "123456_ddd_dev"
- name: PARAM_JVMTOOL
value: "xxxxxxxx"
- name: PARAM_SPRING
value: ""
【K8S】helm chart多环境部署最佳实践-示例的更多相关文章
- Cobbler自动化部署最佳实践
第1章 Cobbler自动化部署最佳实践 运维自动化在生产环境中占据着举足轻重的地位,尤其是面对几百台,几千台甚至几万台的服务器时,仅仅是安装操作系统,如果不通过自动化来完成,根本是不可想象的. 面对 ...
- tomcat部署最佳实践(一)
Tomcat部署最佳实践 标签: linux 笔者Q:972581034 交流群:605799367.有任何疑问可与笔者或加群交流 tomcat是玩web软件必会技能之一,今天我给大家介绍一下tomc ...
- Typescript 开发环境的最佳实践
Typescript 开发环境的最佳实践 0️⃣ git init(略) 1️⃣️️ 初始化:$ yarn add -D ts-node typescript 2️⃣ 生成 tsconfig.json ...
- Kubernetes 服务部署最佳实践(二) ——如何提高服务可用性
引言 上一篇文章我们围绕如何合理利用资源的主题做了一些最佳实践的分享,这一次我们就如何提高服务可用性的主题来展开探讨. 怎样提高我们部署服务的可用性呢?K8S 设计本身就考虑到了各种故障的可能性,并提 ...
- Kubernetes 服务部署最佳实践(一) ——如何更好地设置 Request 与 Limit
如何为容器配置 Request 与 Limit? 这是一个即常见又棘手的问题,这个根据服务类型,需求与场景的不同而不同,没有固定的答案,这里结合生产经验总结了一些最佳实践,可以作为参考. 所有容器都应 ...
- Websphere Application Server 环境配置与应用部署最佳实践
在发布一个运行于 WebSphere Application Server 的 J2EE 应用之前,对服务器进行配置和部署应用是必不可少的一个过程,这个过程是非常复杂的.WAS 为用户提供了可视化的管 ...
- (转)Cobbler自动化部署最佳实践
原文:http://www.xuliangwei.com/xubusi/446.html 运维自动化在生产环境中占据着举足轻重的地位,尤其是面对几百台,几千台甚至几万台的服务器时,仅仅是安装操作系统, ...
- Nginx SSL TLS部署最佳实践
本文介绍nginx在提供HTTPS时使用的一些其他配置选项. 虽然这些功能有助于优化nginx的SSL和TLS,但这不是一个完整对加固nginx的介绍. 确保您的服务器安全的最佳方法是不仅需要正确的配 ...
- Spring.profiles多环境配置最佳实践
转自:https://www.cnblogs.com/jason0529/p/6567373.html Spring的profiles机制,是应对多环境下面的一个解决方案,比较常见的是开发和测试环境的 ...
随机推荐
- java设计模式结构型模式
结构型模式: – 核心作用:是从程序的结构上实现松耦合,从而可以扩大整体的类结 构,用来解决更大的问题 分类: • 适配器模式.代理模式.桥接模式. 装饰模式.组合模式.外观模式.享元模式 结构型模式 ...
- delegate里的Invoke和BeginInvoke
Invoke和BeginInvoke都是调用委托实体的方法,前者是同步调用,即它运行在主线程上,当Invode处理时间长时,会出现阻塞的情况,而BeginInvod是异步操作,它会从新开启一个线程,所 ...
- input file 保存图片
Request.File["控件名称"].FileName 文件名称(没有路径) Request.File["控件名称"].SaveAs("路径名称& ...
- ASP.NET CORE 2.2 因外键设置的双向导航对象序列化报 循环错误问题的解决
报错如下: 设置的示例: 解决方案: 在Startup.cs文件中,增加如下代码: services.AddMvc().SetCompatibilityVersion(CompatibilityVer ...
- ThinkPHP各个目录是什么含义ThinkPHP怎么安装和使用
最近kdchxue看完了smarty之后,想学习下框架,于是乎就选择了ThinkPHP,听说这个框架简单易用,另外还是国产的!所以kdchxue毫不犹豫的就选择了ThinkPHP 了!下面看看Thin ...
- c# 开发+MySql数据库
今天就一个客户端的任务:1.把Excel文件转成特定格式插入到数据库中:2.查出该文件,并且导出Excel文件:3.如果插入数据错误,则把刚插入的数据删除掉.感觉比较简单,可是,墨迹了一天呀....总 ...
- 【转载】Gradle学习 第九章:Groovy快速入门
转载地址:http://ask.android-studio.org/?/article/17 To build a Groovy project, you use the Groovy plugin ...
- C语言形参跟实参详解
形参与实参今天我们来说下c语言形参与实参的区别,形参跟实参理解的话也很简单,但是好多同学关于这个知识点都是一知半解,没有真正的去透彻,一问都知道,但在真正引用的时候还会出现很多问题,而百度的时候又会说 ...
- 【EL表达式】EL从四大域中取数据
一.EL技术 1.EL 表达式概述 EL(Express Lanuage)表达式可以嵌入在jsp页面内部,减少jsp脚本的编写,EL 出现的目的是要替代jsp页面中脚本的编写. 2.EL从域中取出数据 ...
- 为 Jupyter 添加目录
1.依次在 anaconda prompt 窗口中执行以下两句命令 pip install jupyter_contrib_nbextensions # 安装第三方包 jupyter contrib ...