Рубрики
Uncategorized

Быстро создавая файлы манифеста Kubernetes, используя kubectl

Когда кто-то только начинается с Kubernetes, написание файлов манифеста может быть немного сложно. В этом … Помечено с Куберовщиком, дежоптом, учебником, производительностью.

Когда кто-то только начинается с Kubernetes, написание файлов манифеста может быть немного сложно. В этом посте я постараюсь дать несколько советов в написании файлов манифеста легко.

Подвигание

Используйте Генератор создавать стручки. Убедитесь, что указанные записи синтаксически правильные, выполняя сухой пробег.

kubectl run --generator=run-pod/v1  --image  --dry-run

Сохраните определение POD в файл YAML для будущих изменений, а также ссылки

kubectl run --generator=run-pod/v1  --image  --dry-run -o yaml > pod.yaml

Пример:

slashpai@pai  ~  (⎈ |kind-pai:default) kubectl run --generator=run-pod/v1 nginx-pod --image nginx --dry-run        
pod/nginx-pod created (dry run)
slashpai@pai  ~  (⎈ |kind-pai:default) kubectl run --generator=run-pod/v1 nginx-pod --image nginx --dry-run -o yaml > pod.yaml
slashpai@pai  ~  (⎈ |kind-pai:default) cat pod.yaml 
apiVersion: v1
kind: Pod
metadata:
  creationTimestamp: null
  labels:
    run: nginx-pod
  name: nginx-pod
spec:
  containers:
  - image: nginx
    name: nginx-pod
    resources: {}
  dnsPolicy: ClusterFirst
  restartPolicy: Always
status: {}
slashpai@pai  ~  (⎈ |kind-pai:default) 

Развертывание

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

kubectl create deployment  --image  --dry-run

Сохраните определение развертывания в файл YAML для будущих изменений, а также ссылки

kubectl create deployment  --image  --dry-run -o yaml > deployment.yaml

Пример:

slashpai@pai  ~  (⎈ |kind-pai:default) kubectl create deployment nginx-deployment --image nginx --dry-run
deployment.apps/nginx-deployment created (dry run)
slashpai@pai  ~  (⎈ |kind-pai:default) kubectl create deployment nginx-deployment --image nginx --dry-run -o yaml > deployment.yaml
slashpai@pai  ~  (⎈ |kind-pai:default) cat deployment.yaml 
apiVersion: apps/v1
kind: Deployment
metadata:
  creationTimestamp: null
  labels:
    app: nginx-deployment
  name: nginx-deployment
spec:
  replicas: 1
  selector:
    matchLabels:
      app: nginx-deployment
  strategy: {}
  template:
    metadata:
      creationTimestamp: null
      labels:
        app: nginx-deployment
    spec:
      containers:
      - image: nginx
        name: nginx
        resources: {}
status: {}
slashpai@pai  ~  (⎈ |kind-pai:default) 

Реплизет

Нет прямого способа, который я мог найти, чтобы создать это из Kubectl. Я нашел этот трюк, хотя, пока я не смогу найти лучший путь. Используйте так же, как создать развертывание и модифицировать добрый Чтобы решить в файле YAML и удалить поля, специфичные для развертывания. Я нашел это с пробным и ошибкой, так что это файл diff.

slashpai@pai  ~  (⎈ |kind-pai:default) diff deployment.yaml replicaset.yaml 
2c2
< kind: Deployment
---
> kind: ReplicaSet
13d12
<   strategy: {}
24c23
< status: {}
---
> 

Я удалил стратегию поля, а также статус из реплизета .yaml. При создании файла репликета так, дайте имя развертывания суффикс, такую как реплиз вместо развертывания. Я не сделал это в этом примере, так как я хотел показать, какие поля я точно нужно изменить.

Configmap.

Даже если в карте конфигурации есть более одной записи, просто добавьте один и затем добавьте остальное в файле Mainest непосредственно, чтобы вы могли сэкономить время в добавлении одного по одному в командной строке. Проверьте первый синтаксис мудрым правильным использованием сухого прогона.

kubectl create configmap  --from-literal key=value --dry-run

Сохраните определение развертывания в файл YAML для будущих изменений, а также ссылки

kubectl create configmap  --from-literal key=value --dry-run -o yaml > configmap.yaml

Пример:

slashpai@pai  ~  (⎈ |kind-pai:default) kubectl create configmap mongo-config --from-literal user_id=mongo --dry-run
configmap/mongo created (dry run)
slashpai@pai  ~  (⎈ |kind-pai:default) kubectl create configmap mongo-config --from-literal user_id=mongo --dry-run -o yaml > configmap.yaml
slashpai@pai  ~  (⎈ |kind-pai:default) cat configmap.yaml 
apiVersion: v1
data:
  user_id: mongo
kind: ConfigMap
metadata:
  creationTimestamp: null
  name: mongo

Возможно, вы захотите переместить раздел данных ниже метаданных, поскольку именно здесь мы размещаем это нормально.

Добавление большего количества записей в файле манифеста

Теперь вы должны иметь представление о том, как создавать файлы манифеста для большинства используемых объектов Kubernetes. Вы можете настроить так, чтобы другие объекты не упомянули. Поля в файле манифеста созданы таким образом, недостаточно, если у вас есть конкретные потребности или необходимость добавления большей поля.

Давайте посмотрим, как мы можем добавить больше полей в файле определения POD. Например, вы хотите ввести переменную среды в контейнер из конфигурации. Поскольку мы знаем, что информация, связанная с контейнерами, находится внутри спецификации POD, мы можем использовать Kubectl объяснить POD.Spec.containers чтобы получить точное поле. Посмотрите, как это сделано ниже.

slashpai@pai  ~  (⎈ |kind-pai:default) kubectl explain pod.spec.containers|grep env
     container's environment. If a variable cannot be resolved, the reference in
     are expanded using the container's environment. If a variable cannot be
   env  <[]Object>
     List of environment variables to set in the container. Cannot be updated.
   envFrom  <[]Object>
     List of sources to populate environment variables in the container. The

Я связался с ENV, так как я знаю, поле начинается срица. Если вы не знаете поле, вам нужно будет прокрутить вывод объяснения и выяснить это.

От этого я узнал, что это Engram поле, которое нам нужно использовать configmap И это тип списка (важно отметить тип). Мы можем проверить поля, которые находятся под предсказание похоже, как выше. Но если нам интересно только узнать поля без его описания, просто добавьте рекурсивный флаг

slashpai@pai  ~  (⎈ |kind-pai:default) kubectl explain pod.spec.containers.envFrom --recursive
KIND:     Pod
VERSION:  v1

RESOURCE: envFrom <[]Object>

DESCRIPTION:
     List of sources to populate environment variables in the container. The
     keys defined within a source must be a C_IDENTIFIER. All invalid keys will
     be reported as an event when the container is starting. When a key exists
     in multiple sources, the value associated with the last source will take
     precedence. Values defined by an Env with a duplicate key will take
     precedence. Cannot be updated.

     EnvFromSource represents the source of a set of ConfigMaps

FIELDS:
   configMapRef 
      name  
      optional  
   prefix   
   secretRef    
      name  
      optional  
slashpai@pai  ~  (⎈ |kind-pai:default) 

Которые просверлили конфигурацию, чтобы использовать, как указано ниже в разделе POD. Обратите внимание на тип для Engram , который мы поняли, чтобы быть типом списка.

spec:
  containers:
  - name: mongo
    image: mongo
    envFrom:
    - configMapRef:
        name: mongo-config

Конечно, вы можете пойти в документацию по Kubernetes и получить эту информацию. Но я нашел, что это более легче, так как я не люблю оставлять свой терминал так часто.

Я надеюсь, что это поможет вам с легкостью создавать файлы манифеста. Спасибо, за то что прочитали эту статью.

Оригинал: «https://dev.to/slashpai/quickly-creating-kubernetes-manifest-files-using-kubectl-2khj»