Skip to content

Instantly share code, notes, and snippets.

@kirqe
Created March 9, 2021 15:02
Show Gist options
  • Save kirqe/04ed63846dfd1e7a0020a1955d47b7bc to your computer and use it in GitHub Desktop.
Save kirqe/04ed63846dfd1e7a0020a1955d47b7bc to your computer and use it in GitHub Desktop.
tl;dr k3s private docker registry
sudo apt install apache2-utils
htpasswd -Bc registry.password registry
kubectl create namespace cert-manager
kubectl apply -f https://github.com/jetstack/cert-manager/releases/download/v1.1.1/cert-manager.yaml
kubectl apply -f kube-docker-registry.yaml
kubectl create secret docker-registry regcred \
--docker-server=r.example.org \
--docker-username=<Profile name> \
--docker-password=<password>
Add to enable pulling
imagePullSecrets:
- regcred
apiVersion: cert-manager.io/v1
kind: ClusterIssuer
metadata:
name: letsencrypt-prod
spec:
acme:
email: email@email.com
privateKeySecretRef:
name: prod-issuer-account-key
server: https://acme-v02.api.letsencrypt.org/directory
solvers:
- http01:
ingress:
class: traefik
selector: {}
---
apiVersion: v1
kind: Service
metadata:
name: registry-service
spec:
selector:
app: registry
ports:
- protocol: TCP
port: 5000
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: ingress
annotations:
kubernetes.io/ingress.class: traefik
cert-manager.io/cluster-issuer: letsencrypt-prod
spec:
tls:
- hosts:
- r.example.org
secretName: r-example-org-tls
rules:
- host: r.example.org
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: registry-service
port:
number: 5000
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: registry-persistent-volume-claim
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 5Gi
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: registry
labels:
app: registry
group: registry
spec:
replicas: 1
selector:
matchLabels:
app: registry
template:
metadata:
labels:
app: registry
group: registry
spec:
volumes:
- name: registry
persistentVolumeClaim:
claimName: registry-persistent-volume-claim
- name: htpasswd
secret:
secretName: registry-htpasswd
containers:
- name: registry
image: registry:2
ports:
- containerPort: 5000
volumeMounts:
- name: registry
mountPath: /var/lib/registry
- name: htpasswd
mountPath: /auth
readOnly: true
env:
- name: REGISTRY_AUTH
value: htpasswd
- name: REGISTRY_AUTH_HTPASSWD_REALM
value: "Registry Realm"
- name: REGISTRY_AUTH_HTPASSWD_PATH
value: /auth/htpasswd
- name: REGISTRY_STORAGE_DELETE_ENABLED
value: "true"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment