kustomize (六)命令行常用管理

本文涉及的产品
容器服务 Serverless 版 ACK Serverless,952元额度 多规格
容器服务 Serverless 版 ACK Serverless,317元额度 多规格
简介: kustomize (六)命令行常用管理

文章目录

1. 构建空间

首先构建一个工作空间:

export DEMO_HOME=$(mktemp -d)

创建包含pod资源的 kustomization

cat <<EOF >$DEMO_HOME/kustomization.yaml
resources:
- pod.yaml
EOF

创建 pod 资源pod.yaml

cat <<EOF >$DEMO_HOME/pod.yaml
apiVersion: v1
kind: Pod
metadata:
  name: myapp-pod
  labels:
    app: myapp
spec:
  containers:
  - name: myapp-container
    image: busybox:1.29.0
    command: ['sh', '-c', 'echo The app is running! && sleep 3600']
  initContainers:
  - name: init-mydb
    image: busybox:1.29.0
    command: ['sh', '-c', 'until nslookup mydb; do echo waiting for mydb; sleep 2; done;']
EOF

myapp-pod 包含一个init容器和一个普通容器,两者都使用 busybox:1.29.0 镜像。

kustomization.yaml 中添加 images 字段来更改镜像 busybox 和标签 1.29.0

2. 修改镜像

通过 kustomize 添加 images:

cd $DEMO_HOME
kustomize edit set image busybox=alpine:3.6

将images字段将被添加到kustomization.yaml:

resources:
- pod.yaml
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
images:
- name: busybox
  newName: alpine
  newTag: "3.6"

构建 kustomization

$ kustomize build $DEMO_HOME
.....
    image: alpine:3.6
.....

确认busybox镜像和标签是否被替换为alpine:3.6:

$ test 2 =  $(kustomize build $DEMO_HOME | grep alpine:3.6 | wc -l);  echo $?
0

3. 添加secret

$ kustomize edit add secret sl-demo-app --from-literal=db-password=12345
$ cat kustomization.yaml 
resources:
- pod.yaml
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
images:
- name: busybox
  newName: alpine
  newTag: "3.6"
secretGenerator:
- literals:
  - db-password=12345
  name: sl-demo-app
  type: Opaque

4. 远程target

kustomize build 可以将 URL 作为参数传入并运行.

运行效果与如下操作相同:

如果想要要立即尝试此操作,可以按照 multibases 示例运行 kustomization 运行构建。然后查看输出中的pod:

kustomize build github.com/kubernetes-sigs/kustomize/examples/multibases/dev/?ref=v1.0.6
target="github.com/kubernetes-sigs/kustomize/examples/multibases/dev/?ref=v1.0.6"
test 1 == $(kustomize build $target | grep dev-myapp-pod | wc -l); echo $?

在该示例中运行 overlay 将获得三个 pod(在此 overlay 结合了dev、staging 和 prod 的 bases,以便同时将它们全部发送给所有人):

target="https://github.com/kubernetes-sigs/kustomize/examples/multibases?ref=v1.0.6"
test 3 == $(kustomize build $target | grep cluster-a-.*-myapp-pod | wc -l); echo $?

将 URL 作为 base :

DEMO_HOME=$(mktemp -d)
cat <<EOF >$DEMO_HOME/kustomization.yaml
resources:
- github.com/kubernetes-sigs/kustomize/examples/multibases?ref=v1.0.6
namePrefix: remote-
EOF

构建该 base 以确定所有的三个 pod 都有 remote- 前缀。

test 3 == $(kustomize build $DEMO_HOME | grep remote-.*-myapp-pod | wc -l); echo $?

URL format

URL 需要遵循 hashicorp/go-getter URL 格式 。下面是一些遵循此约定的 Github repos 示例url。

kustomization.yaml 在根目录
github.com/Liujingfang1/mysql
kustomization.yaml 在 test 分支的根目录
github.com/Liujingfang1/mysql?ref=test
kustomization.yaml 在 v1.0.6 版本的子目录
github.com/kubernetes-sigs/kustomize/examples/multibases?ref=v1.0.6
kustomization.yaml repoUrl2 分支的子目录
github.com/Liujingfang1/kustomize/examples/helloWorld?ref=repoUrl2
kustomization.yaml commit 7050a45134e9848fca214ad7e7007e96e5042c03 的子目录
github.com/Liujingfang1/kustomize/examples/helloWorld?ref=7050a45134e9848fca214ad7e7007e96e5042c03

扩展阅读:


kustomize (一) 管理yaml部署入门hello world

kustomize (二) ConfigMap的生成和滚动更新

kustomize (三) devops和开发配合管理配置数据behavior: merge、namePrefix、nameSuffix

kustomize (四) generatorOptions详解

kustomize (五) 使用vars将 k8s runtime数据注入容器

kustomize(六)命令行常用编排

kustomize (七)patches、patchesJson6902、patchesStrategicMerge详解

kustomize (八)生成secret

kustomize(九)使用终章


相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
相关文章
|
Kubernetes Shell Linux
1分钟配置Kubectl命令自动补全功能
1分钟配置Kubectl命令自动补全功能
203 0
|
存储 Kubernetes Cloud Native
kubernetes【工具】kaniko【1】【介绍】-无特权构建镜像
kubernetes【工具】kaniko【1】【介绍】-无特权构建镜像
kubernetes【工具】kaniko【1】【介绍】-无特权构建镜像
|
Shell Docker 容器
docker安装 shell脚本自动化安装
docker安装 shell脚本自动化安装
625 1
|
6月前
|
Kubernetes Shell 网络安全
Shell脚本快速部署Kubernetes(K8S v1.1版本)集群系统
Shell脚本快速部署Kubernetes(K8S v1.1版本)集群系统
|
6月前
|
Linux C++
linux环境下C++中使用yaml
linux环境下C++中使用yaml
138 0
|
11月前
|
Ubuntu Unix Shell
Kubectl 好用的命令行工具:oh-my-zsh 技巧和窍门
Kubectl 好用的命令行工具:oh-my-zsh 技巧和窍门
243 0
|
XML 数据格式 Python
yq:命令行操作yaml文件
yq:命令行操作yaml文件
375 2
|
12月前
|
Shell
利用shell脚本使用kubeadm部署kubenetes 1.18.6集群环境
利用shell脚本使用kubeadm部署kubenetes 1.18.6集群环境
76 0
|
12月前
|
Linux 网络安全 调度
使用docker部署awx-1.7.1.0(ansible图形化界面)
使用docker部署awx-1.7.1.0(ansible图形化界面)
1042 0
|
JSON Prometheus Kubernetes
k8s小工具之kubectl-mytop插件
Kubectl-mytop是一个基于metrics-server组件做指标展示的命令行工具,综合kubectl top以及kubectl describe的展示能力,可以提供Kubernetes集群中node以及pod资源请求、资源限制、资源利用率、以及pod数量做排序展示。Kubectl-mytop插件的目的在于弥补当前常用k8s监控工具的不足,便于如资源不均,调度不均,使用率不均等问题的分析定位。如指定node后,可以查看这个node上所有的pod的request,limit,util资源使用等信息并排序输出,支持指定不同namespace的相同的pod label的资源展示,以及过滤指定
373 0