3581 lines
132 KiB
YAML
3581 lines
132 KiB
YAML
#NAME: mayastor
|
|
#LAST DEPLOYED: Thu Apr 18 00:17:30 2024
|
|
#NAMESPACE: mayastor
|
|
#STATUS: pending-install
|
|
#REVISION: 1
|
|
#HOOKS:
|
|
---
|
|
# Source: mayastor/charts/loki-stack/templates/tests/loki-test-pod.yaml
|
|
apiVersion: v1
|
|
kind: Pod
|
|
metadata:
|
|
annotations:
|
|
"helm.sh/hook": test-success
|
|
labels:
|
|
app: loki-stack
|
|
chart: loki-stack-2.9.11
|
|
release: mayastor
|
|
heritage: Helm
|
|
name: mayastor-loki-stack-test
|
|
namespace: "mayastor"
|
|
spec:
|
|
containers:
|
|
- name: test
|
|
image: "bats/bats:1.8.2"
|
|
imagePullPolicy: ""
|
|
args:
|
|
- /var/lib/loki/test.sh
|
|
env:
|
|
- name: LOKI_SERVICE
|
|
value: mayastor-loki
|
|
- name: LOKI_PORT
|
|
value: "3100"
|
|
volumeMounts:
|
|
- name: tests
|
|
mountPath: /var/lib/loki
|
|
restartPolicy: Never
|
|
volumes:
|
|
- name: tests
|
|
configMap:
|
|
name: mayastor-loki-stack-test
|
|
---
|
|
# Source: mayastor/charts/nats/templates/tests/test-request-reply.yaml
|
|
apiVersion: v1
|
|
kind: Pod
|
|
metadata:
|
|
name: "mayastor-nats-test-request-reply"
|
|
namespace: "mayastor"
|
|
labels:
|
|
chart: nats-0.19.14
|
|
app: mayastor-nats-test-request-reply
|
|
annotations:
|
|
"helm.sh/hook": test
|
|
spec:
|
|
containers:
|
|
- name: nats-box
|
|
image: natsio/nats-box:0.13.8
|
|
env:
|
|
- name: NATS_HOST
|
|
value: mayastor-nats
|
|
command:
|
|
- /bin/sh
|
|
- -ec
|
|
- |
|
|
nats reply -s nats://$NATS_HOST:4222 'name.>' --command "echo 1" &
|
|
- |
|
|
"&&"
|
|
- |
|
|
name=$(nats request -s nats://$NATS_HOST:4222 name.test '' 2>/dev/null)
|
|
- |
|
|
"&&"
|
|
- |
|
|
[ $name = test ]
|
|
|
|
restartPolicy: Never
|
|
#MANIFEST:
|
|
---
|
|
# Source: mayastor/templates/mayastor/priority-class/priority-class.yaml
|
|
apiVersion: scheduling.k8s.io/v1
|
|
description: Used for critical pods that must run in the cluster, which can be moved to another node if necessary.
|
|
kind: PriorityClass
|
|
metadata:
|
|
name: mayastor-cluster-critical
|
|
namespace: "mayastor"
|
|
preemptionPolicy: PreemptLowerPriority
|
|
value: 1000000000
|
|
---
|
|
# Source: mayastor/charts/etcd/templates/pdb.yaml
|
|
apiVersion: policy/v1
|
|
kind: PodDisruptionBudget
|
|
metadata:
|
|
name: mayastor-etcd
|
|
namespace: "mayastor"
|
|
labels:
|
|
app.kubernetes.io/name: etcd
|
|
helm.sh/chart: etcd-8.6.0
|
|
app.kubernetes.io/instance: mayastor
|
|
app.kubernetes.io/managed-by: Helm
|
|
spec:
|
|
minAvailable: 51%
|
|
selector:
|
|
matchLabels:
|
|
app.kubernetes.io/name: etcd
|
|
app.kubernetes.io/instance: mayastor
|
|
---
|
|
# Source: mayastor/charts/nats/templates/pdb.yaml
|
|
apiVersion: policy/v1
|
|
kind: PodDisruptionBudget
|
|
metadata:
|
|
name: mayastor-nats
|
|
namespace: mayastor
|
|
labels:
|
|
helm.sh/chart: nats-0.19.14
|
|
app.kubernetes.io/name: nats
|
|
app.kubernetes.io/instance: mayastor
|
|
app.kubernetes.io/version: "2.9.17"
|
|
app.kubernetes.io/managed-by: Helm
|
|
spec:
|
|
maxUnavailable: 1
|
|
selector:
|
|
matchLabels:
|
|
app.kubernetes.io/name: nats
|
|
app.kubernetes.io/instance: mayastor
|
|
---
|
|
# Source: mayastor/charts/localpv-provisioner/templates/rbac.yaml
|
|
apiVersion: v1
|
|
kind: ServiceAccount
|
|
metadata:
|
|
name: mayastor-localpv-provisioner
|
|
namespace: "mayastor"
|
|
labels:
|
|
chart: localpv-provisioner-4.0.0
|
|
heritage: Helm
|
|
openebs.io/version: "4.0.0"
|
|
app: localpv-provisioner
|
|
release: mayastor
|
|
component: "localpv-provisioner"
|
|
openebs.io/component-name: openebs-localpv-provisioner
|
|
---
|
|
# Source: mayastor/charts/loki-stack/charts/loki/templates/serviceaccount.yaml
|
|
apiVersion: v1
|
|
kind: ServiceAccount
|
|
metadata:
|
|
labels:
|
|
app: loki
|
|
chart: loki-2.16.0
|
|
release: mayastor
|
|
heritage: Helm
|
|
annotations:
|
|
{}
|
|
name: mayastor-loki
|
|
namespace: mayastor
|
|
automountServiceAccountToken: true
|
|
---
|
|
# Source: mayastor/charts/loki-stack/charts/promtail/templates/serviceaccount.yaml
|
|
apiVersion: v1
|
|
kind: ServiceAccount
|
|
metadata:
|
|
name: mayastor-promtail
|
|
namespace: mayastor
|
|
labels:
|
|
helm.sh/chart: promtail-6.13.1
|
|
app.kubernetes.io/name: promtail
|
|
app.kubernetes.io/instance: mayastor
|
|
app.kubernetes.io/version: "2.8.3"
|
|
app.kubernetes.io/managed-by: Helm
|
|
---
|
|
# Source: mayastor/charts/nats/templates/rbac.yaml
|
|
apiVersion: v1
|
|
kind: ServiceAccount
|
|
metadata:
|
|
name: mayastor-nats
|
|
namespace: mayastor
|
|
labels:
|
|
helm.sh/chart: nats-0.19.14
|
|
app.kubernetes.io/name: nats
|
|
app.kubernetes.io/instance: mayastor
|
|
app.kubernetes.io/version: "2.9.17"
|
|
app.kubernetes.io/managed-by: Helm
|
|
---
|
|
# Source: mayastor/templates/mayastor/rbac/rbac.yaml
|
|
apiVersion: v1
|
|
kind: ServiceAccount
|
|
metadata:
|
|
name: mayastor-service-account
|
|
namespace: mayastor
|
|
labels:
|
|
openebs.io/release: mayastor
|
|
openebs.io/version: 2.6.0
|
|
---
|
|
# Source: mayastor/charts/etcd/templates/token-secrets.yaml
|
|
apiVersion: v1
|
|
kind: Secret
|
|
metadata:
|
|
name: mayastor-etcd-jwt-token
|
|
namespace: "mayastor"
|
|
labels:
|
|
app.kubernetes.io/name: etcd
|
|
helm.sh/chart: etcd-8.6.0
|
|
app.kubernetes.io/instance: mayastor
|
|
app.kubernetes.io/managed-by: Helm
|
|
type: Opaque
|
|
data:
|
|
jwt-token.pem: "LS0tLS1CRUdJTiBSU0EgUFJJVkFURSBLRVktLS0tLQpNSUlKS1FJQkFBS0NBZ0VBdWpGUHgrc0NoT0VuZll4QVRlMEkva0V4RG4vaDdoai83TkhzdDE4NWJzSUd2RERuCnRORDdFSEdkUlJlT0VINHZVdWVwWENFMCtPUEFsMXd3L1F2cVNqbEp4VktreDVPNDRHdHAyYmJ3N0tPTmZrdUgKeERyUGYzWHdwVXJhUDNXdUMyVHNZUmI1QVNQZnd2cUJVaDF0ZDBrT2txMHN5WFdJSFNLQUhKc3NWNEZFekZjNQo2YmtyekxUVFg0WjNvZXU3Sngzek5SMWdIR2Vzd3E4WTJoY1I1b0doZ0svdzAzUzhXc3FDcVNLbUNOUDNtL01hCkFpVEh4YmZYR2lLdUtBVktwQWswUkluTVNQMVVFZWhUdmIvbTNzTmZjVjlWYUVSODRBVXplWXdVWnhncVJQaHEKWm10cG1PYy9jYXNPMGxyOHVuZUVXbFM5M2FJQnFwRTMxRFFuWEtOTEZCTTFKTjR6QWc4RUpIOHV2cU1xd2hGSgprUUZrd1cvWjdlMHRSOUVuYkxBa2ViSU5uNHJsMTJRKzc4UTEyL1RsWVdJcDduS3NWRTZHeWd1SDdPSnl4dkc5CnhQTGVFb2V2Y25QRXBDNENyUmFIZkRRWDdseGpqTER5elZaY0t4U0JoN0ZjMmtlUHNXK3lhRXQwcytDZ2NTQWcKRkZ3bHZjNFFEZzlEUWt2V25oMExIMzFKRXRXN3pDWFNrYmtiMlJxbWJjSEtNVjJZaGFmVExHRXJDZkRVeU5lTQoxMnM1NWdWK212SFBwa1k3ZW43b0dKYkhhVGdXMUd1OFFiNmhPckpTNXlndithbDhnakFmaVM4Rm5lZjBMV0N6CmtNWU9XSW5sQXU5UEVzYTZ6WHE1QiswTGcvVjVwcGRzZFZqbWM5N1NYdVN4NkR0MUFaZG5KV1B6QUFrQ0F3RUEKQVFLQ0FnQnk1Q3JPdWYxNzhWTms3VDVnMTN0TktQMFViV1VFZnZpdE1YeFlTckl0M2h3NTFCT21SNjRrbjNiawpRM3l1UUs4REFXQklNVlYybjFNZ0V3dEhtaXFnVW1sckVXd01tdUxoMkdZZ3FmcFFpenVzU3Y4ajN3WmJLSE91CkMxcFEvbFMvUXk5NVdhdWRRSDI2MnNraDJuYkp2Skw1ZjFLN25ZSzRONm5GL1JxSGhJVG5jb3VSNVdsWmo5cysKZnNNamIwcTFBSTRxb0UzR09WTXBidEp2QVAxU3Qzcm81YWc5VXpORzh0OWRicnYxaHBhcjdINklCQm9ocnlkVQpRVUlsLzkzbkNxYnVBL25Dc0U5SUhZeE84ak9NRWhLNjZwRFJIakhRS21WeEF6Y3p4bjJPd1pzbVIvR0pJR2pOCnd6Z0tKWXI5cFBKT3F5dmRyekpJQmdQbE5hbHpPaE4xNFNnWW5MWTdCWkFpWUhmQjg1ck1NNFJETEpZUUM5b1kKaTBYcUQ2WmJMWE84WFI2cExqcVRCRHV1ZnlqN1VCMTlNbkw3MUZ2bndNMmNxazVBVXR0bjlRYmFmeEx1UjFCeQp2MW5lRFBGN3h2OEIyL2RteUs0eG9kd296aGk4SXNubERyd2VDbVQ3YlYxeEU0SmdQVFB3Wm9BeUJPY0dMbXhSCmxkdGhYRFdqOG00VThKWkRsNW1RSTBTQ24wQktCZktHNW4wTEtRRkRpY0psa2hyYnk3OXVWUEJLM2EvYzJDN3cKbmpLaUJEQ2gzWEdTUHduLzdwUDRBeWFNbWJvRkxSMHUxNnZ5NTlDeVFmWW1oS3JkRGwwTGF0RitrRWZoL2l5aAo3ek1iOUNZcEJoMnBoMVBseEFJd1E5ZU9OaHBkdjkvOXFkN1hVSTNnVS9ZU0RMblBZUUtDQVFFQTdTUGovSHQyCnlmNnZzSktsY09OUEZCbWlMRzEybmhUQ0xGR01Lb2xLZ1o3dVE4MkVoVVFmVVY2MDc0ZzA0dnVxbWZjMFd4bHoKSTVOMDFrNlhZelg3YUxpRmpSNmI3YkZOci95YnRDMjZDT2w1WC93aUpMdko2eEwwa2ZJRjRsTGQ1Tm14WUxuSQoxMmNFc0pzTTEzTks2ZFR0bXFGa0drRkdvTzhEeWN0SkxVL1lPZDB5aVM3azlpRE8wWjVDS3pNNTVrblpoWGUzCk9RVTQ1QnpYMnluMUpSY2FOUTltTTh5WHlpTWdtelIzSHRjbkZqY3pWM2VsNzlEc3BrMEJxajZEZm03N2pQZ0oKelc5Q3hTS0FvVFltOCtXWkV0a0liL2U0RTk2RkJia0xFVERxMUM1TDVSS2ZqZnE4cjdwSXJWQWdOc0JxKzRRTwpnNHJXSDFIeDNJejVWd0tDQVFFQXlRQWtkbG9iQ0RXVzZsbUs1d2hyZkhOc2VnMElUWlF2RHdDaGlWS1NraUJBCnQweFBxeDlBQjNnSS9YVTdQZHRGdE9yenBramJyOGEwUGN0VTVJUWRIMmhaRjFrZnhBT0MvaGdQbnlZWlFCZ1YKVXdOcnR5Ni90cDBNNTBKWVJ4czNDR3Q0eGdVVkpQeFRTOUtMR2lTaVBtMmpEbnJ3Q1FPS2I4OWFYK3huK3ExMgpsSVNoV2lDaWtYczg5TjFydlJibXhpODVFbXBld2VVY0xjV0cvR2VZaHVXVFhIV2svSU1RNXlveWZuNEROQWt1ClRNUFdnYUIrZ1d5YkFJdEI1cW50TVl1NTJCL1FpZFhod3llNDdPaTVmWW9KRm10UDI3RzdVR2dIaVNGSE9GWCsKaHhuYWlZaDd1ZGRwRlBqTzhlMDBwaHYrNDNxRUw3UDU3YnlKd1pBVm53S0NBUUVBbGtpaGluZkFIMkV0Zkd4agpObmlIdkFoR3Mzc25xaVVqclN4ODlOUVBDTGhzN1VGSWs2QkpiS3JsWmN2ZklGNDNqdDJRSzQra1hVNXN4QWdJCmZ0Sk9JdDZWbklwaWJTOXBPWGVRUVk2ZEVGck9GZHRXMUFyQ2V4eUhMQnJDU2QwVVRKejlnWHdiNFE2amRUeTkKMWFoMk9Gdzl2RG85a3puOUJhNlRxd1lPdVEyWnpZbjJKZVEzTEJnOG1iRis0NXZTUExSZWl1d0VqTGxYaFpFVgo1d25mRndOZUUzUlA0OUhyL0NsbzE1TlhUbzh4Y1MzSWRzMFh0elNqVlAwR2FocTJBS0ZhLzhxTmc4algrdERUCnpkYmd0cjZ4MUxVQVdOMFhwbGZsMjJ1YXJPbGdXTm1DTllrbzNyU2hjWWhQMks0bnpDc0RZYVFlQXBVdy82WlIKN2VEVmZ3S0NBUUJaeFR5RHQxNlhYZ2ZYQnNMb3lIUHBFMHdCZnN5VWlYZ3pCUjhnUzhhMmlMMGVvSEI4aHVwNwo2M3BvYVBGYWdSSXk2VFNFc2NtY1NleTZKSlAzczZHbUkxNlc5UEVoQkVoKzM1UXFpa09Bd3NEVFlKVzlMSjNuCkcyRmw3OVdwZkZncDVJWCtPc3JreCtVVDJpYlNPRVpXQjNWcHhESnNkQzVpSFlQSmo3WW8yVXc2ckxtN25STysKVWdJNWdxTFp3dDZ5Nk9oZWR5OTIvYktHSnRCUTdwdktzOElLNjJnU2R4OFhmMXNwNzNIU3piN2wvaGxScjdLUQpiMGNUQ1I4WHZCRDVyZVFFeU1ERXJzZXo5NHU2RTM2MHVPK3lHWitEQ1hBVlMwRUNWK0NOSXFzWS84MEEyL29XCldFVFFYd2RlT1lqb0gxekprREIxZGJaTUhZYVE4cDhWQW9JQkFRQ29wcWhUK2pnREhhbndRd1NCb0NFWTQ4ZkcKZUxKSGtuU3J3VkxkR0NuMWRyLytkNVZTbGlHQ1BXNEs5ZEp3UFhZeWc4V29iVU1Qc1ZkYTl4SVpPOU1oc21uMgp2SHFVNGc0dm9LWCtqcTQ1UW9DbXBFRGc4V0R4V2dxOTIzYmtvS0UvcHRXZ011Smh4OUtLT3RBU0tISW9Nd3JpCm44Q04rY2lDM0lJYUFWbVVwbWdoOGVpVW5sanhLOFU2L2xPWmkyNmFqZUYzSWNwVUJ3TFZZSUFOd01qMWppSzUKSEZuLy9ieXF6WFJubDNzbGl1NitjUXh2Tis1TGxDK0lmUW5NUzBzcllkWXk4WXZ5S0o4Nyt0UzU2WHQ0K0RxaApLNnBSZkxtOVV1QktWeXJIQ3NoL2dpWHJhRDhRSVY3bnUzQktMK2Y0TTdPak9laENWZUlDVWR6dEhkQ3IKLS0tLS1FTkQgUlNBIFBSSVZBVEUgS0VZLS0tLS0K"
|
|
---
|
|
# Source: mayastor/charts/loki-stack/charts/loki/templates/secret.yaml
|
|
apiVersion: v1
|
|
kind: Secret
|
|
metadata:
|
|
name: mayastor-loki
|
|
namespace: mayastor
|
|
labels:
|
|
app: loki
|
|
chart: loki-2.16.0
|
|
release: mayastor
|
|
heritage: Helm
|
|
data:
|
|
loki.yaml: YXV0aF9lbmFibGVkOiBmYWxzZQpjaHVua19zdG9yZV9jb25maWc6CiAgbWF4X2xvb2tfYmFja19wZXJpb2Q6IDBzCmNvbXBhY3RvcjoKICBjb21wYWN0aW9uX2ludGVydmFsOiAyMG0KICByZXRlbnRpb25fZGVsZXRlX2RlbGF5OiAxaAogIHJldGVudGlvbl9kZWxldGVfd29ya2VyX2NvdW50OiA1MAogIHJldGVudGlvbl9lbmFibGVkOiB0cnVlCiAgc2hhcmVkX3N0b3JlOiBmaWxlc3lzdGVtCiAgd29ya2luZ19kaXJlY3Rvcnk6IC9kYXRhL2xva2kvYm9sdGRiLXNoaXBwZXItY29tcGFjdG9yCmluZ2VzdGVyOgogIGNodW5rX2Jsb2NrX3NpemU6IDI2MjE0NAogIGNodW5rX2lkbGVfcGVyaW9kOiAzbQogIGNodW5rX3JldGFpbl9wZXJpb2Q6IDFtCiAgbGlmZWN5Y2xlcjoKICAgIHJpbmc6CiAgICAgIHJlcGxpY2F0aW9uX2ZhY3RvcjogMQogIG1heF90cmFuc2Zlcl9yZXRyaWVzOiAwCiAgd2FsOgogICAgZGlyOiAvZGF0YS9sb2tpL3dhbApsaW1pdHNfY29uZmlnOgogIGVuZm9yY2VfbWV0cmljX25hbWU6IGZhbHNlCiAgbWF4X2VudHJpZXNfbGltaXRfcGVyX3F1ZXJ5OiA1MDAwCiAgcmVqZWN0X29sZF9zYW1wbGVzOiB0cnVlCiAgcmVqZWN0X29sZF9zYW1wbGVzX21heF9hZ2U6IDE2OGgKICByZXRlbnRpb25fcGVyaW9kOiAxNjhoCm1lbWJlcmxpc3Q6CiAgam9pbl9tZW1iZXJzOgogIC0gJ21heWFzdG9yLWxva2ktbWVtYmVybGlzdCcKc2NoZW1hX2NvbmZpZzoKICBjb25maWdzOgogIC0gZnJvbTogIjIwMjAtMTAtMjQiCiAgICBpbmRleDoKICAgICAgcGVyaW9kOiAyNGgKICAgICAgcHJlZml4OiBpbmRleF8KICAgIG9iamVjdF9zdG9yZTogZmlsZXN5c3RlbQogICAgc2NoZW1hOiB2MTEKICAgIHN0b3JlOiBib2x0ZGItc2hpcHBlcgpzZXJ2ZXI6CiAgZ3JwY19saXN0ZW5fcG9ydDogOTA5NQogIGh0dHBfbGlzdGVuX3BvcnQ6IDMxMDAKc3RvcmFnZV9jb25maWc6CiAgYm9sdGRiX3NoaXBwZXI6CiAgICBhY3RpdmVfaW5kZXhfZGlyZWN0b3J5OiAvZGF0YS9sb2tpL2JvbHRkYi1zaGlwcGVyLWFjdGl2ZQogICAgY2FjaGVfbG9jYXRpb246IC9kYXRhL2xva2kvYm9sdGRiLXNoaXBwZXItY2FjaGUKICAgIGNhY2hlX3R0bDogMjRoCiAgICBzaGFyZWRfc3RvcmU6IGZpbGVzeXN0ZW0KICBmaWxlc3lzdGVtOgogICAgZGlyZWN0b3J5OiAvZGF0YS9sb2tpL2NodW5rcwp0YWJsZV9tYW5hZ2VyOgogIHJldGVudGlvbl9kZWxldGVzX2VuYWJsZWQ6IGZhbHNlCiAgcmV0ZW50aW9uX3BlcmlvZDogMHM=
|
|
---
|
|
# Source: mayastor/charts/loki-stack/charts/promtail/templates/secret.yaml
|
|
apiVersion: v1
|
|
kind: Secret
|
|
metadata:
|
|
name: mayastor-promtail
|
|
namespace: mayastor
|
|
labels:
|
|
helm.sh/chart: promtail-6.13.1
|
|
app.kubernetes.io/name: promtail
|
|
app.kubernetes.io/instance: mayastor
|
|
app.kubernetes.io/version: "2.8.3"
|
|
app.kubernetes.io/managed-by: Helm
|
|
stringData:
|
|
promtail.yaml: |
|
|
server:
|
|
log_level: info
|
|
log_format: logfmt
|
|
http_listen_port: 3101
|
|
health_check_target: false
|
|
|
|
clients:
|
|
- url: http://mayastor-loki:3100/loki/api/v1/push
|
|
|
|
positions:
|
|
filename: /run/promtail/positions.yaml
|
|
|
|
scrape_configs:
|
|
- job_name: mayastor-pods-name
|
|
pipeline_stages:
|
|
- docker: {}
|
|
- replace:
|
|
expression: '(\n)'
|
|
replace: ''
|
|
- multiline:
|
|
firstline: '^ \x1b\[2m(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2}).(\d{6})Z'
|
|
max_wait_time: 3s
|
|
- multiline:
|
|
firstline: '^ (\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2}).(\d{6})Z'
|
|
max_wait_time: 3s
|
|
kubernetes_sd_configs:
|
|
- role: pod
|
|
relabel_configs:
|
|
- source_labels:
|
|
- __meta_kubernetes_pod_node_name
|
|
target_label: hostname
|
|
action: replace
|
|
- action: labelmap
|
|
regex: __meta_kubernetes_pod_label_(.+)
|
|
- action: keep
|
|
source_labels:
|
|
- __meta_kubernetes_pod_label_openebs_io_logging
|
|
regex: true
|
|
target_label: mayastor_component
|
|
- action: replace
|
|
replacement: $1
|
|
separator: /
|
|
source_labels:
|
|
- __meta_kubernetes_namespace
|
|
target_label: job
|
|
- action: replace
|
|
source_labels:
|
|
- __meta_kubernetes_pod_name
|
|
target_label: pod
|
|
- action: replace
|
|
source_labels:
|
|
- __meta_kubernetes_pod_container_name
|
|
target_label: container
|
|
- replacement: /var/log/pods/*$1/*.log
|
|
separator: /
|
|
source_labels:
|
|
- __meta_kubernetes_pod_uid
|
|
- __meta_kubernetes_pod_container_name
|
|
target_label: __path__
|
|
|
|
|
|
|
|
limits_config:
|
|
|
|
|
|
tracing:
|
|
enabled: false
|
|
---
|
|
# Source: mayastor/charts/loki-stack/templates/datasources.yaml
|
|
apiVersion: v1
|
|
kind: ConfigMap
|
|
metadata:
|
|
name: mayastor-loki-stack
|
|
namespace: mayastor
|
|
labels:
|
|
app: loki-stack
|
|
chart: loki-stack-2.9.11
|
|
release: mayastor
|
|
heritage: Helm
|
|
grafana_datasource: "1"
|
|
data:
|
|
loki-stack-datasource.yaml: |-
|
|
apiVersion: 1
|
|
datasources:
|
|
- name: Loki
|
|
type: loki
|
|
access: proxy
|
|
url: "http://mayastor-loki:3100"
|
|
version: 1
|
|
isDefault: true
|
|
jsonData:
|
|
{}
|
|
---
|
|
# Source: mayastor/charts/loki-stack/templates/tests/loki-test-configmap.yaml
|
|
apiVersion: v1
|
|
kind: ConfigMap
|
|
metadata:
|
|
name: mayastor-loki-stack-test
|
|
namespace: "mayastor"
|
|
labels:
|
|
app: loki-stack
|
|
chart: loki-stack-2.9.11
|
|
release: mayastor
|
|
heritage: Helm
|
|
data:
|
|
test.sh: |
|
|
#!/usr/bin/env bash
|
|
|
|
LOKI_URI="http://${LOKI_SERVICE}:${LOKI_PORT}"
|
|
|
|
function setup() {
|
|
apk add -u curl jq
|
|
until (curl -s ${LOKI_URI}/loki/api/v1/label/app/values | jq -e '.data[] | select(. == "loki")'); do
|
|
sleep 1
|
|
done
|
|
}
|
|
|
|
@test "Has labels" {
|
|
curl -s ${LOKI_URI}/loki/api/v1/labels | \
|
|
jq -e '.data[] | select(. == "app")'
|
|
}
|
|
|
|
@test "Query log entry" {
|
|
curl -sG ${LOKI_URI}/api/prom/query?limit=10 --data-urlencode 'query={app="loki"}' | \
|
|
jq -e '.streams[].entries | length >=1'
|
|
}
|
|
|
|
@test "Push log entry" {
|
|
local timestamp=$(date +%s000000000)
|
|
local data=$(jq -n --arg timestamp "${timestamp}" '{"streams": [{"stream": {"app": "loki-test"}, "values": [[$timestamp, "foobar"]]}]}')
|
|
|
|
curl -s -X POST -H "Content-Type: application/json" ${LOKI_URI}/loki/api/v1/push --data-raw "${data}"
|
|
|
|
curl -sG ${LOKI_URI}/loki/api/v1/query_range?limit=1 --data-urlencode 'query={app="loki-test"}' | \
|
|
jq -e '.data.result[].values[][1] == "foobar"'
|
|
}
|
|
---
|
|
# Source: mayastor/charts/nats/templates/configmap.yaml
|
|
apiVersion: v1
|
|
kind: ConfigMap
|
|
metadata:
|
|
name: mayastor-nats-config
|
|
namespace: mayastor
|
|
labels:
|
|
helm.sh/chart: nats-0.19.14
|
|
app.kubernetes.io/name: nats
|
|
app.kubernetes.io/instance: mayastor
|
|
app.kubernetes.io/version: "2.9.17"
|
|
app.kubernetes.io/managed-by: Helm
|
|
data:
|
|
nats.conf: |
|
|
# NATS Clients Port
|
|
port: 4222
|
|
|
|
# PID file shared with configuration reloader.
|
|
pid_file: "/var/run/nats/nats.pid"
|
|
|
|
###############
|
|
# #
|
|
# Monitoring #
|
|
# #
|
|
###############
|
|
http: 8222
|
|
server_name:$POD_NAME
|
|
###################################
|
|
# #
|
|
# NATS JetStream #
|
|
# #
|
|
###################################
|
|
jetstream {
|
|
max_mem: 5Mi
|
|
}
|
|
###################################
|
|
# #
|
|
# NATS Full Mesh Clustering Setup #
|
|
# #
|
|
###################################
|
|
cluster {
|
|
port: 6222
|
|
name: nats
|
|
|
|
routes = [
|
|
nats://mayastor-nats-0.mayastor-nats.mayastor:6222,nats://mayastor-nats-1.mayastor-nats.mayastor:6222,nats://mayastor-nats-2.mayastor-nats.mayastor:6222,
|
|
|
|
]
|
|
cluster_advertise: $CLUSTER_ADVERTISE
|
|
|
|
connect_retries: 120
|
|
}
|
|
lame_duck_grace_period: 10s
|
|
lame_duck_duration: 30s
|
|
---
|
|
# Source: mayastor/templates/etcd/storage/localpv-storageclass.yaml
|
|
apiVersion: storage.k8s.io/v1
|
|
kind: StorageClass
|
|
metadata:
|
|
annotations:
|
|
cas.openebs.io/config: |
|
|
- name: StorageType
|
|
value: "hostpath"
|
|
- name: BasePath
|
|
value: "/var/local/mayastor/localpv-hostpath/etcd"
|
|
openebs.io/cas-type: local
|
|
name: mayastor-etcd-localpv
|
|
namespace: "mayastor"
|
|
provisioner: openebs.io/local
|
|
reclaimPolicy: Delete
|
|
volumeBindingMode: WaitForFirstConsumer
|
|
---
|
|
# Source: mayastor/templates/loki-stack/storage/localpv-storageclass.yaml
|
|
apiVersion: storage.k8s.io/v1
|
|
kind: StorageClass
|
|
metadata:
|
|
annotations:
|
|
cas.openebs.io/config: |
|
|
- name: StorageType
|
|
value: "hostpath"
|
|
- name: BasePath
|
|
value: "/var/local/mayastor/localpv-hostpath/loki"
|
|
openebs.io/cas-type: local
|
|
name: mayastor-loki-localpv
|
|
namespace: "mayastor"
|
|
provisioner: openebs.io/local
|
|
reclaimPolicy: Delete
|
|
volumeBindingMode: WaitForFirstConsumer
|
|
---
|
|
# Source: mayastor/templates/storageclass.yaml
|
|
kind: StorageClass
|
|
apiVersion: storage.k8s.io/v1
|
|
metadata:
|
|
name: mayastor-single-replica
|
|
namespace: "mayastor"
|
|
allowVolumeExpansion: true
|
|
parameters:
|
|
"protocol": "nvmf"
|
|
"repl": "1"
|
|
provisioner: io.openebs.csi-mayastor
|
|
---
|
|
# Source: mayastor/charts/crds/templates/csi-volume-snapshot-class.yaml
|
|
apiVersion: apiextensions.k8s.io/v1
|
|
kind: CustomResourceDefinition
|
|
metadata:
|
|
annotations:
|
|
api-approved.kubernetes.io: https://github.com/kubernetes-csi/external-snapshotter/pull/814
|
|
controller-gen.kubebuilder.io/version: v0.11.3
|
|
helm.sh/resource-policy: keep
|
|
|
|
creationTimestamp: null
|
|
name: volumesnapshotclasses.snapshot.storage.k8s.io
|
|
namespace: "mayastor"
|
|
spec:
|
|
group: snapshot.storage.k8s.io
|
|
names:
|
|
kind: VolumeSnapshotClass
|
|
listKind: VolumeSnapshotClassList
|
|
plural: volumesnapshotclasses
|
|
shortNames:
|
|
- vsclass
|
|
- vsclasses
|
|
singular: volumesnapshotclass
|
|
scope: Cluster
|
|
versions:
|
|
- additionalPrinterColumns:
|
|
- jsonPath: .driver
|
|
name: Driver
|
|
type: string
|
|
- description: Determines whether a VolumeSnapshotContent created through the
|
|
VolumeSnapshotClass should be deleted when its bound VolumeSnapshot is deleted.
|
|
jsonPath: .deletionPolicy
|
|
name: DeletionPolicy
|
|
type: string
|
|
- jsonPath: .metadata.creationTimestamp
|
|
name: Age
|
|
type: date
|
|
name: v1
|
|
schema:
|
|
openAPIV3Schema:
|
|
description: VolumeSnapshotClass specifies parameters that a underlying storage
|
|
system uses when creating a volume snapshot. A specific VolumeSnapshotClass
|
|
is used by specifying its name in a VolumeSnapshot object. VolumeSnapshotClasses
|
|
are non-namespaced
|
|
properties:
|
|
apiVersion:
|
|
description: 'APIVersion defines the versioned schema of this representation
|
|
of an object. Servers should convert recognized schemas to the latest
|
|
internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
|
|
type: string
|
|
deletionPolicy:
|
|
description: deletionPolicy determines whether a VolumeSnapshotContent
|
|
created through the VolumeSnapshotClass should be deleted when its bound
|
|
VolumeSnapshot is deleted. Supported values are "Retain" and "Delete".
|
|
"Retain" means that the VolumeSnapshotContent and its physical snapshot
|
|
on underlying storage system are kept. "Delete" means that the VolumeSnapshotContent
|
|
and its physical snapshot on underlying storage system are deleted.
|
|
Required.
|
|
enum:
|
|
- Delete
|
|
- Retain
|
|
type: string
|
|
driver:
|
|
description: driver is the name of the storage driver that handles this
|
|
VolumeSnapshotClass. Required.
|
|
type: string
|
|
kind:
|
|
description: 'Kind is a string value representing the REST resource this
|
|
object represents. Servers may infer this from the endpoint the client
|
|
submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
|
|
type: string
|
|
parameters:
|
|
additionalProperties:
|
|
type: string
|
|
description: parameters is a key-value map with storage driver specific
|
|
parameters for creating snapshots. These values are opaque to Kubernetes.
|
|
type: object
|
|
required:
|
|
- deletionPolicy
|
|
- driver
|
|
type: object
|
|
served: true
|
|
storage: true
|
|
subresources: {}
|
|
- additionalPrinterColumns:
|
|
- jsonPath: .driver
|
|
name: Driver
|
|
type: string
|
|
- description: Determines whether a VolumeSnapshotContent created through the
|
|
VolumeSnapshotClass should be deleted when its bound VolumeSnapshot is deleted.
|
|
jsonPath: .deletionPolicy
|
|
name: DeletionPolicy
|
|
type: string
|
|
- jsonPath: .metadata.creationTimestamp
|
|
name: Age
|
|
type: date
|
|
deprecated: true
|
|
deprecationWarning: snapshot.storage.k8s.io/v1beta1 VolumeSnapshotClass is deprecated;
|
|
use snapshot.storage.k8s.io/v1 VolumeSnapshotClass
|
|
name: v1beta1
|
|
schema:
|
|
openAPIV3Schema:
|
|
description: VolumeSnapshotClass specifies parameters that a underlying storage
|
|
system uses when creating a volume snapshot. A specific VolumeSnapshotClass
|
|
is used by specifying its name in a VolumeSnapshot object. VolumeSnapshotClasses
|
|
are non-namespaced
|
|
properties:
|
|
apiVersion:
|
|
description: 'APIVersion defines the versioned schema of this representation
|
|
of an object. Servers should convert recognized schemas to the latest
|
|
internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
|
|
type: string
|
|
deletionPolicy:
|
|
description: deletionPolicy determines whether a VolumeSnapshotContent
|
|
created through the VolumeSnapshotClass should be deleted when its bound
|
|
VolumeSnapshot is deleted. Supported values are "Retain" and "Delete".
|
|
"Retain" means that the VolumeSnapshotContent and its physical snapshot
|
|
on underlying storage system are kept. "Delete" means that the VolumeSnapshotContent
|
|
and its physical snapshot on underlying storage system are deleted.
|
|
Required.
|
|
enum:
|
|
- Delete
|
|
- Retain
|
|
type: string
|
|
driver:
|
|
description: driver is the name of the storage driver that handles this
|
|
VolumeSnapshotClass. Required.
|
|
type: string
|
|
kind:
|
|
description: 'Kind is a string value representing the REST resource this
|
|
object represents. Servers may infer this from the endpoint the client
|
|
submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
|
|
type: string
|
|
parameters:
|
|
additionalProperties:
|
|
type: string
|
|
description: parameters is a key-value map with storage driver specific
|
|
parameters for creating snapshots. These values are opaque to Kubernetes.
|
|
type: object
|
|
required:
|
|
- deletionPolicy
|
|
- driver
|
|
type: object
|
|
served: false
|
|
storage: false
|
|
subresources: {}
|
|
status:
|
|
acceptedNames:
|
|
kind: ""
|
|
plural: ""
|
|
conditions: []
|
|
storedVersions: []
|
|
---
|
|
# Source: mayastor/charts/crds/templates/csi-volume-snapshot-content.yaml
|
|
apiVersion: apiextensions.k8s.io/v1
|
|
kind: CustomResourceDefinition
|
|
metadata:
|
|
annotations:
|
|
api-approved.kubernetes.io: https://github.com/kubernetes-csi/external-snapshotter/pull/814
|
|
controller-gen.kubebuilder.io/version: v0.11.3
|
|
helm.sh/resource-policy: keep
|
|
|
|
creationTimestamp: null
|
|
name: volumesnapshotcontents.snapshot.storage.k8s.io
|
|
namespace: "mayastor"
|
|
spec:
|
|
group: snapshot.storage.k8s.io
|
|
names:
|
|
kind: VolumeSnapshotContent
|
|
listKind: VolumeSnapshotContentList
|
|
plural: volumesnapshotcontents
|
|
shortNames:
|
|
- vsc
|
|
- vscs
|
|
singular: volumesnapshotcontent
|
|
scope: Cluster
|
|
versions:
|
|
- additionalPrinterColumns:
|
|
- description: Indicates if the snapshot is ready to be used to restore a volume.
|
|
jsonPath: .status.readyToUse
|
|
name: ReadyToUse
|
|
type: boolean
|
|
- description: Represents the complete size of the snapshot in bytes
|
|
jsonPath: .status.restoreSize
|
|
name: RestoreSize
|
|
type: integer
|
|
- description: Determines whether this VolumeSnapshotContent and its physical
|
|
snapshot on the underlying storage system should be deleted when its bound
|
|
VolumeSnapshot is deleted.
|
|
jsonPath: .spec.deletionPolicy
|
|
name: DeletionPolicy
|
|
type: string
|
|
- description: Name of the CSI driver used to create the physical snapshot on
|
|
the underlying storage system.
|
|
jsonPath: .spec.driver
|
|
name: Driver
|
|
type: string
|
|
- description: Name of the VolumeSnapshotClass to which this snapshot belongs.
|
|
jsonPath: .spec.volumeSnapshotClassName
|
|
name: VolumeSnapshotClass
|
|
type: string
|
|
- description: Name of the VolumeSnapshot object to which this VolumeSnapshotContent
|
|
object is bound.
|
|
jsonPath: .spec.volumeSnapshotRef.name
|
|
name: VolumeSnapshot
|
|
type: string
|
|
- description: Namespace of the VolumeSnapshot object to which this VolumeSnapshotContent
|
|
object is bound.
|
|
jsonPath: .spec.volumeSnapshotRef.namespace
|
|
name: VolumeSnapshotNamespace
|
|
type: string
|
|
- jsonPath: .metadata.creationTimestamp
|
|
name: Age
|
|
type: date
|
|
name: v1
|
|
schema:
|
|
openAPIV3Schema:
|
|
description: VolumeSnapshotContent represents the actual "on-disk" snapshot
|
|
object in the underlying storage system
|
|
properties:
|
|
apiVersion:
|
|
description: 'APIVersion defines the versioned schema of this representation
|
|
of an object. Servers should convert recognized schemas to the latest
|
|
internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
|
|
type: string
|
|
kind:
|
|
description: 'Kind is a string value representing the REST resource this
|
|
object represents. Servers may infer this from the endpoint the client
|
|
submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
|
|
type: string
|
|
spec:
|
|
description: spec defines properties of a VolumeSnapshotContent created
|
|
by the underlying storage system. Required.
|
|
properties:
|
|
deletionPolicy:
|
|
description: deletionPolicy determines whether this VolumeSnapshotContent
|
|
and its physical snapshot on the underlying storage system should
|
|
be deleted when its bound VolumeSnapshot is deleted. Supported values
|
|
are "Retain" and "Delete". "Retain" means that the VolumeSnapshotContent
|
|
and its physical snapshot on underlying storage system are kept.
|
|
"Delete" means that the VolumeSnapshotContent and its physical snapshot
|
|
on underlying storage system are deleted. For dynamically provisioned
|
|
snapshots, this field will automatically be filled in by the CSI
|
|
snapshotter sidecar with the "DeletionPolicy" field defined in the
|
|
corresponding VolumeSnapshotClass. For pre-existing snapshots, users
|
|
MUST specify this field when creating the VolumeSnapshotContent
|
|
object. Required.
|
|
enum:
|
|
- Delete
|
|
- Retain
|
|
type: string
|
|
driver:
|
|
description: driver is the name of the CSI driver used to create the
|
|
physical snapshot on the underlying storage system. This MUST be
|
|
the same as the name returned by the CSI GetPluginName() call for
|
|
that driver. Required.
|
|
type: string
|
|
source:
|
|
description: source specifies whether the snapshot is (or should be)
|
|
dynamically provisioned or already exists, and just requires a Kubernetes
|
|
object representation. This field is immutable after creation. Required.
|
|
oneOf:
|
|
- required:
|
|
- snapshotHandle
|
|
- required:
|
|
- volumeHandle
|
|
properties:
|
|
snapshotHandle:
|
|
description: snapshotHandle specifies the CSI "snapshot_id" of
|
|
a pre-existing snapshot on the underlying storage system for
|
|
which a Kubernetes object representation was (or should be)
|
|
created. This field is immutable.
|
|
type: string
|
|
volumeHandle:
|
|
description: volumeHandle specifies the CSI "volume_id" of the
|
|
volume from which a snapshot should be dynamically taken from.
|
|
This field is immutable.
|
|
type: string
|
|
type: object
|
|
sourceVolumeMode:
|
|
description: SourceVolumeMode is the mode of the volume whose snapshot
|
|
is taken. Can be either “Filesystem” or “Block”. If not specified,
|
|
it indicates the source volume's mode is unknown. This field is
|
|
immutable. This field is an alpha field.
|
|
type: string
|
|
volumeSnapshotClassName:
|
|
description: name of the VolumeSnapshotClass from which this snapshot
|
|
was (or will be) created. Note that after provisioning, the VolumeSnapshotClass
|
|
may be deleted or recreated with different set of values, and as
|
|
such, should not be referenced post-snapshot creation.
|
|
type: string
|
|
volumeSnapshotRef:
|
|
description: volumeSnapshotRef specifies the VolumeSnapshot object
|
|
to which this VolumeSnapshotContent object is bound. VolumeSnapshot.Spec.VolumeSnapshotContentName
|
|
field must reference to this VolumeSnapshotContent's name for the
|
|
bidirectional binding to be valid. For a pre-existing VolumeSnapshotContent
|
|
object, name and namespace of the VolumeSnapshot object MUST be
|
|
provided for binding to happen. This field is immutable after creation.
|
|
Required.
|
|
properties:
|
|
apiVersion:
|
|
description: API version of the referent.
|
|
type: string
|
|
fieldPath:
|
|
description: 'If referring to a piece of an object instead of
|
|
an entire object, this string should contain a valid JSON/Go
|
|
field access statement, such as desiredState.manifest.containers[2].
|
|
For example, if the object reference is to a container within
|
|
a pod, this would take on a value like: "spec.containers{name}"
|
|
(where "name" refers to the name of the container that triggered
|
|
the event) or if no container name is specified "spec.containers[2]"
|
|
(container with index 2 in this pod). This syntax is chosen
|
|
only to have some well-defined way of referencing a part of
|
|
an object. TODO: this design is not final and this field is
|
|
subject to change in the future.'
|
|
type: string
|
|
kind:
|
|
description: 'Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
|
|
type: string
|
|
name:
|
|
description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'
|
|
type: string
|
|
namespace:
|
|
description: 'Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/'
|
|
type: string
|
|
resourceVersion:
|
|
description: 'Specific resourceVersion to which this reference
|
|
is made, if any. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency'
|
|
type: string
|
|
uid:
|
|
description: 'UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids'
|
|
type: string
|
|
type: object
|
|
x-kubernetes-map-type: atomic
|
|
required:
|
|
- deletionPolicy
|
|
- driver
|
|
- source
|
|
- volumeSnapshotRef
|
|
type: object
|
|
status:
|
|
description: status represents the current information of a snapshot.
|
|
properties:
|
|
creationTime:
|
|
description: creationTime is the timestamp when the point-in-time
|
|
snapshot is taken by the underlying storage system. In dynamic snapshot
|
|
creation case, this field will be filled in by the CSI snapshotter
|
|
sidecar with the "creation_time" value returned from CSI "CreateSnapshot"
|
|
gRPC call. For a pre-existing snapshot, this field will be filled
|
|
with the "creation_time" value returned from the CSI "ListSnapshots"
|
|
gRPC call if the driver supports it. If not specified, it indicates
|
|
the creation time is unknown. The format of this field is a Unix
|
|
nanoseconds time encoded as an int64. On Unix, the command `date
|
|
+%s%N` returns the current time in nanoseconds since 1970-01-01
|
|
00:00:00 UTC.
|
|
format: int64
|
|
type: integer
|
|
error:
|
|
description: error is the last observed error during snapshot creation,
|
|
if any. Upon success after retry, this error field will be cleared.
|
|
properties:
|
|
message:
|
|
description: 'message is a string detailing the encountered error
|
|
during snapshot creation if specified. NOTE: message may be
|
|
logged, and it should not contain sensitive information.'
|
|
type: string
|
|
time:
|
|
description: time is the timestamp when the error was encountered.
|
|
format: date-time
|
|
type: string
|
|
type: object
|
|
readyToUse:
|
|
description: readyToUse indicates if a snapshot is ready to be used
|
|
to restore a volume. In dynamic snapshot creation case, this field
|
|
will be filled in by the CSI snapshotter sidecar with the "ready_to_use"
|
|
value returned from CSI "CreateSnapshot" gRPC call. For a pre-existing
|
|
snapshot, this field will be filled with the "ready_to_use" value
|
|
returned from the CSI "ListSnapshots" gRPC call if the driver supports
|
|
it, otherwise, this field will be set to "True". If not specified,
|
|
it means the readiness of a snapshot is unknown.
|
|
type: boolean
|
|
restoreSize:
|
|
description: restoreSize represents the complete size of the snapshot
|
|
in bytes. In dynamic snapshot creation case, this field will be
|
|
filled in by the CSI snapshotter sidecar with the "size_bytes" value
|
|
returned from CSI "CreateSnapshot" gRPC call. For a pre-existing
|
|
snapshot, this field will be filled with the "size_bytes" value
|
|
returned from the CSI "ListSnapshots" gRPC call if the driver supports
|
|
it. When restoring a volume from this snapshot, the size of the
|
|
volume MUST NOT be smaller than the restoreSize if it is specified,
|
|
otherwise the restoration will fail. If not specified, it indicates
|
|
that the size is unknown.
|
|
format: int64
|
|
minimum: 0
|
|
type: integer
|
|
snapshotHandle:
|
|
description: snapshotHandle is the CSI "snapshot_id" of a snapshot
|
|
on the underlying storage system. If not specified, it indicates
|
|
that dynamic snapshot creation has either failed or it is still
|
|
in progress.
|
|
type: string
|
|
volumeGroupSnapshotContentName:
|
|
description: VolumeGroupSnapshotContentName is the name of the VolumeGroupSnapshotContent
|
|
of which this VolumeSnapshotContent is a part of.
|
|
type: string
|
|
type: object
|
|
required:
|
|
- spec
|
|
type: object
|
|
served: true
|
|
storage: true
|
|
subresources:
|
|
status: {}
|
|
- additionalPrinterColumns:
|
|
- description: Indicates if the snapshot is ready to be used to restore a volume.
|
|
jsonPath: .status.readyToUse
|
|
name: ReadyToUse
|
|
type: boolean
|
|
- description: Represents the complete size of the snapshot in bytes
|
|
jsonPath: .status.restoreSize
|
|
name: RestoreSize
|
|
type: integer
|
|
- description: Determines whether this VolumeSnapshotContent and its physical
|
|
snapshot on the underlying storage system should be deleted when its bound
|
|
VolumeSnapshot is deleted.
|
|
jsonPath: .spec.deletionPolicy
|
|
name: DeletionPolicy
|
|
type: string
|
|
- description: Name of the CSI driver used to create the physical snapshot on
|
|
the underlying storage system.
|
|
jsonPath: .spec.driver
|
|
name: Driver
|
|
type: string
|
|
- description: Name of the VolumeSnapshotClass to which this snapshot belongs.
|
|
jsonPath: .spec.volumeSnapshotClassName
|
|
name: VolumeSnapshotClass
|
|
type: string
|
|
- description: Name of the VolumeSnapshot object to which this VolumeSnapshotContent
|
|
object is bound.
|
|
jsonPath: .spec.volumeSnapshotRef.name
|
|
name: VolumeSnapshot
|
|
type: string
|
|
- description: Namespace of the VolumeSnapshot object to which this VolumeSnapshotContent
|
|
object is bound.
|
|
jsonPath: .spec.volumeSnapshotRef.namespace
|
|
name: VolumeSnapshotNamespace
|
|
type: string
|
|
- jsonPath: .metadata.creationTimestamp
|
|
name: Age
|
|
type: date
|
|
deprecated: true
|
|
deprecationWarning: snapshot.storage.k8s.io/v1beta1 VolumeSnapshotContent is deprecated;
|
|
use snapshot.storage.k8s.io/v1 VolumeSnapshotContent
|
|
name: v1beta1
|
|
schema:
|
|
openAPIV3Schema:
|
|
description: VolumeSnapshotContent represents the actual "on-disk" snapshot
|
|
object in the underlying storage system
|
|
properties:
|
|
apiVersion:
|
|
description: 'APIVersion defines the versioned schema of this representation
|
|
of an object. Servers should convert recognized schemas to the latest
|
|
internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
|
|
type: string
|
|
kind:
|
|
description: 'Kind is a string value representing the REST resource this
|
|
object represents. Servers may infer this from the endpoint the client
|
|
submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
|
|
type: string
|
|
spec:
|
|
description: spec defines properties of a VolumeSnapshotContent created
|
|
by the underlying storage system. Required.
|
|
properties:
|
|
deletionPolicy:
|
|
description: deletionPolicy determines whether this VolumeSnapshotContent
|
|
and its physical snapshot on the underlying storage system should
|
|
be deleted when its bound VolumeSnapshot is deleted. Supported values
|
|
are "Retain" and "Delete". "Retain" means that the VolumeSnapshotContent
|
|
and its physical snapshot on underlying storage system are kept.
|
|
"Delete" means that the VolumeSnapshotContent and its physical snapshot
|
|
on underlying storage system are deleted. For dynamically provisioned
|
|
snapshots, this field will automatically be filled in by the CSI
|
|
snapshotter sidecar with the "DeletionPolicy" field defined in the
|
|
corresponding VolumeSnapshotClass. For pre-existing snapshots, users
|
|
MUST specify this field when creating the VolumeSnapshotContent
|
|
object. Required.
|
|
enum:
|
|
- Delete
|
|
- Retain
|
|
type: string
|
|
driver:
|
|
description: driver is the name of the CSI driver used to create the
|
|
physical snapshot on the underlying storage system. This MUST be
|
|
the same as the name returned by the CSI GetPluginName() call for
|
|
that driver. Required.
|
|
type: string
|
|
source:
|
|
description: source specifies whether the snapshot is (or should be)
|
|
dynamically provisioned or already exists, and just requires a Kubernetes
|
|
object representation. This field is immutable after creation. Required.
|
|
properties:
|
|
snapshotHandle:
|
|
description: snapshotHandle specifies the CSI "snapshot_id" of
|
|
a pre-existing snapshot on the underlying storage system for
|
|
which a Kubernetes object representation was (or should be)
|
|
created. This field is immutable.
|
|
type: string
|
|
volumeHandle:
|
|
description: volumeHandle specifies the CSI "volume_id" of the
|
|
volume from which a snapshot should be dynamically taken from.
|
|
This field is immutable.
|
|
type: string
|
|
type: object
|
|
volumeSnapshotClassName:
|
|
description: name of the VolumeSnapshotClass from which this snapshot
|
|
was (or will be) created. Note that after provisioning, the VolumeSnapshotClass
|
|
may be deleted or recreated with different set of values, and as
|
|
such, should not be referenced post-snapshot creation.
|
|
type: string
|
|
volumeSnapshotRef:
|
|
description: volumeSnapshotRef specifies the VolumeSnapshot object
|
|
to which this VolumeSnapshotContent object is bound. VolumeSnapshot.Spec.VolumeSnapshotContentName
|
|
field must reference to this VolumeSnapshotContent's name for the
|
|
bidirectional binding to be valid. For a pre-existing VolumeSnapshotContent
|
|
object, name and namespace of the VolumeSnapshot object MUST be
|
|
provided for binding to happen. This field is immutable after creation.
|
|
Required.
|
|
properties:
|
|
apiVersion:
|
|
description: API version of the referent.
|
|
type: string
|
|
fieldPath:
|
|
description: 'If referring to a piece of an object instead of
|
|
an entire object, this string should contain a valid JSON/Go
|
|
field access statement, such as desiredState.manifest.containers[2].
|
|
For example, if the object reference is to a container within
|
|
a pod, this would take on a value like: "spec.containers{name}"
|
|
(where "name" refers to the name of the container that triggered
|
|
the event) or if no container name is specified "spec.containers[2]"
|
|
(container with index 2 in this pod). This syntax is chosen
|
|
only to have some well-defined way of referencing a part of
|
|
an object. TODO: this design is not final and this field is
|
|
subject to change in the future.'
|
|
type: string
|
|
kind:
|
|
description: 'Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
|
|
type: string
|
|
name:
|
|
description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'
|
|
type: string
|
|
namespace:
|
|
description: 'Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/'
|
|
type: string
|
|
resourceVersion:
|
|
description: 'Specific resourceVersion to which this reference
|
|
is made, if any. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency'
|
|
type: string
|
|
uid:
|
|
description: 'UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids'
|
|
type: string
|
|
type: object
|
|
required:
|
|
- deletionPolicy
|
|
- driver
|
|
- source
|
|
- volumeSnapshotRef
|
|
type: object
|
|
status:
|
|
description: status represents the current information of a snapshot.
|
|
properties:
|
|
creationTime:
|
|
description: creationTime is the timestamp when the point-in-time
|
|
snapshot is taken by the underlying storage system. In dynamic snapshot
|
|
creation case, this field will be filled in by the CSI snapshotter
|
|
sidecar with the "creation_time" value returned from CSI "CreateSnapshot"
|
|
gRPC call. For a pre-existing snapshot, this field will be filled
|
|
with the "creation_time" value returned from the CSI "ListSnapshots"
|
|
gRPC call if the driver supports it. If not specified, it indicates
|
|
the creation time is unknown. The format of this field is a Unix
|
|
nanoseconds time encoded as an int64. On Unix, the command `date
|
|
+%s%N` returns the current time in nanoseconds since 1970-01-01
|
|
00:00:00 UTC.
|
|
format: int64
|
|
type: integer
|
|
error:
|
|
description: error is the last observed error during snapshot creation,
|
|
if any. Upon success after retry, this error field will be cleared.
|
|
properties:
|
|
message:
|
|
description: 'message is a string detailing the encountered error
|
|
during snapshot creation if specified. NOTE: message may be
|
|
logged, and it should not contain sensitive information.'
|
|
type: string
|
|
time:
|
|
description: time is the timestamp when the error was encountered.
|
|
format: date-time
|
|
type: string
|
|
type: object
|
|
readyToUse:
|
|
description: readyToUse indicates if a snapshot is ready to be used
|
|
to restore a volume. In dynamic snapshot creation case, this field
|
|
will be filled in by the CSI snapshotter sidecar with the "ready_to_use"
|
|
value returned from CSI "CreateSnapshot" gRPC call. For a pre-existing
|
|
snapshot, this field will be filled with the "ready_to_use" value
|
|
returned from the CSI "ListSnapshots" gRPC call if the driver supports
|
|
it, otherwise, this field will be set to "True". If not specified,
|
|
it means the readiness of a snapshot is unknown.
|
|
type: boolean
|
|
restoreSize:
|
|
description: restoreSize represents the complete size of the snapshot
|
|
in bytes. In dynamic snapshot creation case, this field will be
|
|
filled in by the CSI snapshotter sidecar with the "size_bytes" value
|
|
returned from CSI "CreateSnapshot" gRPC call. For a pre-existing
|
|
snapshot, this field will be filled with the "size_bytes" value
|
|
returned from the CSI "ListSnapshots" gRPC call if the driver supports
|
|
it. When restoring a volume from this snapshot, the size of the
|
|
volume MUST NOT be smaller than the restoreSize if it is specified,
|
|
otherwise the restoration will fail. If not specified, it indicates
|
|
that the size is unknown.
|
|
format: int64
|
|
minimum: 0
|
|
type: integer
|
|
snapshotHandle:
|
|
description: snapshotHandle is the CSI "snapshot_id" of a snapshot
|
|
on the underlying storage system. If not specified, it indicates
|
|
that dynamic snapshot creation has either failed or it is still
|
|
in progress.
|
|
type: string
|
|
type: object
|
|
required:
|
|
- spec
|
|
type: object
|
|
served: false
|
|
storage: false
|
|
subresources:
|
|
status: {}
|
|
status:
|
|
acceptedNames:
|
|
kind: ""
|
|
plural: ""
|
|
conditions: []
|
|
storedVersions: []
|
|
---
|
|
# Source: mayastor/charts/crds/templates/csi-volume-snapshot.yaml
|
|
apiVersion: apiextensions.k8s.io/v1
|
|
kind: CustomResourceDefinition
|
|
metadata:
|
|
annotations:
|
|
api-approved.kubernetes.io: https://github.com/kubernetes-csi/external-snapshotter/pull/814
|
|
controller-gen.kubebuilder.io/version: v0.11.3
|
|
helm.sh/resource-policy: keep
|
|
|
|
creationTimestamp: null
|
|
name: volumesnapshots.snapshot.storage.k8s.io
|
|
namespace: "mayastor"
|
|
spec:
|
|
group: snapshot.storage.k8s.io
|
|
names:
|
|
kind: VolumeSnapshot
|
|
listKind: VolumeSnapshotList
|
|
plural: volumesnapshots
|
|
shortNames:
|
|
- vs
|
|
singular: volumesnapshot
|
|
scope: Namespaced
|
|
versions:
|
|
- additionalPrinterColumns:
|
|
- description: Indicates if the snapshot is ready to be used to restore a volume.
|
|
jsonPath: .status.readyToUse
|
|
name: ReadyToUse
|
|
type: boolean
|
|
- description: If a new snapshot needs to be created, this contains the name of
|
|
the source PVC from which this snapshot was (or will be) created.
|
|
jsonPath: .spec.source.persistentVolumeClaimName
|
|
name: SourcePVC
|
|
type: string
|
|
- description: If a snapshot already exists, this contains the name of the existing
|
|
VolumeSnapshotContent object representing the existing snapshot.
|
|
jsonPath: .spec.source.volumeSnapshotContentName
|
|
name: SourceSnapshotContent
|
|
type: string
|
|
- description: Represents the minimum size of volume required to rehydrate from
|
|
this snapshot.
|
|
jsonPath: .status.restoreSize
|
|
name: RestoreSize
|
|
type: string
|
|
- description: The name of the VolumeSnapshotClass requested by the VolumeSnapshot.
|
|
jsonPath: .spec.volumeSnapshotClassName
|
|
name: SnapshotClass
|
|
type: string
|
|
- description: Name of the VolumeSnapshotContent object to which the VolumeSnapshot
|
|
object intends to bind to. Please note that verification of binding actually
|
|
requires checking both VolumeSnapshot and VolumeSnapshotContent to ensure
|
|
both are pointing at each other. Binding MUST be verified prior to usage of
|
|
this object.
|
|
jsonPath: .status.boundVolumeSnapshotContentName
|
|
name: SnapshotContent
|
|
type: string
|
|
- description: Timestamp when the point-in-time snapshot was taken by the underlying
|
|
storage system.
|
|
jsonPath: .status.creationTime
|
|
name: CreationTime
|
|
type: date
|
|
- jsonPath: .metadata.creationTimestamp
|
|
name: Age
|
|
type: date
|
|
name: v1
|
|
schema:
|
|
openAPIV3Schema:
|
|
description: VolumeSnapshot is a user's request for either creating a point-in-time
|
|
snapshot of a persistent volume, or binding to a pre-existing snapshot.
|
|
properties:
|
|
apiVersion:
|
|
description: 'APIVersion defines the versioned schema of this representation
|
|
of an object. Servers should convert recognized schemas to the latest
|
|
internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
|
|
type: string
|
|
kind:
|
|
description: 'Kind is a string value representing the REST resource this
|
|
object represents. Servers may infer this from the endpoint the client
|
|
submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
|
|
type: string
|
|
spec:
|
|
description: 'spec defines the desired characteristics of a snapshot requested
|
|
by a user. More info: https://kubernetes.io/docs/concepts/storage/volume-snapshots#volumesnapshots
|
|
Required.'
|
|
properties:
|
|
source:
|
|
description: source specifies where a snapshot will be created from.
|
|
This field is immutable after creation. Required.
|
|
oneOf:
|
|
- required:
|
|
- persistentVolumeClaimName
|
|
- required:
|
|
- volumeSnapshotContentName
|
|
properties:
|
|
persistentVolumeClaimName:
|
|
description: persistentVolumeClaimName specifies the name of the
|
|
PersistentVolumeClaim object representing the volume from which
|
|
a snapshot should be created. This PVC is assumed to be in the
|
|
same namespace as the VolumeSnapshot object. This field should
|
|
be set if the snapshot does not exists, and needs to be created.
|
|
This field is immutable.
|
|
type: string
|
|
volumeSnapshotContentName:
|
|
description: volumeSnapshotContentName specifies the name of a
|
|
pre-existing VolumeSnapshotContent object representing an existing
|
|
volume snapshot. This field should be set if the snapshot already
|
|
exists and only needs a representation in Kubernetes. This field
|
|
is immutable.
|
|
type: string
|
|
type: object
|
|
volumeSnapshotClassName:
|
|
description: 'VolumeSnapshotClassName is the name of the VolumeSnapshotClass
|
|
requested by the VolumeSnapshot. VolumeSnapshotClassName may be
|
|
left nil to indicate that the default SnapshotClass should be used.
|
|
A given cluster may have multiple default Volume SnapshotClasses:
|
|
one default per CSI Driver. If a VolumeSnapshot does not specify
|
|
a SnapshotClass, VolumeSnapshotSource will be checked to figure
|
|
out what the associated CSI Driver is, and the default VolumeSnapshotClass
|
|
associated with that CSI Driver will be used. If more than one VolumeSnapshotClass
|
|
exist for a given CSI Driver and more than one have been marked
|
|
as default, CreateSnapshot will fail and generate an event. Empty
|
|
string is not allowed for this field.'
|
|
type: string
|
|
required:
|
|
- source
|
|
type: object
|
|
status:
|
|
description: status represents the current information of a snapshot.
|
|
Consumers must verify binding between VolumeSnapshot and VolumeSnapshotContent
|
|
objects is successful (by validating that both VolumeSnapshot and VolumeSnapshotContent
|
|
point at each other) before using this object.
|
|
properties:
|
|
boundVolumeSnapshotContentName:
|
|
description: 'boundVolumeSnapshotContentName is the name of the VolumeSnapshotContent
|
|
object to which this VolumeSnapshot object intends to bind to. If
|
|
not specified, it indicates that the VolumeSnapshot object has not
|
|
been successfully bound to a VolumeSnapshotContent object yet. NOTE:
|
|
To avoid possible security issues, consumers must verify binding
|
|
between VolumeSnapshot and VolumeSnapshotContent objects is successful
|
|
(by validating that both VolumeSnapshot and VolumeSnapshotContent
|
|
point at each other) before using this object.'
|
|
type: string
|
|
creationTime:
|
|
description: creationTime is the timestamp when the point-in-time
|
|
snapshot is taken by the underlying storage system. In dynamic snapshot
|
|
creation case, this field will be filled in by the snapshot controller
|
|
with the "creation_time" value returned from CSI "CreateSnapshot"
|
|
gRPC call. For a pre-existing snapshot, this field will be filled
|
|
with the "creation_time" value returned from the CSI "ListSnapshots"
|
|
gRPC call if the driver supports it. If not specified, it may indicate
|
|
that the creation time of the snapshot is unknown.
|
|
format: date-time
|
|
type: string
|
|
error:
|
|
description: error is the last observed error during snapshot creation,
|
|
if any. This field could be helpful to upper level controllers(i.e.,
|
|
application controller) to decide whether they should continue on
|
|
waiting for the snapshot to be created based on the type of error
|
|
reported. The snapshot controller will keep retrying when an error
|
|
occurs during the snapshot creation. Upon success, this error field
|
|
will be cleared.
|
|
properties:
|
|
message:
|
|
description: 'message is a string detailing the encountered error
|
|
during snapshot creation if specified. NOTE: message may be
|
|
logged, and it should not contain sensitive information.'
|
|
type: string
|
|
time:
|
|
description: time is the timestamp when the error was encountered.
|
|
format: date-time
|
|
type: string
|
|
type: object
|
|
readyToUse:
|
|
description: readyToUse indicates if the snapshot is ready to be used
|
|
to restore a volume. In dynamic snapshot creation case, this field
|
|
will be filled in by the snapshot controller with the "ready_to_use"
|
|
value returned from CSI "CreateSnapshot" gRPC call. For a pre-existing
|
|
snapshot, this field will be filled with the "ready_to_use" value
|
|
returned from the CSI "ListSnapshots" gRPC call if the driver supports
|
|
it, otherwise, this field will be set to "True". If not specified,
|
|
it means the readiness of a snapshot is unknown.
|
|
type: boolean
|
|
restoreSize:
|
|
description: restoreSize represents the minimum size of volume required
|
|
to create a volume from this snapshot. In dynamic snapshot creation
|
|
case, this field will be filled in by the snapshot controller with
|
|
the "size_bytes" value returned from CSI "CreateSnapshot" gRPC call.
|
|
For a pre-existing snapshot, this field will be filled with the
|
|
"size_bytes" value returned from the CSI "ListSnapshots" gRPC call
|
|
if the driver supports it. When restoring a volume from this snapshot,
|
|
the size of the volume MUST NOT be smaller than the restoreSize
|
|
if it is specified, otherwise the restoration will fail. If not
|
|
specified, it indicates that the size is unknown.
|
|
pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
|
|
type: string
|
|
x-kubernetes-int-or-string: true
|
|
volumeGroupSnapshotName:
|
|
description: VolumeGroupSnapshotName is the name of the VolumeGroupSnapshot
|
|
of which this VolumeSnapshot is a part of.
|
|
type: string
|
|
type: object
|
|
required:
|
|
- spec
|
|
type: object
|
|
served: true
|
|
storage: true
|
|
subresources:
|
|
status: {}
|
|
- additionalPrinterColumns:
|
|
- description: Indicates if the snapshot is ready to be used to restore a volume.
|
|
jsonPath: .status.readyToUse
|
|
name: ReadyToUse
|
|
type: boolean
|
|
- description: If a new snapshot needs to be created, this contains the name of
|
|
the source PVC from which this snapshot was (or will be) created.
|
|
jsonPath: .spec.source.persistentVolumeClaimName
|
|
name: SourcePVC
|
|
type: string
|
|
- description: If a snapshot already exists, this contains the name of the existing
|
|
VolumeSnapshotContent object representing the existing snapshot.
|
|
jsonPath: .spec.source.volumeSnapshotContentName
|
|
name: SourceSnapshotContent
|
|
type: string
|
|
- description: Represents the minimum size of volume required to rehydrate from
|
|
this snapshot.
|
|
jsonPath: .status.restoreSize
|
|
name: RestoreSize
|
|
type: string
|
|
- description: The name of the VolumeSnapshotClass requested by the VolumeSnapshot.
|
|
jsonPath: .spec.volumeSnapshotClassName
|
|
name: SnapshotClass
|
|
type: string
|
|
- description: Name of the VolumeSnapshotContent object to which the VolumeSnapshot
|
|
object intends to bind to. Please note that verification of binding actually
|
|
requires checking both VolumeSnapshot and VolumeSnapshotContent to ensure
|
|
both are pointing at each other. Binding MUST be verified prior to usage of
|
|
this object.
|
|
jsonPath: .status.boundVolumeSnapshotContentName
|
|
name: SnapshotContent
|
|
type: string
|
|
- description: Timestamp when the point-in-time snapshot was taken by the underlying
|
|
storage system.
|
|
jsonPath: .status.creationTime
|
|
name: CreationTime
|
|
type: date
|
|
- jsonPath: .metadata.creationTimestamp
|
|
name: Age
|
|
type: date
|
|
deprecated: true
|
|
deprecationWarning: snapshot.storage.k8s.io/v1beta1 VolumeSnapshot is deprecated;
|
|
use snapshot.storage.k8s.io/v1 VolumeSnapshot
|
|
name: v1beta1
|
|
schema:
|
|
openAPIV3Schema:
|
|
description: VolumeSnapshot is a user's request for either creating a point-in-time
|
|
snapshot of a persistent volume, or binding to a pre-existing snapshot.
|
|
properties:
|
|
apiVersion:
|
|
description: 'APIVersion defines the versioned schema of this representation
|
|
of an object. Servers should convert recognized schemas to the latest
|
|
internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
|
|
type: string
|
|
kind:
|
|
description: 'Kind is a string value representing the REST resource this
|
|
object represents. Servers may infer this from the endpoint the client
|
|
submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
|
|
type: string
|
|
spec:
|
|
description: 'spec defines the desired characteristics of a snapshot requested
|
|
by a user. More info: https://kubernetes.io/docs/concepts/storage/volume-snapshots#volumesnapshots
|
|
Required.'
|
|
properties:
|
|
source:
|
|
description: source specifies where a snapshot will be created from.
|
|
This field is immutable after creation. Required.
|
|
properties:
|
|
persistentVolumeClaimName:
|
|
description: persistentVolumeClaimName specifies the name of the
|
|
PersistentVolumeClaim object representing the volume from which
|
|
a snapshot should be created. This PVC is assumed to be in the
|
|
same namespace as the VolumeSnapshot object. This field should
|
|
be set if the snapshot does not exists, and needs to be created.
|
|
This field is immutable.
|
|
type: string
|
|
volumeSnapshotContentName:
|
|
description: volumeSnapshotContentName specifies the name of a
|
|
pre-existing VolumeSnapshotContent object representing an existing
|
|
volume snapshot. This field should be set if the snapshot already
|
|
exists and only needs a representation in Kubernetes. This field
|
|
is immutable.
|
|
type: string
|
|
type: object
|
|
volumeSnapshotClassName:
|
|
description: 'VolumeSnapshotClassName is the name of the VolumeSnapshotClass
|
|
requested by the VolumeSnapshot. VolumeSnapshotClassName may be
|
|
left nil to indicate that the default SnapshotClass should be used.
|
|
A given cluster may have multiple default Volume SnapshotClasses:
|
|
one default per CSI Driver. If a VolumeSnapshot does not specify
|
|
a SnapshotClass, VolumeSnapshotSource will be checked to figure
|
|
out what the associated CSI Driver is, and the default VolumeSnapshotClass
|
|
associated with that CSI Driver will be used. If more than one VolumeSnapshotClass
|
|
exist for a given CSI Driver and more than one have been marked
|
|
as default, CreateSnapshot will fail and generate an event. Empty
|
|
string is not allowed for this field.'
|
|
type: string
|
|
required:
|
|
- source
|
|
type: object
|
|
status:
|
|
description: status represents the current information of a snapshot.
|
|
Consumers must verify binding between VolumeSnapshot and VolumeSnapshotContent
|
|
objects is successful (by validating that both VolumeSnapshot and VolumeSnapshotContent
|
|
point at each other) before using this object.
|
|
properties:
|
|
boundVolumeSnapshotContentName:
|
|
description: 'boundVolumeSnapshotContentName is the name of the VolumeSnapshotContent
|
|
object to which this VolumeSnapshot object intends to bind to. If
|
|
not specified, it indicates that the VolumeSnapshot object has not
|
|
been successfully bound to a VolumeSnapshotContent object yet. NOTE:
|
|
To avoid possible security issues, consumers must verify binding
|
|
between VolumeSnapshot and VolumeSnapshotContent objects is successful
|
|
(by validating that both VolumeSnapshot and VolumeSnapshotContent
|
|
point at each other) before using this object.'
|
|
type: string
|
|
creationTime:
|
|
description: creationTime is the timestamp when the point-in-time
|
|
snapshot is taken by the underlying storage system. In dynamic snapshot
|
|
creation case, this field will be filled in by the snapshot controller
|
|
with the "creation_time" value returned from CSI "CreateSnapshot"
|
|
gRPC call. For a pre-existing snapshot, this field will be filled
|
|
with the "creation_time" value returned from the CSI "ListSnapshots"
|
|
gRPC call if the driver supports it. If not specified, it may indicate
|
|
that the creation time of the snapshot is unknown.
|
|
format: date-time
|
|
type: string
|
|
error:
|
|
description: error is the last observed error during snapshot creation,
|
|
if any. This field could be helpful to upper level controllers(i.e.,
|
|
application controller) to decide whether they should continue on
|
|
waiting for the snapshot to be created based on the type of error
|
|
reported. The snapshot controller will keep retrying when an error
|
|
occurs during the snapshot creation. Upon success, this error field
|
|
will be cleared.
|
|
properties:
|
|
message:
|
|
description: 'message is a string detailing the encountered error
|
|
during snapshot creation if specified. NOTE: message may be
|
|
logged, and it should not contain sensitive information.'
|
|
type: string
|
|
time:
|
|
description: time is the timestamp when the error was encountered.
|
|
format: date-time
|
|
type: string
|
|
type: object
|
|
readyToUse:
|
|
description: readyToUse indicates if the snapshot is ready to be used
|
|
to restore a volume. In dynamic snapshot creation case, this field
|
|
will be filled in by the snapshot controller with the "ready_to_use"
|
|
value returned from CSI "CreateSnapshot" gRPC call. For a pre-existing
|
|
snapshot, this field will be filled with the "ready_to_use" value
|
|
returned from the CSI "ListSnapshots" gRPC call if the driver supports
|
|
it, otherwise, this field will be set to "True". If not specified,
|
|
it means the readiness of a snapshot is unknown.
|
|
type: boolean
|
|
restoreSize:
|
|
description: restoreSize represents the minimum size of volume required
|
|
to create a volume from this snapshot. In dynamic snapshot creation
|
|
case, this field will be filled in by the snapshot controller with
|
|
the "size_bytes" value returned from CSI "CreateSnapshot" gRPC call.
|
|
For a pre-existing snapshot, this field will be filled with the
|
|
"size_bytes" value returned from the CSI "ListSnapshots" gRPC call
|
|
if the driver supports it. When restoring a volume from this snapshot,
|
|
the size of the volume MUST NOT be smaller than the restoreSize
|
|
if it is specified, otherwise the restoration will fail. If not
|
|
specified, it indicates that the size is unknown.
|
|
pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
|
|
type: string
|
|
x-kubernetes-int-or-string: true
|
|
type: object
|
|
required:
|
|
- spec
|
|
type: object
|
|
served: false
|
|
storage: false
|
|
subresources:
|
|
status: {}
|
|
status:
|
|
acceptedNames:
|
|
kind: ""
|
|
plural: ""
|
|
conditions: []
|
|
storedVersions: []
|
|
---
|
|
# Source: mayastor/charts/localpv-provisioner/templates/rbac.yaml
|
|
apiVersion: rbac.authorization.k8s.io/v1
|
|
kind: ClusterRole
|
|
metadata:
|
|
name: mayastor-localpv-provisioner
|
|
namespace: "mayastor"
|
|
labels:
|
|
chart: localpv-provisioner-4.0.0
|
|
heritage: Helm
|
|
openebs.io/version: "4.0.0"
|
|
app: localpv-provisioner
|
|
release: mayastor
|
|
component: "localpv-provisioner"
|
|
openebs.io/component-name: openebs-localpv-provisioner
|
|
rules:
|
|
- apiGroups: ["*"]
|
|
resources: ["nodes"]
|
|
verbs: ["get", "list", "watch"]
|
|
- apiGroups: ["*"]
|
|
resources: ["namespaces", "pods", "events", "endpoints"]
|
|
verbs: ["*"]
|
|
- apiGroups: ["*"]
|
|
resources: ["resourcequotas", "limitranges"]
|
|
verbs: ["list", "watch"]
|
|
- apiGroups: ["*"]
|
|
resources: ["storageclasses", "persistentvolumeclaims", "persistentvolumes"]
|
|
verbs: ["*"]
|
|
- apiGroups: ["apiextensions.k8s.io"]
|
|
resources: ["customresourcedefinitions"]
|
|
verbs: [ "get", "list", "create", "update", "delete", "patch"]
|
|
- apiGroups: ["openebs.io"]
|
|
resources: [ "*"]
|
|
verbs: ["*" ]
|
|
- apiGroups: ["coordination.k8s.io"]
|
|
resources: ["leases"]
|
|
verbs: ["get", "create", "update"]
|
|
- nonResourceURLs: ["/metrics"]
|
|
verbs: ["get"]
|
|
---
|
|
# Source: mayastor/charts/loki-stack/charts/promtail/templates/clusterrole.yaml
|
|
kind: ClusterRole
|
|
apiVersion: rbac.authorization.k8s.io/v1
|
|
metadata:
|
|
name: mayastor-promtail
|
|
namespace: "mayastor"
|
|
labels:
|
|
helm.sh/chart: promtail-6.13.1
|
|
app.kubernetes.io/name: promtail
|
|
app.kubernetes.io/instance: mayastor
|
|
app.kubernetes.io/version: "2.8.3"
|
|
app.kubernetes.io/managed-by: Helm
|
|
rules:
|
|
- apiGroups:
|
|
- ""
|
|
resources:
|
|
- nodes
|
|
- nodes/proxy
|
|
- services
|
|
- endpoints
|
|
- pods
|
|
verbs:
|
|
- get
|
|
- watch
|
|
- list
|
|
---
|
|
# Source: mayastor/templates/mayastor/rbac/rbac.yaml
|
|
kind: ClusterRole
|
|
apiVersion: rbac.authorization.k8s.io/v1
|
|
metadata:
|
|
name: mayastor-cluster-role
|
|
namespace: "mayastor"
|
|
labels:
|
|
openebs.io/release: mayastor
|
|
openebs.io/version: 2.6.1
|
|
rules:
|
|
# must create mayastor crd if it doesn't exist, replace if exist,
|
|
# merge schema to existing CRD.
|
|
- apiGroups: ["apiextensions.k8s.io"]
|
|
resources: ["customresourcedefinitions"]
|
|
verbs: ["create", "get", "update", "list", "patch", "replace"]
|
|
# must update stored_version in status to include new schema only.
|
|
- apiGroups: ["apiextensions.k8s.io"]
|
|
resources: ["customresourcedefinitions/status"]
|
|
verbs: ["get", "update", "patch"]
|
|
# must read mayastorpools info. This is needed to handle upgrades from v1.
|
|
- apiGroups: [ "openebs.io" ]
|
|
resources: [ "mayastorpools" ]
|
|
verbs: ["get", "list", "patch", "delete", "deletecollection"]
|
|
# must read diskpool info
|
|
- apiGroups: ["openebs.io"]
|
|
resources: ["diskpools"]
|
|
verbs: ["get", "list", "watch", "update", "replace", "patch", "create"]
|
|
# must update diskpool status
|
|
- apiGroups: ["openebs.io"]
|
|
resources: ["diskpools/status"]
|
|
verbs: ["update", "patch"]
|
|
# must read cm info
|
|
- apiGroups: [""]
|
|
resources: ["configmaps"]
|
|
verbs: ["create", "get", "update", "patch"]
|
|
# must get deployments info
|
|
- apiGroups: ["apps"]
|
|
resources: ["deployments"]
|
|
verbs: ["get", "list"]
|
|
# external provisioner & attacher
|
|
- apiGroups: [""]
|
|
resources: ["persistentvolumes"]
|
|
verbs: ["get", "list", "watch", "update", "create", "delete", "patch"]
|
|
- apiGroups: [""]
|
|
resources: ["nodes"]
|
|
verbs: ["get", "list", "watch", "patch"]
|
|
|
|
# external provisioner
|
|
- apiGroups: [""]
|
|
resources: ["persistentvolumeclaims"]
|
|
verbs: ["get", "list", "watch", "update"]
|
|
- apiGroups: ["storage.k8s.io"]
|
|
resources: ["storageclasses"]
|
|
verbs: ["get", "list", "watch"]
|
|
- apiGroups: [""]
|
|
resources: ["events"]
|
|
verbs: ["list", "watch", "create", "update", "patch"]
|
|
|
|
# external-resizer
|
|
- apiGroups: [""]
|
|
resources: ["pods"]
|
|
verbs: ["get", "list", "watch"]
|
|
- apiGroups: [""]
|
|
resources: ["persistentvolumeclaims/status"]
|
|
verbs: ["patch"]
|
|
|
|
# external snapshotter and snapshot-controller
|
|
- apiGroups: ["snapshot.storage.k8s.io"]
|
|
resources: ["volumesnapshotclasses"]
|
|
verbs: ["get", "list", "watch"]
|
|
- apiGroups: ["snapshot.storage.k8s.io"]
|
|
resources: ["volumesnapshotcontents"]
|
|
verbs: ["create","get", "list", "watch", "update", "patch", "delete"]
|
|
- apiGroups: ["snapshot.storage.k8s.io"]
|
|
resources: ["volumesnapshotcontents/status"]
|
|
verbs: ["update", "patch"]
|
|
- apiGroups: ["snapshot.storage.k8s.io"]
|
|
resources: ["volumesnapshots"]
|
|
verbs: ["get", "list", "watch", "update", "patch", "delete"]
|
|
- apiGroups: ["snapshot.storage.k8s.io"]
|
|
resources: ["volumesnapshots/status"]
|
|
verbs: ["update", "patch"]
|
|
|
|
- apiGroups: [""]
|
|
resources: ["nodes"]
|
|
verbs: ["get", "list", "watch"]
|
|
|
|
# external attacher
|
|
- apiGroups: ["storage.k8s.io"]
|
|
resources: ["volumeattachments"]
|
|
verbs: ["get", "list", "watch", "update", "patch"]
|
|
- apiGroups: ["storage.k8s.io"]
|
|
resources: ["volumeattachments/status"]
|
|
verbs: ["patch"]
|
|
# CSI nodes must be listed
|
|
- apiGroups: ["storage.k8s.io"]
|
|
resources: ["csinodes"]
|
|
verbs: ["get", "list", "watch"]
|
|
# get kube-system namespace to retrieve Uid
|
|
- apiGroups: [""]
|
|
resources: ["namespaces"]
|
|
verbs: ["get"]
|
|
---
|
|
# Source: mayastor/charts/localpv-provisioner/templates/rbac.yaml
|
|
apiVersion: rbac.authorization.k8s.io/v1
|
|
kind: ClusterRoleBinding
|
|
metadata:
|
|
name: mayastor-localpv-provisioner
|
|
namespace: "mayastor"
|
|
labels:
|
|
chart: localpv-provisioner-4.0.0
|
|
heritage: Helm
|
|
openebs.io/version: "4.0.0"
|
|
app: localpv-provisioner
|
|
release: mayastor
|
|
component: "localpv-provisioner"
|
|
openebs.io/component-name: openebs-localpv-provisioner
|
|
roleRef:
|
|
apiGroup: rbac.authorization.k8s.io
|
|
kind: ClusterRole
|
|
name: mayastor-localpv-provisioner
|
|
subjects:
|
|
- kind: ServiceAccount
|
|
name: mayastor-localpv-provisioner
|
|
namespace: mayastor
|
|
---
|
|
# Source: mayastor/charts/loki-stack/charts/promtail/templates/clusterrolebinding.yaml
|
|
kind: ClusterRoleBinding
|
|
apiVersion: rbac.authorization.k8s.io/v1
|
|
metadata:
|
|
name: mayastor-promtail
|
|
namespace: "mayastor"
|
|
labels:
|
|
helm.sh/chart: promtail-6.13.1
|
|
app.kubernetes.io/name: promtail
|
|
app.kubernetes.io/instance: mayastor
|
|
app.kubernetes.io/version: "2.8.3"
|
|
app.kubernetes.io/managed-by: Helm
|
|
subjects:
|
|
- kind: ServiceAccount
|
|
name: mayastor-promtail
|
|
namespace: mayastor
|
|
roleRef:
|
|
kind: ClusterRole
|
|
name: mayastor-promtail
|
|
apiGroup: rbac.authorization.k8s.io
|
|
---
|
|
# Source: mayastor/templates/mayastor/rbac/rbac.yaml
|
|
kind: ClusterRoleBinding
|
|
apiVersion: rbac.authorization.k8s.io/v1
|
|
metadata:
|
|
name: mayastor-cluster-role-binding
|
|
namespace: "mayastor"
|
|
labels:
|
|
openebs.io/release: mayastor
|
|
openebs.io/version: 2.6.0
|
|
subjects:
|
|
- kind: ServiceAccount
|
|
name: mayastor-service-account
|
|
namespace: mayastor
|
|
roleRef:
|
|
kind: ClusterRole
|
|
name: mayastor-cluster-role
|
|
apiGroup: rbac.authorization.k8s.io
|
|
---
|
|
# Source: mayastor/charts/loki-stack/charts/loki/templates/role.yaml
|
|
apiVersion: rbac.authorization.k8s.io/v1
|
|
kind: Role
|
|
metadata:
|
|
name: mayastor-loki
|
|
namespace: mayastor
|
|
labels:
|
|
app: loki
|
|
chart: loki-2.16.0
|
|
release: mayastor
|
|
heritage: Helm
|
|
---
|
|
# Source: mayastor/charts/loki-stack/charts/loki/templates/rolebinding.yaml
|
|
apiVersion: rbac.authorization.k8s.io/v1
|
|
kind: RoleBinding
|
|
metadata:
|
|
name: mayastor-loki
|
|
namespace: mayastor
|
|
labels:
|
|
app: loki
|
|
chart: loki-2.16.0
|
|
release: mayastor
|
|
heritage: Helm
|
|
roleRef:
|
|
apiGroup: rbac.authorization.k8s.io
|
|
kind: Role
|
|
name: mayastor-loki
|
|
subjects:
|
|
- kind: ServiceAccount
|
|
name: mayastor-loki
|
|
namespace: "mayastor"
|
|
---
|
|
# Source: mayastor/charts/etcd/templates/svc-headless.yaml
|
|
apiVersion: v1
|
|
kind: Service
|
|
metadata:
|
|
name: mayastor-etcd-headless
|
|
namespace: "mayastor"
|
|
labels:
|
|
app.kubernetes.io/name: etcd
|
|
helm.sh/chart: etcd-8.6.0
|
|
app.kubernetes.io/instance: mayastor
|
|
app.kubernetes.io/managed-by: Helm
|
|
annotations:
|
|
service.alpha.kubernetes.io/tolerate-unready-endpoints: "true"
|
|
spec:
|
|
type: ClusterIP
|
|
clusterIP: None
|
|
publishNotReadyAddresses: true
|
|
ports:
|
|
- name: client
|
|
port: 2379
|
|
targetPort: client
|
|
- name: peer
|
|
port: 2380
|
|
targetPort: peer
|
|
selector:
|
|
app.kubernetes.io/name: etcd
|
|
app.kubernetes.io/instance: mayastor
|
|
---
|
|
# Source: mayastor/charts/etcd/templates/svc.yaml
|
|
apiVersion: v1
|
|
kind: Service
|
|
metadata:
|
|
name: mayastor-etcd
|
|
namespace: "mayastor"
|
|
labels:
|
|
app.kubernetes.io/name: etcd
|
|
helm.sh/chart: etcd-8.6.0
|
|
app.kubernetes.io/instance: mayastor
|
|
app.kubernetes.io/managed-by: Helm
|
|
annotations:
|
|
spec:
|
|
type: ClusterIP
|
|
sessionAffinity: None
|
|
ports:
|
|
- name: "client"
|
|
port: 2379
|
|
targetPort: client
|
|
nodePort: null
|
|
- name: "peer"
|
|
port: 2380
|
|
targetPort: peer
|
|
nodePort: null
|
|
selector:
|
|
app.kubernetes.io/name: etcd
|
|
app.kubernetes.io/instance: mayastor
|
|
---
|
|
# Source: mayastor/charts/loki-stack/charts/loki/templates/service-headless.yaml
|
|
apiVersion: v1
|
|
kind: Service
|
|
metadata:
|
|
name: mayastor-loki-headless
|
|
namespace: mayastor
|
|
labels:
|
|
app: loki
|
|
chart: loki-2.16.0
|
|
release: mayastor
|
|
heritage: Helm
|
|
variant: headless
|
|
spec:
|
|
clusterIP: None
|
|
ports:
|
|
- port: 3100
|
|
protocol: TCP
|
|
name: http-metrics
|
|
targetPort: http-metrics
|
|
selector:
|
|
app: loki
|
|
release: mayastor
|
|
---
|
|
# Source: mayastor/charts/loki-stack/charts/loki/templates/service-memberlist.yaml
|
|
apiVersion: v1
|
|
kind: Service
|
|
metadata:
|
|
name: mayastor-loki-memberlist
|
|
namespace: mayastor
|
|
labels:
|
|
app: loki
|
|
chart: loki-2.16.0
|
|
release: mayastor
|
|
heritage: Helm
|
|
spec:
|
|
type: ClusterIP
|
|
clusterIP: None
|
|
publishNotReadyAddresses: true
|
|
ports:
|
|
- name: http
|
|
port: 7946
|
|
targetPort: memberlist-port
|
|
protocol: TCP
|
|
selector:
|
|
app: loki
|
|
release: mayastor
|
|
---
|
|
# Source: mayastor/charts/loki-stack/charts/loki/templates/service.yaml
|
|
apiVersion: v1
|
|
kind: Service
|
|
metadata:
|
|
name: mayastor-loki
|
|
namespace: mayastor
|
|
labels:
|
|
app: loki
|
|
chart: loki-2.16.0
|
|
release: mayastor
|
|
heritage: Helm
|
|
annotations:
|
|
{}
|
|
spec:
|
|
type: ClusterIP
|
|
ports:
|
|
- port: 3100
|
|
protocol: TCP
|
|
name: http-metrics
|
|
targetPort: http-metrics
|
|
selector:
|
|
app: loki
|
|
release: mayastor
|
|
---
|
|
# Source: mayastor/charts/nats/templates/service.yaml
|
|
apiVersion: v1
|
|
kind: Service
|
|
metadata:
|
|
name: mayastor-nats
|
|
namespace: mayastor
|
|
labels:
|
|
helm.sh/chart: nats-0.19.14
|
|
app.kubernetes.io/name: nats
|
|
app.kubernetes.io/instance: mayastor
|
|
app.kubernetes.io/version: "2.9.17"
|
|
app.kubernetes.io/managed-by: Helm
|
|
spec:
|
|
selector:
|
|
app.kubernetes.io/name: nats
|
|
app.kubernetes.io/instance: mayastor
|
|
clusterIP: None
|
|
publishNotReadyAddresses: true
|
|
ports:
|
|
- name: client
|
|
port: 4222
|
|
appProtocol: tcp
|
|
- name: cluster
|
|
port: 6222
|
|
appProtocol: tcp
|
|
- name: monitor
|
|
port: 8222
|
|
appProtocol: http
|
|
- name: metrics
|
|
port: 7777
|
|
appProtocol: http
|
|
- name: leafnodes
|
|
port: 7422
|
|
appProtocol: tcp
|
|
- name: gateways
|
|
port: 7522
|
|
appProtocol: tcp
|
|
---
|
|
# Source: mayastor/templates/mayastor/agents/core/agent-core-service.yaml
|
|
apiVersion: v1
|
|
kind: Service
|
|
metadata:
|
|
name: mayastor-agent-core
|
|
namespace: "mayastor"
|
|
labels:
|
|
app: agent-core
|
|
openebs.io/release: mayastor
|
|
openebs.io/version: 2.6.0
|
|
spec:
|
|
selector:
|
|
app: agent-core
|
|
openebs.io/release: mayastor
|
|
ports:
|
|
- name: grpc
|
|
port: 50051
|
|
- name: ha-cluster
|
|
port: 50052
|
|
---
|
|
# Source: mayastor/templates/mayastor/apis/api-rest-service.yaml
|
|
apiVersion: v1
|
|
kind: Service
|
|
metadata:
|
|
name: mayastor-api-rest
|
|
namespace: "mayastor"
|
|
labels:
|
|
app: api-rest
|
|
openebs.io/release: mayastor
|
|
openebs.io/version: 2.6.0
|
|
spec:
|
|
type: ClusterIP
|
|
selector:
|
|
app: api-rest
|
|
openebs.io/release: mayastor
|
|
ports:
|
|
- port: 8080
|
|
name: https
|
|
targetPort: 8080
|
|
protocol: TCP
|
|
- port: 8081
|
|
name: http
|
|
targetPort: 8081
|
|
protocol: TCP
|
|
---
|
|
# Source: mayastor/templates/mayastor/metrics/metrics-exporter-io-engine-service.yaml
|
|
apiVersion: v1
|
|
kind: Service
|
|
metadata:
|
|
name: mayastor-metrics-exporter-io-engine
|
|
namespace: "mayastor"
|
|
labels:
|
|
app: metrics-exporter-io-engine
|
|
openebs.io/release: mayastor
|
|
openebs.io/version: 2.6.0
|
|
spec:
|
|
ports:
|
|
- name: metrics
|
|
port: 9502
|
|
targetPort: 9502
|
|
protocol: TCP
|
|
selector:
|
|
app: io-engine
|
|
openebs.io/release: mayastor
|
|
---
|
|
# Source: mayastor/templates/mayastor/obs/stats-service.yaml
|
|
apiVersion: v1
|
|
kind: Service
|
|
metadata:
|
|
name: mayastor-obs-callhome-stats
|
|
namespace: "mayastor"
|
|
labels:
|
|
app: obs-callhome
|
|
openebs.io/release: mayastor
|
|
openebs.io/version: 2.6.0
|
|
spec:
|
|
ports:
|
|
- port: 9090
|
|
name: https
|
|
targetPort: 9090
|
|
protocol: TCP
|
|
- port: 9091
|
|
name: http
|
|
targetPort: 9091
|
|
protocol: TCP
|
|
selector:
|
|
app: obs-callhome
|
|
openebs.io/release: mayastor
|
|
---
|
|
# Source: mayastor/charts/loki-stack/charts/promtail/templates/daemonset.yaml
|
|
apiVersion: apps/v1
|
|
kind: DaemonSet
|
|
metadata:
|
|
name: mayastor-promtail
|
|
namespace: mayastor
|
|
labels:
|
|
helm.sh/chart: promtail-6.13.1
|
|
app.kubernetes.io/name: promtail
|
|
app.kubernetes.io/instance: mayastor
|
|
app.kubernetes.io/version: "2.8.3"
|
|
app.kubernetes.io/managed-by: Helm
|
|
spec:
|
|
selector:
|
|
matchLabels:
|
|
app.kubernetes.io/name: promtail
|
|
app.kubernetes.io/instance: mayastor
|
|
updateStrategy:
|
|
{}
|
|
template:
|
|
metadata:
|
|
labels:
|
|
app.kubernetes.io/name: promtail
|
|
app.kubernetes.io/instance: mayastor
|
|
annotations:
|
|
checksum/config: 4092c9ee0be8aa470357b31747225f93d14a58c9512b4017f4821864c07f10bb
|
|
spec:
|
|
serviceAccountName: mayastor-promtail
|
|
enableServiceLinks: true
|
|
securityContext:
|
|
runAsGroup: 0
|
|
runAsUser: 0
|
|
containers:
|
|
- name: promtail
|
|
image: "docker.io/grafana/promtail:2.8.3"
|
|
imagePullPolicy: IfNotPresent
|
|
args:
|
|
- "-config.file=/etc/promtail/promtail.yaml"
|
|
volumeMounts:
|
|
- name: config
|
|
mountPath: /etc/promtail
|
|
- mountPath: /run/promtail
|
|
name: run
|
|
- mountPath: /var/lib/docker/containers
|
|
name: containers
|
|
readOnly: true
|
|
- mountPath: /var/log/pods
|
|
name: pods
|
|
readOnly: true
|
|
env:
|
|
- name: HOSTNAME
|
|
valueFrom:
|
|
fieldRef:
|
|
fieldPath: spec.nodeName
|
|
ports:
|
|
- name: http-metrics
|
|
containerPort: 3101
|
|
protocol: TCP
|
|
securityContext:
|
|
allowPrivilegeEscalation: false
|
|
capabilities:
|
|
drop:
|
|
- ALL
|
|
readOnlyRootFilesystem: true
|
|
readinessProbe:
|
|
failureThreshold: 5
|
|
httpGet:
|
|
path: '/ready'
|
|
port: http-metrics
|
|
initialDelaySeconds: 10
|
|
periodSeconds: 10
|
|
successThreshold: 1
|
|
timeoutSeconds: 1
|
|
volumes:
|
|
- name: config
|
|
secret:
|
|
secretName: mayastor-promtail
|
|
- hostPath:
|
|
path: /run/promtail
|
|
name: run
|
|
- hostPath:
|
|
path: /var/lib/docker/containers
|
|
name: containers
|
|
- hostPath:
|
|
path: /var/log/pods
|
|
name: pods
|
|
---
|
|
# Source: mayastor/templates/mayastor/agents/ha/ha-node-daemonset.yaml
|
|
apiVersion: apps/v1
|
|
kind: DaemonSet
|
|
metadata:
|
|
name: mayastor-agent-ha-node
|
|
namespace: "mayastor"
|
|
labels:
|
|
app: agent-ha-node
|
|
openebs.io/release: mayastor
|
|
openebs.io/version: 2.6.0
|
|
spec:
|
|
selector:
|
|
matchLabels:
|
|
app: agent-ha-node
|
|
openebs.io/release: mayastor
|
|
updateStrategy:
|
|
type: RollingUpdate
|
|
rollingUpdate:
|
|
maxUnavailable: 1
|
|
minReadySeconds: 10
|
|
template:
|
|
metadata:
|
|
labels:
|
|
app: agent-ha-node
|
|
openebs.io/release: mayastor
|
|
openebs.io/version: 2.6.0
|
|
openebs.io/logging: "true"
|
|
spec:
|
|
hostNetwork: true
|
|
dnsPolicy: ClusterFirstWithHostNet
|
|
initContainers:
|
|
- command:
|
|
- sh
|
|
- -c
|
|
- trap "exit 1" TERM; until nc -vzw 5 mayastor-agent-core 50052; do date;
|
|
echo "Waiting for agent-cluster-grpc services..."; sleep 1; done;
|
|
image: busybox:latest
|
|
name: agent-cluster-grpc-probe
|
|
imagePullSecrets:
|
|
nodeSelector:
|
|
kubernetes.io/arch: amd64
|
|
containers:
|
|
- name: agent-ha-node
|
|
image: "docker.io/openebs/mayastor-agent-ha-node:v2.6.0"
|
|
imagePullPolicy: IfNotPresent
|
|
securityContext:
|
|
privileged: true
|
|
env:
|
|
- name: RUST_LOG
|
|
value: info
|
|
- name: MY_NODE_NAME
|
|
valueFrom:
|
|
fieldRef:
|
|
fieldPath: spec.nodeName
|
|
- name: MY_POD_IP
|
|
valueFrom:
|
|
fieldRef:
|
|
fieldPath: status.podIP
|
|
- name: RUST_BACKTRACE
|
|
value: "1"
|
|
args:
|
|
- "--node-name=$(MY_NODE_NAME)"
|
|
- "--csi-socket=/csi/csi.sock"
|
|
- "--grpc-endpoint=$(MY_POD_IP):50053"
|
|
- "--cluster-agent=https://mayastor-agent-core:50052"
|
|
- "--events-url=nats://mayastor-nats:4222"
|
|
- "--ansi-colors=true"
|
|
- "--fmt-style=pretty"
|
|
volumeMounts:
|
|
- name: device
|
|
mountPath: /dev
|
|
- name: sys
|
|
mountPath: /sys
|
|
- name: run-udev
|
|
mountPath: /run/udev
|
|
- name: plugin-dir
|
|
mountPath: /csi
|
|
resources:
|
|
limits:
|
|
cpu: "100m"
|
|
memory: "64Mi"
|
|
requests:
|
|
cpu: "100m"
|
|
memory: "64Mi"
|
|
ports:
|
|
- containerPort: 50053
|
|
protocol: TCP
|
|
name: ha-node
|
|
volumes:
|
|
- name: device
|
|
hostPath:
|
|
path: /dev
|
|
type: Directory
|
|
- name: sys
|
|
hostPath:
|
|
path: /sys
|
|
type: Directory
|
|
- name: run-udev
|
|
hostPath:
|
|
path: /run/udev
|
|
type: Directory
|
|
- name: plugin-dir
|
|
hostPath:
|
|
path: /var/lib/kubelet/plugins/io.openebs.mayastor/
|
|
type: DirectoryOrCreate
|
|
---
|
|
# Source: mayastor/templates/mayastor/csi/csi-node-daemonset.yaml
|
|
apiVersion: apps/v1
|
|
kind: DaemonSet
|
|
metadata:
|
|
name: mayastor-csi-node
|
|
namespace: "mayastor"
|
|
labels:
|
|
app: csi-node
|
|
openebs.io/release: mayastor
|
|
openebs.io/version: 2.6.0
|
|
openebs.io/csi-node: mayastor
|
|
spec:
|
|
selector:
|
|
matchLabels:
|
|
app: csi-node
|
|
openebs.io/release: mayastor
|
|
updateStrategy:
|
|
type: RollingUpdate
|
|
rollingUpdate:
|
|
maxUnavailable: 1
|
|
minReadySeconds: 10
|
|
template:
|
|
metadata:
|
|
labels:
|
|
app: csi-node
|
|
openebs.io/release: mayastor
|
|
openebs.io/version: 2.6.0
|
|
openebs.io/logging: "true"
|
|
spec:
|
|
serviceAccount: mayastor-service-account
|
|
hostNetwork: true
|
|
dnsPolicy: ClusterFirstWithHostNet
|
|
imagePullSecrets:
|
|
nodeSelector:
|
|
kubernetes.io/arch: amd64
|
|
initContainers:
|
|
# NOTE: Each container must have mem/cpu limits defined in order to
|
|
# belong to Guaranteed QoS class, hence can never get evicted in case of
|
|
# pressure unless they exceed those limits. limits and requests must be
|
|
# the same.
|
|
containers:
|
|
- name: csi-node
|
|
image: "docker.io/openebs/mayastor-csi-node:v2.6.0"
|
|
imagePullPolicy: IfNotPresent
|
|
# we need privileged because we mount filesystems and use mknod
|
|
securityContext:
|
|
privileged: true
|
|
env:
|
|
- name: RUST_LOG
|
|
value: info
|
|
- name: MY_NODE_NAME
|
|
valueFrom:
|
|
fieldRef:
|
|
fieldPath: spec.nodeName
|
|
- name: MY_POD_IP
|
|
valueFrom:
|
|
fieldRef:
|
|
fieldPath: status.podIP
|
|
- name: RUST_BACKTRACE
|
|
value: "1"
|
|
args:
|
|
- "--csi-socket=/csi/csi.sock"
|
|
- "--node-name=$(MY_NODE_NAME)"
|
|
- "--rest-endpoint=http://mayastor-api-rest:8081"
|
|
- "--enable-registration"
|
|
- "--grpc-endpoint=$(MY_POD_IP):10199"
|
|
- "--nvme-io-timeout=110s10s"
|
|
- "--nvme-core-io-timeout=110s10s"
|
|
- "--nvme-ctrl-loss-tmo=1980"
|
|
- "--nvme-nr-io-queues=2"
|
|
- "--node-selector=openebs.io/csi-node=mayastor"
|
|
- "--fmt-style=pretty"
|
|
- "--ansi-colors=true"
|
|
command:
|
|
- csi-node
|
|
volumeMounts:
|
|
- name: device
|
|
mountPath: /dev
|
|
- name: sys
|
|
mountPath: /sys
|
|
- name: run-udev
|
|
mountPath: /run/udev
|
|
- name: plugin-dir
|
|
mountPath: /csi
|
|
- name: kubelet-dir
|
|
mountPath: /var/lib/kubelet
|
|
mountPropagation: "Bidirectional"
|
|
resources:
|
|
limits:
|
|
cpu: "100m"
|
|
memory: "128Mi"
|
|
requests:
|
|
cpu: "100m"
|
|
memory: "64Mi"
|
|
- name: csi-driver-registrar
|
|
image: "registry.k8s.io/sig-storage/csi-node-driver-registrar:v2.10.0"
|
|
imagePullPolicy: IfNotPresent
|
|
args:
|
|
- "--csi-address=/csi/csi.sock"
|
|
- "--kubelet-registration-path=/var/lib/kubelet/plugins/io.openebs.mayastor/csi.sock"
|
|
volumeMounts:
|
|
- name: plugin-dir
|
|
mountPath: /csi
|
|
- name: registration-dir
|
|
mountPath: /registration
|
|
resources:
|
|
limits:
|
|
cpu: "100m"
|
|
memory: "50Mi"
|
|
requests:
|
|
cpu: "100m"
|
|
memory: "50Mi"
|
|
# Mayastor node plugin gRPC server
|
|
ports:
|
|
- containerPort: 10199
|
|
protocol: TCP
|
|
name: mayastor-node
|
|
volumes:
|
|
- name: device
|
|
hostPath:
|
|
path: /dev
|
|
type: Directory
|
|
- name: sys
|
|
hostPath:
|
|
path: /sys
|
|
type: Directory
|
|
- name: run-udev
|
|
hostPath:
|
|
path: /run/udev
|
|
type: Directory
|
|
- name: registration-dir
|
|
hostPath:
|
|
path: /var/lib/kubelet/plugins_registry/
|
|
type: Directory
|
|
- name: plugin-dir
|
|
hostPath:
|
|
path: /var/lib/kubelet/plugins/io.openebs.mayastor/
|
|
type: DirectoryOrCreate
|
|
- name: kubelet-dir
|
|
hostPath:
|
|
path: /var/lib/kubelet
|
|
type: Directory
|
|
---
|
|
# Source: mayastor/templates/mayastor/io/io-engine-daemonset.yaml
|
|
apiVersion: apps/v1
|
|
kind: DaemonSet
|
|
metadata:
|
|
name: mayastor-io-engine
|
|
namespace: "mayastor"
|
|
labels:
|
|
app: io-engine
|
|
openebs.io/release: mayastor
|
|
openebs.io/version: 2.6.0
|
|
spec:
|
|
selector:
|
|
matchLabels:
|
|
app: io-engine
|
|
openebs.io/release: mayastor
|
|
updateStrategy:
|
|
type: OnDelete
|
|
minReadySeconds: 10
|
|
template:
|
|
metadata:
|
|
labels:
|
|
app: io-engine
|
|
openebs.io/release: mayastor
|
|
openebs.io/version: 2.6.0
|
|
openebs.io/logging: "true"
|
|
spec:
|
|
imagePullSecrets:
|
|
hostNetwork: true
|
|
# To resolve services in the namespace
|
|
dnsPolicy: ClusterFirstWithHostNet
|
|
nodeSelector:
|
|
kubernetes.io/arch: amd64
|
|
openebs.io/engine: mayastor
|
|
initContainers:
|
|
- command:
|
|
- sh
|
|
- -c
|
|
- trap "exit 1" TERM; until nc -vzw 5 mayastor-agent-core 50051; do date;
|
|
echo "Waiting for agent-core-grpc services..."; sleep 1; done;
|
|
image: busybox:latest
|
|
name: agent-core-grpc-probe
|
|
- command:
|
|
- sh
|
|
- -c
|
|
- trap "exit 1" TERM; until nc -vzw 5 mayastor-etcd 2379;
|
|
do date; echo "Waiting for etcd..."; sleep 1; done;
|
|
image: busybox:latest
|
|
name: etcd-probe
|
|
containers:
|
|
- name: metrics-exporter-io-engine
|
|
image: "docker.io/openebs/mayastor-metrics-exporter-io-engine:v2.6.0"
|
|
imagePullPolicy: IfNotPresent
|
|
env:
|
|
- name: MY_NODE_NAME
|
|
valueFrom:
|
|
fieldRef:
|
|
fieldPath: spec.nodeName
|
|
- name: MY_POD_IP
|
|
valueFrom:
|
|
fieldRef:
|
|
fieldPath: status.podIP
|
|
ports:
|
|
- containerPort: 9502
|
|
protocol: TCP
|
|
name: metrics
|
|
args:
|
|
- "--fmt-style=pretty"
|
|
- "--ansi-colors=true"
|
|
- name: io-engine
|
|
image: "docker.io/openebs/mayastor-io-engine:v2.6.0"
|
|
imagePullPolicy: IfNotPresent
|
|
env:
|
|
- name: RUST_LOG
|
|
value: info
|
|
- name: NVMF_TCP_MAX_QPAIRS_PER_CTRL
|
|
value: "32"
|
|
- name: NVMF_TCP_MAX_QUEUE_DEPTH
|
|
value: "32"
|
|
- name: NVME_TIMEOUT
|
|
value: "110s"
|
|
- name: NVME_TIMEOUT_ADMIN
|
|
value: "30s"
|
|
- name: NVME_KATO
|
|
value: "10s"
|
|
- name: MY_NODE_NAME
|
|
valueFrom:
|
|
fieldRef:
|
|
fieldPath: spec.nodeName
|
|
- name: MY_POD_IP
|
|
valueFrom:
|
|
fieldRef:
|
|
fieldPath: status.podIP
|
|
- name: NEXUS_NVMF_ANA_ENABLE
|
|
value: "1"
|
|
- name: NEXUS_NVMF_RESV_ENABLE
|
|
value: "1"
|
|
args:
|
|
# The -l argument accepts cpu-list. Indexing starts at zero.
|
|
# For example -l 1,2,10-20 means use core 1, 2, 10 to 20.
|
|
# Note: Ensure that the CPU resources are updated accordingly.
|
|
# If you use 2 CPUs, the CPU: field should also read 2.
|
|
- "-g$(MY_POD_IP)"
|
|
- "-N$(MY_NODE_NAME)"
|
|
- "-Rhttps://mayastor-agent-core:50051"
|
|
- "-y/var/local/mayastor/io-engine/config.yaml"
|
|
- "-l1,2"
|
|
- "-p=mayastor-etcd:2379"
|
|
- "--ptpl-dir=/var/local/mayastor/io-engine/ptpl/"
|
|
- "--api-versions=v1"
|
|
- "--tgt-crdt=30"
|
|
- "--events-url=nats://mayastor-nats:4222"
|
|
command:
|
|
- io-engine
|
|
securityContext:
|
|
privileged: true
|
|
volumeMounts:
|
|
- name: device
|
|
mountPath: /dev
|
|
- name: udev
|
|
mountPath: /run/udev
|
|
- name: dshm
|
|
mountPath: /dev/shm
|
|
- name: configlocation
|
|
mountPath: /var/local/mayastor/io-engine/
|
|
- name: hugepage
|
|
mountPath: /dev/hugepages
|
|
resources:
|
|
limits:
|
|
cpu: "2"
|
|
memory: "1Gi"
|
|
hugepages-2Mi: "2Gi"
|
|
requests:
|
|
cpu: "2"
|
|
memory: "1Gi"
|
|
hugepages-2Mi: "2Gi"
|
|
ports:
|
|
- containerPort: 10124
|
|
protocol: TCP
|
|
name: io-engine
|
|
volumes:
|
|
- name: device
|
|
hostPath:
|
|
path: /dev
|
|
type: Directory
|
|
- name: udev
|
|
hostPath:
|
|
path: /run/udev
|
|
type: Directory
|
|
- name: dshm
|
|
emptyDir:
|
|
medium: Memory
|
|
sizeLimit: "1Gi"
|
|
- name: hugepage
|
|
emptyDir:
|
|
medium: HugePages
|
|
- name: configlocation
|
|
hostPath:
|
|
path: /var/local/mayastor/io-engine/
|
|
type: DirectoryOrCreate
|
|
---
|
|
# Source: mayastor/charts/localpv-provisioner/templates/deployment.yaml
|
|
apiVersion: apps/v1
|
|
kind: Deployment
|
|
metadata:
|
|
name: mayastor-localpv-provisioner
|
|
namespace: "mayastor"
|
|
labels:
|
|
chart: localpv-provisioner-4.0.0
|
|
heritage: Helm
|
|
openebs.io/version: "4.0.0"
|
|
app: localpv-provisioner
|
|
release: mayastor
|
|
component: "localpv-provisioner"
|
|
openebs.io/component-name: openebs-localpv-provisioner
|
|
spec:
|
|
replicas: 1
|
|
strategy:
|
|
type: "Recreate"
|
|
rollingUpdate: null
|
|
selector:
|
|
matchLabels:
|
|
app: localpv-provisioner
|
|
release: mayastor
|
|
component: "localpv-provisioner"
|
|
template:
|
|
metadata:
|
|
labels:
|
|
chart: localpv-provisioner-4.0.0
|
|
heritage: Helm
|
|
openebs.io/version: "4.0.0"
|
|
app: localpv-provisioner
|
|
release: mayastor
|
|
component: "localpv-provisioner"
|
|
openebs.io/component-name: openebs-localpv-provisioner
|
|
|
|
name: openebs-localpv-provisioner
|
|
spec:
|
|
serviceAccountName: mayastor-localpv-provisioner
|
|
securityContext:
|
|
{}
|
|
containers:
|
|
- name: mayastor-localpv-provisioner
|
|
image: "openebs/provisioner-localpv:4.0.0"
|
|
imagePullPolicy: IfNotPresent
|
|
resources:
|
|
null
|
|
env:
|
|
# OPENEBS_IO_K8S_MASTER enables openebs provisioner to connect to K8s
|
|
# based on this address. This is ignored if empty.
|
|
# This is supported for openebs provisioner version 0.5.2 onwards
|
|
#- name: OPENEBS_IO_K8S_MASTER
|
|
# value: "http://10.128.0.12:8080"
|
|
# OPENEBS_IO_KUBE_CONFIG enables openebs provisioner to connect to K8s
|
|
# based on this config. This is ignored if empty.
|
|
# This is supported for openebs provisioner version 0.5.2 onwards
|
|
#- name: OPENEBS_IO_KUBE_CONFIG
|
|
# value: "/home/ubuntu/.kube/config"
|
|
- name: OPENEBS_NAMESPACE
|
|
valueFrom:
|
|
fieldRef:
|
|
fieldPath: metadata.namespace
|
|
- name: NODE_NAME
|
|
valueFrom:
|
|
fieldRef:
|
|
fieldPath: spec.nodeName
|
|
# OPENEBS_SERVICE_ACCOUNT provides the service account of this pod as
|
|
# environment variable
|
|
- name: OPENEBS_SERVICE_ACCOUNT
|
|
valueFrom:
|
|
fieldRef:
|
|
fieldPath: spec.serviceAccountName
|
|
# OPENEBS_IO_BASE_PATH is the environment variable that provides the
|
|
# default base path on the node where host-path PVs will be provisioned.
|
|
- name: OPENEBS_IO_ENABLE_ANALYTICS
|
|
value: "true"
|
|
- name: OPENEBS_IO_BASE_PATH
|
|
value: "/var/openebs/local"
|
|
- name: OPENEBS_IO_HELPER_IMAGE
|
|
value: "openebs/linux-utils:4.0.0"
|
|
- name: OPENEBS_IO_INSTALLER_TYPE
|
|
value: "localpv-charts-helm"
|
|
# LEADER_ELECTION_ENABLED is used to enable/disable leader election. By default
|
|
# leader election is enabled.
|
|
- name: LEADER_ELECTION_ENABLED
|
|
value: "true"
|
|
# Process name used for matching is limited to the 15 characters
|
|
# present in the pgrep output.
|
|
# So fullname can't be used here with pgrep (>15 chars).A regular expression
|
|
# that matches the entire command name has to specified.
|
|
# Anchor `^` : matches any string that starts with `provisioner-loc`
|
|
# `.*`: matches any string that has `provisioner-loc` followed by zero or more char
|
|
livenessProbe:
|
|
exec:
|
|
command:
|
|
- sh
|
|
- -c
|
|
- test `pgrep -c "^provisioner-loc.*"` = 1
|
|
initialDelaySeconds: 30
|
|
periodSeconds: 60
|
|
---
|
|
# Source: mayastor/templates/mayastor/agents/core/agent-core-deployment.yaml
|
|
apiVersion: apps/v1
|
|
kind: Deployment
|
|
metadata:
|
|
name: mayastor-agent-core
|
|
namespace: "mayastor"
|
|
labels:
|
|
app: agent-core
|
|
openebs.io/release: mayastor
|
|
openebs.io/version: 2.6.0
|
|
spec:
|
|
replicas: 1
|
|
selector:
|
|
matchLabels:
|
|
app: agent-core
|
|
openebs.io/release: mayastor
|
|
template:
|
|
metadata:
|
|
labels:
|
|
app: agent-core
|
|
openebs.io/release: mayastor
|
|
openebs.io/version: 2.6.0
|
|
openebs.io/logging: "true"
|
|
spec:
|
|
serviceAccount: mayastor-service-account
|
|
imagePullSecrets:
|
|
initContainers:
|
|
- command:
|
|
- sh
|
|
- -c
|
|
- trap "exit 1" TERM; until nc -vzw 5 mayastor-etcd 2379;
|
|
do date; echo "Waiting for etcd..."; sleep 1; done;
|
|
image: busybox:latest
|
|
name: etcd-probe
|
|
priorityClassName: mayastor-cluster-critical
|
|
nodeSelector:
|
|
kubernetes.io/arch: amd64
|
|
tolerations:
|
|
- effect: NoExecute
|
|
key: node.kubernetes.io/unreachable
|
|
operator: Exists
|
|
tolerationSeconds: 5
|
|
- effect: NoExecute
|
|
key: node.kubernetes.io/not-ready
|
|
operator: Exists
|
|
tolerationSeconds: 5
|
|
containers:
|
|
- name: agent-core
|
|
resources:
|
|
limits:
|
|
cpu: "1000m"
|
|
memory: "128Mi"
|
|
requests:
|
|
cpu: "500m"
|
|
memory: "32Mi"
|
|
image: "docker.io/openebs/mayastor-agent-core:v2.6.0"
|
|
imagePullPolicy: IfNotPresent
|
|
args:
|
|
- "-smayastor-etcd:2379"
|
|
- "--request-timeout=5s"
|
|
- "--cache-period=30s"
|
|
- "--grpc-server-addr=0.0.0.0:50051"
|
|
- "--pool-commitment=250%"
|
|
- "--snapshot-commitment=40%"
|
|
- "--volume-commitment-initial=40%"
|
|
- "--volume-commitment=40%"
|
|
- "--events-url=nats://mayastor-nats:4222"
|
|
- "--fmt-style=pretty"
|
|
- "--ansi-colors=true"
|
|
- "--create-volume-limit=10"
|
|
ports:
|
|
- containerPort: 50051
|
|
env:
|
|
- name: RUST_LOG
|
|
value: info
|
|
- name: MY_POD_NAME
|
|
valueFrom:
|
|
fieldRef:
|
|
fieldPath: metadata.name
|
|
- name: MY_POD_NAMESPACE
|
|
valueFrom:
|
|
fieldRef:
|
|
fieldPath: metadata.namespace
|
|
- name: agent-ha-cluster
|
|
resources:
|
|
limits:
|
|
cpu: "100m"
|
|
memory: "64Mi"
|
|
requests:
|
|
cpu: "100m"
|
|
memory: "16Mi"
|
|
image: "docker.io/openebs/mayastor-agent-ha-cluster:v2.6.0"
|
|
imagePullPolicy: IfNotPresent
|
|
args:
|
|
- "-g=0.0.0.0:50052"
|
|
- "--store=http://mayastor-etcd:2379"
|
|
- "--core-grpc=https://mayastor-agent-core:50051"
|
|
- "--events-url=nats://mayastor-nats:4222"
|
|
- "--ansi-colors=true"
|
|
- "--fmt-style=pretty"
|
|
ports:
|
|
- containerPort: 50052
|
|
env:
|
|
- name: RUST_LOG
|
|
value: info
|
|
- name: MY_POD_NAME
|
|
valueFrom:
|
|
fieldRef:
|
|
fieldPath: metadata.name
|
|
- name: MY_POD_NAMESPACE
|
|
valueFrom:
|
|
fieldRef:
|
|
fieldPath: metadata.namespace
|
|
---
|
|
# Source: mayastor/templates/mayastor/apis/api-rest-deployment.yaml
|
|
apiVersion: apps/v1
|
|
kind: Deployment
|
|
metadata:
|
|
name: mayastor-api-rest
|
|
namespace: "mayastor"
|
|
labels:
|
|
app: api-rest
|
|
openebs.io/release: mayastor
|
|
openebs.io/version: 2.6.0
|
|
spec:
|
|
replicas: 1
|
|
selector:
|
|
matchLabels:
|
|
app: api-rest
|
|
openebs.io/release: mayastor
|
|
template:
|
|
metadata:
|
|
labels:
|
|
app: api-rest
|
|
openebs.io/release: mayastor
|
|
openebs.io/version: 2.6.0
|
|
openebs.io/logging: "true"
|
|
spec:
|
|
imagePullSecrets:
|
|
initContainers:
|
|
- command:
|
|
- sh
|
|
- -c
|
|
- trap "exit 1" TERM; until nc -vzw 5 mayastor-agent-core 50051; do date;
|
|
echo "Waiting for agent-core-grpc services..."; sleep 1; done;
|
|
image: busybox:latest
|
|
name: agent-core-grpc-probe
|
|
- command:
|
|
- sh
|
|
- -c
|
|
- trap "exit 1" TERM; until nc -vzw 5 mayastor-etcd 2379;
|
|
do date; echo "Waiting for etcd..."; sleep 1; done;
|
|
image: busybox:latest
|
|
name: etcd-probe
|
|
priorityClassName: mayastor-cluster-critical
|
|
nodeSelector:
|
|
kubernetes.io/arch: amd64
|
|
tolerations:
|
|
- effect: NoExecute
|
|
key: node.kubernetes.io/unreachable
|
|
operator: Exists
|
|
tolerationSeconds: 5
|
|
- effect: NoExecute
|
|
key: node.kubernetes.io/not-ready
|
|
operator: Exists
|
|
tolerationSeconds: 5
|
|
containers:
|
|
- name: api-rest
|
|
resources:
|
|
limits:
|
|
cpu: "100m"
|
|
memory: "64Mi"
|
|
requests:
|
|
cpu: "50m"
|
|
memory: "32Mi"
|
|
image: "docker.io/openebs/mayastor-api-rest:v2.6.0"
|
|
imagePullPolicy: IfNotPresent
|
|
args:
|
|
- "--dummy-certificates"
|
|
- "--no-auth"
|
|
- "--http=0.0.0.0:8081"
|
|
- "--request-timeout=5s"
|
|
- "--core-grpc=https://mayastor-agent-core:50051"
|
|
- "--ansi-colors=true"
|
|
- "--fmt-style=pretty"
|
|
ports:
|
|
- containerPort: 8080
|
|
- containerPort: 8081
|
|
env:
|
|
- name: RUST_LOG
|
|
value: info
|
|
---
|
|
# Source: mayastor/templates/mayastor/csi/csi-controller-deployment.yaml
|
|
apiVersion: apps/v1
|
|
kind: Deployment
|
|
metadata:
|
|
name: mayastor-csi-controller
|
|
namespace: "mayastor"
|
|
labels:
|
|
app: csi-controller
|
|
openebs.io/release: mayastor
|
|
openebs.io/version: 2.6.0
|
|
spec:
|
|
replicas: 1
|
|
selector:
|
|
matchLabels:
|
|
app: csi-controller
|
|
openebs.io/release: mayastor
|
|
template:
|
|
metadata:
|
|
labels:
|
|
app: csi-controller
|
|
openebs.io/release: mayastor
|
|
openebs.io/version: 2.6.0
|
|
openebs.io/logging: "true"
|
|
spec:
|
|
hostNetwork: true
|
|
serviceAccount: mayastor-service-account
|
|
dnsPolicy: ClusterFirstWithHostNet
|
|
imagePullSecrets:
|
|
initContainers:
|
|
- command:
|
|
- sh
|
|
- -c
|
|
- trap "exit 1" TERM; until nc -vzw 5 mayastor-api-rest 8081; do date;
|
|
echo "Waiting for REST API endpoint to become available"; sleep 1; done;
|
|
image: busybox:latest
|
|
name: api-rest-probe
|
|
nodeSelector:
|
|
kubernetes.io/arch: amd64
|
|
containers:
|
|
- name: csi-provisioner
|
|
image: "registry.k8s.io/sig-storage/csi-provisioner:v3.5.0"
|
|
args:
|
|
- "--v=2"
|
|
- "--csi-address=$(ADDRESS)"
|
|
- "--feature-gates=Topology=true"
|
|
- "--strict-topology=false"
|
|
- "--default-fstype=ext4"
|
|
- "--extra-create-metadata" # This is needed for volume group feature to work
|
|
- "--timeout=36s"
|
|
- "--worker-threads=10" # 10 for create and 10 for delete
|
|
- "--prevent-volume-mode-conversion"
|
|
env:
|
|
- name: ADDRESS
|
|
value: /var/lib/csi/sockets/pluginproxy/csi.sock
|
|
imagePullPolicy: IfNotPresent
|
|
volumeMounts:
|
|
- name: socket-dir
|
|
mountPath: /var/lib/csi/sockets/pluginproxy/
|
|
- name: csi-attacher
|
|
image: "registry.k8s.io/sig-storage/csi-attacher:v4.3.0"
|
|
args:
|
|
- "--v=2"
|
|
- "--csi-address=$(ADDRESS)"
|
|
env:
|
|
- name: ADDRESS
|
|
value: /var/lib/csi/sockets/pluginproxy/csi.sock
|
|
imagePullPolicy: IfNotPresent
|
|
volumeMounts:
|
|
- name: socket-dir
|
|
mountPath: /var/lib/csi/sockets/pluginproxy/
|
|
- name: csi-snapshotter
|
|
image: "registry.k8s.io/sig-storage/csi-snapshotter:v6.3.3"
|
|
args:
|
|
- "--v=2"
|
|
- "--csi-address=$(ADDRESS)"
|
|
env:
|
|
- name: ADDRESS
|
|
value: /var/lib/csi/sockets/pluginproxy/csi.sock
|
|
imagePullPolicy: IfNotPresent
|
|
volumeMounts:
|
|
- name: socket-dir
|
|
mountPath: /var/lib/csi/sockets/pluginproxy/
|
|
- name: csi-snapshot-controller
|
|
args:
|
|
- "--v=2"
|
|
- "--leader-election=false" # since we are running single container
|
|
- "--prevent-volume-mode-conversion"
|
|
image: "registry.k8s.io/sig-storage/snapshot-controller:v6.3.3"
|
|
imagePullPolicy: IfNotPresent
|
|
- name: csi-resizer
|
|
args:
|
|
- "--v=2"
|
|
- "--csi-address=$(ADDRESS)"
|
|
env:
|
|
- name: ADDRESS
|
|
value: /var/lib/csi/sockets/pluginproxy/csi.sock
|
|
image: "registry.k8s.io/sig-storage/csi-resizer:v1.9.3"
|
|
imagePullPolicy: IfNotPresent
|
|
volumeMounts:
|
|
- name: socket-dir
|
|
mountPath: /var/lib/csi/sockets/pluginproxy/
|
|
- name: csi-controller
|
|
resources:
|
|
limits:
|
|
cpu: "32m"
|
|
memory: "128Mi"
|
|
requests:
|
|
cpu: "16m"
|
|
memory: "64Mi"
|
|
image: "docker.io/openebs/mayastor-csi-controller:v2.6.0"
|
|
imagePullPolicy: IfNotPresent
|
|
args:
|
|
- "--csi-socket=/var/lib/csi/sockets/pluginproxy/csi.sock"
|
|
- "--rest-endpoint=http://mayastor-api-rest:8081"
|
|
- "--node-selector=openebs.io/csi-node=mayastor"
|
|
- "--ansi-colors=true"
|
|
- "--fmt-style=pretty"
|
|
- "--create-volume-limit=10"
|
|
env:
|
|
- name: RUST_LOG
|
|
value: info
|
|
volumeMounts:
|
|
- name: socket-dir
|
|
mountPath: /var/lib/csi/sockets/pluginproxy/
|
|
volumes:
|
|
- name: socket-dir
|
|
emptyDir:
|
|
---
|
|
# Source: mayastor/templates/mayastor/obs/obs-callhome-deployment.yaml
|
|
apiVersion: apps/v1
|
|
kind: Deployment
|
|
metadata:
|
|
name: mayastor-obs-callhome
|
|
namespace: "mayastor"
|
|
labels:
|
|
app: obs-callhome
|
|
openebs.io/release: mayastor
|
|
openebs.io/version: 2.6.0
|
|
spec:
|
|
replicas: 1
|
|
selector:
|
|
matchLabels:
|
|
app: obs-callhome
|
|
openebs.io/release: mayastor
|
|
template:
|
|
metadata:
|
|
labels:
|
|
app: obs-callhome
|
|
openebs.io/release: mayastor
|
|
openebs.io/version: 2.6.0
|
|
openebs.io/logging: "true"
|
|
spec:
|
|
serviceAccountName: mayastor-service-account
|
|
imagePullSecrets:
|
|
nodeSelector:
|
|
kubernetes.io/arch: amd64
|
|
containers:
|
|
- name: obs-callhome
|
|
image: "docker.io/openebs/mayastor-obs-callhome:v2.6.0"
|
|
args:
|
|
- "-e http://mayastor-api-rest:8081"
|
|
- "-n mayastor"
|
|
- "--aggregator-url=http://mayastor-obs-callhome-stats:9090/stats"
|
|
|
|
- "--send-report"
|
|
|
|
env:
|
|
- name: RUST_LOG
|
|
value: info
|
|
imagePullPolicy: IfNotPresent
|
|
resources:
|
|
limits:
|
|
cpu: "100m"
|
|
memory: "32Mi"
|
|
requests:
|
|
cpu: "50m"
|
|
memory: "16Mi"
|
|
- name: obs-callhome-stats
|
|
image: "docker.io/openebs/mayastor-obs-callhome-stats:v2.6.0"
|
|
args:
|
|
- "--namespace=mayastor"
|
|
- "--release-name=mayastor"
|
|
- "--mbus-url=nats://mayastor-nats:4222"
|
|
- "--ansi-colors=true"
|
|
- "--fmt-style=pretty"
|
|
ports:
|
|
- containerPort: 9090
|
|
protocol: TCP
|
|
name: stats
|
|
env:
|
|
- name: RUST_LOG
|
|
value: info
|
|
imagePullPolicy: IfNotPresent
|
|
resources:
|
|
limits:
|
|
cpu: "100m"
|
|
memory: "32Mi"
|
|
requests:
|
|
cpu: "50m"
|
|
memory: "16Mi"
|
|
---
|
|
# Source: mayastor/templates/mayastor/operators/operator-diskpool-deployment.yaml
|
|
apiVersion: apps/v1
|
|
kind: Deployment
|
|
metadata:
|
|
name: mayastor-operator-diskpool
|
|
namespace: "mayastor"
|
|
labels:
|
|
app: operator-diskpool
|
|
openebs.io/release: mayastor
|
|
openebs.io/version: 2.6.0
|
|
spec:
|
|
replicas: 1
|
|
selector:
|
|
matchLabels:
|
|
app: operator-diskpool
|
|
openebs.io/release: mayastor
|
|
template:
|
|
metadata:
|
|
labels:
|
|
app: operator-diskpool
|
|
openebs.io/release: mayastor
|
|
openebs.io/version: 2.6.0
|
|
openebs.io/logging: "true"
|
|
spec:
|
|
serviceAccount: mayastor-service-account
|
|
imagePullSecrets:
|
|
initContainers:
|
|
- command:
|
|
- sh
|
|
- -c
|
|
- trap "exit 1" TERM; until nc -vzw 5 mayastor-agent-core 50051; do date;
|
|
echo "Waiting for agent-core-grpc services..."; sleep 1; done;
|
|
image: busybox:latest
|
|
name: agent-core-grpc-probe
|
|
- command:
|
|
- sh
|
|
- -c
|
|
- trap "exit 1" TERM; until nc -vzw 5 mayastor-etcd 2379;
|
|
do date; echo "Waiting for etcd..."; sleep 1; done;
|
|
image: busybox:latest
|
|
name: etcd-probe
|
|
nodeSelector:
|
|
kubernetes.io/arch: amd64
|
|
containers:
|
|
- name: operator-diskpool
|
|
resources:
|
|
limits:
|
|
cpu: "100m"
|
|
memory: "32Mi"
|
|
requests:
|
|
cpu: "50m"
|
|
memory: "16Mi"
|
|
image: "docker.io/openebs/mayastor-operator-diskpool:v2.6.0"
|
|
imagePullPolicy: IfNotPresent
|
|
args:
|
|
- "-e http://mayastor-api-rest:8081"
|
|
- "-nmayastor"
|
|
- "--request-timeout=5s"
|
|
- "--interval=30s"
|
|
- "--ansi-colors=true"
|
|
- "--fmt-style=pretty"
|
|
env:
|
|
- name: RUST_LOG
|
|
value: info
|
|
- name: MY_POD_NAME
|
|
valueFrom:
|
|
fieldRef:
|
|
fieldPath: metadata.name
|
|
---
|
|
# Source: mayastor/charts/etcd/templates/statefulset.yaml
|
|
apiVersion: apps/v1
|
|
kind: StatefulSet
|
|
metadata:
|
|
name: mayastor-etcd
|
|
namespace: "mayastor"
|
|
labels:
|
|
app.kubernetes.io/name: etcd
|
|
helm.sh/chart: etcd-8.6.0
|
|
app.kubernetes.io/instance: mayastor
|
|
app.kubernetes.io/managed-by: Helm
|
|
spec:
|
|
replicas: 3
|
|
selector:
|
|
matchLabels:
|
|
app.kubernetes.io/name: etcd
|
|
app.kubernetes.io/instance: mayastor
|
|
serviceName: mayastor-etcd-headless
|
|
podManagementPolicy: Parallel
|
|
updateStrategy:
|
|
type: RollingUpdate
|
|
template:
|
|
metadata:
|
|
labels:
|
|
app.kubernetes.io/name: etcd
|
|
helm.sh/chart: etcd-8.6.0
|
|
app.kubernetes.io/instance: mayastor
|
|
app.kubernetes.io/managed-by: Helm
|
|
app: etcd
|
|
openebs.io/logging: "true"
|
|
annotations:
|
|
checksum/token-secret: c84377938f8b0d457d93ab1bcc380308b3cbf21c5b0d497600c1f953e315c573
|
|
spec:
|
|
|
|
affinity:
|
|
podAffinity:
|
|
|
|
podAntiAffinity:
|
|
requiredDuringSchedulingIgnoredDuringExecution:
|
|
- labelSelector:
|
|
matchLabels:
|
|
app.kubernetes.io/name: etcd
|
|
app.kubernetes.io/instance: mayastor
|
|
topologyKey: kubernetes.io/hostname
|
|
nodeAffinity:
|
|
|
|
securityContext:
|
|
fsGroup: 1001
|
|
serviceAccountName: "default"
|
|
initContainers:
|
|
- name: volume-permissions
|
|
image: docker.io/bitnami/bitnami-shell:11-debian-11-r63
|
|
imagePullPolicy: "IfNotPresent"
|
|
command:
|
|
- /bin/bash
|
|
- -ec
|
|
- |
|
|
chown -R 1001:1001 /bitnami/etcd
|
|
securityContext:
|
|
runAsUser: 0
|
|
resources:
|
|
limits: {}
|
|
requests: {}
|
|
volumeMounts:
|
|
- name: data
|
|
mountPath: /bitnami/etcd
|
|
containers:
|
|
- name: etcd
|
|
image: docker.io/bitnami/etcd:3.5.6-debian-11-r10
|
|
imagePullPolicy: "IfNotPresent"
|
|
securityContext:
|
|
allowPrivilegeEscalation: false
|
|
runAsNonRoot: true
|
|
runAsUser: 1001
|
|
env:
|
|
- name: BITNAMI_DEBUG
|
|
value: "false"
|
|
- name: MY_POD_IP
|
|
valueFrom:
|
|
fieldRef:
|
|
fieldPath: status.podIP
|
|
- name: MY_POD_NAME
|
|
valueFrom:
|
|
fieldRef:
|
|
fieldPath: metadata.name
|
|
- name: MY_STS_NAME
|
|
value: "mayastor-etcd"
|
|
- name: ETCDCTL_API
|
|
value: "3"
|
|
- name: ETCD_ON_K8S
|
|
value: "yes"
|
|
- name: ETCD_START_FROM_SNAPSHOT
|
|
value: "no"
|
|
- name: ETCD_DISASTER_RECOVERY
|
|
value: "no"
|
|
- name: ETCD_NAME
|
|
value: "$(MY_POD_NAME)"
|
|
- name: ETCD_DATA_DIR
|
|
value: "/bitnami/etcd/data"
|
|
- name: ETCD_LOG_LEVEL
|
|
value: "info"
|
|
- name: ALLOW_NONE_AUTHENTICATION
|
|
value: "yes"
|
|
- name: ETCD_AUTH_TOKEN
|
|
value: "jwt,priv-key=/opt/bitnami/etcd/certs/token/jwt-token.pem,sign-method=RS256,ttl=10m"
|
|
- name: ETCD_ADVERTISE_CLIENT_URLS
|
|
value: "http://$(MY_POD_NAME).mayastor-etcd-headless.mayastor.svc.cluster.local:2379,http://mayastor-etcd.mayastor.svc.cluster.local:2379"
|
|
- name: ETCD_LISTEN_CLIENT_URLS
|
|
value: "http://0.0.0.0:2379"
|
|
- name: ETCD_INITIAL_ADVERTISE_PEER_URLS
|
|
value: "http://$(MY_POD_NAME).mayastor-etcd-headless.mayastor.svc.cluster.local:2380"
|
|
- name: ETCD_LISTEN_PEER_URLS
|
|
value: "http://0.0.0.0:2380"
|
|
- name: ETCD_AUTO_COMPACTION_MODE
|
|
value: "revision"
|
|
- name: ETCD_AUTO_COMPACTION_RETENTION
|
|
value: "100"
|
|
- name: ETCD_INITIAL_CLUSTER_TOKEN
|
|
value: "etcd-cluster-k8s"
|
|
- name: ETCD_INITIAL_CLUSTER_STATE
|
|
value: "new"
|
|
- name: ETCD_INITIAL_CLUSTER
|
|
value: "mayastor-etcd-0=http://mayastor-etcd-0.mayastor-etcd-headless.mayastor.svc.cluster.local:2380,mayastor-etcd-1=http://mayastor-etcd-1.mayastor-etcd-headless.mayastor.svc.cluster.local:2380,mayastor-etcd-2=http://mayastor-etcd-2.mayastor-etcd-headless.mayastor.svc.cluster.local:2380"
|
|
- name: ETCD_CLUSTER_DOMAIN
|
|
value: "mayastor-etcd-headless.mayastor.svc.cluster.local"
|
|
- name: ETCD_QUOTA_BACKEND_BYTES
|
|
value: "8589934592"
|
|
envFrom:
|
|
ports:
|
|
- name: client
|
|
containerPort: 2379
|
|
protocol: TCP
|
|
- name: peer
|
|
containerPort: 2380
|
|
protocol: TCP
|
|
livenessProbe:
|
|
exec:
|
|
command:
|
|
- /opt/bitnami/scripts/etcd/healthcheck.sh
|
|
initialDelaySeconds: 60
|
|
periodSeconds: 30
|
|
timeoutSeconds: 5
|
|
successThreshold: 1
|
|
failureThreshold: 5
|
|
readinessProbe:
|
|
exec:
|
|
command:
|
|
- /opt/bitnami/scripts/etcd/healthcheck.sh
|
|
initialDelaySeconds: 60
|
|
periodSeconds: 10
|
|
timeoutSeconds: 5
|
|
successThreshold: 1
|
|
failureThreshold: 5
|
|
resources:
|
|
limits: {}
|
|
requests: {}
|
|
volumeMounts:
|
|
- name: data
|
|
mountPath: /bitnami/etcd
|
|
- name: etcd-jwt-token
|
|
mountPath: /opt/bitnami/etcd/certs/token/
|
|
readOnly: true
|
|
volumes:
|
|
- name: etcd-jwt-token
|
|
secret:
|
|
secretName: mayastor-etcd-jwt-token
|
|
defaultMode: 256
|
|
volumeClaimTemplates:
|
|
- metadata:
|
|
name: data
|
|
spec:
|
|
accessModes:
|
|
- "ReadWriteOnce"
|
|
resources:
|
|
requests:
|
|
storage: "2Gi"
|
|
storageClassName: mayastor-etcd-localpv
|
|
---
|
|
# Source: mayastor/charts/loki-stack/charts/loki/templates/statefulset.yaml
|
|
apiVersion: apps/v1
|
|
kind: StatefulSet
|
|
metadata:
|
|
name: mayastor-loki
|
|
namespace: mayastor
|
|
labels:
|
|
app: loki
|
|
chart: loki-2.16.0
|
|
release: mayastor
|
|
heritage: Helm
|
|
annotations:
|
|
{}
|
|
spec:
|
|
podManagementPolicy: OrderedReady
|
|
replicas: 1
|
|
selector:
|
|
matchLabels:
|
|
app: loki
|
|
release: mayastor
|
|
serviceName: mayastor-loki-headless
|
|
updateStrategy:
|
|
type: RollingUpdate
|
|
template:
|
|
metadata:
|
|
labels:
|
|
app: loki
|
|
name: mayastor-loki
|
|
release: mayastor
|
|
annotations:
|
|
checksum/config: c9bb92d718a9dbf6a0fbae40e06bcb374e5841e6880e7e96f830cd9d6e542606
|
|
prometheus.io/port: http-metrics
|
|
prometheus.io/scrape: "true"
|
|
spec:
|
|
serviceAccountName: mayastor-loki
|
|
securityContext:
|
|
fsGroup: 1001
|
|
runAsGroup: 1001
|
|
runAsNonRoot: false
|
|
runAsUser: 1001
|
|
initContainers:
|
|
- command:
|
|
- /bin/bash
|
|
- -ec
|
|
- chown -R 1001:1001 /data
|
|
image: docker.io/bitnami/bitnami-shell:10
|
|
imagePullPolicy: IfNotPresent
|
|
name: volume-permissions
|
|
securityContext:
|
|
runAsUser: 0
|
|
terminationMessagePath: /dev/termination-log
|
|
terminationMessagePolicy: File
|
|
volumeMounts:
|
|
- mountPath: /data
|
|
name: storage
|
|
containers:
|
|
- name: loki
|
|
image: "grafana/loki:2.6.1"
|
|
imagePullPolicy: IfNotPresent
|
|
args:
|
|
- "-config.file=/etc/loki/loki.yaml"
|
|
volumeMounts:
|
|
- name: tmp
|
|
mountPath: /tmp
|
|
- name: config
|
|
mountPath: /etc/loki
|
|
- name: storage
|
|
mountPath: "/data"
|
|
subPath:
|
|
ports:
|
|
- name: http-metrics
|
|
containerPort: 3100
|
|
protocol: TCP
|
|
- name: grpc
|
|
containerPort: 9095
|
|
protocol: TCP
|
|
- name: memberlist-port
|
|
containerPort: 7946
|
|
protocol: TCP
|
|
livenessProbe:
|
|
httpGet:
|
|
path: /ready
|
|
port: http-metrics
|
|
initialDelaySeconds: 45
|
|
readinessProbe:
|
|
httpGet:
|
|
path: /ready
|
|
port: http-metrics
|
|
initialDelaySeconds: 45
|
|
resources:
|
|
{}
|
|
securityContext:
|
|
readOnlyRootFilesystem: true
|
|
env:
|
|
nodeSelector:
|
|
{}
|
|
affinity:
|
|
{}
|
|
tolerations:
|
|
[]
|
|
terminationGracePeriodSeconds: 4800
|
|
volumes:
|
|
- name: tmp
|
|
emptyDir: {}
|
|
- name: config
|
|
secret:
|
|
secretName: mayastor-loki
|
|
volumeClaimTemplates:
|
|
- metadata:
|
|
name: storage
|
|
labels:
|
|
{}
|
|
annotations:
|
|
{}
|
|
spec:
|
|
accessModes:
|
|
- ReadWriteOnce
|
|
resources:
|
|
requests:
|
|
storage: "10Gi"
|
|
storageClassName: mayastor-loki-localpv
|
|
---
|
|
# Source: mayastor/charts/nats/templates/statefulset.yaml
|
|
apiVersion: apps/v1
|
|
kind: StatefulSet
|
|
metadata:
|
|
name: mayastor-nats
|
|
namespace: mayastor
|
|
labels:
|
|
helm.sh/chart: nats-0.19.14
|
|
app.kubernetes.io/name: nats
|
|
app.kubernetes.io/instance: mayastor
|
|
app.kubernetes.io/version: "2.9.17"
|
|
app.kubernetes.io/managed-by: Helm
|
|
spec:
|
|
selector:
|
|
matchLabels:
|
|
app.kubernetes.io/name: nats
|
|
app.kubernetes.io/instance: mayastor
|
|
replicas: 3
|
|
serviceName: mayastor-nats
|
|
|
|
podManagementPolicy: Parallel
|
|
|
|
template:
|
|
metadata:
|
|
annotations:
|
|
prometheus.io/path: /metrics
|
|
prometheus.io/port: "7777"
|
|
prometheus.io/scrape: "true"
|
|
checksum/config: 64c3aec18beab8492e170605c94a072024b9bb379b3df77715a69e2aed0eba71
|
|
labels:
|
|
app.kubernetes.io/name: nats
|
|
app.kubernetes.io/instance: mayastor
|
|
app: nats
|
|
openebs.io/logging: "true"
|
|
spec:
|
|
dnsPolicy: ClusterFirst
|
|
# Common volumes for the containers.
|
|
volumes:
|
|
- name: config-volume
|
|
configMap:
|
|
name: mayastor-nats-config
|
|
|
|
# Local volume shared with the reloader.
|
|
- name: pid
|
|
emptyDir: {}
|
|
|
|
#################
|
|
# #
|
|
# TLS Volumes #
|
|
# #
|
|
#################
|
|
|
|
serviceAccountName: mayastor-nats
|
|
|
|
# Required to be able to HUP signal and apply config
|
|
# reload to the server without restarting the pod.
|
|
shareProcessNamespace: true
|
|
|
|
#################
|
|
# #
|
|
# NATS Server #
|
|
# #
|
|
#################
|
|
terminationGracePeriodSeconds: 60
|
|
containers:
|
|
- name: nats
|
|
image: nats:2.9.17-alpine
|
|
imagePullPolicy: IfNotPresent
|
|
resources:
|
|
{}
|
|
ports:
|
|
- containerPort: 4222
|
|
name: client
|
|
- containerPort: 6222
|
|
name: cluster
|
|
- containerPort: 8222
|
|
name: monitor
|
|
|
|
command:
|
|
- "nats-server"
|
|
- "--config"
|
|
- "/etc/nats-config/nats.conf"
|
|
|
|
# Required to be able to define an environment variable
|
|
# that refers to other environment variables. This env var
|
|
# is later used as part of the configuration file.
|
|
env:
|
|
- name: POD_NAME
|
|
valueFrom:
|
|
fieldRef:
|
|
fieldPath: metadata.name
|
|
- name: SERVER_NAME
|
|
value: $(POD_NAME)
|
|
- name: POD_NAMESPACE
|
|
valueFrom:
|
|
fieldRef:
|
|
fieldPath: metadata.namespace
|
|
- name: CLUSTER_ADVERTISE
|
|
value: $(POD_NAME).mayastor-nats.$(POD_NAMESPACE)
|
|
volumeMounts:
|
|
- name: config-volume
|
|
mountPath: /etc/nats-config
|
|
- name: pid
|
|
mountPath: /var/run/nats
|
|
|
|
|
|
#######################
|
|
# #
|
|
# Healthcheck Probes #
|
|
# #
|
|
#######################
|
|
livenessProbe:
|
|
failureThreshold: 3
|
|
httpGet:
|
|
path: /
|
|
port: 8222
|
|
initialDelaySeconds: 10
|
|
periodSeconds: 30
|
|
successThreshold: 1
|
|
timeoutSeconds: 5
|
|
readinessProbe:
|
|
failureThreshold: 3
|
|
httpGet:
|
|
path: /
|
|
port: 8222
|
|
initialDelaySeconds: 10
|
|
periodSeconds: 10
|
|
successThreshold: 1
|
|
timeoutSeconds: 5
|
|
startupProbe:
|
|
# for NATS server versions >=2.7.1, /healthz will be enabled
|
|
# startup probe checks that the JS server is enabled, is current with the meta leader,
|
|
# and that all streams and consumers assigned to this JS server are current
|
|
failureThreshold: 90
|
|
httpGet:
|
|
path: /healthz
|
|
port: 8222
|
|
initialDelaySeconds: 10
|
|
periodSeconds: 10
|
|
successThreshold: 1
|
|
timeoutSeconds: 5
|
|
|
|
# Gracefully stop NATS Server on pod deletion or image upgrade.
|
|
#
|
|
lifecycle:
|
|
preStop:
|
|
exec:
|
|
# send the lame duck shutdown signal to trigger a graceful shutdown
|
|
# nats-server will ignore the TERM signal it receives after this
|
|
#
|
|
command:
|
|
- "nats-server"
|
|
- "-sl=ldm=/var/run/nats/nats.pid"
|
|
|
|
#################################
|
|
# #
|
|
# NATS Configuration Reloader #
|
|
# #
|
|
#################################
|
|
- name: reloader
|
|
image: natsio/nats-server-config-reloader:0.10.1
|
|
imagePullPolicy: IfNotPresent
|
|
resources:
|
|
{}
|
|
command:
|
|
- "nats-server-config-reloader"
|
|
- "-pid"
|
|
- "/var/run/nats/nats.pid"
|
|
- "-config"
|
|
- "/etc/nats-config/nats.conf"
|
|
volumeMounts:
|
|
- name: config-volume
|
|
mountPath: /etc/nats-config
|
|
- name: pid
|
|
mountPath: /var/run/nats
|
|
|
|
|
|
##############################
|
|
# #
|
|
# NATS Prometheus Exporter #
|
|
# #
|
|
##############################
|
|
- name: metrics
|
|
image: natsio/prometheus-nats-exporter:0.11.0
|
|
imagePullPolicy: IfNotPresent
|
|
resources:
|
|
{}
|
|
args:
|
|
- -connz
|
|
- -routez
|
|
- -subz
|
|
- -varz
|
|
- -prefix=nats
|
|
- -use_internal_server_id
|
|
- -jsz=all
|
|
- http://localhost:8222/
|
|
ports:
|
|
- containerPort: 7777
|
|
name: metrics
|
|
|
|
volumeClaimTemplates:
|
|
|