apiVersion: v1 kind: PersistentVolumeClaim metadata: name: portage namespace: jenkins-jobs labels: app.kubernetes.io/name: portage app.kubernetes.io/component: gentoo spec: accessModes: - ReadWriteMany resources: requests: storage: 4Gi --- apiVersion: v1 kind: PersistentVolumeClaim metadata: name: binpkgs namespace: jenkins-jobs labels: app.kubernetes.io/name: binpkgs app.kubernetes.io/component: gentoo spec: accessModes: - ReadWriteMany resources: requests: storage: 10Gi --- apiVersion: v1 kind: ConfigMap metadata: name: gentoo-dist namespace: jenkins-jobs labels: app.kubernetes.io/name: gentoo-dist app.kubernetes.io/component: gentoo data: rsyncd.conf: |+ [gentoo-portage] path = /var/db/repos/gentoo [binpkgs] path = /var/cache/binpkgs --- apiVersion: v1 kind: Service metadata: name: gentoo-dist namespace: jenkins-jobs spec: selector: app.kubernetes.io/name: gentoo-dist app.kubernetes.io/component: gentoo ports: - name: rsync port: 873 targetPort: rsync type: NodePort --- apiVersion: apps/v1 kind: Deployment metadata: name: gentoo-dist namespace: jenkins-jobs labels: &labels app.kubernetes.io/name: gentoo-dist app.kubernetes.io/component: gentoo spec: selector: matchLabels: *labels template: metadata: labels: *labels spec: containers: - name: rsync image: docker.io/gentoo/stage3 command: - /usr/bin/rsync - --daemon - --no-detach - --port=8873 - --log-file=/dev/stderr ports: - name: rsync containerPort: 8873 securityContext: readOnlyRootFilesystem: true runAsUser: 250 runAsGroup: 250 volumeMounts: - mountPath: /etc/rsyncd.conf name: config subPath: rsyncd.conf - mountPath: /var/db/repos/gentoo name: portage - mountPath: /var/cache/binpkgs name: binpkgs volumes: - name: binpkgs persistentVolumeClaim: claimName: binpkgs - name: config configMap: name: gentoo-dist - name: portage persistentVolumeClaim: claimName: portage --- apiVersion: batch/v1 kind: Job metadata: name: emerge-webrsync namespace: jenkins-jobs labels: app.kubernetes.io/name: emerge-webrsync app.kubernetes.io/component: gentoo spec: template: spec: containers: - name: sync image: docker.io/gentoo/stage3 command: - emerge-webrsync volumeMounts: - mountPath: /var/db/repos/gentoo name: portage restartPolicy: OnFailure volumes: - name: portage persistentVolumeClaim: claimName: portage --- apiVersion: batch/v1 kind: CronJob metadata: name: sync-portage namespace: jenkins-jobs labels: app.kubernetes.io/name: sync-portage app.kubernetes.io/component: gentoo spec: schedule: 4 19 * * * jobTemplate: spec: template: spec: containers: - name: sync image: docker.io/gentoo/stage3 command: - emaint - sync volumeMounts: - mountPath: /var/db/repos/gentoo name: portage restartPolicy: OnFailure volumes: - name: portage persistentVolumeClaim: claimName: portage