[deploy/infra] Publish container image and k8s deploy manifests#2100
[deploy/infra] Publish container image and k8s deploy manifests#2100Gregory-Pereira wants to merge 2 commits into
Conversation
Signed-off-by: Gregory Pereira <grpereir@redhat.com>
Signed-off-by: Gregory Pereira <grpereir@redhat.com>
50f6658 to
fc4378d
Compare
There was a problem hiding this comment.
Code Review
This pull request introduces Kubernetes deployment manifests and a multi-stage Dockerfile for the mooncake-master component. The deployment includes Kustomize configurations, Prometheus monitoring support, and persistent storage for snapshots. Feedback focuses on improving security by running the container as a non-root user, removing redundant generated manifests and commented-out code, and optimizing the Docker build process by refining file copying and updating image registry references.
|
|
||
| EXPOSE 50051 9003 8080 | ||
|
|
||
| ENTRYPOINT ["mooncake_master"] |
There was a problem hiding this comment.
| apiVersion: v1 | ||
| kind: Namespace | ||
| metadata: | ||
| labels: | ||
| app.kubernetes.io/component: master | ||
| app.kubernetes.io/name: mooncake-master | ||
| app.kubernetes.io/part-of: mooncake | ||
| name: mooncake | ||
| --- | ||
| apiVersion: v1 | ||
| data: | ||
| master.yaml: | | ||
| rpc_port: 50051 | ||
| rpc_thread_num: 4 | ||
| rpc_address: "0.0.0.0" | ||
| rpc_conn_timeout_seconds: 0 | ||
| rpc_enable_tcp_no_delay: true | ||
|
|
||
| enable_metric_reporting: true | ||
| metrics_port: 9003 | ||
|
|
||
| enable_http_metadata_server: true | ||
| http_metadata_server_host: "0.0.0.0" | ||
| http_metadata_server_port: 8080 | ||
|
|
||
| default_kv_lease_ttl: 5000 | ||
| default_kv_soft_pin_ttl: 1800000 | ||
| allow_evict_soft_pinned_objects: true | ||
| eviction_ratio: 0.05 | ||
| eviction_high_watermark_ratio: 0.95 | ||
|
|
||
| memory_allocator: "offset" | ||
| allocation_strategy: "random" | ||
|
|
||
| enable_snapshot: true | ||
| enable_snapshot_restore: true | ||
| snapshot_interval_seconds: 60 | ||
| snapshot_retention_count: 3 | ||
| snapshot_object_store_type: "local" | ||
| kind: ConfigMap | ||
| metadata: | ||
| labels: | ||
| app.kubernetes.io/component: master | ||
| app.kubernetes.io/name: mooncake-master | ||
| app.kubernetes.io/part-of: mooncake | ||
| name: mooncake-master-config | ||
| namespace: mooncake | ||
| --- | ||
| apiVersion: v1 | ||
| kind: Service | ||
| metadata: | ||
| labels: | ||
| app.kubernetes.io/component: master | ||
| app.kubernetes.io/name: mooncake-master | ||
| app.kubernetes.io/part-of: mooncake | ||
| name: mooncake-master | ||
| namespace: mooncake | ||
| spec: | ||
| ports: | ||
| - name: rpc | ||
| port: 50051 | ||
| protocol: TCP | ||
| targetPort: rpc | ||
| - name: metadata | ||
| port: 8080 | ||
| protocol: TCP | ||
| targetPort: metadata | ||
| - name: metrics | ||
| port: 9003 | ||
| protocol: TCP | ||
| targetPort: metrics | ||
| selector: | ||
| app.kubernetes.io/component: master | ||
| app.kubernetes.io/name: mooncake-master | ||
| app.kubernetes.io/part-of: mooncake | ||
| type: ClusterIP | ||
| --- | ||
| apiVersion: v1 | ||
| kind: PersistentVolumeClaim | ||
| metadata: | ||
| labels: | ||
| app.kubernetes.io/component: master | ||
| app.kubernetes.io/name: mooncake-master | ||
| app.kubernetes.io/part-of: mooncake | ||
| name: mooncake-master-snapshots | ||
| namespace: mooncake | ||
| spec: | ||
| accessModes: | ||
| - ReadWriteOnce | ||
| resources: | ||
| requests: | ||
| storage: 10Gi | ||
| --- | ||
| apiVersion: apps/v1 | ||
| kind: Deployment | ||
| metadata: | ||
| labels: | ||
| app.kubernetes.io/component: master | ||
| app.kubernetes.io/name: mooncake-master | ||
| app.kubernetes.io/part-of: mooncake | ||
| name: mooncake-master | ||
| namespace: mooncake | ||
| spec: | ||
| replicas: 1 | ||
| selector: | ||
| matchLabels: | ||
| app.kubernetes.io/component: master | ||
| app.kubernetes.io/name: mooncake-master | ||
| app.kubernetes.io/part-of: mooncake | ||
| strategy: | ||
| type: Recreate | ||
| template: | ||
| metadata: | ||
| labels: | ||
| app.kubernetes.io/component: master | ||
| app.kubernetes.io/name: mooncake-master | ||
| app.kubernetes.io/part-of: mooncake | ||
| spec: | ||
| containers: | ||
| - args: | ||
| - --config_path=/etc/mooncake/master.yaml | ||
| command: | ||
| - mooncake_master | ||
| env: | ||
| - name: MOONCAKE_SNAPSHOT_LOCAL_PATH | ||
| value: /data/snapshots | ||
| image: quay.io/grpereir/mooncake-master:test | ||
| livenessProbe: | ||
| initialDelaySeconds: 10 | ||
| periodSeconds: 15 | ||
| tcpSocket: | ||
| port: rpc | ||
| name: mooncake-master | ||
| ports: | ||
| - containerPort: 50051 | ||
| name: rpc | ||
| protocol: TCP | ||
| - containerPort: 9003 | ||
| name: metrics | ||
| protocol: TCP | ||
| - containerPort: 8080 | ||
| name: metadata | ||
| protocol: TCP | ||
| readinessProbe: | ||
| initialDelaySeconds: 5 | ||
| periodSeconds: 10 | ||
| tcpSocket: | ||
| port: rpc | ||
| resources: | ||
| limits: | ||
| cpu: "4" | ||
| memory: 4Gi | ||
| requests: | ||
| cpu: "1" | ||
| memory: 1Gi | ||
| volumeMounts: | ||
| - mountPath: /etc/mooncake | ||
| name: config | ||
| readOnly: true | ||
| - mountPath: /data/snapshots | ||
| name: snapshots | ||
| volumes: | ||
| - configMap: | ||
| name: mooncake-master-config | ||
| name: config | ||
| - name: snapshots | ||
| persistentVolumeClaim: | ||
| claimName: mooncake-master-snapshots |
There was a problem hiding this comment.
| metadata: | ||
| annotations: | ||
| prometheus.io/scrape: "true" | ||
| prometheus.io/port: "9003" | ||
| prometheus.io/path: "/metrics" | ||
| spec: | ||
| containers: | ||
| - name: mooncake-master | ||
| image: mooncake-master |
| newName: quay.io/grpereir/mooncake-master | ||
| newTag: test |
There was a problem hiding this comment.
| rm -rf /var/lib/apt/lists/* | ||
|
|
||
| WORKDIR /workspace | ||
| COPY . /workspace |
There was a problem hiding this comment.
|
Codecov Report✅ All modified and coverable lines are covered by tests. 📢 Thoughts on this report? Let us know! |
Description
Module
mooncake-transfer-engine)mooncake-store)mooncake-ep)mooncake-integration)mooncake-p2p-store)mooncake-wheel)mooncake-pg)mooncake-rl)Type of Change
How Has This Been Tested?
Deployed on my k8s cluster:
Checklist
./scripts/code_format.shbefore submitting.