add docs to setup auth for kube-registry
This commit is contained in:
		
							
								
								
									
										92
									
								
								cluster/addons/registry/auth/README.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										92
									
								
								cluster/addons/registry/auth/README.md
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,92 @@
 | 
			
		||||
# Enable Authentication with Htpasswd for Kube-Registry 
 | 
			
		||||
 | 
			
		||||
Docker registry support a few authentication providers. Full list of supported provider can be found [here](https://docs.docker.com/registry/configuration/#auth). This document describes how to enable authentication with htpasswd for kube-registry. 
 | 
			
		||||
 | 
			
		||||
### Prepare Htpasswd Secret
 | 
			
		||||
 | 
			
		||||
Please generate your own htpasswd file. Assuming the file you generated is `htpasswd`. 
 | 
			
		||||
Creating secret to hold htpasswd...
 | 
			
		||||
```console
 | 
			
		||||
$ kubectl --namespace=kube-system create secret generic registry-auth-secret --from-file=htpasswd=htpasswd
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
### Run Registry
 | 
			
		||||
 | 
			
		||||
Please be noted that this sample rc is using emptyDir as storage backend for simplicity. 
 | 
			
		||||
 | 
			
		||||
<!-- BEGIN MUNGE: EXAMPLE registry-auth-rc.yaml -->
 | 
			
		||||
```yaml
 | 
			
		||||
apiVersion: v1
 | 
			
		||||
kind: ReplicationController
 | 
			
		||||
metadata:
 | 
			
		||||
  name: kube-registry-v0
 | 
			
		||||
  namespace: kube-system
 | 
			
		||||
  labels:
 | 
			
		||||
    k8s-app: kube-registry
 | 
			
		||||
    version: v0
 | 
			
		||||
#    kubernetes.io/cluster-service: "true"
 | 
			
		||||
spec:
 | 
			
		||||
  replicas: 1
 | 
			
		||||
  selector:
 | 
			
		||||
    k8s-app: kube-registry
 | 
			
		||||
    version: v0
 | 
			
		||||
  template:
 | 
			
		||||
    metadata:
 | 
			
		||||
      labels:
 | 
			
		||||
        k8s-app: kube-registry
 | 
			
		||||
        version: v0
 | 
			
		||||
#        kubernetes.io/cluster-service: "true"
 | 
			
		||||
    spec:
 | 
			
		||||
      containers:
 | 
			
		||||
      - name: registry
 | 
			
		||||
        image: registry:2
 | 
			
		||||
        resources:
 | 
			
		||||
          # keep request = limit to keep this container in guaranteed class
 | 
			
		||||
          limits:
 | 
			
		||||
            cpu: 100m
 | 
			
		||||
            memory: 100Mi
 | 
			
		||||
          requests:
 | 
			
		||||
            cpu: 100m
 | 
			
		||||
            memory: 100Mi
 | 
			
		||||
        env:
 | 
			
		||||
        - name: REGISTRY_HTTP_ADDR
 | 
			
		||||
          value: :5000
 | 
			
		||||
        - name: REGISTRY_STORAGE_FILESYSTEM_ROOTDIRECTORY
 | 
			
		||||
          value: /var/lib/registry
 | 
			
		||||
        - name: REGISTRY_AUTH_HTPASSWD_REALM
 | 
			
		||||
          value: basic_realm
 | 
			
		||||
        - name: REGISTRY_AUTH_HTPASSWD_PATH
 | 
			
		||||
          value: /auth/htpasswd
 | 
			
		||||
        volumeMounts:
 | 
			
		||||
        - name: image-store
 | 
			
		||||
          mountPath: /var/lib/registry
 | 
			
		||||
        - name: auth-dir
 | 
			
		||||
          mountPath: /auth
 | 
			
		||||
        ports:
 | 
			
		||||
        - containerPort: 5000
 | 
			
		||||
          name: registry
 | 
			
		||||
          protocol: TCP
 | 
			
		||||
      volumes:
 | 
			
		||||
      - name: image-store
 | 
			
		||||
        emptyDir: {}
 | 
			
		||||
      - name: auth-dir
 | 
			
		||||
        secret:
 | 
			
		||||
          secretName: registry-auth-secret
 | 
			
		||||
```
 | 
			
		||||
<!-- END MUNGE: EXAMPLE registry-auth-rc.yaml -->
 | 
			
		||||
 | 
			
		||||
No changes are needed for other components (kube-registry service and proxy). 
 | 
			
		||||
 | 
			
		||||
### To Verify
 | 
			
		||||
 | 
			
		||||
Setup proxy or port-forwarding to the kube-registry. Image push/pull should fail without authentication. Then use `docker login` to authenticate with kube-registry and see if it works.
 | 
			
		||||
 | 
			
		||||
### Configure Nodes to Authenticate with Kube-Registry
 | 
			
		||||
 | 
			
		||||
By default, nodes assume no authentication is required by kube-registry. Without authentication, nodes cannot pull images from kube-registry. To solve this, more documentation can be found [Here](https://github.com/kubernetes/kubernetes/blob/master/docs/user-guide/images.md#configuring-nodes-to-authenticate-to-a-private-repository)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
[]()
 | 
			
		||||
							
								
								
									
										56
									
								
								cluster/addons/registry/auth/registry-auth-rc.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										56
									
								
								cluster/addons/registry/auth/registry-auth-rc.yaml
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,56 @@
 | 
			
		||||
apiVersion: v1
 | 
			
		||||
kind: ReplicationController
 | 
			
		||||
metadata:
 | 
			
		||||
  name: kube-registry-v0
 | 
			
		||||
  namespace: kube-system
 | 
			
		||||
  labels:
 | 
			
		||||
    k8s-app: kube-registry
 | 
			
		||||
    version: v0
 | 
			
		||||
#    kubernetes.io/cluster-service: "true"
 | 
			
		||||
spec:
 | 
			
		||||
  replicas: 1
 | 
			
		||||
  selector:
 | 
			
		||||
    k8s-app: kube-registry
 | 
			
		||||
    version: v0
 | 
			
		||||
  template:
 | 
			
		||||
    metadata:
 | 
			
		||||
      labels:
 | 
			
		||||
        k8s-app: kube-registry
 | 
			
		||||
        version: v0
 | 
			
		||||
#        kubernetes.io/cluster-service: "true"
 | 
			
		||||
    spec:
 | 
			
		||||
      containers:
 | 
			
		||||
      - name: registry
 | 
			
		||||
        image: registry:2
 | 
			
		||||
        resources:
 | 
			
		||||
          # keep request = limit to keep this container in guaranteed class
 | 
			
		||||
          limits:
 | 
			
		||||
            cpu: 100m
 | 
			
		||||
            memory: 100Mi
 | 
			
		||||
          requests:
 | 
			
		||||
            cpu: 100m
 | 
			
		||||
            memory: 100Mi
 | 
			
		||||
        env:
 | 
			
		||||
        - name: REGISTRY_HTTP_ADDR
 | 
			
		||||
          value: :5000
 | 
			
		||||
        - name: REGISTRY_STORAGE_FILESYSTEM_ROOTDIRECTORY
 | 
			
		||||
          value: /var/lib/registry
 | 
			
		||||
        - name: REGISTRY_AUTH_HTPASSWD_REALM
 | 
			
		||||
          value: basic_realm
 | 
			
		||||
        - name: REGISTRY_AUTH_HTPASSWD_PATH
 | 
			
		||||
          value: /auth/htpasswd
 | 
			
		||||
        volumeMounts:
 | 
			
		||||
        - name: image-store
 | 
			
		||||
          mountPath: /var/lib/registry
 | 
			
		||||
        - name: auth-dir
 | 
			
		||||
          mountPath: /auth
 | 
			
		||||
        ports:
 | 
			
		||||
        - containerPort: 5000
 | 
			
		||||
          name: registry
 | 
			
		||||
          protocol: TCP
 | 
			
		||||
      volumes:
 | 
			
		||||
      - name: image-store
 | 
			
		||||
        emptyDir: {}
 | 
			
		||||
      - name: auth-dir
 | 
			
		||||
        secret:
 | 
			
		||||
          secretName: registry-auth-secret
 | 
			
		||||
		Reference in New Issue
	
	Block a user