Инструменты пользователя

Инструменты сайта


k8s:resources

Ресурсы (ConfigMaps/Secrets)

Secrets

Объекты секретов могут создаваться как пользователем так и системой, например кубер автоматически создает нужные ему секреты для доступа к API и модифицирует поды для использования этих секретов
Объект секретов можно создать командой kubectl create secret либо вручную заполнить yaml манифест данными в base64

  • Opaque - позволяет хранить любые данные в формате «ключ-значение», универсальный тип
  • kubernetes.io/service-account-token - хранит JWT токен для сервисного акка, создается при создании акка
  • kubernetes.io/dockercfg/dockerconfigjson - конфиг для докера
  • kubernetes.io/basic-auth - пара «логин-пароль» в base64
  • kubernetes.io/ssh-auth - приватный ключ для ssh. В поле Data манифеста мы должны указать ssh-privatekey
  • kubernetes.io/tls - сертификат и приватный ключ от него, в поле «data» мы должны указать ключи «tls.key» и «tls.crt»
:!: Создание секретов

Создать секрет из файлов командой кубера:

kubectl create secret generic my-secret --from-file=first.txt --from-file=second.txt
 
kubectl get secrets
kubectl describe secrets/my-secret

Создание через yaml манифест. Данные предварительно закодированы в base64

apiVersion: v1
kind: Secret
metadata: 
  name: my-secret
type: Opaque
data:
  username: wefwef=
  password: ssv=

Далее создаем файлом

kubectl create -f my-file.yaml
kubectl get secret my-secret -o yaml

Секреты можно примонтировать к поду как тома с данными либо как переменные окружения

:!: Использование
(...)
spec:
  containers:
  - name: mypod
    image: redis
    volumeMounts:
    - name: foo
      mountPath: "/etc/foo"
      readOnly: true
  volumes:
  - name: foo
    secret:
      secretName: mysecret

Можно примонтировать значение отдельного ключа из секрета

(...)
spec:
  containers:
  - name: mypod
    image: redis
    volumeMounts:
    - name: foo
      mountPath: "/etc/foo"
      readOnly: true
  volumes:
  - name: foo
    secret:
      secretName: mysecret
      items:
      - key: username
        path: my-group/my-username

В данном случае, значение username будет доступно по пути «/etc/foo/my-group/my-username» вместо «/etc/foo/username»
Задавать права доступа можно к объектам и даже ключам

Подключение в виде переменных окружения выглядит так:

(...)
spec:
  containers:
  - name: mycontainer
    image: redis
    env:
      - name: SECRET_USERNAME
        valueFrom:
          secretKeyRef:
            name: mysecret
            key: username
      - name: SECRET_PASSWORD
        valueFrom:
          secretKeyRef:
            name: mysecret
            key: password
  restartPolicy: Never
:!:
 
k8s/resources.txt · Последнее изменение: 2024/11/12 17:21 — admin