1
0
Fork 0
mirror of https://github.com/imjasonh/git-k8s synced 2026-07-16 20:45:03 +00:00
git-k8s/config/rbac/role.yaml
Claude 8e65104201
Implement Git-as-K8s control plane with Knative controllers
Build a complete Kubernetes control plane for Git operations using Knative's
pkg framework, go-git for in-memory Git operations, and ko for builds.

Architecture:
- 4 CRDs: GitRepository, GitBranch, GitPushTransaction, GitRepoSync
- Push controller: atomic Git push via go-git with CAS (compare-and-swap)
- Sync controller: two-way sync with in-memory merge base calculation
- Resolver controller: automated 3-way merge for conflicted syncs
- In-cluster Gitea server for backing storage
- Full RBAC, ko-based deployments, and code-gen scaffolding

Note: go.sum needs generation via `go mod tidy` in an environment with
full internet access (knative.dev/pkg v0.0.0-20250520014526-44579e9ce5ed).

https://claude.ai/code/session_01QfFzqKQUsxxBsiZUhuJ3pG
2026-02-27 23:58:44 +00:00

101 lines
1.9 KiB
YAML

apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
name: git-k8s-controller
labels:
app.kubernetes.io/name: git-k8s
rules:
# Full access to all git.k8s.io custom resources.
- apiGroups:
- git.k8s.io
resources:
- gitrepositories
- gitbranches
- gitpushtransactions
- gitreposyncs
verbs:
- get
- list
- watch
- create
- update
- patch
- delete
# Status subresource access.
- apiGroups:
- git.k8s.io
resources:
- gitrepositories/status
- gitbranches/status
- gitpushtransactions/status
- gitreposyncs/status
verbs:
- get
- update
- patch
# Read secrets for Git authentication.
- apiGroups:
- ""
resources:
- secrets
verbs:
- get
- list
- watch
# Events for controller status reporting.
- apiGroups:
- ""
resources:
- events
verbs:
- create
- patch
# ConfigMaps for leader election and config.
- apiGroups:
- ""
resources:
- configmaps
verbs:
- get
- list
- watch
- create
- update
- patch
- delete
# Leases for leader election.
- apiGroups:
- coordination.k8s.io
resources:
- leases
verbs:
- get
- list
- watch
- create
- update
- patch
- delete
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: git-k8s-controller
labels:
app.kubernetes.io/name: git-k8s
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: git-k8s-controller
subjects:
- kind: ServiceAccount
name: git-k8s-controller
namespace: git-system
---
apiVersion: v1
kind: ServiceAccount
metadata:
name: git-k8s-controller
namespace: git-system
labels:
app.kubernetes.io/name: git-k8s