zoukankan      html  css  js  c++  java
  • kustomize

    Demo: hello world with variants

    步骤:

    1. 下载 base 配置。
    2. 进行定制。
    3. 基于定制后的 base 新建2个不同的 overlays (stagingproduction)。
    4. 运行 kustomize 和 kubectl 来部署 staging 和 production 。

    首先创建一个工作空间:

    DEMO_HOME=$(mktemp -d)
    

    或者:

    DEMO_HOME=~/hello
    

    创建 base

    如果要使用 overlays 创建 variants ,必须先创建一个共同的 base

    为了使本文档保持简洁,base 的资源位于补充目录中,并不在此处,请按照下面的方法下载它们:

    BASE=$DEMO_HOME/base
    mkdir -p $BASE
    
    curl -s -o "$BASE/#1.yaml" "https://raw.githubusercontent.com
    /kubernetes-sigs/kustomize
    /master/examples/helloWorld
    /{configMap,deployment,kustomization,service}.yaml"
    

    观察该目录:

    tree $DEMO_HOME
    

    可以看到:

    /tmp/tmp.IyYQQlHaJP
    └── base
        ├── configMap.yaml
        ├── deployment.yaml
        ├── kustomization.yaml
        └── service.yaml
    

    这些 resources 可以立即在 k8s 集群中部署:

    kubectl apply -f $DEMO_HOME/base
    

    实例化 hello 服务, kubectl 只能识别 resources 文件。

    The Base Kustomization

    base 目录中包含一个 kustomization 文件:

    more $BASE/kustomization.yaml
    

    (可选)在 base 目录上运行 kustomize 将定制过的 resources 打印到标准输出:

    kustomize build $BASE
    

    定制 base

    定制 app label 并应用于所有的 resources :

    sed -i.bak 's/app: hello/app: my-hello/' 
        $BASE/kustomization.yaml
    

    查看效果:

    kustomize build $BASE | grep -C 3 app:
    

    创建 Overlays

    创建包含 stagingproductionoverlay

    • Staging 包含生产环境中无法应用的带有风险的功能。
    • Production 包含更多的副本数。
    • 来自这些集群 variants 的问候消息将与来自其他集群的不同。
    OVERLAYS=$DEMO_HOME/overlays
    mkdir -p $OVERLAYS/staging
    mkdir -p $OVERLAYS/production
    

    Staging Kustomization

    staging 目录中创建一个 kustomization 文件,用来定义一个新的名称前缀和一些不同的 labels 。

    cat <<'EOF' >$OVERLAYS/staging/kustomization.yaml
    namePrefix: staging-
    commonLabels:
      variant: staging
      org: acmeCorporation
    commonAnnotations:
      note: Hello, I am staging!
    resources:
    - ../../base
    patchesStrategicMerge:
    - map.yaml
    EOF
    

    Staging Patch

    新增一个自定义的 configMap 将问候消息从 Good Morning! 改为 Have a pineapple!

    同时,将 risky 标记设置为 true 。

    cat <<EOF >$OVERLAYS/staging/map.yaml
    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: the-map
    data:
      altGreeting: "Have a pineapple!"
      enableRisky: "true"
    EOF
    

    Production Kustomization

    production 目录中创建一个 kustomization 文件,用来定义一个新的名称前缀和 labels 。

    cat <<EOF >$OVERLAYS/production/kustomization.yaml
    namePrefix: production-
    commonLabels:
      variant: production
      org: acmeCorporation
    commonAnnotations:
      note: Hello, I am production!
    resources:
    - ../../base
    patchesStrategicMerge:
    - deployment.yaml
    EOF
    

    Production Patch

    因为生产环境需要处理更多的流量,新建一个 production patch 来增加副本数。

    cat <<EOF >$OVERLAYS/production/deployment.yaml
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: the-deployment
    spec:
      replicas: 10
    EOF
    

    比较 overlays

    DEMO_HOME 现在包含:

    • base 目录:对拉取到的源配置进行了简单定制

    • overlays 目录:包含在集群中创建不同 stagingproduction variants 的 kustomizations 和 patches 。

    查看目录结构和差异:

    tree $DEMO_HOME
    

    可以看到:

    /tmp/tmp.IyYQQlHaJP1
    ├── base
    │   ├── configMap.yaml
    │   ├── deployment.yaml
    │   ├── kustomization.yaml
    │   └── service.yaml
    └── overlays
        ├── production
        │   ├── deployment.yaml
        │   └── kustomization.yaml
        └── staging
            ├── kustomization.yaml
            └── map.yaml
    

    直接比较 stagingproduction 输出的不同:

    diff 
      <(kustomize build $OVERLAYS/staging) 
      <(kustomize build $OVERLAYS/production) |
      more
    

    部分比较输出:

    <   altGreeting: Have a pineapple!
    <   enableRisky: "true"
    ---
    >   altGreeting: Good Morning!
    >   enableRisky: "false"
    8c8
    <     note: Hello, I am staging!
    ---
    >     note: Hello, I am production!
    11c11
    <     variant: staging
    ---
    >     variant: production
    13c13
    (...truncated)
    

    部署

    输出不同 overlys 的配置:

    kustomize build $OVERLAYS/staging
    
    kustomize build $OVERLAYS/production
    

    将上述命令传递给 kubectl 进行部署:

    kustomize build $OVERLAYS/staging |
        kubectl apply -f -
    
    kustomize build $OVERLAYS/production |
       kubectl apply -f -
    

    也可使用 kubectl (v1.14.0 以上版本):

    kubectl apply -k $OVERLAYS/staging
    
    kubectl apply -k $OVERLAYS/production
    
  • 相关阅读:
    Oracle11g工具
    Oracle数据库中scott用户的所有表结构
    Oracle数据库手动解锁scott用户
    Oracle数据库实例的删除和安装
    Oracle数据库的安装
    Oracle数据库发展历史
    禁止浏览器中双击选中元素的解决方法
    Window 设置pm2开机自启动服务
    通过node创建web服务器----express插件打包上线
    vue项目优化----通过externals加载外部CDN资源
  • 原文地址:https://www.cnblogs.com/pythonPath/p/12667509.html
Copyright © 2011-2022 走看看