Создайте pod из yaml в разделе данных ConfigMap

Я пишу оператор, который разворачивает приложение через yaml. Но этот ямл хранится в data раздел ConfigMap -

      apiVersion: v1
kind: ConfigMap
metadata:
  name: test-config
  namespace: default
data:
  hstr-opeartor.yaml: |
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: 'hstr-operator'
      namespace: 'cloudian'
    spec:
      replicas: 1
      selector:
        matchLabels:
          name: 'hyperstore-operator'
      template:
        metadata:
          labels:
            name: 'hyperstore-operator'
        spec:
          containers:
          - args:
            - --enable-leader-election
            command:
            - hyperstore-operator
            env:
            - name: REBUILD_TIMER_EMM
              value: "360"
            - name: REBUILD_TIMER_NODE
              value: "360"
            - name: REBUILD_TIMER_PVC
              value: "60"
            - name: IMAGE_PULL_SECRETS
              value: 'hyperstore-regcred'
            - name: IMAGE_HSC
              value: quay.io/cldn/test-image-v2
            - name: WATCH_NAMESPACE
              valueFrom:
                fieldRef:
                  fieldPath: metadata.namespace
            - name: POD_NAME
              valueFrom:
                fieldRef:
                  fieldPath: metadata.name
            - name: OPERATOR_NAME
              value: hyperstore-operator
            - name: IMAGE_PULL_POLICY
              value: IfNotPresent
            image: quay.io/cldn/test-image
            imagePullPolicy: IfNotPresent
            name: hyperstore-operator
            resources:
              limits:
                cpu: 100m
                memory: 1Gi
              requests:
                cpu: 100m
                memory: 500Mi
          imagePullSecrets:
          - name: 'hyperstore-regcred'
          terminationGracePeriodSeconds: 30

Ямл урезан, чтобы дать достаточно представления о проблеме. Но на самом деле это полный файл развертывания, который я могу сделать. kubectl apply -f <resource> с.

      // newPodForCR returns a busybox pod with the same name/namespace as the cr
func newPodForCR(cr *hapv1alpha1.HscOperator) *corev1.Pod {
    labels := map[string]string{
        "app": cr.Name,
    }
    return &corev1.Pod{
        ObjectMeta: metav1.ObjectMeta{
            Name:      cr.Name + "-pod",
            Namespace: "default",
            Labels:    labels,
        },
        Spec: corev1.PodSpec{
            Containers: []corev1.Container{
                {
                    Name:  cr.Name,
                    Image: cr.Spec.Image,
                },
            },
        },
    }
}

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

0 ответов

Другие вопросы по тегам