Как иметь несколько типов объектов в одном шаблоне yaml openshift? - PullRequest
1 голос
/ 11 декабря 2019

Вот пример шаблона для одного PersistentVolumeClaim с именем: Applic1

apiVersion: "v1"
kind: "PersistentVolumeClaim"
metadata:
  name: "claim1"
spec:
  accessModes:
    - "ReadWriteOnce"
  resources:
    requests:
      storage: "5Gi"
  volumeName: "pv0001"

Как я могу добавить несколько PersistentVolumeClaim в одном файле шаблона. Например, при добавлении претензии 2

я попытался скопировать и вставить тот же шаблон снизу и изменить претензию на претензию 2, но в интерфейсе openshift при импорте шаблона выдает предупреждение: Тип ключа дублированного отображения: PersistentVolumeClaim

Обновление: я попытался использовать ---, как указано в комментариях. Но это приводит к ошибке Expected a single document in the stream but found more в интерфейсе openshift при импорте yaml

Ответы [ 3 ]

2 голосов
/ 11 декабря 2019

Я бы рекомендовал написать фактический шаблон: https://docs.okd.io/latest/dev_guide/templates.html#writing-templates

В частности, это выглядело бы примерно так:

apiVersion: v1
kind: Template
metadata:
  name: multiple-pvcs
objects:
- apiVersion: "v1"
  kind: "PersistentVolumeClaim"
  metadata:
    name: "claim1"
  spec:
    accessModes:
      - "ReadWriteOnce"
    resources:
      requests:
        storage: "5Gi"
    volumeName: "pv0001"
- apiVersion: "v1"
  kind: "PersistentVolumeClaim"
  metadata:
    name: "claim2"
  spec:
    accessModes:
      - "ReadWriteOnce"
    resources:
      requests:
        storage: "5Gi"
    volumeName: "pv0002"
parameters: []

Тогда вы можете просто создать объекты сoc process template.yml | oc create -f -

1 голос
/ 11 декабря 2019

Чтобы отделить объекты, все, что вам нужно добавить, это ---

Да, именно это:

---

например

apiVersion: extensions/v1beta1
kind: ReplicaSet
metadata:
  name: replicaset-example-webapp-0-5
spec:
  selector:
    matchLabels:
      mylabel: mywebapp
  replicas: 6
  template:
    metadata:
      labels:
        mylabel: mywebapp
    spec:
      containers:
        - name: pod-example-0-5
          image: richardchesterwood/k8s-fleetman-webapp-angular:release0-5
---
apiVersion: extensions/v1beta1
kind: ReplicaSet
metadata:
  name: replicaset-example-webapp-0
spec:
  selector:
    matchLabels:
      mylabel: mywebapp
  replicas: 2
  template:
    metadata:
      labels:
        mylabel: mywebapp
    spec:
      containers:
        - name: pod-example-0
          image: richardchesterwood/k8s-fleetman-webapp-angular:release0
---
apiVersion: v1
kind: Pod
metadata:
  name: just-a-queue
  labels:
    mylabelname: myqueueapp
spec:
  containers:
  - name: queue-app-container
    image: richardchesterwood/k8s-fleetman-queue:release1

Также вы можете иметьнесколько объектов Kubernetes в одном и том же файле yaml, все, что вам нужно сделать, это разделить их с помощью ---

Но в OpenShift это выглядит так

На самом деле, это работает, если создается массивпредметы:

apiVersion: v1beta3                                                                              
kind: List                                                                                       
items:                                                                                           
  - #list of API objects
0 голосов
/ 11 декабря 2019

Вы можете разделить документы yaml, добавив в новой строке

----

см. https://yaml.org/spec/1.2/spec.html#id2760395

...