kubernetes - Helm 不创造资源

标签 kubernetes kubernetes-helm

我第一次尝试运行Helm。我正在使用deployment.yaml,service.yaml和ingress.yaml文件以及values.yaml和chart.yaml。
deployment.yaml

apiVersion: apps/v1
kind: Deployment
metadata:
  name: abc
  namespace: xyz
  labels:
    app: abc
    app.kubernetes.io/managed-by: {{ .Release.Service }}
spec:
  replicas: 3
  template:
    spec:
      containers:
        - name: abc
          image: {{ .Values.image.repository }}:{{ .Values.image.tag }}
          ports:
            -
              containerPort: 8080
service.yaml
apiVersion: v1
kind: Service
metadata:
  name: abc
  labels:
    app.kubernetes.io/managed-by: {{ .Release.Service }}
  namespace: xyz
  annotations:
    service.beta.kubernetes.io/aws-load-balancer-ssl-cert: {{ .Values.service.sslCert }}
spec:
  ports:
    - name: https
      protocol: TCP
      port: 443
      targetPort: 8080
    - name: http
      protocol: TCP
      port: 80
      targetPort: 8080
  type: ClusterIP
  selector:
    app: abc
ingress.yaml
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: "haproxy-ingress"
  namespace: xyz
  labels:
    app.kubernetes.io/managed-by: {{ .Release.Service }}
  annotations:
    kubernetes.io/ingress.class: alb
从我看到的内容来看,我认为我没有错过app.kubernetes.io/managed-by的输入,但是仍然出现错误:
rendered manifests contain a resource that already exists. Unable to
continue with install: Service "abc" in namespace "xyz" exists and
cannot be imported into the current release: invalid ownership
metadata; label validation error: missing key
"app.kubernetes.io/managed-by": must be set to "Helm"; annotation
validation error: missing key "meta.helm.sh/release-name": must be set
to "abc"; annotation validation error: missing key
"meta.helm.sh/release-namespace": must be set to "default"

它可以在本地正确呈现文件。helm list --all --all-namespaces不返回任何内容。
请帮忙。

最佳答案

在给定的命名空间( namespace abc)中,您已经有一些资源(服务xyz)要通过 Helm 图表进行安装。
清理这些东西并通过helm install安装它们。

$ kubectl delete service -n <namespace> <service-name>
$ kubectl delete deployment -n <namespace> <depoyment-name>
$ kubectl delete ingress -n <namespace> <ingress-name>
一旦由 Helm 手部署了这些资源,您将能够执行helm update来更改属性。
从您的Yamls中删除"app.kubernetes.io/managed-by"此标签,该标签将由 Helm 手添加。

关于kubernetes - Helm 不创造资源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62964532/

相关文章:

kubernetes - GitLab Kubernetes 集成错误; Helm Tiller 的配置已经存在

kubernetes - 如何在 Helm Chart 中设置 Java 环境变量?

docker - Kubernetes openshift:部署期间拒绝权限

kubernetes - 安装后运行 kubectl 命令 Helm

kubernetes - 通过 helm 部署 kubernetes 作业

kubernetes - K8S 上每个分支/命名空间的子域

docker - Jenkins 图像的kubernetes拉取给Imagepullbackoff

kubernetes-helm - 如何从 Helm ChartMuseum 下载图表包?

google-app-engine - Google 容器集群中 Pod 的优先级

kubernetes - 如何在kubernetes中列出服务背后流量的所有Pod的名称