kustomize (六)命令行常用管理

简介: 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命令自动补全功能
219 0
|
存储 Kubernetes Cloud Native
kubernetes【工具】kaniko【1】【介绍】-无特权构建镜像
kubernetes【工具】kaniko【1】【介绍】-无特权构建镜像
kubernetes【工具】kaniko【1】【介绍】-无特权构建镜像
|
1月前
|
Kubernetes 应用服务中间件 nginx
【赵渝强老师】Kubernetes命令行管理工具:kubectl
kubectl 是 Kubernetes 的命令行工具,用于管理和操作 Kubernetes 集群。本文通过视频讲解和具体示例,介绍了 kubectl 的常用命令,包括显示 Pod 信息、创建 Deployment 和 Service、更新和回滚 Deployment、以及删除资源等操作。
|
Kubernetes NoSQL 关系型数据库
通过编写k8s的资源清单yaml文件部署gitlab服务
通过编写k8s的资源清单yaml文件部署gitlab服务
|
7月前
|
Linux C++
linux环境下C++中使用yaml
linux环境下C++中使用yaml
161 0
|
Ubuntu Unix Shell
Kubectl 好用的命令行工具:oh-my-zsh 技巧和窍门
Kubectl 好用的命令行工具:oh-my-zsh 技巧和窍门
283 0
|
XML 数据格式 Python
yq:命令行操作yaml文件
yq:命令行操作yaml文件
442 2
|
Linux 网络安全 调度
使用docker部署awx-1.7.1.0(ansible图形化界面)
使用docker部署awx-1.7.1.0(ansible图形化界面)
1159 0
|
存储 Kubernetes 监控
Helm Dashboard GUI 工具解析
Hello folks,今天我们介绍一下由 Komodor 推出的开源项目 Helm-Dashboard。也是继 ValidKube 之后的第二个开源项目。
185 0
|
jenkins 持续交付 Python
【Jenkins】Jenkins运行python脚本的简单操作(windows)
【Jenkins】Jenkins运行python脚本的简单操作(windows)
645 0
下一篇
DataWorks