From 42ac5d2bd934214d465be2157855c52226507fb2 Mon Sep 17 00:00:00 2001 From: Minhan Xia Date: Fri, 15 Jan 2016 17:04:47 -0800 Subject: [PATCH] add docs about running private registry with gcs --- cluster/addons/registry/README.md | 2 +- cluster/addons/registry/gcs/README.md | 81 +++++++++++++++++++ .../addons/registry/gcs/registry-gcs-rc.yaml | 52 ++++++++++++ 3 files changed, 134 insertions(+), 1 deletion(-) create mode 100644 cluster/addons/registry/gcs/README.md create mode 100644 cluster/addons/registry/gcs/registry-gcs-rc.yaml diff --git a/cluster/addons/registry/README.md b/cluster/addons/registry/README.md index 80a90df3c8f..3de7484be6d 100644 --- a/cluster/addons/registry/README.md +++ b/cluster/addons/registry/README.md @@ -235,7 +235,7 @@ running Pod: ```console $ POD=$(kubectl get pods --namespace kube-system -l k8s-app=kube-registry \ - -o template--template '{{range .items}}{{.metadata.name}} {{.status.phase}}{{"\n"}}{{end}}' \ + -o template --template '{{range .items}}{{.metadata.name}} {{.status.phase}}{{"\n"}}{{end}}' \ | grep Running | head -1 | cut -f1 -d' ') $ kubectl port-forward --namespace kube-system $POD 5000:5000 & diff --git a/cluster/addons/registry/gcs/README.md b/cluster/addons/registry/gcs/README.md new file mode 100644 index 00000000000..5706a848f8d --- /dev/null +++ b/cluster/addons/registry/gcs/README.md @@ -0,0 +1,81 @@ +# Kube-Registry with GCS storage backend + +Besides local file system, docker registry also supports a number of cloud storage backends. Full list of supported backend can be found [here](https://docs.docker.com/registry/configuration/#storage). This document describes how to enable GCS for kube-registry as storage backend. + +A few preparation steps are needed. + 1. Create a bucket named kube-registry in GCS. + 1. Create a service account for GCS access and create key file in json format. Detail instruction can be found [here](https://cloud.google.com/storage/docs/authentication#service_accounts). + + +### Pack Keyfile into a Secret + +Assuming you have downloaded the keyfile as `keyfile.json`. Create secret with the `keyfile.json`... +```console +$ kubectl --namespace=kube-system create secret generic gcs-key-secret --from-file=keyfile=keyfile.json +``` + + +### Run Registry + + +```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 + value: gcs + - name: REGISTRY_STORAGE_GCS_BUCKET + value: kube-registry + - name: REGISTRY_STORAGE_GCS_KEYFILE + value: /gcs/keyfile + ports: + - containerPort: 5000 + name: registry + protocol: TCP + volumeMounts: + - name: gcs-key + mountPath: /gcs + volumes: + - name: gcs-key + secret: + secretName: gcs-key-secret +``` + + + +No changes are needed for other components (kube-registry service and proxy). + + +[![Analytics](https://kubernetes-site.appspot.com/UA-36037335-10/GitHub/cluster/addons/registry/gcs/README.md?pixel)]() diff --git a/cluster/addons/registry/gcs/registry-gcs-rc.yaml b/cluster/addons/registry/gcs/registry-gcs-rc.yaml new file mode 100644 index 00000000000..e6974033564 --- /dev/null +++ b/cluster/addons/registry/gcs/registry-gcs-rc.yaml @@ -0,0 +1,52 @@ +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 + value: gcs + - name: REGISTRY_STORAGE_GCS_BUCKET + value: kube-registry + - name: REGISTRY_STORAGE_GCS_KEYFILE + value: /gcs/keyfile + ports: + - containerPort: 5000 + name: registry + protocol: TCP + volumeMounts: + - name: gcs-key + mountPath: /gcs + volumes: + - name: gcs-key + secret: + secretName: gcs-key-secret