uds-capability-gitlab-runner
Platform One Gitlab Runner deployed via flux
Prerequisites
General
- Gitlab is deployed and running in the cluster
- Create
gitlab-runner-sandbox
namespace
- Label
gitlab-runner-sandbox
namespace with istio-injection: enabled
& zarf.dev/agent: ignore
- Create an
rbac
file for the gitlab-runner
service account
- Replace zarf-created
ImagePullSecret
- See below
ImagePullSecret
By default Zarf will create an ImagePullSecret
in any new namespace in the cluster called private-registry
. Since
we have specified that the gitlab-runner-sandbox
namespace will not be using the zarf registry that secret must be deleted.
However, the CI job pods will still require one that has the required credentials for where you expect your users to want to pull
CI images from.
- Delete the
secret
called private-registry
in the gitlab-runner-sandbox
namespace
- Create an
ImagePullSecret
type secret
called private-registry
in the gitlab-runner-sandbox
with the credentials required
kubectl create secret generic private-registry --from-file=$(printf ~/.docker/config.json) --type=kubernetes.io/dockerconfigjson -n gitlab-runner-sandbox
RBAC file
- The
rbac.yaml
should create a ClusterRole
with the name gitlab-runner-sandbox
and the following values:
kind: ClusterRole
apiVersion: rbac.authorization.k8s.io/v1
metadata:
name: gitlab-runner-sandbox
rules:
- apiGroups: [""]
resources: ["configmaps", "pods", "pods/attach", "secrets", "services"]
verbs: ["get", "list", "watch", "create", "patch", "update", "delete"]
- apiGroups: [""]
resources: ["pods/exec"]
verbs: ["create", "patch", "delete"]
- The
ClusterRole
should then be bound using a RoleBinding
in the gitlab-runner-sandbox
namespace to the service account that gitlab-runner
uses
example:
kind: RoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
name: gitlab-runner-sandbox
namespace: gitlab-runner-sandbox
subjects:
- kind: ServiceAccount
name: default
namespace: gitlab-runner
roleRef:
apiGroup: ""
kind: ClusterRole
name: gitlab-runner-sandbox
Deploy
Use zarf to login to the needed registries i.e. registry1.dso.mil and ghcr.io
# Download Zarf
make build/zarf
# Login to the registry
set +o history
# registry1.dso.mil (To access registry1 images needed during build time)
export REGISTRY1_USERNAME="YOUR-USERNAME-HERE"
export REGISTRY1_TOKEN="YOUR-TOKEN-HERE"
echo $REGISTRY1_TOKEN | build/zarf tools registry login registry1.dso.mil --username $REGISTRY1_USERNAME --password-stdin
set -o history
Build and Deploy Everything via Makefile and local package
# This will run make build/all, make cluster/reset, and make deploy/all. Follow the breadcrumbs in the Makefile to see what and how its doing it.
make all
Declare This Package In Your UDS Bundle
Below is an example of how to use this projects zarf package in your UDS Bundle
kind: UDSBundle
metadata:
name: example-bundle
description: An Example UDS Bundle
version: 0.0.1
architecture: amd64
zarf-packages:
# Gitlab Runner
- name: gitlab-runner
repository: ghcr.io/defenseunicorns/uds-capability/gitlab-runner
ref: x.x.x