{"action":"created","comment":{"url":"https://api.github.com/repos/openshift/origin/pulls/comments/40020838","id":40020838,"diff_hunk":"@@ -193,6 +193,103 @@ Follow these steps to ensure that virtual box interfaces are unmanaged:\n \n     $ sudo nmcli con reload\n \n+=== Develop and test using a docker-in-docker cluster\n+\n+It's possible to run an OpenShift multinode cluster on a single host\n+via docker-in-docker (dind).  Cluster creation is cheaper since each\n+node is a container instead of a VM.  This was implemented primarily\n+to support multinode network testing, but may prove useful for other\n+use cases.\n+\n+To run a dind cluster in a VM, follow steps 1-3 of the Vagrant\n+instructions and then execute the following:\n+\n+        $ export OPENSHIFT_DIND_DEV_CLUSTER=true\n+        $ vagrant up\n+        $ vagrant ssh\n+        $ cd /vagrant\n+        $ hack/dind-cluster.sh start\n+\n+These steps will create a new VM, update its packages, ensure that\n+docker is installed, and launch a new OpenShift dind cluster.  Package\n+installation and the building of the dind image will take some time,\n+but are a one-time cost.  Subsequent cluster launches should be\n+considerably faster.\n+\n+Invoking the dind-cluster.sh script without arguments will provide a\n+usage message:\n+\n+        Usage: hack/dind-cluster.sh {start|stop|restart|build-images|test-net-e2e}\n+\n+By default the cluster will consist of a master and 2 nodes.  The\n+NUM_MINIONS environment variable can be used to override the default\n+of 2 nodes.\n+\n+Once a dind cluster has been launched, it is possible to login to\n+participating containers (openshift-master, openshift-node-1,\n+openshift-node-2, etc) via docker exec:\n+\n+        $ docker exec -ti openshift-master bash\n+\n+While it is possible to manage the OpenShift daemon in the containers\n+(supervisorctl {start,stop,restart} [daemon name]), dind cluster\n+management is fast enough that the suggested approach is to manage at\n+the cluster level instead.\n+\n+Containers are torn down on stop and restart, but the root of the\n+origin repo is mounted to /data in each container to allow for a\n+persistent installation target.\n+\n+It's possible to run these same steps directly on a host that is\n+running docker, but it is not advisable without considering the\n+warnings at the top of the dind-cluster.sh script.\n+\n+==== Testing networking with docker-in-docker\n+\n+It's possible to run networking tests against a running\n+docker-in-docker cluster (i.e. 'hack/dind-cluster.sh start' has\n+already been invoked):\n+\n+        $ hack/dind-cluster.sh test-net-e2e\n+\n+Since a cluster can only be configured with a single network plugin at\n+a time, this method of invoking the networking tests will only\n+validate the active plugin.  It is possible to target all plugins via\n+the following command:\n+\n+        $ test/extended/networking.sh\n+\n+networking.sh creates a new dind cluster for each networking plugin,\n+runs the tests against that cluster, and then tears down the cluster.\n+The test dind clusters are isolated from any user-created clusters,\n+and test output and artifacts of the most recent test run are retained\n+in /tmp/openshift-extended-tests/networking.\n+\n+Whether using dind-cluster.sh or networking.sh to run tests, it's\n+possible to override the default test regexes via the\n+NETWORKING_E2E_FOCUS and NETWORKING_E2E_SKIP environment variables.\n+These variables set the '-focus' and '-skip' arguments supplied to the\n+https://github.com/onsi/ginkgo[ginkgo] test runner.\n+\n+==== Running Kubernetes e2e tests\n+\n+It's possible to target the Kuberntes e2e tests against a running","path":"CONTRIBUTING.adoc","position":84,"original_position":84,"commit_id":"b957aac5b7ac21634681963eccea61263bac7039","original_commit_id":"b957aac5b7ac21634681963eccea61263bac7039","user":{"login":"danwinship","id":96040,"avatar_url":"https://avatars.githubusercontent.com/u/96040?v=3","gravatar_id":"","url":"https://api.github.com/users/danwinship","html_url":"https://github.com/danwinship","followers_url":"https://api.github.com/users/danwinship/followers","following_url":"https://api.github.com/users/danwinship/following{/other_user}","gists_url":"https://api.github.com/users/danwinship/gists{/gist_id}","starred_url":"https://api.github.com/users/danwinship/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/danwinship/subscriptions","organizations_url":"https://api.github.com/users/danwinship/orgs","repos_url":"https://api.github.com/users/danwinship/repos","events_url":"https://api.github.com/users/danwinship/events{/privacy}","received_events_url":"https://api.github.com/users/danwinship/received_events","type":"User","site_admin":false},"body":"typo \"Kuberntes\"\r\n","created_at":"2015-09-21T20:23:25Z","updated_at":"2015-09-21T20:23:25Z","html_url":"https://github.com/openshift/origin/pull/4707#discussion_r40020838","pull_request_url":"https://api.github.com/repos/openshift/origin/pulls/4707","_links":{"self":{"href":"https://api.github.com/repos/openshift/origin/pulls/comments/40020838"},"html":{"href":"https://github.com/openshift/origin/pull/4707#discussion_r40020838"},"pull_request":{"href":"https://api.github.com/repos/openshift/origin/pulls/4707"}}},"pull_request":{"url":"https://api.github.com/repos/openshift/origin/pulls/4707","id":45256995,"html_url":"https://github.com/openshift/origin/pull/4707","diff_url":"https://github.com/openshift/origin/pull/4707.diff","patch_url":"https://github.com/openshift/origin/pull/4707.patch","issue_url":"https://api.github.com/repos/openshift/origin/issues/4707","number":4707,"state":"open","locked":false,"title":"Add dind detail to the contribution doc","user":{"login":"marun","id":451477,"avatar_url":"https://avatars.githubusercontent.com/u/451477?v=3","gravatar_id":"","url":"https://api.github.com/users/marun","html_url":"https://github.com/marun","followers_url":"https://api.github.com/users/marun/followers","following_url":"https://api.github.com/users/marun/following{/other_user}","gists_url":"https://api.github.com/users/marun/gists{/gist_id}","starred_url":"https://api.github.com/users/marun/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/marun/subscriptions","organizations_url":"https://api.github.com/users/marun/orgs","repos_url":"https://api.github.com/users/marun/repos","events_url":"https://api.github.com/users/marun/events{/privacy}","received_events_url":"https://api.github.com/users/marun/received_events","type":"User","site_admin":false},"body":"The contribution doc may not be the best place for this, so placement suggestions are welcome. ","created_at":"2015-09-17T06:48:31Z","updated_at":"2015-09-21T20:23:25Z","closed_at":null,"merged_at":null,"merge_commit_sha":"40002a26533dc9acf5c710b07d004f926caa101e","assignee":null,"milestone":null,"commits_url":"https://api.github.com/repos/openshift/origin/pulls/4707/commits","review_comments_url":"https://api.github.com/repos/openshift/origin/pulls/4707/comments","review_comment_url":"https://api.github.com/repos/openshift/origin/pulls/comments{/number}","comments_url":"https://api.github.com/repos/openshift/origin/issues/4707/comments","statuses_url":"https://api.github.com/repos/openshift/origin/statuses/b957aac5b7ac21634681963eccea61263bac7039","head":{"label":"marun:add-dind-docs","ref":"add-dind-docs","sha":"b957aac5b7ac21634681963eccea61263bac7039","user":{"login":"marun","id":451477,"avatar_url":"https://avatars.githubusercontent.com/u/451477?v=3","gravatar_id":"","url":"https://api.github.com/users/marun","html_url":"https://github.com/marun","followers_url":"https://api.github.com/users/marun/followers","following_url":"https://api.github.com/users/marun/following{/other_user}","gists_url":"https://api.github.com/users/marun/gists{/gist_id}","starred_url":"https://api.github.com/users/marun/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/marun/subscriptions","organizations_url":"https://api.github.com/users/marun/orgs","repos_url":"https://api.github.com/users/marun/repos","events_url":"https://api.github.com/users/marun/events{/privacy}","received_events_url":"https://api.github.com/users/marun/received_events","type":"User","site_admin":false},"repo":{"id":36902865,"name":"origin","full_name":"marun/origin","owner":{"login":"marun","id":451477,"avatar_url":"https://avatars.githubusercontent.com/u/451477?v=3","gravatar_id":"","url":"https://api.github.com/users/marun","html_url":"https://github.com/marun","followers_url":"https://api.github.com/users/marun/followers","following_url":"https://api.github.com/users/marun/following{/other_user}","gists_url":"https://api.github.com/users/marun/gists{/gist_id}","starred_url":"https://api.github.com/users/marun/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/marun/subscriptions","organizations_url":"https://api.github.com/users/marun/orgs","repos_url":"https://api.github.com/users/marun/repos","events_url":"https://api.github.com/users/marun/events{/privacy}","received_events_url":"https://api.github.com/users/marun/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/marun/origin","description":"OpenShift 3 - build, deploy, and manage your applications with Docker and Kubernetes","fork":true,"url":"https://api.github.com/repos/marun/origin","forks_url":"https://api.github.com/repos/marun/origin/forks","keys_url":"https://api.github.com/repos/marun/origin/keys{/key_id}","collaborators_url":"https://api.github.com/repos/marun/origin/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/marun/origin/teams","hooks_url":"https://api.github.com/repos/marun/origin/hooks","issue_events_url":"https://api.github.com/repos/marun/origin/issues/events{/number}","events_url":"https://api.github.com/repos/marun/origin/events","assignees_url":"https://api.github.com/repos/marun/origin/assignees{/user}","branches_url":"https://api.github.com/repos/marun/origin/branches{/branch}","tags_url":"https://api.github.com/repos/marun/origin/tags","blobs_url":"https://api.github.com/repos/marun/origin/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/marun/origin/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/marun/origin/git/refs{/sha}","trees_url":"https://api.github.com/repos/marun/origin/git/trees{/sha}","statuses_url":"https://api.github.com/repos/marun/origin/statuses/{sha}","languages_url":"https://api.github.com/repos/marun/origin/languages","stargazers_url":"https://api.github.com/repos/marun/origin/stargazers","contributors_url":"https://api.github.com/repos/marun/origin/contributors","subscribers_url":"https://api.github.com/repos/marun/origin/subscribers","subscription_url":"https://api.github.com/repos/marun/origin/subscription","commits_url":"https://api.github.com/repos/marun/origin/commits{/sha}","git_commits_url":"https://api.github.com/repos/marun/origin/git/commits{/sha}","comments_url":"https://api.github.com/repos/marun/origin/comments{/number}","issue_comment_url":"https://api.github.com/repos/marun/origin/issues/comments{/number}","contents_url":"https://api.github.com/repos/marun/origin/contents/{+path}","compare_url":"https://api.github.com/repos/marun/origin/compare/{base}...{head}","merges_url":"https://api.github.com/repos/marun/origin/merges","archive_url":"https://api.github.com/repos/marun/origin/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/marun/origin/downloads","issues_url":"https://api.github.com/repos/marun/origin/issues{/number}","pulls_url":"https://api.github.com/repos/marun/origin/pulls{/number}","milestones_url":"https://api.github.com/repos/marun/origin/milestones{/number}","notifications_url":"https://api.github.com/repos/marun/origin/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/marun/origin/labels{/name}","releases_url":"https://api.github.com/repos/marun/origin/releases{/id}","created_at":"2015-06-05T00:21:35Z","updated_at":"2015-06-05T00:21:38Z","pushed_at":"2015-09-17T07:07:43Z","git_url":"git://github.com/marun/origin.git","ssh_url":"git@github.com:marun/origin.git","clone_url":"https://github.com/marun/origin.git","svn_url":"https://github.com/marun/origin","homepage":"http://www.openshift.org","size":138375,"stargazers_count":0,"watchers_count":0,"language":"Go","has_issues":false,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":0,"mirror_url":null,"open_issues_count":0,"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"openshift:master","ref":"master","sha":"c3fec2e778a0d8a856c833c46f09b8d4657151eb","user":{"login":"openshift","id":792337,"avatar_url":"https://avatars.githubusercontent.com/u/792337?v=3","gravatar_id":"","url":"https://api.github.com/users/openshift","html_url":"https://github.com/openshift","followers_url":"https://api.github.com/users/openshift/followers","following_url":"https://api.github.com/users/openshift/following{/other_user}","gists_url":"https://api.github.com/users/openshift/gists{/gist_id}","starred_url":"https://api.github.com/users/openshift/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/openshift/subscriptions","organizations_url":"https://api.github.com/users/openshift/orgs","repos_url":"https://api.github.com/users/openshift/repos","events_url":"https://api.github.com/users/openshift/events{/privacy}","received_events_url":"https://api.github.com/users/openshift/received_events","type":"Organization","site_admin":false},"repo":{"id":22442668,"name":"origin","full_name":"openshift/origin","owner":{"login":"openshift","id":792337,"avatar_url":"https://avatars.githubusercontent.com/u/792337?v=3","gravatar_id":"","url":"https://api.github.com/users/openshift","html_url":"https://github.com/openshift","followers_url":"https://api.github.com/users/openshift/followers","following_url":"https://api.github.com/users/openshift/following{/other_user}","gists_url":"https://api.github.com/users/openshift/gists{/gist_id}","starred_url":"https://api.github.com/users/openshift/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/openshift/subscriptions","organizations_url":"https://api.github.com/users/openshift/orgs","repos_url":"https://api.github.com/users/openshift/repos","events_url":"https://api.github.com/users/openshift/events{/privacy}","received_events_url":"https://api.github.com/users/openshift/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/openshift/origin","description":"OpenShift 3 - build, deploy, and manage your applications with Docker and Kubernetes","fork":false,"url":"https://api.github.com/repos/openshift/origin","forks_url":"https://api.github.com/repos/openshift/origin/forks","keys_url":"https://api.github.com/repos/openshift/origin/keys{/key_id}","collaborators_url":"https://api.github.com/repos/openshift/origin/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/openshift/origin/teams","hooks_url":"https://api.github.com/repos/openshift/origin/hooks","issue_events_url":"https://api.github.com/repos/openshift/origin/issues/events{/number}","events_url":"https://api.github.com/repos/openshift/origin/events","assignees_url":"https://api.github.com/repos/openshift/origin/assignees{/user}","branches_url":"https://api.github.com/repos/openshift/origin/branches{/branch}","tags_url":"https://api.github.com/repos/openshift/origin/tags","blobs_url":"https://api.github.com/repos/openshift/origin/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/openshift/origin/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/openshift/origin/git/refs{/sha}","trees_url":"https://api.github.com/repos/openshift/origin/git/trees{/sha}","statuses_url":"https://api.github.com/repos/openshift/origin/statuses/{sha}","languages_url":"https://api.github.com/repos/openshift/origin/languages","stargazers_url":"https://api.github.com/repos/openshift/origin/stargazers","contributors_url":"https://api.github.com/repos/openshift/origin/contributors","subscribers_url":"https://api.github.com/repos/openshift/origin/subscribers","subscription_url":"https://api.github.com/repos/openshift/origin/subscription","commits_url":"https://api.github.com/repos/openshift/origin/commits{/sha}","git_commits_url":"https://api.github.com/repos/openshift/origin/git/commits{/sha}","comments_url":"https://api.github.com/repos/openshift/origin/comments{/number}","issue_comment_url":"https://api.github.com/repos/openshift/origin/issues/comments{/number}","contents_url":"https://api.github.com/repos/openshift/origin/contents/{+path}","compare_url":"https://api.github.com/repos/openshift/origin/compare/{base}...{head}","merges_url":"https://api.github.com/repos/openshift/origin/merges","archive_url":"https://api.github.com/repos/openshift/origin/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/openshift/origin/downloads","issues_url":"https://api.github.com/repos/openshift/origin/issues{/number}","pulls_url":"https://api.github.com/repos/openshift/origin/pulls{/number}","milestones_url":"https://api.github.com/repos/openshift/origin/milestones{/number}","notifications_url":"https://api.github.com/repos/openshift/origin/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/openshift/origin/labels{/name}","releases_url":"https://api.github.com/repos/openshift/origin/releases{/id}","created_at":"2014-07-30T20:04:05Z","updated_at":"2015-09-21T17:33:50Z","pushed_at":"2015-09-21T20:22:08Z","git_url":"git://github.com/openshift/origin.git","ssh_url":"git@github.com:openshift/origin.git","clone_url":"https://github.com/openshift/origin.git","svn_url":"https://github.com/openshift/origin","homepage":"http://www.openshift.org","size":225922,"stargazers_count":688,"watchers_count":688,"language":"Go","has_issues":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":415,"mirror_url":null,"open_issues_count":557,"forks":415,"open_issues":557,"watchers":688,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/openshift/origin/pulls/4707"},"html":{"href":"https://github.com/openshift/origin/pull/4707"},"issue":{"href":"https://api.github.com/repos/openshift/origin/issues/4707"},"comments":{"href":"https://api.github.com/repos/openshift/origin/issues/4707/comments"},"review_comments":{"href":"https://api.github.com/repos/openshift/origin/pulls/4707/comments"},"review_comment":{"href":"https://api.github.com/repos/openshift/origin/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/openshift/origin/pulls/4707/commits"},"statuses":{"href":"https://api.github.com/repos/openshift/origin/statuses/b957aac5b7ac21634681963eccea61263bac7039"}}}}