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