Files
Minikura/packages/k8s-operator/src/crds/rbac.ts
T

155 lines
3.7 KiB
TypeScript

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