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多环境部署最佳实践-示例的更多相关文章

  1. Cobbler自动化部署最佳实践

    第1章 Cobbler自动化部署最佳实践 运维自动化在生产环境中占据着举足轻重的地位,尤其是面对几百台,几千台甚至几万台的服务器时,仅仅是安装操作系统,如果不通过自动化来完成,根本是不可想象的. 面对 ...

  2. tomcat部署最佳实践(一)

    Tomcat部署最佳实践 标签: linux 笔者Q:972581034 交流群:605799367.有任何疑问可与笔者或加群交流 tomcat是玩web软件必会技能之一,今天我给大家介绍一下tomc ...

  3. Typescript 开发环境的最佳实践

    Typescript 开发环境的最佳实践 0️⃣ git init(略) 1️⃣️️ 初始化:$ yarn add -D ts-node typescript 2️⃣ 生成 tsconfig.json ...

  4. Kubernetes 服务部署最佳实践(二) ——如何提高服务可用性

    引言 上一篇文章我们围绕如何合理利用资源的主题做了一些最佳实践的分享,这一次我们就如何提高服务可用性的主题来展开探讨. 怎样提高我们部署服务的可用性呢?K8S 设计本身就考虑到了各种故障的可能性,并提 ...

  5. Kubernetes 服务部署最佳实践(一) ——如何更好地设置 Request 与 Limit

    如何为容器配置 Request 与 Limit? 这是一个即常见又棘手的问题,这个根据服务类型,需求与场景的不同而不同,没有固定的答案,这里结合生产经验总结了一些最佳实践,可以作为参考. 所有容器都应 ...

  6. Websphere Application Server 环境配置与应用部署最佳实践

    在发布一个运行于 WebSphere Application Server 的 J2EE 应用之前,对服务器进行配置和部署应用是必不可少的一个过程,这个过程是非常复杂的.WAS 为用户提供了可视化的管 ...

  7. (转)Cobbler自动化部署最佳实践

    原文:http://www.xuliangwei.com/xubusi/446.html 运维自动化在生产环境中占据着举足轻重的地位,尤其是面对几百台,几千台甚至几万台的服务器时,仅仅是安装操作系统, ...

  8. Nginx SSL TLS部署最佳实践

    本文介绍nginx在提供HTTPS时使用的一些其他配置选项. 虽然这些功能有助于优化nginx的SSL和TLS,但这不是一个完整对加固nginx的介绍. 确保您的服务器安全的最佳方法是不仅需要正确的配 ...

  9. Spring.profiles多环境配置最佳实践

    转自:https://www.cnblogs.com/jason0529/p/6567373.html Spring的profiles机制,是应对多环境下面的一个解决方案,比较常见的是开发和测试环境的 ...

随机推荐

  1. 【leetcode-198】打家劫舍

    你是一个专业的小偷,计划偷窃沿街的房屋.每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警. 给定一个代表每 ...

  2. request.setAttribute()的用法

    分类专栏: Java   request在当次的请求的url之间有效一次传参数,速度快,缺点是参数只能取一次 forward是转向,将现在的请求转交,他只能在同一个容器里使用同时保存客户的请求状态. ...

  3. 浅谈Semaphore类-示例

    Semaphore类有两个重要方法 1.semaphore.acquire(); 请求一个信号量,这时候信号量个数-1,当减少到0的时候,下一次acquire不会再执行,只有当执行一个release( ...

  4. mvc视图双下拉框联动

    html部分的代码 <tr class="trs"> <td class="item1"><div class="ite ...

  5. Qt QVector简单用法

    添加元素 QVector<QString> strArray; strArray.append("Hello"); 遍历 QVector<QString>: ...

  6. 本机安装mysql步骤

    原文:https://www.cnblogs.com/dukeShi/p/6546024.html 本机安装mysql服务,步骤教程(另附SQLyog和Navicat工具) 因为这段时间不是装系统就是 ...

  7. rhel7 学习第三天

    <Linux就该这么学>学习第三天,掌握了一些常用的命令

  8. cocoapods升级

    1.更新gem:sudo gem update --system 先要查看下源,如果源被墙了就换地址:https://gems.ruby-china.com 1.1.删除gem源:gem source ...

  9. 重新编译kubeadm,修改默认证书时间

    参考 kubeadm alpha certs renew Kubeadm1.14 证书调整 kubeadm 部署的 kubernetes 集群,默认的证书有效时间是1年,需要每年手工更新. 1. 重新 ...

  10. 解决samba共享虚拟机第二块磁盘的难题

    linux下使用samba共享文件到window下已经实现过了   点此链接 但是共享时磁盘空间是有限的,如果空间使用完了该怎么处理呢?这是个头疼的问题,不知道samba支持不支持共享第二个文件夹,由 ...