合并 OpenSandbox Runner 部署修复
This commit was merged in pull request #102.
This commit is contained in:
@@ -6,11 +6,12 @@ metadata:
|
|||||||
spec:
|
spec:
|
||||||
dependsOn:
|
dependsOn:
|
||||||
- name: external-secrets
|
- name: external-secrets
|
||||||
- name: nats
|
|
||||||
- name: spire
|
- name: spire
|
||||||
interval: 10m
|
interval: 10m
|
||||||
path: ./platform/dynamic-runner
|
path: ./platform/dynamic-runner
|
||||||
prune: false
|
# The runner backends are replaceable. Prune is required when a retired
|
||||||
|
# worker is removed from the component; otherwise it keeps consuming work.
|
||||||
|
prune: true
|
||||||
sourceRef:
|
sourceRef:
|
||||||
kind: GitRepository
|
kind: GitRepository
|
||||||
name: flux-system
|
name: flux-system
|
||||||
|
|||||||
@@ -85,6 +85,9 @@ vyos_sandbox_k3s_api_interface: eth1
|
|||||||
vyos_sandbox_k3s_api_port: 6443
|
vyos_sandbox_k3s_api_port: 6443
|
||||||
vyos_opensandbox_api_port: 8080
|
vyos_opensandbox_api_port: 8080
|
||||||
vyos_opensandbox_node_port: 30080
|
vyos_opensandbox_node_port: 30080
|
||||||
|
# Lifecycle create is synchronous and a cold Kata image pull can exceed the
|
||||||
|
# HAProxy 50-second default. Keep this below OpenSandbox's overall timeout.
|
||||||
|
vyos_opensandbox_api_timeout: 600
|
||||||
vyos_sandbox_k3s_servers:
|
vyos_sandbox_k3s_servers:
|
||||||
- name: sandbox1
|
- name: sandbox1
|
||||||
address: "10.60.0.11"
|
address: "10.60.0.11"
|
||||||
|
|||||||
@@ -20,7 +20,9 @@ set load-balancing haproxy service opensandbox-api listen-address {{ vyos_sandbo
|
|||||||
set load-balancing haproxy service opensandbox-api port {{ vyos_opensandbox_api_port }}
|
set load-balancing haproxy service opensandbox-api port {{ vyos_opensandbox_api_port }}
|
||||||
set load-balancing haproxy service opensandbox-api mode 'tcp'
|
set load-balancing haproxy service opensandbox-api mode 'tcp'
|
||||||
set load-balancing haproxy service opensandbox-api backend 'opensandbox-api'
|
set load-balancing haproxy service opensandbox-api backend 'opensandbox-api'
|
||||||
|
set load-balancing haproxy service opensandbox-api timeout client {{ vyos_opensandbox_api_timeout }}
|
||||||
set load-balancing haproxy backend opensandbox-api mode 'tcp'
|
set load-balancing haproxy backend opensandbox-api mode 'tcp'
|
||||||
|
set load-balancing haproxy backend opensandbox-api timeout server {{ vyos_opensandbox_api_timeout }}
|
||||||
{% for server in vyos_sandbox_k3s_servers %}
|
{% for server in vyos_sandbox_k3s_servers %}
|
||||||
set load-balancing haproxy backend opensandbox-api server {{ server.name }} address {{ server.address }}
|
set load-balancing haproxy backend opensandbox-api server {{ server.name }} address {{ server.address }}
|
||||||
set load-balancing haproxy backend opensandbox-api server {{ server.name }} port {{ vyos_opensandbox_node_port }}
|
set load-balancing haproxy backend opensandbox-api server {{ server.name }} port {{ vyos_opensandbox_node_port }}
|
||||||
|
|||||||
@@ -15,11 +15,44 @@ spec:
|
|||||||
spec:
|
spec:
|
||||||
serviceAccountName: dynamic-runner-controller
|
serviceAccountName: dynamic-runner-controller
|
||||||
automountServiceAccountToken: false
|
automountServiceAccountToken: false
|
||||||
|
initContainers:
|
||||||
|
- name: fetch-internal-ca
|
||||||
|
image: curlimages/curl:8.16.0@sha256:463eaf6072688fe96ac64fa623fe73e1dbe25d8ad6c34404a669ad3ce1f104b6
|
||||||
|
args:
|
||||||
|
- --fail
|
||||||
|
- --silent
|
||||||
|
- --show-error
|
||||||
|
- --output
|
||||||
|
- /trust/ca.pem
|
||||||
|
- https://bao.ad.ddupan.top:8200/v1/pki/ca/pem
|
||||||
|
securityContext:
|
||||||
|
allowPrivilegeEscalation: false
|
||||||
|
capabilities:
|
||||||
|
drop: [ALL]
|
||||||
|
readOnlyRootFilesystem: true
|
||||||
|
runAsNonRoot: true
|
||||||
|
runAsUser: 101
|
||||||
|
runAsGroup: 102
|
||||||
|
seccompProfile:
|
||||||
|
type: RuntimeDefault
|
||||||
|
volumeMounts:
|
||||||
|
- name: trust
|
||||||
|
mountPath: /trust
|
||||||
containers:
|
containers:
|
||||||
- name: controller
|
- name: controller
|
||||||
image: zot.ad.ddupan.top/panxiao81/gitea-dynamic-runner-controller@sha256:1e481726cbcf6da50f1ef61aa5a1b070d2859209329842e954463293c27c0e66
|
image: zot.ad.ddupan.top/panxiao81/gitea-dynamic-runner-controller@sha256:83dd5c6f96b446e3aa2324e88e347b61f375fa95e99707b9b0ed505849a989da
|
||||||
imagePullPolicy: IfNotPresent
|
imagePullPolicy: IfNotPresent
|
||||||
env:
|
env:
|
||||||
|
- name: NATS_URL
|
||||||
|
value: tls://nats.ad.ddupan.top:4222
|
||||||
|
- name: NATS_CA_FILE
|
||||||
|
value: /run/trust/ca.pem
|
||||||
|
- name: NATS_PRODUCER_PASSWORD_FILE
|
||||||
|
value: /run/dynamic-runner-secrets/nats-password
|
||||||
|
- name: NATS_WORKER_PASSWORD_FILE
|
||||||
|
value: /run/dynamic-runner-secrets/nats-worker-password
|
||||||
|
- name: POD_CONSUMER_ENABLED
|
||||||
|
value: "true"
|
||||||
- name: WEBHOOK_SECRET_FILE
|
- name: WEBHOOK_SECRET_FILE
|
||||||
value: /run/dynamic-runner-secrets/webhook-secret
|
value: /run/dynamic-runner-secrets/webhook-secret
|
||||||
- name: REGISTRATION_TOKEN_FILE
|
- name: REGISTRATION_TOKEN_FILE
|
||||||
@@ -65,6 +98,9 @@ spec:
|
|||||||
- name: secret
|
- name: secret
|
||||||
mountPath: /run/dynamic-runner-secrets
|
mountPath: /run/dynamic-runner-secrets
|
||||||
readOnly: true
|
readOnly: true
|
||||||
|
- name: trust
|
||||||
|
mountPath: /run/trust
|
||||||
|
readOnly: true
|
||||||
securityContext:
|
securityContext:
|
||||||
fsGroup: 65532
|
fsGroup: 65532
|
||||||
fsGroupChangePolicy: OnRootMismatch
|
fsGroupChangePolicy: OnRootMismatch
|
||||||
@@ -75,3 +111,6 @@ spec:
|
|||||||
secret:
|
secret:
|
||||||
secretName: dynamic-runner
|
secretName: dynamic-runner
|
||||||
defaultMode: 0400
|
defaultMode: 0400
|
||||||
|
- name: trust
|
||||||
|
emptyDir:
|
||||||
|
sizeLimit: 1Mi
|
||||||
|
|||||||
@@ -12,6 +12,14 @@ spec:
|
|||||||
creationPolicy: Owner
|
creationPolicy: Owner
|
||||||
name: dynamic-runner
|
name: dynamic-runner
|
||||||
data:
|
data:
|
||||||
|
- secretKey: nats-password
|
||||||
|
remoteRef:
|
||||||
|
key: k8s/nats
|
||||||
|
property: ci_producer_password
|
||||||
|
- secretKey: nats-worker-password
|
||||||
|
remoteRef:
|
||||||
|
key: k8s/nats
|
||||||
|
property: ci_worker_password
|
||||||
- secretKey: opensandbox-api-key
|
- secretKey: opensandbox-api-key
|
||||||
remoteRef:
|
remoteRef:
|
||||||
key: k8s/opensandbox-api
|
key: k8s/opensandbox-api
|
||||||
|
|||||||
@@ -9,6 +9,12 @@ Pod-bound PSAT 向中央 SPIRE 注册;identity controller 从 BatchSandbox all
|
|||||||
取得真实 Pod UID,再创建精确的 `ClusterStaticEntry`。runner 只有拿到请求中的完整
|
取得真实 Pod UID,再创建精确的 `ClusterStaticEntry`。runner 只有拿到请求中的完整
|
||||||
repository/task SVID 后才领取一次性 Gitea registration token。
|
repository/task SVID 后才领取一次性 Gitea registration token。
|
||||||
|
|
||||||
|
这些 `ClusterStaticEntry` 位于 sandbox 集群,由 central SPIRE Server 内的
|
||||||
|
`spire-controller-manager-sandbox` 通过受限 external kubeconfig reconcile。必须在
|
||||||
|
`platform/spire/values.yaml` 显式启用 external controller-manager 的
|
||||||
|
`reconcile.clusterStaticEntries`(chart 默认关闭);仅看到 CR 存在但没有 status,不算
|
||||||
|
身份链路就绪。
|
||||||
|
|
||||||
## 部署依赖
|
## 部署依赖
|
||||||
|
|
||||||
- OpenSandbox chart 和 CRD 已 Ready;
|
- OpenSandbox chart 和 CRD 已 Ready;
|
||||||
|
|||||||
@@ -16,7 +16,7 @@ spec:
|
|||||||
serviceAccountName: opensandbox-identity
|
serviceAccountName: opensandbox-identity
|
||||||
containers:
|
containers:
|
||||||
- name: controller
|
- name: controller
|
||||||
image: zot.ad.ddupan.top/panxiao81/gitea-dynamic-runner-controller@sha256:1e481726cbcf6da50f1ef61aa5a1b070d2859209329842e954463293c27c0e66
|
image: zot.ad.ddupan.top/panxiao81/gitea-dynamic-runner-controller@sha256:dfbfaf2a7aa5951d1dc4e7f941a8cd05ceb4a860ac1ab23eb8be234861edcb55
|
||||||
imagePullPolicy: IfNotPresent
|
imagePullPolicy: IfNotPresent
|
||||||
command: [/venv/bin/gitea-dynamic-runner-opensandbox-identity]
|
command: [/venv/bin/gitea-dynamic-runner-opensandbox-identity]
|
||||||
resources:
|
resources:
|
||||||
|
|||||||
@@ -51,7 +51,10 @@ spec:
|
|||||||
image: zot.ad.ddupan.top/panxiao81/gitea-dynamic-runner-runner@sha256:a45875fd2d0e67429b0b7bc3914735581669c705bb4e1a05d712134d2bceb86f
|
image: zot.ad.ddupan.top/panxiao81/gitea-dynamic-runner-runner@sha256:a45875fd2d0e67429b0b7bc3914735581669c705bb4e1a05d712134d2bceb86f
|
||||||
imagePullPolicy: IfNotPresent
|
imagePullPolicy: IfNotPresent
|
||||||
command: [/opt/opensandbox/task-executor]
|
command: [/opt/opensandbox/task-executor]
|
||||||
args: [-listen-addr=0.0.0.0:5758, -log-dir=/tmp]
|
args:
|
||||||
|
- -listen-addr=0.0.0.0:5758
|
||||||
|
- -log-dir=/tmp
|
||||||
|
- -data-dir=/tmp/tasks
|
||||||
env:
|
env:
|
||||||
- name: SANDBOX_MAIN_CONTAINER
|
- name: SANDBOX_MAIN_CONTAINER
|
||||||
value: sandbox
|
value: sandbox
|
||||||
@@ -198,7 +201,10 @@ spec:
|
|||||||
image: zot.ad.ddupan.top/panxiao81/gitea-dynamic-runner-runner@sha256:a45875fd2d0e67429b0b7bc3914735581669c705bb4e1a05d712134d2bceb86f
|
image: zot.ad.ddupan.top/panxiao81/gitea-dynamic-runner-runner@sha256:a45875fd2d0e67429b0b7bc3914735581669c705bb4e1a05d712134d2bceb86f
|
||||||
imagePullPolicy: IfNotPresent
|
imagePullPolicy: IfNotPresent
|
||||||
command: [/opt/opensandbox/task-executor]
|
command: [/opt/opensandbox/task-executor]
|
||||||
args: [-listen-addr=0.0.0.0:5758, -log-dir=/tmp]
|
args:
|
||||||
|
- -listen-addr=0.0.0.0:5758
|
||||||
|
- -log-dir=/tmp
|
||||||
|
- -data-dir=/tmp/tasks
|
||||||
env:
|
env:
|
||||||
- name: SANDBOX_MAIN_CONTAINER
|
- name: SANDBOX_MAIN_CONTAINER
|
||||||
value: sandbox
|
value: sandbox
|
||||||
|
|||||||
@@ -66,6 +66,12 @@ spire-server:
|
|||||||
clusters:
|
clusters:
|
||||||
sandbox:
|
sandbox:
|
||||||
kubeConfigName: sandbox-controller
|
kubeConfigName: sandbox-controller
|
||||||
|
# Dynamic OpenSandbox runner identities are exact Pod-UID-bound
|
||||||
|
# ClusterStaticEntries created in the sandbox cluster. The chart
|
||||||
|
# defaults this reconciler to false, so enable the central registration
|
||||||
|
# path explicitly.
|
||||||
|
reconcile:
|
||||||
|
clusterStaticEntries: true
|
||||||
bundlePublisher:
|
bundlePublisher:
|
||||||
externalK8sConfigMap:
|
externalK8sConfigMap:
|
||||||
enabled: true
|
enabled: true
|
||||||
|
|||||||
Reference in New Issue
Block a user