前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >云原生(三十九) | Kubernetes篇之kustomize入门了解

云原生(三十九) | Kubernetes篇之kustomize入门了解

原创
作者头像
Lansonli
发布2022-10-31 00:12:26
8670
发布2022-10-31 00:12:26
举报
文章被收录于专栏:Lansonli技术博客

​kustomize入门了解

一、kustomize是什么

Kubernetes本地的配置管理工具,相当于轻量版的helm。

官网地址:Kustomize - Kubernetes native configuration management

以后我们公司自己部署的一些中间件等,可以封装为 kustomize 管理的文件结构。 只需要kubectl apply -k 即可快速部署不同环境应用

二、用法

1、文件结构

2、文件内容

代码语言:javascript
复制
#service.yaml
kind: Service
apiVersion: v1
metadata:
  name: the-service
spec:
  selector:
    deployment: hello
  type: ClusterIP
  ports:
  - protocol: TCP
    port: 8666
    targetPort: 8080

代码语言:javascript
复制
#kustomization.yaml
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
metadata:
  name: arbitrary
# Example configuration for the webserver
# at https://github.com/monopole/hello
commonLabels:
  app: hello  # 构建出来的每个资源上都有app=hello标签
resources:
- deployment.yaml
- service.yaml
- configMap.yaml

代码语言:javascript
复制
#configMap.yaml
apiVersion: v1
kind: ConfigMap
metadata:
  name: the-map
data:
  altGreeting: "Good Morning!"
  enableRisky: "false"

代码语言:javascript
复制
#deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: the-deployment
spec:
  replicas: 3
  selector:
    matchLabels:
      deployment: hello
  template:
    metadata:
      labels:
        deployment: hello
    spec:
      containers:
      - name: the-container
        image: monopole/hello:1
        command: ["/hello",
                  "--port=8080",
                  "--enableRiskyFeature=$(ENABLE_RISKY)"]
        ports:
        - containerPort: 8080
        env:
        - name: ALT_GREETING
          valueFrom:
            configMapKeyRef:
              name: the-map
              key: altGreeting
        - name: ENABLE_RISKY
          valueFrom:
            configMapKeyRef:
              name: the-map
              key: enableRisky

3、使用

代码语言:javascript
复制
kubectl apply -k demo/

4、注意事项

  • kustomization.yaml 文件名是固定的;
  • kubectl apply -k path 会自动找path下的kustomization.yaml

5、高级-环境分离

  • 创建 overlay,分离各个环境。原来的可以抽取为base环境。其他环境层可只定义变量覆盖
  • 每个环境层定义自己的 kustomization.yaml
  • 新的层级结构
代码语言:javascript
复制
#production/kustomization.yaml
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
namePrefix: production-
commonLabels:
  variant: production
  org: acmeCorporation
commonAnnotations:
  note: Hello, I am production!
bases:
- ../../base
patchesStrategicMerge:
- deployment.yaml

#production/deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: the-deployment
spec:
  replicas: 10
## 只需要定义可变部分

代码语言:javascript
复制
#staging/kustomization.yaml
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
namePrefix: staging-   #所有资源的前缀
commonLabels:   #所有资源的标签
  variant: staging   
  org: acmeCorporation
commonAnnotations:  #所有资源的注解
  note: Hello, I am staging!
bases:
- ../../base  #基础配置的位置
patchesStrategicMerge:
- map.yaml  #需要额外引入部署的内容,如果引入的内容基础内容有配置,则使用这个最新的

#staging/map.yaml
apiVersion: v1
kind: ConfigMap
metadata:
  name: the-map
data:
  altGreeting: "Have a pineapple!"
  enableRisky: "true"

  • 执行命令
代码语言:javascript
复制
kubectl apply -k overlays/staging -n hello   #可以在部署的时候统一制定名称空间

kustomzition文件能写的内容

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • ​kustomize入门了解
    • 一、kustomize是什么
      • 二、用法
        • 1、文件结构
        • 2、文件内容
        • 3、使用
        • 4、注意事项
        • 5、高级-环境分离
    相关产品与服务
    容器服务
    腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档