标签: kustomize

Kubernetes 部署缺少 Kustomize 的哈希后缀

我是 Kubernetes 的新手。在我的项目中,我尝试使用 Kustomize 为我的部署生成 configMaps。Kustomize 在 configMap 名称后添加了一个哈希值,但我无法让它也更改部署以使用新的 configMap 名称。

部署:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: env-receiver-deployment
  labels:
    app: env-receiver-app
    project: env-project
spec:
  replicas: 1
  selector:
    matchLabels:
      app: env-receiver-app
  template:
    metadata:
      labels:
        app: env-receiver-app
        project: env-project
    spec:
      containers:
      - name: env-receiver-container
        image: eu.gcr.io/influxdb-241011/env-receiver:latest
        resources: {}
        ports:
        - containerPort: 8080
        envFrom:
        - configMapRef:
            name: env-receiver-config
        args: [ "-port=$(ER_PORT)", "-dbaddr=$(ER_DBADDR)", "-dbuser=$(ER_DBUSER)", "-dbpass=$(ER_DBPASS)" ]

Run Code Online (Sandbox Code Playgroud)

kustomize.yml:

apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
configMapGenerator:
- name: env-receiver-config
  literals:
  - ER_PORT=8080
  - ER_DBADDR=http://localhost:8086
  - ER_DBUSER=writeuser
  - …
Run Code Online (Sandbox Code Playgroud)

kubernetes kustomize

1
推荐指数
1
解决办法
1951
查看次数

kustomize configmap 命令:它有什么作用?

我是 kubernetes 的新手,我正在到处学习一些教程。我正在努力理解不同的组件和工具,其中之一就是 kustomize。我看到了 kustomize 用法的不同示例,但我不明白其中之一(即使在网上搜索后)。那么你能向我解释一下以下命令的功能吗kustomize

kustomize edit add configmap mnist-map-training --from-literal=trainSteps=200
Run Code Online (Sandbox Code Playgroud)

kubernetes kustomize

1
推荐指数
1
解决办法
2360
查看次数

如何为 Kubernetes yaml 中的所有图像获取解析的 sha 摘要?

泊坞窗图像标记是可变的,在image:latestimage:1.0能都指向image@sha256:.....,但版本时1.1被释放,image:latest存储在注册表中可以指向一个图像以不同的SHA摘要。现在拉取带有特定标签的镜像并不意味着下次会拉取相同的镜像。

如果 Kubernetes YAMl 资源定义通过标签(而不是摘要)引用映像,那么在部署资源定义之前,是否有办法确定每个映像实际将解析为什么 sha 摘要?使用kustomize还是支持此功能kubectl

用例是想确定(我想采取解决资源定义的哈希什么实际上已经被部署到其他前部署在一个环境中,然后可以使用它来了解是否image:1.0被部署到PROD是指相同image:1.0的是已部署到 UAT)。

是否有任何工具可用于支持此功能?

例如,给定以下 YAML,有没有办法用解析的摘要替换所有图像?

apiVersion: v1
kind: Pod
metadata:
  name: example
spec:
  containers:
    - name: image1
      image: image1:1.1
      command:
        - /bin/sh -c some command
    - name: image2
      image: image2:2.2
      command:
        - /bin/sh -c some other command
Run Code Online (Sandbox Code Playgroud)

要得到这样的东西:

apiVersion: v1
kind: Pod
metadata:
  name: example
spec:
  containers:
    - name: image1
      image: image1@sha:....
      command:
        - /bin/sh …
Run Code Online (Sandbox Code Playgroud)

docker kubernetes kustomize

1
推荐指数
1
解决办法
3225
查看次数

如何使用 kubectl 补丁将 Serviceaccout 添加到现有 Clusterrolebinding

这是我现有的集群角色绑定

apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: example-role
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: test-role
subjects:
- kind: ServiceAccount
  name: test-sa
  namespace: ns1
Run Code Online (Sandbox Code Playgroud)

我打算在另一个命名空间(例如:ns2)中添加相同的 ServiceAccount (test-sa) 并将其与我的 ClusterRole "test-role" 绑定。

我试过的

subjects:
- kind: ServiceAccount
  name: test-sa
  namespace: ns2
Run Code Online (Sandbox Code Playgroud)

我尝试应用上面的 yaml 文件,例如

kubectl patch  clusterrolebinding <clusterrolebinding-name> --type="strategic"  --patch "$(cat role.yaml)"
Run Code Online (Sandbox Code Playgroud)

结果

apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: example-role
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: test-role
subjects:
- kind: ServiceAccount
  name: test-sa
  namespace: ns2
Run Code Online (Sandbox Code Playgroud)

它在新的命名空间中添加了带有 sa 的 ClusterRoleBinding 但我在命名空间 ns1 中的现有绑定被删除了..编辑这个 …

kubernetes kustomize

1
推荐指数
1
解决办法
497
查看次数

使用 kustomize 覆盖替换多个 gke 入口主机

我有一个 GKE/GCE 入口文件,它有 2 个主机。

apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
  name: my-ingress
spec:
  rules:
  - host: myfirstdomain # <-------- override this via kustomize
    http:
      paths:
      - path: /abc
        backend:
          serviceName: abc
          servicePort: abc
      - path: /def
        backend:
          serviceName: def
          servicePort: def
      - path: /ghi
        backend:
          serviceName: ghi
          servicePort: ghi
  - host: myseconddomain # <-------- override this via kustomize
    http:
      paths:
      - backend:
          serviceName: xyz
          servicePort: xyz
Run Code Online (Sandbox Code Playgroud)

我想host通过 kustomize声明这些值,以便我可以host为不同的环境指定不同的值。

我的开发环境覆盖补丁文件如下所示:

apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
  name: my-ingress …
Run Code Online (Sandbox Code Playgroud)

overlay kubernetes google-kubernetes-engine kubernetes-ingress kustomize

1
推荐指数
1
解决办法
342
查看次数

从Kustomize中的文本文件目录创建每个文件的Kubernetes机密

我有很多秘密的“环境变量”,我想进入kubernetes集群。当前,我在这些秘密的目录中,每个var都有一个对应的文件,该文件的命名方式与应该分配给该变量的方式相同。使用docker-compose,这给了我一个类似的脚本for secret in .secrets/*; do export "$(basename $secret)"="$(cat $secret)" ; done

我希望避免在kustomize文件中明确指定这些秘密中的每一个。是否有一种仅通过指定目录来为每个文件创建一个秘密的简单方法?

kubernetes kubectl kustomize

0
推荐指数
1
解决办法
55
查看次数