учетная запись службы по умолчанию helm patch - PullRequest
1 голос
/ 03 апреля 2019

У меня есть диаграмма управления, которую я использую для добавления списка пользователей в мой кластер, но я хотел бы изменить свою учетную запись службы default, чтобы включить секрет извлечения изображений. Похоже, что в шлеме нет никаких исправлений.

Лучше ли я могу использовать крюк после установки?

Ответы [ 3 ]

1 голос
/ 22 апреля 2019

У меня была такая же проблема. Что я сделал, это:

apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
  name: default
  namespace: YOUR_NAMESPACE
rules:
- apiGroups:
  - ""
  resources:
  - serviceaccounts
  verbs:
  - get
---
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
  name: default
  namespace: YOUR_NAMESPACE
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: Role
  name: default
subjects:
- kind: ServiceAccount
  name: default
  namespace: YOUR_NAMESPACE

и затем:

apiVersion: batch/v1
kind: Job
metadata:
  name: create-image-pull-secret
  annotations:
    "helm.sh/hook": pre-install
    "helm.sh/hook-delete-policy": hook-succeeded
spec:
  template:
    spec:
      restartPolicy: Never
      containers:
      - name: k8s
        image: google/cloud-sdk
        imagePullPolicy: IfNotPresent
        command: ["/bin/sh","-c", "kubectl patch serviceaccount default -p '{\"imagePullSecrets\": [{\"name\": \"YOUR_SECRET_NAME\"}]}'"]

Обратите внимание, что я использую pre-install крючок. Я сделал это, потому что мне нужно, чтобы imagePullSecret работал для моих дочерних зависимостей. Кроме того, команда patch позволила использовать секретное имя, которое еще не существует.

0 голосов
/ 02 мая 2019

После того, что сказал @tproenca, у меня возникла похожая проблема, и я исправил ее, создав файл шаблона с именем patch.yml file со следующим:

apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
  annotations:
    "helm.sh/hook": pre-install
    "helm.sh/hook-weight": "-5"
    "helm.sh/hook-delete-policy": hook-succeeded
  name: default
  namespace: {{ .Release.Name }}
rules:
- apiGroups:
  - ""
  resources:
  - serviceaccounts
  verbs:
  - get
  - patch
---
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
  annotations:
    "helm.sh/hook": pre-install
    "helm.sh/hook-weight": "-5"
    "helm.sh/hook-delete-policy": hook-succeeded
  name: default
  namespace: {{ .Release.Name }}
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: Role
  name: default
subjects:
- kind: ServiceAccount
  name: default
  namespace: {{ .Release.Name }}
---
apiVersion: batch/v1
kind: Job
metadata:
  name: patch-sa
  annotations:
    "helm.sh/hook": pre-install
    "helm.sh/hook-delete-policy": hook-succeeded
spec:
  template:
    spec:
      restartPolicy: Never
      containers:
      - name: sa
        image: google/cloud-sdk
        imagePullPolicy: IfNotPresent
        command: ["/bin/sh", "-c", "kubectl patch serviceaccount default -p '{\"imagePullSecrets\": [{\"name\": \"secret-key\"}]}'"]

Таким образом, для первой установки вы не будетенеобходимо вручную добавить ресурсы ролевой / ролевой привязки в ваше пространство имен, поскольку helm сделает это и удалит их для вас.

0 голосов
/ 04 апреля 2019

Если я правильно вас понял, способ изменить службу по умолчанию за рулем (на самом деле его серверная сторона: tiller) похож на чистый Kubernetes, просто исправьте объект ресурса Deployment, связанный с helm, следующей командой:

kubectl patch deploy --namespace kube-system tiller-deploy -p '{"spec":{"template":{"spec":{"serviceAccount":"<YOUR_SVC_ACCOUNT>"}}}}'  
...