Skip to content

Instantly share code, notes, and snippets.

@jonico
Last active April 29, 2021 15:45
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save jonico/e9268b6d63174599ef463bca81b9af4b to your computer and use it in GitHub Desktop.
Save jonico/e9268b6d63174599ef463bca81b9af4b to your computer and use it in GitHub Desktop.
Example of a GitHub Action runner pod managed by summerwind/actions-runner-controller that was successfully tested with container and services keywords in action workflow files
apiVersion: v1
items:
- apiVersion: v1
kind: Pod
metadata:
creationTimestamp: "2021-04-29T15:09:09Z"
labels:
pod-template-hash: 65f67dcb66
runner-deployment-name: actions-runner-deployment-epona
runner-template-hash: 6788f4694c
managedFields:
- apiVersion: v1
fieldsType: FieldsV1
fieldsV1:
f:metadata:
f:labels:
.: {}
f:pod-template-hash: {}
f:runner-deployment-name: {}
f:runner-template-hash: {}
f:ownerReferences:
.: {}
k:{"uid":"707d0cfe-b302-4466-a564-f82002a023b3"}:
.: {}
f:apiVersion: {}
f:blockOwnerDeletion: {}
f:controller: {}
f:kind: {}
f:name: {}
f:uid: {}
f:spec:
f:containers:
k:{"name":"docker"}:
.: {}
f:env:
.: {}
k:{"name":"DOCKER_TLS_CERTDIR"}:
.: {}
f:name: {}
f:value: {}
f:image: {}
f:imagePullPolicy: {}
f:name: {}
f:resources: {}
f:securityContext:
.: {}
f:privileged: {}
f:terminationMessagePath: {}
f:terminationMessagePolicy: {}
f:volumeMounts:
.: {}
k:{"mountPath":"/certs/client"}:
.: {}
f:mountPath: {}
f:name: {}
k:{"mountPath":"/runner"}:
.: {}
f:mountPath: {}
f:name: {}
k:{"mountPath":"/runner/_work"}:
.: {}
f:mountPath: {}
f:name: {}
k:{"name":"runner"}:
.: {}
f:env:
.: {}
k:{"name":"DOCKER_CERT_PATH"}:
.: {}
f:name: {}
f:value: {}
k:{"name":"DOCKER_HOST"}:
.: {}
f:name: {}
f:value: {}
k:{"name":"DOCKER_TLS_VERIFY"}:
.: {}
f:name: {}
f:value: {}
k:{"name":"DOCKERD_IN_RUNNER"}:
.: {}
f:name: {}
f:value: {}
k:{"name":"GITHUB_URL"}:
.: {}
f:name: {}
f:value: {}
k:{"name":"RUNNER_ENTERPRISE"}:
.: {}
f:name: {}
k:{"name":"RUNNER_GROUP"}:
.: {}
f:name: {}
f:value: {}
k:{"name":"RUNNER_LABELS"}:
.: {}
f:name: {}
f:value: {}
k:{"name":"RUNNER_NAME"}:
.: {}
f:name: {}
f:value: {}
k:{"name":"RUNNER_ORG"}:
.: {}
f:name: {}
f:value: {}
k:{"name":"RUNNER_REPO"}:
.: {}
f:name: {}
k:{"name":"RUNNER_TOKEN"}:
.: {}
f:name: {}
f:value: {}
k:{"name":"RUNNER_WORKDIR"}:
.: {}
f:name: {}
f:value: {}
f:image: {}
f:imagePullPolicy: {}
f:name: {}
f:resources:
.: {}
f:limits:
.: {}
f:cpu: {}
f:memory: {}
f:requests:
.: {}
f:cpu: {}
f:memory: {}
f:securityContext: {}
f:terminationMessagePath: {}
f:terminationMessagePolicy: {}
f:volumeMounts:
.: {}
k:{"mountPath":"/certs/client"}:
.: {}
f:mountPath: {}
f:name: {}
f:readOnly: {}
k:{"mountPath":"/runner"}:
.: {}
f:mountPath: {}
f:name: {}
k:{"mountPath":"/runner/_work"}:
.: {}
f:mountPath: {}
f:name: {}
f:dnsPolicy: {}
f:enableServiceLinks: {}
f:restartPolicy: {}
f:schedulerName: {}
f:securityContext: {}
f:terminationGracePeriodSeconds: {}
f:tolerations: {}
f:volumes:
.: {}
k:{"name":"certs-client"}:
.: {}
f:emptyDir: {}
f:name: {}
k:{"name":"runner"}:
.: {}
f:emptyDir: {}
f:name: {}
k:{"name":"work"}:
.: {}
f:emptyDir: {}
f:name: {}
manager: manager
operation: Update
time: "2021-04-29T15:09:09Z"
- apiVersion: v1
fieldsType: FieldsV1
fieldsV1:
f:status:
f:conditions:
k:{"type":"ContainersReady"}:
.: {}
f:lastProbeTime: {}
f:lastTransitionTime: {}
f:status: {}
f:type: {}
k:{"type":"Initialized"}:
.: {}
f:lastProbeTime: {}
f:lastTransitionTime: {}
f:status: {}
f:type: {}
k:{"type":"Ready"}:
.: {}
f:lastProbeTime: {}
f:lastTransitionTime: {}
f:status: {}
f:type: {}
f:containerStatuses: {}
f:hostIP: {}
f:phase: {}
f:podIP: {}
f:podIPs:
.: {}
k:{"ip":"10.42.2.172"}:
.: {}
f:ip: {}
f:startTime: {}
manager: k3s
operation: Update
time: "2021-04-29T15:09:14Z"
name: actions-runner-deployment-epona-k4sr5-db75q
namespace: github-actions-runner-epona
ownerReferences:
- apiVersion: actions.summerwind.dev/v1alpha1
blockOwnerDeletion: true
controller: true
kind: Runner
name: actions-runner-deployment-epona-k4sr5-db75q
uid: 707d0cfe-b302-4466-a564-f82002a023b3
resourceVersion: "1289114"
selfLink: /api/v1/namespaces/github-actions-runner-epona/pods/actions-runner-deployment-epona-k4sr5-db75q
uid: f01fa46a-ab8b-4593-b073-a4130f5912ca
spec:
containers:
- env:
- name: RUNNER_NAME
value: actions-runner-deployment-epona-k4sr5-db75q
- name: RUNNER_ORG
value: Hyrule
- name: RUNNER_REPO
- name: RUNNER_ENTERPRISE
- name: RUNNER_LABELS
value: epona,kubernetes
- name: RUNNER_GROUP
value: default
- name: RUNNER_TOKEN
value: redacted
- name: DOCKERD_IN_RUNNER
value: "false"
- name: GITHUB_URL
value: https://octodemo.com/
- name: RUNNER_WORKDIR
value: /runner/_work
- name: DOCKER_HOST
value: tcp://localhost:2376
- name: DOCKER_TLS_VERIFY
value: "1"
- name: DOCKER_CERT_PATH
value: /certs/client
image: jonico/actions-runner:latest
imagePullPolicy: Always
name: runner
resources:
limits:
cpu: "1"
memory: 1Gi
requests:
cpu: 200m
memory: 128Mi
securityContext: {}
terminationMessagePath: /dev/termination-log
terminationMessagePolicy: File
volumeMounts:
- mountPath: /runner
name: runner
- mountPath: /runner/_work
name: work
- mountPath: /certs/client
name: certs-client
readOnly: true
- mountPath: /var/run/secrets/kubernetes.io/serviceaccount
name: default-token-b7bxp
readOnly: true
- env:
- name: DOCKER_TLS_CERTDIR
value: /certs
image: docker:dind
imagePullPolicy: IfNotPresent
name: docker
resources: {}
securityContext:
privileged: true
terminationMessagePath: /dev/termination-log
terminationMessagePolicy: File
volumeMounts:
- mountPath: /runner/_work
name: work
- mountPath: /runner
name: runner
- mountPath: /certs/client
name: certs-client
- mountPath: /var/run/secrets/kubernetes.io/serviceaccount
name: default-token-b7bxp
readOnly: true
dnsPolicy: ClusterFirst
enableServiceLinks: true
nodeName: node64-1
preemptionPolicy: PreemptLowerPriority
priority: 0
restartPolicy: OnFailure
schedulerName: default-scheduler
securityContext: {}
serviceAccount: default
serviceAccountName: default
terminationGracePeriodSeconds: 30
tolerations:
- effect: NoExecute
key: node.kubernetes.io/unreachable
operator: Exists
tolerationSeconds: 10
- effect: NoExecute
key: node.kubernetes.io/not-ready
operator: Exists
tolerationSeconds: 300
volumes:
- emptyDir: {}
name: runner
- emptyDir: {}
name: work
- emptyDir: {}
name: certs-client
- name: default-token-b7bxp
secret:
defaultMode: 420
secretName: default-token-b7bxp
status:
conditions:
- lastProbeTime: null
lastTransitionTime: "2021-04-29T15:09:09Z"
status: "True"
type: Initialized
- lastProbeTime: null
lastTransitionTime: "2021-04-29T15:09:14Z"
status: "True"
type: Ready
- lastProbeTime: null
lastTransitionTime: "2021-04-29T15:09:14Z"
status: "True"
type: ContainersReady
- lastProbeTime: null
lastTransitionTime: "2021-04-29T15:09:09Z"
status: "True"
type: PodScheduled
containerStatuses:
- containerID: containerd://9a109842e778112da5212f7844dac4f5eea2ed88a49a9ac453e41af801f350a9
image: docker.io/library/docker:dind
imageID: docker.io/library/docker@sha256:9398e00a10c16fb3b98c77d452708702e790fd41c725b9b89de26352bea7fdce
lastState: {}
name: docker
ready: true
restartCount: 0
started: true
state:
running:
startedAt: "2021-04-29T15:09:14Z"
- containerID: containerd://b7818b9bb39add9364b45a8a3267eb2f61303e723ec71882fae44a894ced3036
image: docker.io/jonico/actions-runner:latest
imageID: docker.io/jonico/actions-runner@sha256:5b498da7c5a2008ce6148b595eb836b2510ce70cf6072b1ce96e4a9516e94fb3
lastState: {}
name: runner
ready: true
restartCount: 0
started: true
state:
running:
startedAt: "2021-04-29T15:09:13Z"
hostIP: 10.0.0.8
phase: Running
podIP: 10.42.2.172
podIPs:
- ip: 10.42.2.172
qosClass: Burstable
startTime: "2021-04-29T15:09:09Z"
kind: List
metadata:
resourceVersion: ""
selfLink: ""
name: Hello World Docker & Service
on:
workflow_dispatch:
jobs:
helloworld:
container: jonico/actions-runner:latest
name: Hello World
services:
redis:
image: redis
ports:
- 6379:6379
options: --entrypoint redis-server
runs-on: epona
steps:
- name: Say Hello
run: echo Hello World
- name: Redis ping
timeout-minutes: 1
run: echo PING | nc redis ${{ job.services.redis.ports[6379] }}
apiVersion: v1
items:
- apiVersion: actions.summerwind.dev/v1alpha1
kind: RunnerDeployment
metadata:
annotations:
kubectl.kubernetes.io/last-applied-configuration: |
{"apiVersion":"actions.summerwind.dev/v1alpha1","kind":"RunnerDeployment","metadata":{"annotations":{},"labels":{"environment":"epona"},"name":"actions-runner-deployment-epona","namespace":"github-actions-runner-epona"},"spec":{"template":{"spec":{"dockerEnabled":true,"group":"default","image":"jonico/actions-runner:latest","labels":["epona","kubernetes"],"organization":"Hyrule","resources":{"limits":{"cpu":"1000m","memory":"1Gi"},"requests":{"cpu":"50m","memory":"128Mi"}},"tolerations":[{"effect":"NoExecute","key":"node.kubernetes.io/unreachable","operator":"Exists","tolerationSeconds":10}]}}}}
creationTimestamp: "2021-02-21T23:13:32Z"
generation: 44
labels:
environment: epona
managedFields:
- apiVersion: actions.summerwind.dev/v1alpha1
fieldsType: FieldsV1
fieldsV1:
f:metadata:
f:annotations:
.: {}
f:kubectl.kubernetes.io/last-applied-configuration: {}
f:labels:
.: {}
f:environment: {}
f:spec:
.: {}
f:template:
.: {}
f:spec:
.: {}
f:dockerEnabled: {}
f:group: {}
f:image: {}
f:labels: {}
f:organization: {}
f:resources:
.: {}
f:limits:
.: {}
f:cpu: {}
f:memory: {}
f:requests:
.: {}
f:memory: {}
f:tolerations: {}
manager: kubectl-client-side-apply
operation: Update
time: "2021-02-21T23:13:31Z"
- apiVersion: actions.summerwind.dev/v1alpha1
fieldsType: FieldsV1
fieldsV1:
f:spec:
f:replicas: {}
f:status:
.: {}
f:availableReplicas: {}
f:readyReplicas: {}
manager: manager
operation: Update
time: "2021-02-21T23:27:10Z"
- apiVersion: actions.summerwind.dev/v1alpha1
fieldsType: FieldsV1
fieldsV1:
f:spec:
f:template:
f:spec:
f:resources:
f:requests:
f:cpu: {}
manager: kubectl-edit
operation: Update
time: "2021-03-21T22:09:48Z"
name: actions-runner-deployment-epona
namespace: github-actions-runner-epona
resourceVersion: "1287341"
selfLink: /apis/actions.summerwind.dev/v1alpha1/namespaces/github-actions-runner-epona/runnerdeployments/actions-runner-deployment-epona
uid: 504f93dc-7206-417a-9943-ba7ee5bb9697
spec:
replicas: 1
selector: null
template:
metadata:
creationTimestamp: null
spec:
dockerEnabled: true
dockerdContainerResources: {}
group: default
image: jonico/actions-runner:latest
labels:
- epona
- kubernetes
organization: Hyrule
resources:
limits:
cpu: "1"
memory: 1Gi
requests:
cpu: 200m
memory: 128Mi
tolerations:
- effect: NoExecute
key: node.kubernetes.io/unreachable
operator: Exists
tolerationSeconds: 10
kind: List
metadata:
resourceVersion: ""
selfLink: ""
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment