Skip to content
Open
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 14 additions & 0 deletions deploy/kubernetes/chart/Chart.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
apiVersion: v2
name: cube
description: CubeSandbox on Kubernetes/TKE Helm chart with separate control-plane, node, proxy, and host bootstrap images.
type: application
version: 0.5.0
appVersion: "0.5.0"
home: https://github.com/TencentCloud/CubeSandbox
keywords:
- cubesandbox
- pvm
- sandbox
- tke
maintainers:
- name: CubeSandbox maintainers
496 changes: 496 additions & 0 deletions deploy/kubernetes/chart/README.md

Large diffs are not rendered by default.

488 changes: 488 additions & 0 deletions deploy/kubernetes/chart/docs/ARCHITECTURE.md

Large diffs are not rendered by default.

105 changes: 105 additions & 0 deletions deploy/kubernetes/chart/files/cube-master/conf.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,105 @@
common:
http_port: {{ .Values.controlPlane.master.service.port }}
http_readtimeout: 120
http_writetimeout: 360
http_idletimeout: 360
sync_meta_data_interval: 30s
sync_metric_data_interval: 1s
collect_metric_interval: 1s
default_headless_service_nodes_num: 1
enable_check_com_net_id_param: false

log:
module: "cubemaster"
path: "/data/log/CubeMaster"
file_size: 100
file_num: 10
level: "info"

cubelet_conf:
grpc:
grpc_port: 9999
common_timeout_insec: 30
create_image_timeout_insec: 300
create_concurrent_limit: 100
destroy_concurent_limit: 100
enable_exposed_port: true
exposed_port_list:
- "80"
disable_redis_proxy_port: true

auth:
enable: false

req_template_conf:
whitelist_req_tag:
WorkingDir: true
RLimit: true
DnsConfig: true
HostAliases: true
Poststop: true
Prestop: true
cube_box_req_template: >-
{"volumes":[{"name":"tmp","volume_source":{"empty_dir":{"medium":0}}}],"containers":[{"name":"cubebox-default","envs":[{"key":"TZ","value":"Asia/Shanghai"},{"key":"TERM","value":"xterm"}],"volume_mounts":[{"name":"tmp","container_path":"/"}],"security_context":{"privileged":true,"readonly_rootfs":false,"no_new_privs":false}}],"network_type":"tap","cubevs_context":{"allowInternetAccess":true,"denyOut":["10.0.0.0/8","100.64.0.0/10","172.16.0.0/12","192.168.0.0/18"]}}

ossdb_config:
addr: {{ printf "%s:%v" (include "cube.mysqlHost" .) .Values.mysql.port | quote }}
user: {{ .Values.mysql.user | quote }}
pwd: {{ .Values.mysql.password | quote }}
db_name: {{ .Values.mysql.database | quote }}
conn_timeout: 5
read_timeout: 5
write_timeout: 5
max_idle_conns: 5
max_open_conns: 20
max_conn_life_time_seconds: 300

instance_db_config:
addr: {{ printf "%s:%v" (include "cube.mysqlHost" .) .Values.mysql.port | quote }}
user: {{ .Values.mysql.user | quote }}
pwd: {{ .Values.mysql.password | quote }}
db_name: {{ .Values.mysql.database | quote }}
conn_timeout: 5
read_timeout: 5
write_timeout: 5
max_idle_conns: 5
max_open_conns: 20
max_conn_life_time_seconds: 300

redis:
nodes: {{ printf "%s:%v" (include "cube.redisHost" .) .Values.redis.port | quote }}
password: {{ .Values.redis.password | quote }}
db_no: 0
max_idle: 8
max_active: 32
idle_timeout: 30
max_retry: 2

redis_read:
nodes: {{ printf "%s:%v" (include "cube.redisHost" .) .Values.redis.port | quote }}
password: {{ .Values.redis.password | quote }}
db_no: 0
max_idle: 8
max_active: 32
idle_timeout: 30
max_retry: 2

redis_write:
nodes: {{ printf "%s:%v" (include "cube.redisHost" .) .Values.redis.port | quote }}
password: {{ .Values.redis.password | quote }}
db_no: 0
max_idle: 8
max_active: 32
idle_timeout: 30
max_retry: 2

scheduler:
priority_select_num: 1
metric_update_timeout: 300s
local_metric_update_timeout: 300s
filter:
enable_filters:
- "cpu"
- "mem"
- "template_locality"
- "realtime_create_num"
64 changes: 64 additions & 0 deletions deploy/kubernetes/chart/templates/NOTES.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
CubeSandbox chart installed.

Release: {{ .Release.Name }}
Namespace: {{ .Release.Namespace }}

{{- if .Values.controlPlane.enabled }}
Control plane:
CubeMaster Service: {{ include "cube.masterName" . }}:{{ .Values.controlPlane.master.service.port }}
CubeAPI Service: {{ include "cube.apiName" . }}:{{ .Values.controlPlane.api.service.port }}
{{- if .Values.webui.enabled }}
WebUI Service: {{ include "cube.webuiName" . }}:{{ .Values.webui.service.port }}
{{- end }}
{{- if eq (include "cube.cubemastercliEnabled" .) "true" }}
cubemastercli Deployment: {{ include "cube.cubemastercliName" . }}
{{- end }}
{{- else if .Values.externalControlPlane.enabled }}
External control plane:
CubeMaster Endpoint: {{ .Values.externalControlPlane.masterEndpoint }}
{{- if .Values.externalControlPlane.apiEndpoint }}
CubeAPI Endpoint: {{ .Values.externalControlPlane.apiEndpoint }}
{{- end }}
{{- if eq (include "cube.cubemastercliEnabled" .) "true" }}
cubemastercli Deployment: {{ include "cube.cubemastercliName" . }}
{{- end }}
{{- end }}
{{- if .Values.cubeDns.enabled }}
{{- if eq .Values.cubeDns.mode "nodeLocal" }}
CubeDNS DaemonSet: {{ include "cube.fullname" . }}-dns (node-local {{ .Values.cubeDns.bindAddress }}:53)
{{- else }}
CubeDNS Service: {{ include "cube.fullname" . }}-dns:{{ .Values.cubeDns.service.port }}
{{- end }}
{{- end }}

Cube Node DaemonSet:
{{ include "cube.nodeName" . }}
{{- if eq (include "cube.proxyEnabled" .) "true" }}

Cube Proxy Node Deployment:
{{ include "cube.proxyName" . }}
HTTP/HTTPS control-node endpoint: <cube-proxy-control-node-ip>:{{ .Values.cubeProxy.ports.http.containerPort }}/{{ .Values.cubeProxy.ports.https.containerPort }}
No ClusterIP Service is created; point wildcard DNS at the control node or external load balancer.
{{- end }}

Useful commands:
kubectl get pods -n {{ .Release.Namespace }} -o wide
kubectl get ds -n {{ .Release.Namespace }} {{ include "cube.nodeName" . }}
{{- if eq (include "cube.proxyEnabled" .) "true" }}
kubectl get deploy -n {{ .Release.Namespace }} {{ include "cube.proxyName" . }}
{{- end }}
kubectl logs -n {{ .Release.Namespace }} -l app.kubernetes.io/component=cube-node -c pvm-host-bootstrap --tail=100
kubectl logs -n {{ .Release.Namespace }} -l app.kubernetes.io/component=cube-node -c cube-node-init --tail=100
kubectl logs -n {{ .Release.Namespace }} -l app.kubernetes.io/component=cube-node -c cube-node --tail=100
{{- if eq (include "cube.cubemastercliEnabled" .) "true" }}
kubectl exec -n {{ .Release.Namespace }} deploy/{{ include "cube.cubemastercliName" . }} -- cubemastercli --help
kubectl exec -n {{ .Release.Namespace }} deploy/{{ include "cube.cubemastercliName" . }} -- sh -lc 'cubemastercli --address "$CUBEMASTERCLI_ADDRESS" --port "$CUBEMASTERCLI_PORT" node list'
{{- end }}
helm test {{ .Release.Name }} -n {{ .Release.Namespace }} --timeout 20m
{{- if .Values.diagnostics.enabled }}
kubectl get configmap -n {{ .Release.Namespace }} {{ include "cube.fullname" . }}-diagnostics -o jsonpath='{.data.cube-diag-k8s\.sh}' > /tmp/cube-diag-k8s.sh
sh /tmp/cube-diag-k8s.sh {{ .Release.Namespace }} {{ .Release.Name }}
{{- end }}

WARNING: If bootstrap.pvmHostKernel.enabled=true, this release may install a host kernel and reboot selected compute nodes.
Helm rollback does not roll back host kernel/GRUB changes.
Loading
Loading