computer/computer-k8s-operator/manifest/hugegraph-computer-operator.yaml (774 lines of code) (raw):

# # Licensed to the Apache Software Foundation (ASF) under one or more # contributor license agreements. See the NOTICE file distributed with # this work for additional information regarding copyright ownership. # The ASF licenses this file to You under the Apache License, Version 2.0 # (the "License"); you may not use this file except in compliance with # the License. You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. # apiVersion: v1 kind: Namespace metadata: labels: app.kubernetes.io/name: hugegraph-computer-operator app.kubernetes.io/version: v1 control-plane: controller-manager name: hugegraph-computer-operator-system --- apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: labels: app.kubernetes.io/name: hugegraph-computer-operator-minio app.kubernetes.io/version: v1 name: hugegraph-computer-operator-local-storage namespace: system provisioner: kubernetes.io/no-provisioner volumeBindingMode: WaitForFirstConsumer --- apiVersion: v1 kind: ServiceAccount metadata: labels: app.kubernetes.io/name: hugegraph-computer-operator app.kubernetes.io/version: v1 name: hugegraph-computer-operator-controller-manager namespace: hugegraph-computer-operator-system --- apiVersion: rbac.authorization.k8s.io/v1 kind: Role metadata: labels: app.kubernetes.io/name: hugegraph-computer-operator app.kubernetes.io/version: v1 name: hugegraph-computer-operator-leader-election-role namespace: hugegraph-computer-operator-system rules: - apiGroups: - "" resources: - configmaps verbs: - get - list - watch - create - update - patch - delete - apiGroups: - coordination.k8s.io resources: - leases verbs: - get - list - watch - create - update - patch - delete - apiGroups: - "" resources: - events verbs: - create - patch --- apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: creationTimestamp: null labels: app.kubernetes.io/name: hugegraph-computer-operator app.kubernetes.io/version: v1 name: hugegraph-computer-operator-manager-role rules: - apiGroups: - apps resources: - deployments verbs: - create - delete - get - list - patch - update - watch - apiGroups: - apps resources: - deployments/status verbs: - get - apiGroups: - apps resources: - statefulsets verbs: - create - delete - get - list - patch - update - watch - apiGroups: - apps resources: - statefulsets/status verbs: - get - apiGroups: - batch resources: - jobs verbs: - create - delete - get - list - patch - update - watch - apiGroups: - batch resources: - jobs/status verbs: - get - apiGroups: - "" resources: - configmaps verbs: - create - delete - get - list - patch - update - watch - apiGroups: - "" resources: - events verbs: - create - delete - get - list - patch - update - watch - apiGroups: - "" resources: - events/status verbs: - get - apiGroups: - "" resources: - namespaces verbs: - create - get - update - apiGroups: - "" resources: - pods verbs: - get - list - watch - apiGroups: - "" resources: - pods/log verbs: - get - list - watch - apiGroups: - "" resources: - pods/status verbs: - get - apiGroups: - "" resources: - secrets verbs: - get - apiGroups: - "" resources: - services verbs: - create - delete - get - list - patch - update - watch - apiGroups: - "" resources: - services/status verbs: - get - apiGroups: - extensions resources: - ingresses verbs: - create - delete - get - list - patch - update - watch - apiGroups: - extensions resources: - ingresses/status verbs: - get - apiGroups: - operator.hugegraph.apache.org resources: - hugegraphcomputerjobs verbs: - create - delete - get - list - patch - update - watch - apiGroups: - operator.hugegraph.apache.org resources: - hugegraphcomputerjobs/finalizers verbs: - update - apiGroups: - operator.hugegraph.apache.org resources: - hugegraphcomputerjobs/status verbs: - get - patch - update --- apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: labels: app.kubernetes.io/name: hugegraph-computer-operator app.kubernetes.io/version: v1 name: hugegraph-computer-operator-metrics-reader rules: - nonResourceURLs: - /metrics verbs: - get --- apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: labels: app.kubernetes.io/name: hugegraph-computer-operator app.kubernetes.io/version: v1 name: hugegraph-computer-operator-proxy-role rules: - apiGroups: - authentication.k8s.io resources: - tokenreviews verbs: - create - apiGroups: - authorization.k8s.io resources: - subjectaccessreviews verbs: - create --- apiVersion: rbac.authorization.k8s.io/v1 kind: RoleBinding metadata: labels: app.kubernetes.io/name: hugegraph-computer-operator app.kubernetes.io/version: v1 name: hugegraph-computer-operator-leader-election-rolebinding namespace: hugegraph-computer-operator-system roleRef: apiGroup: rbac.authorization.k8s.io kind: Role name: hugegraph-computer-operator-leader-election-role subjects: - kind: ServiceAccount name: hugegraph-computer-operator-controller-manager namespace: hugegraph-computer-operator-system --- apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: labels: app.kubernetes.io/name: hugegraph-computer-operator app.kubernetes.io/version: v1 name: hugegraph-computer-operator-manager-rolebinding roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: hugegraph-computer-operator-manager-role subjects: - kind: ServiceAccount name: hugegraph-computer-operator-controller-manager namespace: hugegraph-computer-operator-system --- apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: labels: app.kubernetes.io/name: hugegraph-computer-operator app.kubernetes.io/version: v1 name: hugegraph-computer-operator-proxy-rolebinding roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: hugegraph-computer-operator-proxy-role subjects: - kind: ServiceAccount name: hugegraph-computer-operator-controller-manager namespace: hugegraph-computer-operator-system --- apiVersion: v1 data: controller_manager_config.yaml: | # # Licensed to the Apache Software Foundation (ASF) under one or more # contributor license agreements. See the NOTICE file distributed with # this work for additional information regarding copyright ownership. # The ASF licenses this file to You under the Apache License, Version 2.0 # (the "License"); you may not use this file except in compliance with # the License. You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. # apiVersion: controller-runtime.sigs.k8s.io/v1alpha1 kind: ControllerManagerConfig health: healthProbeBindAddress: :9892 metrics: bindAddress: 127.0.0.1:8080 webhook: port: 9443 leaderElection: leaderElect: true resourceName: 11f2b593.hugegraph.apache.org kind: ConfigMap metadata: labels: app.kubernetes.io/name: hugegraph-computer-operator app.kubernetes.io/version: v1 name: hugegraph-computer-operator-manager-config namespace: hugegraph-computer-operator-system --- apiVersion: v1 kind: Service metadata: labels: app.kubernetes.io/name: hugegraph-computer-operator app.kubernetes.io/version: v1 name: hugegraph-computer-operator-controller-manager-metrics-service namespace: hugegraph-computer-operator-system spec: ports: - name: https port: 8443 protocol: TCP targetPort: https selector: app.kubernetes.io/name: hugegraph-computer-operator app.kubernetes.io/version: v1 control-plane: controller-manager --- apiVersion: v1 kind: Service metadata: annotations: service.alpha.kubernetes.io/tolerate-unready-endpoints: "true" labels: app.kubernetes.io/name: hugegraph-computer-operator-etcd app.kubernetes.io/version: v1 service.app: hugegraph-computer-operator-etcd name: hugegraph-computer-operator-etcd namespace: hugegraph-computer-operator-system spec: clusterIP: None ports: - name: client port: 2379 protocol: TCP targetPort: 2379 - name: peer port: 2380 protocol: TCP targetPort: 2380 selector: app.kubernetes.io/name: hugegraph-computer-operator-etcd app.kubernetes.io/version: v1 service.app: hugegraph-computer-operator-etcd sessionAffinity: None type: ClusterIP --- apiVersion: v1 kind: Service metadata: annotations: service.alpha.kubernetes.io/tolerate-unready-endpoints: "true" labels: app.kubernetes.io/name: hugegraph-computer-operator-minio app.kubernetes.io/version: v1 service.app: hugegraph-computer-operator-minio name: hugegraph-computer-operator-minio namespace: hugegraph-computer-operator-system spec: clusterIP: None ports: - name: client port: 9000 protocol: TCP targetPort: 9090 selector: app.kubernetes.io/name: hugegraph-computer-operator-minio app.kubernetes.io/version: v1 service.app: hugegraph-computer-operator-minio sessionAffinity: None type: ClusterIP --- apiVersion: v1 kind: Service metadata: name: hugegraph-computer-operator-webhook-service namespace: hugegraph-computer-operator-system spec: ports: - port: 443 protocol: TCP targetPort: 9443 selector: control-plane: controller-manager --- apiVersion: apps/v1 kind: Deployment metadata: labels: app.kubernetes.io/name: hugegraph-computer-operator app.kubernetes.io/version: v1 control-plane: controller-manager name: hugegraph-computer-operator-controller-manager namespace: hugegraph-computer-operator-system spec: replicas: 1 selector: matchLabels: app.kubernetes.io/name: hugegraph-computer-operator app.kubernetes.io/version: v1 control-plane: controller-manager template: metadata: annotations: kubectl.kubernetes.io/default-container: manager labels: app.kubernetes.io/name: hugegraph-computer-operator app.kubernetes.io/version: v1 control-plane: controller-manager spec: containers: - args: - --leader-elect command: - /manager image: hugegraph/hugegraph-computer-operator-manager:latest livenessProbe: httpGet: path: /health port: 9892 initialDelaySeconds: 15 periodSeconds: 20 name: manager ports: - containerPort: 9443 name: webhook-server protocol: TCP readinessProbe: httpGet: path: /ready port: 9892 initialDelaySeconds: 5 periodSeconds: 10 resources: limits: cpu: 500m memory: 256Mi requests: cpu: 10m memory: 128Mi securityContext: allowPrivilegeEscalation: false capabilities: drop: - ALL volumeMounts: - mountPath: /tmp/k8s-webhook-server/serving-certs name: cert readOnly: true - args: [] command: - java - -jar - hugegraph-computer-operator.jar env: - name: PROBE_PORT value: "9892" - name: WATCH_NAMESPACE value: hugegraph-computer-operator-system - name: RECONCILER_COUNT value: "6" - name: INTERNAL_ETCD_URL value: http://hugegraph-computer-operator-etcd.hugegraph-computer-operator-system:2379 - name: INTERNAL_MINIO_URL value: http://hugegraph-computer-operator-minio.hugegraph-computer-operator-system:9000 - name: LOG_LEVEL value: INFO - name: AUTO_DESTROY_POD value: "true" image: hugegraph/hugegraph-computer-operator:latest imagePullPolicy: Always name: controller resources: limits: cpu: 1000m memory: 512Mi requests: cpu: 250m memory: 512Mi securityContext: allowPrivilegeEscalation: false capabilities: drop: - ALL serviceAccountName: hugegraph-computer-operator-controller-manager terminationGracePeriodSeconds: 10 volumes: - name: cert secret: defaultMode: 420 secretName: webhook-server-cert --- apiVersion: apps/v1 kind: Deployment metadata: labels: app.kubernetes.io/name: hugegraph-computer-operator-etcd app.kubernetes.io/version: v1 name: hugegraph-computer-operator-etcd namespace: hugegraph-computer-operator-system spec: replicas: 1 selector: matchLabels: app.kubernetes.io/name: hugegraph-computer-operator-etcd app.kubernetes.io/version: v1 service.app: hugegraph-computer-operator-etcd template: metadata: labels: app.kubernetes.io/name: hugegraph-computer-operator-etcd app.kubernetes.io/version: v1 service.app: hugegraph-computer-operator-etcd spec: containers: - command: - /bin/sh - -ec - | HOSTNAME=$(hostname) etcd --name ${HOSTNAME} \ --data-dir /var/etcd/data \ --initial-advertise-peer-urls http://${HOSTNAME}.hugegraph-computer-operator-etcd.hugegraph-computer-operator-system:2380 \ --listen-peer-urls http://0.0.0.0:2380 \ --listen-client-urls http://0.0.0.0:2379 \ --advertise-client-urls http://${HOSTNAME}.hugegraph-computer-operator-etcd.hugegraph-computer-operator-system:2379 \ --initial-cluster ${HOSTNAME}=http://${HOSTNAME}.hugegraph-computer-operator-etcd.hugegraph-computer-operator-system:2380 \ --initial-cluster-state new image: quay.io/coreos/etcd:v3.5.0 livenessProbe: exec: command: - /bin/sh - -ec - ETCDCTL_API=3 etcdctl endpoint status failureThreshold: 3 initialDelaySeconds: 10 periodSeconds: 60 successThreshold: 1 timeoutSeconds: 10 name: hugegraph-computer-operator-etcd ports: - containerPort: 2379 name: client - containerPort: 2380 name: peer readinessProbe: exec: command: - /bin/sh - -ec - ETCDCTL_API=3 etcdctl endpoint status failureThreshold: 3 initialDelaySeconds: 1 periodSeconds: 5 successThreshold: 1 timeoutSeconds: 5 hostname: hugegraph-computer-operator-etcd-0 subdomain: hugegraph-computer-operator-etcd --- apiVersion: apps/v1 kind: Deployment metadata: labels: app.kubernetes.io/name: hugegraph-computer-operator-minio app.kubernetes.io/version: v1 name: hugegraph-computer-operator-minio namespace: hugegraph-computer-operator-system spec: replicas: 1 selector: matchLabels: app.kubernetes.io/name: hugegraph-computer-operator-minio app.kubernetes.io/version: v1 service.app: hugegraph-computer-operator-minio template: metadata: labels: app.kubernetes.io/name: hugegraph-computer-operator-minio app.kubernetes.io/version: v1 service.app: hugegraph-computer-operator-minio spec: containers: - args: - minio server /data --console-address :9090 command: - /bin/bash - -c env: - name: MINIO_ACCESS_KEY value: minioadmin - name: MINIO_SECRET_KEY value: minioadmin image: quay.io/minio/minio:RELEASE.2023-10-16T04-13-43Z livenessProbe: failureThreshold: 3 httpGet: path: /minio/health/live port: 9000 scheme: HTTP initialDelaySeconds: 120 periodSeconds: 30 successThreshold: 1 timeoutSeconds: 10 name: hugegraph-computer-operator-minio ports: - containerPort: 9090 name: client readinessProbe: failureThreshold: 3 httpGet: path: /minio/health/ready port: 9000 scheme: HTTP initialDelaySeconds: 120 periodSeconds: 15 successThreshold: 1 timeoutSeconds: 10 volumeMounts: - mountPath: /data name: localvolume hostname: hugegraph-computer-operator-minio-0 subdomain: hugegraph-computer-operator-minio volumes: - hostPath: path: /mnt/disk1/data type: DirectoryOrCreate name: localvolume --- apiVersion: cert-manager.io/v1 kind: Certificate metadata: name: hugegraph-computer-operator-serving-cert namespace: hugegraph-computer-operator-system spec: dnsNames: - hugegraph-computer-operator-webhook-service.hugegraph-computer-operator-system.svc - hugegraph-computer-operator-webhook-service.hugegraph-computer-operator-system.svc.cluster.local issuerRef: kind: Issuer name: hugegraph-computer-operator-selfsigned-issuer secretName: webhook-server-cert --- apiVersion: cert-manager.io/v1 kind: Issuer metadata: name: hugegraph-computer-operator-selfsigned-issuer namespace: hugegraph-computer-operator-system spec: selfSigned: {} --- apiVersion: admissionregistration.k8s.io/v1 kind: MutatingWebhookConfiguration metadata: annotations: cert-manager.io/inject-ca-from: hugegraph-computer-operator-system/hugegraph-computer-operator-serving-cert name: hugegraph-computer-operator-mutating-webhook-configuration webhooks: - admissionReviewVersions: - v1 clientConfig: service: name: hugegraph-computer-operator-webhook-service namespace: hugegraph-computer-operator-system path: /mutate-operator-hugegraph-apache-org-v1-hugegraphcomputerjob failurePolicy: Fail name: mhugegraphcomputerjob.kb.io rules: - apiGroups: - operator.hugegraph.apache.org apiVersions: - v1 operations: - CREATE - UPDATE resources: - hugegraphcomputerjobs sideEffects: None --- apiVersion: admissionregistration.k8s.io/v1 kind: ValidatingWebhookConfiguration metadata: annotations: cert-manager.io/inject-ca-from: hugegraph-computer-operator-system/hugegraph-computer-operator-serving-cert name: hugegraph-computer-operator-validating-webhook-configuration webhooks: - admissionReviewVersions: - v1 clientConfig: service: name: hugegraph-computer-operator-webhook-service namespace: hugegraph-computer-operator-system path: /validate-operator-hugegraph-apache-org-v1-hugegraphcomputerjob failurePolicy: Fail name: vhugegraphcomputerjob.kb.io rules: - apiGroups: - operator.hugegraph.apache.org apiVersions: - v1 operations: - CREATE - UPDATE resources: - hugegraphcomputerjobs sideEffects: None