diff --git a/docs/quickstart-kubernetes/index.mdx b/docs/quickstart-kubernetes/index.mdx new file mode 100644 index 0000000..74970f9 --- /dev/null +++ b/docs/quickstart-kubernetes/index.mdx @@ -0,0 +1,362 @@ +--- +id: quickstart-kubernetes +title: Quick Start kubernetes +slug: /quickstart-kubernetes +sidebar_label: Quick Start kubernetes +sidebar_position: 15 +--- +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; + +![Quick Start](/docs/data/start.png) + +### Prerequisite Software + +Ensure the following software is installed before proceeding: + +- [Minikube](https://minikube.sigs.k8s.io/docs/) +- [Kubectl](https://kubernetes.io/docs/reference/kubectl/) + +### Step 1: Create a namespace + +YAML file content to create a namespace. +``` +apiVersion: v1 +kind: Namespace +metadata: + name: mlcraft +``` + + +### Step 2: Create redis service + +YAML file content to create redis deployment. + +``` +apiVersion: apps/v1 +kind: Deployment +metadata: + labels: + service: redis + name: redis + namespace: mlcraft +spec: + replicas: 1 + selector: + matchLabels: + service: redis + strategy: {} + template: + metadata: + labels: + service: redis + spec: + containers: + - env: + - name: ALLOW_EMPTY_PASSWORD + value: "yes" + image: bitnami/redis:latest + name: redis + ports: + - containerPort: 6379 + resources: {} + restartPolicy: Always +``` +YAML file content to create redis service. +``` +apiVersion: v1 +kind: Service +metadata: + labels: + service: redis + name: redis + namespace: mlcraft +spec: + ports: + - name: "6379" + port: 6379 + targetPort: 6379 + selector: + service: redis +status: + loadBalancer: {} + +``` + +### Step 3: Create postgres service + +YAML file to create PVC for postgres DB +``` +kind: PersistentVolume +apiVersion: v1 +metadata: + namespace: mlcraft + name: postgres-pv-volume + labels: + type: local + app: postgres +spec: + storageClassName: manual + capacity: + storage: 5Gi + accessModes: + - ReadWriteMany + hostPath: + path: "/mnt/data" +--- +kind: PersistentVolumeClaim +apiVersion: v1 +metadata: + namespace: mlcraft + name: postgres-pv-claim + labels: + app: postgres +spec: + storageClassName: manual + accessModes: + - ReadWriteMany + resources: + requests: + storage: 5Gi +``` + +YAML file to create postgres deployment. +NOTE: username, passwork and database are part of the deployement yaml file. +``` +apiVersion: apps/v1 +kind: Deployment +metadata: + name: postgres + namespace: mlcraft +spec: + replicas: 1 + selector: + matchLabels: + app: postgres + template: + metadata: + labels: + app: postgres + spec: + containers: + - name: postgres + image: postgres:12 + imagePullPolicy: "IfNotPresent" + ports: + - containerPort: 5432 + env: + - name: POSTGRES_DB + value: postgresdb + - name: POSTGRES_USER + value: admin + - name: POSTGRES_PASSWORD + value: test123 +``` + +YAML file deploy postgres service +``` +apiVersion: v1 +kind: Service +metadata: + namespace: mlcraft + name: postgres + labels: + app: postgres +spec: + ports: + - name: "5432" + port: 5432 + targetPort: 5432 + selector: + app: postgres +``` + +### Step 4: Create cubestore service + +YAML file to create cubestore statefulset +``` +apiVersion: apps/v1 +kind: StatefulSet +metadata: + labels: + service: cubestore + name: cubestore + namespace: mlcraft +spec: + serviceName: cubestore + selector: + matchLabels: + service: cubestore + template: + metadata: + labels: + service: cubestore + spec: + containers: + - env: # Refer to https://cube.dev/docs/reference/environment-variables for more options + - name: CUBESQL_DEBUG_QTRACE + value: "true" + - name: CUBEJS_DB_CLICKHOUSE_READONLY + value: "true" + - name: CUBEJS_TELEMETRY + value: "false" + - name: DEBUG_LOG + value: "true" + - name: CUBESTORE_SERVER_NAME + value: "cubestore:3030" + - name: CUBEJS_CUBESTORE_HOST + value: "cubestore" + - name: CUBEJS_CUBESTORE_PORT + value: "3030" + - name: CUBEJS_PG_SQL_PORT + value: "15432" + - name: CUBESTORE_REMOTE_DIR + value: /cube/data + image: cubejs/cubestore:v0.35.33 + name: cubestore + ports: + - containerPort: 3030 + resources: + limits: + memory: 3Gi + cpu: 3000m + requests: + memory: 500Mi + cpu: 500m + restartPolicy: Always +``` +YAML file to create cubestore service. +``` +apiVersion: v1 +kind: Service +metadata: + labels: + service: cubestore + name: cubestore + namespace: mlcraft +spec: + ports: + - name: "3030" + port: 3030 + targetPort: 3030 + selector: + service: cubestore +``` + +### Step 5: Create stack service + +YAML file to create stack statefulset +``` +apiVersion: apps/v1 +kind: StatefulSet +metadata: + labels: + service: stack + name: stack + namespace: mlcraft +spec: + serviceName: stack + selector: + matchLabels: + service: stack + template: + metadata: + labels: + service: stack + spec: + containers: + - env: # Refer to https://cube.dev/docs/reference/environment-variables for more options + - name: CUBESQL_DEBUG_QTRACE + value: "true" + - name: CUBEJS_URL + value: "http://localhost:4000" + - name: CUBEJS_SECRET + value: "cubejsKey" + - name: CUBEJS_DB_CLICKHOUSE_READONLY + value: "true" + - name: CUBEJS_TELEMETRY + value: "false" + - name: DEBUG_LOG + value: "true" + - name: CUBEJS_CUBESTORE_HOST + value: "cubestore" + - name: CUBEJS_CUBESTORE_PORT + value: "3030" + - name: HASURA_GRAPHQL_DATABASE_URL + value: postgres://admin:test123@postgres:5432/postgresdb + - name: HASURA_GRAPHQL_ADMIN_SECRET + value: devsecret + image: synmetrix/stack:latest + name: stack + ports: + - containerPort: 8888 + - containerPort: 4000 + - containerPort: 15432 + - containerPort: 13306 + resources: + limits: + memory: 3Gi + cpu: 3000m + requests: + memory: 500Mi + cpu: 500m + restartPolicy: Always +``` + +YAML file to create stack service. +``` +apiVersion: v1 +kind: Service +metadata: + labels: + service: stack + name: stack + namespace: mlcraft +spec: + ports: + - name: "8888" + port: 8888 + targetPort: 8888 + - name: "4000" + port: 4000 + targetPort: 4000 + - name: "15432" + port: 15432 + targetPort: 15432 + - name: "13306" + port: 13306 + targetPort: 13306 + selector: + service: stack +``` + +### Step 5: Create Ingress for the stack service + +YAML file to create ingress for stack service. +``` +apiVersion: networking.k8s.io/v1 +kind: Ingress +metadata: + name: mlcraft-ingress + namespace: mlcraft + annotations: + kubernetes.io/ingress.class: nginx + kubernetes.io/tls-acme: "true" +spec: + tls: + - hosts: + - + + secretName: + rules: + - host: + http: + paths: + - path: / + pathType: Prefix + backend: + service: + name: stack + port: + number: 8888 +``` diff --git a/versioned_docs/version-1.0.0/quickstart-kubernetes/index.mdx b/versioned_docs/version-1.0.0/quickstart-kubernetes/index.mdx new file mode 100644 index 0000000..74970f9 --- /dev/null +++ b/versioned_docs/version-1.0.0/quickstart-kubernetes/index.mdx @@ -0,0 +1,362 @@ +--- +id: quickstart-kubernetes +title: Quick Start kubernetes +slug: /quickstart-kubernetes +sidebar_label: Quick Start kubernetes +sidebar_position: 15 +--- +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; + +![Quick Start](/docs/data/start.png) + +### Prerequisite Software + +Ensure the following software is installed before proceeding: + +- [Minikube](https://minikube.sigs.k8s.io/docs/) +- [Kubectl](https://kubernetes.io/docs/reference/kubectl/) + +### Step 1: Create a namespace + +YAML file content to create a namespace. +``` +apiVersion: v1 +kind: Namespace +metadata: + name: mlcraft +``` + + +### Step 2: Create redis service + +YAML file content to create redis deployment. + +``` +apiVersion: apps/v1 +kind: Deployment +metadata: + labels: + service: redis + name: redis + namespace: mlcraft +spec: + replicas: 1 + selector: + matchLabels: + service: redis + strategy: {} + template: + metadata: + labels: + service: redis + spec: + containers: + - env: + - name: ALLOW_EMPTY_PASSWORD + value: "yes" + image: bitnami/redis:latest + name: redis + ports: + - containerPort: 6379 + resources: {} + restartPolicy: Always +``` +YAML file content to create redis service. +``` +apiVersion: v1 +kind: Service +metadata: + labels: + service: redis + name: redis + namespace: mlcraft +spec: + ports: + - name: "6379" + port: 6379 + targetPort: 6379 + selector: + service: redis +status: + loadBalancer: {} + +``` + +### Step 3: Create postgres service + +YAML file to create PVC for postgres DB +``` +kind: PersistentVolume +apiVersion: v1 +metadata: + namespace: mlcraft + name: postgres-pv-volume + labels: + type: local + app: postgres +spec: + storageClassName: manual + capacity: + storage: 5Gi + accessModes: + - ReadWriteMany + hostPath: + path: "/mnt/data" +--- +kind: PersistentVolumeClaim +apiVersion: v1 +metadata: + namespace: mlcraft + name: postgres-pv-claim + labels: + app: postgres +spec: + storageClassName: manual + accessModes: + - ReadWriteMany + resources: + requests: + storage: 5Gi +``` + +YAML file to create postgres deployment. +NOTE: username, passwork and database are part of the deployement yaml file. +``` +apiVersion: apps/v1 +kind: Deployment +metadata: + name: postgres + namespace: mlcraft +spec: + replicas: 1 + selector: + matchLabels: + app: postgres + template: + metadata: + labels: + app: postgres + spec: + containers: + - name: postgres + image: postgres:12 + imagePullPolicy: "IfNotPresent" + ports: + - containerPort: 5432 + env: + - name: POSTGRES_DB + value: postgresdb + - name: POSTGRES_USER + value: admin + - name: POSTGRES_PASSWORD + value: test123 +``` + +YAML file deploy postgres service +``` +apiVersion: v1 +kind: Service +metadata: + namespace: mlcraft + name: postgres + labels: + app: postgres +spec: + ports: + - name: "5432" + port: 5432 + targetPort: 5432 + selector: + app: postgres +``` + +### Step 4: Create cubestore service + +YAML file to create cubestore statefulset +``` +apiVersion: apps/v1 +kind: StatefulSet +metadata: + labels: + service: cubestore + name: cubestore + namespace: mlcraft +spec: + serviceName: cubestore + selector: + matchLabels: + service: cubestore + template: + metadata: + labels: + service: cubestore + spec: + containers: + - env: # Refer to https://cube.dev/docs/reference/environment-variables for more options + - name: CUBESQL_DEBUG_QTRACE + value: "true" + - name: CUBEJS_DB_CLICKHOUSE_READONLY + value: "true" + - name: CUBEJS_TELEMETRY + value: "false" + - name: DEBUG_LOG + value: "true" + - name: CUBESTORE_SERVER_NAME + value: "cubestore:3030" + - name: CUBEJS_CUBESTORE_HOST + value: "cubestore" + - name: CUBEJS_CUBESTORE_PORT + value: "3030" + - name: CUBEJS_PG_SQL_PORT + value: "15432" + - name: CUBESTORE_REMOTE_DIR + value: /cube/data + image: cubejs/cubestore:v0.35.33 + name: cubestore + ports: + - containerPort: 3030 + resources: + limits: + memory: 3Gi + cpu: 3000m + requests: + memory: 500Mi + cpu: 500m + restartPolicy: Always +``` +YAML file to create cubestore service. +``` +apiVersion: v1 +kind: Service +metadata: + labels: + service: cubestore + name: cubestore + namespace: mlcraft +spec: + ports: + - name: "3030" + port: 3030 + targetPort: 3030 + selector: + service: cubestore +``` + +### Step 5: Create stack service + +YAML file to create stack statefulset +``` +apiVersion: apps/v1 +kind: StatefulSet +metadata: + labels: + service: stack + name: stack + namespace: mlcraft +spec: + serviceName: stack + selector: + matchLabels: + service: stack + template: + metadata: + labels: + service: stack + spec: + containers: + - env: # Refer to https://cube.dev/docs/reference/environment-variables for more options + - name: CUBESQL_DEBUG_QTRACE + value: "true" + - name: CUBEJS_URL + value: "http://localhost:4000" + - name: CUBEJS_SECRET + value: "cubejsKey" + - name: CUBEJS_DB_CLICKHOUSE_READONLY + value: "true" + - name: CUBEJS_TELEMETRY + value: "false" + - name: DEBUG_LOG + value: "true" + - name: CUBEJS_CUBESTORE_HOST + value: "cubestore" + - name: CUBEJS_CUBESTORE_PORT + value: "3030" + - name: HASURA_GRAPHQL_DATABASE_URL + value: postgres://admin:test123@postgres:5432/postgresdb + - name: HASURA_GRAPHQL_ADMIN_SECRET + value: devsecret + image: synmetrix/stack:latest + name: stack + ports: + - containerPort: 8888 + - containerPort: 4000 + - containerPort: 15432 + - containerPort: 13306 + resources: + limits: + memory: 3Gi + cpu: 3000m + requests: + memory: 500Mi + cpu: 500m + restartPolicy: Always +``` + +YAML file to create stack service. +``` +apiVersion: v1 +kind: Service +metadata: + labels: + service: stack + name: stack + namespace: mlcraft +spec: + ports: + - name: "8888" + port: 8888 + targetPort: 8888 + - name: "4000" + port: 4000 + targetPort: 4000 + - name: "15432" + port: 15432 + targetPort: 15432 + - name: "13306" + port: 13306 + targetPort: 13306 + selector: + service: stack +``` + +### Step 5: Create Ingress for the stack service + +YAML file to create ingress for stack service. +``` +apiVersion: networking.k8s.io/v1 +kind: Ingress +metadata: + name: mlcraft-ingress + namespace: mlcraft + annotations: + kubernetes.io/ingress.class: nginx + kubernetes.io/tls-acme: "true" +spec: + tls: + - hosts: + - + + secretName: + rules: + - host: + http: + paths: + - path: / + pathType: Prefix + backend: + service: + name: stack + port: + number: 8888 +```