2026-02-17 18:12:02 +07:00
|
|
|
import { API_GROUP, NAMESPACE } from "../config/constants";
|
2025-05-12 12:34:09 +07:00
|
|
|
|
|
|
|
|
export const minikuraNamespace = {
|
2026-01-16 12:32:36 +07:00
|
|
|
apiVersion: "v1",
|
|
|
|
|
kind: "Namespace",
|
2025-05-12 12:34:09 +07:00
|
|
|
metadata: {
|
|
|
|
|
name: NAMESPACE,
|
|
|
|
|
},
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
export const minikuraServiceAccount = {
|
2026-01-16 12:32:36 +07:00
|
|
|
apiVersion: "v1",
|
|
|
|
|
kind: "ServiceAccount",
|
2025-05-12 12:34:09 +07:00
|
|
|
metadata: {
|
2026-01-16 12:32:36 +07:00
|
|
|
name: "minikura-operator",
|
2025-05-12 12:34:09 +07:00
|
|
|
namespace: NAMESPACE,
|
|
|
|
|
},
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
export const minikuraClusterRole = {
|
2026-01-16 12:32:36 +07:00
|
|
|
apiVersion: "rbac.authorization.k8s.io/v1",
|
|
|
|
|
kind: "ClusterRole",
|
2025-05-12 12:34:09 +07:00
|
|
|
metadata: {
|
2026-01-16 12:32:36 +07:00
|
|
|
name: "minikura-operator-role",
|
2025-05-12 12:34:09 +07:00
|
|
|
},
|
|
|
|
|
rules: [
|
|
|
|
|
{
|
2026-01-16 12:32:36 +07:00
|
|
|
apiGroups: [""],
|
|
|
|
|
resources: ["configmaps", "services", "secrets"],
|
|
|
|
|
verbs: ["get", "list", "watch", "create", "update", "patch", "delete"],
|
2025-05-12 12:34:09 +07:00
|
|
|
},
|
|
|
|
|
{
|
2026-01-16 12:32:36 +07:00
|
|
|
apiGroups: ["apps"],
|
|
|
|
|
resources: ["deployments", "statefulsets"],
|
|
|
|
|
verbs: ["get", "list", "watch", "create", "update", "patch", "delete"],
|
2025-05-12 12:34:09 +07:00
|
|
|
},
|
|
|
|
|
{
|
2026-01-16 12:32:36 +07:00
|
|
|
apiGroups: ["networking.k8s.io"],
|
|
|
|
|
resources: ["ingresses"],
|
|
|
|
|
verbs: ["get", "list", "watch", "create", "update", "patch", "delete"],
|
2025-05-12 12:34:09 +07:00
|
|
|
},
|
|
|
|
|
{
|
2026-01-16 12:32:36 +07:00
|
|
|
apiGroups: ["apiextensions.k8s.io"],
|
|
|
|
|
resources: ["customresourcedefinitions"],
|
|
|
|
|
verbs: ["get", "list", "watch", "create", "update", "patch", "delete"],
|
2025-05-12 12:34:09 +07:00
|
|
|
},
|
|
|
|
|
{
|
2026-02-17 18:12:02 +07:00
|
|
|
apiGroups: [API_GROUP],
|
2026-01-16 12:32:36 +07:00
|
|
|
resources: ["minecraftservers", "velocityproxies"],
|
|
|
|
|
verbs: ["get", "list", "watch", "create", "update", "patch", "delete"],
|
2025-05-12 12:34:09 +07:00
|
|
|
},
|
|
|
|
|
{
|
2026-02-17 18:12:02 +07:00
|
|
|
apiGroups: [API_GROUP],
|
2026-01-16 12:32:36 +07:00
|
|
|
resources: ["minecraftservers/status", "velocityproxies/status"],
|
|
|
|
|
verbs: ["get", "update", "patch"],
|
2025-05-12 12:34:09 +07:00
|
|
|
},
|
|
|
|
|
],
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
export const minikuraClusterRoleBinding = {
|
2026-01-16 12:32:36 +07:00
|
|
|
apiVersion: "rbac.authorization.k8s.io/v1",
|
|
|
|
|
kind: "ClusterRoleBinding",
|
2025-05-12 12:34:09 +07:00
|
|
|
metadata: {
|
2026-01-16 12:32:36 +07:00
|
|
|
name: "minikura-operator-role-binding",
|
2025-05-12 12:34:09 +07:00
|
|
|
},
|
|
|
|
|
subjects: [
|
|
|
|
|
{
|
2026-01-16 12:32:36 +07:00
|
|
|
kind: "ServiceAccount",
|
|
|
|
|
name: "minikura-operator",
|
2025-05-12 12:34:09 +07:00
|
|
|
namespace: NAMESPACE,
|
|
|
|
|
},
|
|
|
|
|
],
|
|
|
|
|
roleRef: {
|
2026-01-16 12:32:36 +07:00
|
|
|
kind: "ClusterRole",
|
|
|
|
|
name: "minikura-operator-role",
|
|
|
|
|
apiGroup: "rbac.authorization.k8s.io",
|
2025-05-12 12:34:09 +07:00
|
|
|
},
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
export const minikuraOperatorDeployment = {
|
2026-01-16 12:32:36 +07:00
|
|
|
apiVersion: "apps/v1",
|
|
|
|
|
kind: "Deployment",
|
2025-05-12 12:34:09 +07:00
|
|
|
metadata: {
|
2026-01-16 12:32:36 +07:00
|
|
|
name: "minikura-operator",
|
2025-05-12 12:34:09 +07:00
|
|
|
namespace: NAMESPACE,
|
|
|
|
|
},
|
|
|
|
|
spec: {
|
|
|
|
|
replicas: 1,
|
|
|
|
|
selector: {
|
|
|
|
|
matchLabels: {
|
2026-01-16 12:32:36 +07:00
|
|
|
app: "minikura-operator",
|
2025-05-12 12:34:09 +07:00
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
template: {
|
|
|
|
|
metadata: {
|
|
|
|
|
labels: {
|
2026-01-16 12:32:36 +07:00
|
|
|
app: "minikura-operator",
|
2025-05-12 12:34:09 +07:00
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
spec: {
|
2026-01-16 12:32:36 +07:00
|
|
|
serviceAccountName: "minikura-operator",
|
2025-05-12 12:34:09 +07:00
|
|
|
containers: [
|
|
|
|
|
{
|
2026-01-16 12:32:36 +07:00
|
|
|
name: "operator",
|
|
|
|
|
image: "${REGISTRY_URL}/minikura-operator:latest",
|
2025-05-12 12:34:09 +07:00
|
|
|
env: [
|
|
|
|
|
{
|
2026-01-16 12:32:36 +07:00
|
|
|
name: "DATABASE_URL",
|
2025-05-12 12:34:09 +07:00
|
|
|
valueFrom: {
|
|
|
|
|
secretKeyRef: {
|
2026-01-16 12:32:36 +07:00
|
|
|
name: "minikura-operator-secrets",
|
|
|
|
|
key: "DATABASE_URL",
|
2025-05-12 12:34:09 +07:00
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
{
|
2026-01-16 12:32:36 +07:00
|
|
|
name: "KUBERNETES_NAMESPACE",
|
2025-05-12 12:34:09 +07:00
|
|
|
value: NAMESPACE,
|
|
|
|
|
},
|
|
|
|
|
{
|
2026-01-16 12:32:36 +07:00
|
|
|
name: "USE_CRDS",
|
|
|
|
|
value: "true",
|
2025-05-12 12:34:09 +07:00
|
|
|
},
|
|
|
|
|
],
|
|
|
|
|
resources: {
|
|
|
|
|
requests: {
|
2026-01-16 12:32:36 +07:00
|
|
|
memory: "256Mi",
|
|
|
|
|
cpu: "200m",
|
2025-05-12 12:34:09 +07:00
|
|
|
},
|
|
|
|
|
limits: {
|
2026-01-16 12:32:36 +07:00
|
|
|
memory: "512Mi",
|
|
|
|
|
cpu: "500m",
|
2025-05-12 12:34:09 +07:00
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
livenessProbe: {
|
|
|
|
|
exec: {
|
2026-01-16 12:32:36 +07:00
|
|
|
command: ["bun", "-e", "console.log('Health check')"],
|
2025-05-12 12:34:09 +07:00
|
|
|
},
|
|
|
|
|
initialDelaySeconds: 30,
|
|
|
|
|
periodSeconds: 30,
|
|
|
|
|
},
|
|
|
|
|
readinessProbe: {
|
|
|
|
|
exec: {
|
2026-01-16 12:32:36 +07:00
|
|
|
command: ["bun", "-e", "console.log('Ready check')"],
|
2025-05-12 12:34:09 +07:00
|
|
|
},
|
|
|
|
|
initialDelaySeconds: 5,
|
|
|
|
|
periodSeconds: 10,
|
|
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
],
|
|
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
},
|
2026-01-16 12:32:36 +07:00
|
|
|
};
|