Демистифицируем конфигурацию Kubernetes: практическое руководство для начинающих

Вы новичок в Kubernetes и вас не устраивают его параметры конфигурации? Не волнуйтесь, мы вас прикроем! В этом руководстве для начинающих мы познакомим вас с различными методами настройки развертываний Kubernetes, используя разговорный язык и примеры кода, которые облегчат понимание. Итак, приступим!

Метод 1: файлы YAML Kubernetes
Один из наиболее распространенных способов настройки Kubernetes — использование файлов YAML. Эти файлы определяют желаемое состояние ваших объектов Kubernetes, таких как модули, службы и развертывания. Вот пример простого файла YAML для развертывания:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: my-app
spec:
  replicas: 3
  template:
    metadata:
      labels:
        app: my-app
    spec:
      containers:
      - name: my-app-container
        image: my-app-image:latest
        ports:
        - containerPort: 80

Вы можете применить эту конфигурацию с помощью команды kubectl apply:

kubectl apply -f deployment.yaml

Метод 2: Секреты
Конфиденциальную информацию, такую ​​как пароли или ключи API, можно безопасно хранить и получать к ней доступ с помощью Kubernetes Secrets. Допустим, вам нужно сохранить пароль базы данных. Вы можете создать объект Secret следующим образом:

kubectl create secret generic db-secret --from-literal=password=secretpassword

Затем вы можете сослаться на этот секрет в YAML-файле развертывания:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: my-app
spec:
  replicas: 3
  template:
    metadata:
      labels:
        app: my-app
    spec:
      containers:
      - name: my-app-container
        image: my-app-image:latest
        env:
        - name: DB_PASSWORD
          valueFrom:
            secretKeyRef:
              name: db-secret
              key: password

Метод 3: ConfigMaps
ConfigMaps используются для хранения неконфиденциальных данных конфигурации, таких как переменные среды или файлы конфигурации. Чтобы создать ConfigMap, вы можете использовать следующую команду:

kubectl create configmap my-config --from-literal=ENV_VAR=value

Затем вы можете сослаться на ConfigMap в YAML-файле развертывания:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: my-app
spec:
  replicas: 3
  template:
    metadata:
      labels:
        app: my-app
    spec:
      containers:
      - name: my-app-container
        image: my-app-image:latest
        envFrom:
        - configMapRef:
            name: my-config

Метод 4: переменные среды
Переменные среды можно задать непосредственно в YAML-файле развертывания. Вот пример:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: my-app
spec:
  replicas: 3
  template:
    metadata:
      labels:
        app: my-app
    spec:
      containers:
      - name: my-app-container
        image: my-app-image:latest
        env:
        - name: ENV_VAR
          value: value

Метод 5: Helm Charts
Helm — популярный менеджер пакетов для Kubernetes, который упрощает развертывание и настройку приложений. Helm-чарты позволяют определять, устанавливать и обновлять приложения Kubernetes. Используя Helm, вы можете упаковать конфигурацию своего приложения вместе с манифестами развертывания, что упрощает управление и обмен информацией.