Commit de49fbfe authored by xiaohua guan's avatar xiaohua guan Committed by Yas Naoi
Browse files

Issue #3294865 by Xiaohua Guan, yas: Manage Cloud Orchestrator deployment (Refactor K8s templates)

parent 9475708b
Loading
Loading
Loading
Loading
+0 −315
Original line number Diff line number Diff line
kind: Namespace
apiVersion: v1
metadata:
  name: {{ namespace }}

---

kind: Secret
apiVersion: v1
metadata:
  name: cloud-orchestrator-secret
  namespace: {{ namespace }}
  labels:
    k8s-app: cloud-orchestrator
type: Opaque
stringData:
  # Change the followings
  drupal-user: {{ drupal_user }} # Drupal administrator username
  drupal-password: {{ drupal_password }}  # Drupal administrator password
  drupal-email: {{ drupal_email }}  # Drupal administrator email address
  drupal-timezone: {{ drupal_timezone }}   # Drupal default time zone
  mysql-user: {{ mysql_user }}                # MySQL administrator username
  mysql-password: {{ mysql_password }}   # MySQL administrator password
  mysql-database: {{ mysql_database }}     # MySQL database name

---

kind: Service
apiVersion: v1
metadata:
  name: cloud-orchestrator
  namespace: {{ namespace }}
  labels:
    k8s-app: cloud-orchestrator
spec:
  ports:
    - port: 80
      targetPort: 80
      protocol: TCP
  selector:
    k8s-app: cloud-orchestrator
  type: LoadBalancer
  # Change the following
  loadBalancerSourceRanges:
    - "0.0.0.0/0"

---

kind: PersistentVolumeClaim
apiVersion: v1
metadata:
  name: cloud-orchestrator-pvc
  namespace: {{ namespace }}
  labels:
    k8s-app: cloud-orchestrator
spec:
  storageClassName: {{ storage_class }}
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 100Mi

---

kind: Deployment
apiVersion: apps/v1
metadata:
  name: cloud-orchestrator
  namespace: {{ namespace }}
  labels:
    k8s-app: cloud-orchestrator
spec:
  replicas: 1
  revisionHistoryLimit: 10
  selector:
    matchLabels:
      k8s-app: cloud-orchestrator
  template:
    metadata:
      labels:
        k8s-app: cloud-orchestrator
    spec:
      containers:
        - name: cloud-orchestrator
          image: docomoinnovations/cloud_orchestrator:5.x-dev-arm64
          imagePullPolicy: Always
          command: ["bash", "-c"]
          args:
          - |
            export SCRIPT='/entrypoint.sh';
            if ! [ -f "${SCRIPT}" ]; then
              curl -L 'https://git.drupalcode.org/project/cloud/-/raw/5.x/deployments/kubernetes/entrypoint.sh' -o "${SCRIPT}"
              chmod +x "${SCRIPT}"
            fi;
            "${SCRIPT}"
          env:
            - name: CLOUD_ORCHESTRATOR_VERSION
              value: 5.x-dev
            - name: DRUPAL_USER
              valueFrom:
                secretKeyRef:
                  name: cloud-orchestrator-secret
                  key: drupal-user
            - name: DRUPAL_PASSWORD
              valueFrom:
                secretKeyRef:
                  name: cloud-orchestrator-secret
                  key: drupal-password
            - name: DRUPAL_EMAIL
              valueFrom:
                secretKeyRef:
                  name: cloud-orchestrator-secret
                  key: drupal-email
            - name: DRUPAL_TIMEZONE
              valueFrom:
                secretKeyRef:
                  name: cloud-orchestrator-secret
                  key: drupal-timezone
            - name: MYSQL_HOST
              value: cloud-orchestrator-mysql
            - name: MYSQL_PORT
              value: '3306'
            - name: MYSQL_USER
              valueFrom:
                secretKeyRef:
                  name: cloud-orchestrator-secret
                  key: mysql-user
            - name: MYSQL_PASSWORD
              valueFrom:
                secretKeyRef:
                  name: cloud-orchestrator-secret
                  key: mysql-password
            - name: MYSQL_DATABASE
              valueFrom:
                secretKeyRef:
                  name: cloud-orchestrator-secret
                  key: mysql-database
            - name: MEMCACHED_HOST
              value: cloud-orchestrator-memcached
            - name: MEMCACHED_PORT
              value: '11211'
          ports:
            - containerPort: 80
              protocol: TCP
          livenessProbe:
            httpGet:
              scheme: HTTP
              path: /user/login
              port: 80
            initialDelaySeconds: 600
            timeoutSeconds: 30
            periodSeconds: 300
          volumeMounts:
            - name: cloud-orchestrator-volume
              mountPath: /var/www/cloud_orchestrator
      volumes:
        - name: cloud-orchestrator-volume
          persistentVolumeClaim:
            claimName: cloud-orchestrator-pvc

---

kind: Service
apiVersion: v1
metadata:
  name: cloud-orchestrator-mysql
  namespace: {{ namespace }}
  labels:
    k8s-app: cloud-orchestrator-mysql
spec:
  ports:
    - port: 3306
      targetPort: 3306
      protocol: TCP
  selector:
    k8s-app: cloud-orchestrator-mysql

---

kind: PersistentVolumeClaim
apiVersion: v1
metadata:
  name: cloud-orchestrator-mysql-pvc-data
  namespace: {{ namespace }}
  labels:
    k8s-app: cloud-orchestrator-mysql
spec:
  storageClassName: {{ storage_class }}
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 4Gi

---

kind: PersistentVolumeClaim
apiVersion: v1
metadata:
  name: cloud-orchestrator-mysql-pvc-backup
  namespace: {{ namespace }}
  labels:
    k8s-app: cloud-orchestrator-mysql
spec:
  storageClassName: {{ storage_class }}
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 4Gi

---

kind: Deployment
apiVersion: apps/v1
metadata:
  name: cloud-orchestrator-mysql
  namespace: {{ namespace }}
  labels:
    k8s-app: cloud-orchestrator-mysql
spec:
  replicas: 1
  selector:
    matchLabels:
      k8s-app: cloud-orchestrator-mysql
  template:
    metadata:
      labels:
        k8s-app: cloud-orchestrator-mysql
    spec:
      containers:
        - name: cloud-orchestrator-mysql
          image: mariadb:10.7
          imagePullPolicy: Always
          env:
            - name: MYSQL_ROOT_PASSWORD
              valueFrom:
                secretKeyRef:
                  name: cloud-orchestrator-secret
                  key: mysql-password
            - name: MYSQL_USER
              valueFrom:
                secretKeyRef:
                  name: cloud-orchestrator-secret
                  key: mysql-user
            - name: MYSQL_PASSWORD
              valueFrom:
                secretKeyRef:
                  name: cloud-orchestrator-secret
                  key: mysql-password
            - name: MYSQL_DATABASE
              valueFrom:
                secretKeyRef:
                  name: cloud-orchestrator-secret
                  key: mysql-database
          ports:
            - containerPort: 3306
              protocol: TCP
          volumeMounts:
            - name: data-volume
              mountPath: /var/lib/mysql
            - name: backup-volume
              mountPath: /backup
      volumes:
        - name: data-volume
          persistentVolumeClaim:
            claimName: cloud-orchestrator-mysql-pvc-data
        - name: backup-volume
          persistentVolumeClaim:
            claimName: cloud-orchestrator-mysql-pvc-backup

---

kind: Service
apiVersion: v1
metadata:
  name: cloud-orchestrator-memcached
  namespace: {{ namespace }}
  labels:
    k8s-app: cloud-orchestrator-memcached
spec:
  ports:
    - port: 11211
      targetPort: 11211
      protocol: TCP
  selector:
    k8s-app: cloud-orchestrator-memcached

---

kind: Deployment
apiVersion: apps/v1
metadata:
  name: cloud-orchestrator-memcached
  namespace: {{ namespace }}
  labels:
    k8s-app: cloud-orchestrator-memcached
spec:
  replicas: 1
  selector:
    matchLabels:
      k8s-app: cloud-orchestrator-memcached
  template:
    metadata:
      labels:
        k8s-app: cloud-orchestrator-memcached
    spec:
      containers:
        - name: cloud-orchestrator-memcached
          image: memcached:1.6
          imagePullPolicy: Always
          ports:
            - containerPort: 11211
              protocol: TCP
+1 −1
Original line number Diff line number Diff line
@@ -83,7 +83,7 @@ spec:
    spec:
      containers:
        - name: cloud-orchestrator
          image: docomoinnovations/cloud_orchestrator:5.x-dev
          image: docomoinnovations/cloud_orchestrator:5.x-dev{{ cpu_architecture == 'arm64' ? '-arm64' : '' }}
          imagePullPolicy: Always
          command: ["bash", "-c"]
          args:
+11 −28
Original line number Diff line number Diff line
@@ -38,36 +38,18 @@ parameters:
    entity_type: k8s_storage_class
    entity_key: name
    cloud_context: ''
  cpu_architecture:
    title: CPU architecture
    default_value: amd64
    type: select
    options:
      amd64: AMD64
      arm64: ARM64

templates:
  amd64:
    label: AMD64
    location: amd64.yml
    parameter_groups:
      - name: drupal
        title: Drupal configuration
        parameter_refs:
          - drupal_user
          - drupal_password
          - drupal_email
          - drupal_timezone

      - name: database
        title: Database configuration
        parameter_refs:
          - mysql_user
          - mysql_password
          - mysql_database

      - name: k8s
        title: Kubernetes Configuration
        parameter_refs:
          - storage_class
          - namespace

  arm64:
    label: ARM64
    location: arm64.yml
  cloud_orchestrator:
    label: Cloud Orchestrator
    location: cloud_orchestrator.yml
    parameter_groups:
      - name: drupal
        title: Drupal configuration
@@ -89,3 +71,4 @@ templates:
        parameter_refs:
          - storage_class
          - namespace
          - cpu_architecture