{"action":"created","comment":{"url":"https://api.github.com/repos/kubernetes/kops/pulls/comments/86935305","pull_request_review_id":7566925,"id":86935305,"diff_hunk":"@@ -0,0 +1,60 @@\n+# Network Topologies in Kops\n+\n+Kops supports a number of pre defined network topologies. They are separated into commonly used scenarios, or topologies.\n+\n+Each of the supported topologies are listed below, with an example on how to deploy them.\n+\n+# AWS\n+\n+Kops supports the following topologies on AWS\n+\n+|      Topology     |   Value    | Description                                                                                                 |\n+| ----------------- |----------- | ----------------------------------------------------------------------------------------------------------- |\n+|   Public Cluster  |   public   | All masters/nodes will be launched in a **public subnet** in the VPC                                        |\n+|   Private Cluster |   private  | All masters/nodes will be launched in a **private subnet** in the VPC                                       |\n+|     Private Masters Public Nodes    |   privatemasters  | All masters will be launched into a **private subnet**, All nodes will be launched into a **public subnet** |\n+\n+[More information](http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_Subnets.html) on Public and Private subnets in AWS\n+\n+Taken from the AWS documentation :\n+\n+##### Public Subnet\n+If a subnet's traffic is routed to an Internet gateway, the subnet is known as a public subnet.\n+\n+##### Private Subnet\n+If a subnet doesn't have a route to the Internet gateway, the subnet is known as a private subnet.-\n+\n+\n+\n+#### Defining a topology on create\n+\n+To specify a topology use the `--topology` or `-t` flag as in :\n+\n+```\n+kops create cluster ... --topology public|private|privatemasters\n+```\n+\n+### Models\n+\n+Each directory holds as the definition for associated resources for that topology.\n+\n+These are controlled by kops `tags` - the tree walker will only parse a model if it's tag is found, so having these tags described is critical in making kops support topologies.\n+\n+#### Tags\n+\n+- _topology_private\n+- _topology_privatemasters\n+- _topology_public\n+\n+\n+#### Masters\n+\n+Right now masters are tagged outside of topologies. The master configurations have already been cut into with topologies so we probably should look at getting masters into their respective topologies.\n+\n+TODO Kris - Cut an issue for porting masters into into topologies. Also according to Justin some of the code here might be very old - so we can probably deprecate a large portion of it.","path":"docs/topology.md","position":null,"original_position":54,"commit_id":"10d7edc0bd465e41222d6bbdaa944e2b9ab4d79c","original_commit_id":"c9ba00ff9725c6ca46aff3362f91cd7b159d7f5e","user":{"login":"kris-nova","id":13757818,"avatar_url":"https://avatars.githubusercontent.com/u/13757818?v=3","gravatar_id":"","url":"https://api.github.com/users/kris-nova","html_url":"https://github.com/kris-nova","followers_url":"https://api.github.com/users/kris-nova/followers","following_url":"https://api.github.com/users/kris-nova/following{/other_user}","gists_url":"https://api.github.com/users/kris-nova/gists{/gist_id}","starred_url":"https://api.github.com/users/kris-nova/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/kris-nova/subscriptions","organizations_url":"https://api.github.com/users/kris-nova/orgs","repos_url":"https://api.github.com/users/kris-nova/repos","events_url":"https://api.github.com/users/kris-nova/events{/privacy}","received_events_url":"https://api.github.com/users/kris-nova/received_events","type":"User","site_admin":false},"body":"Fixed in https://github.com/kubernetes/kops/pull/694/commits/10d7edc0bd465e41222d6bbdaa944e2b9ab4d79c See issue above","created_at":"2016-11-08T07:24:45Z","updated_at":"2016-11-08T07:24:45Z","html_url":"https://github.com/kubernetes/kops/pull/694#discussion_r86935305","pull_request_url":"https://api.github.com/repos/kubernetes/kops/pulls/694","_links":{"self":{"href":"https://api.github.com/repos/kubernetes/kops/pulls/comments/86935305"},"html":{"href":"https://github.com/kubernetes/kops/pull/694#discussion_r86935305"},"pull_request":{"href":"https://api.github.com/repos/kubernetes/kops/pulls/694"}}},"pull_request":{"url":"https://api.github.com/repos/kubernetes/kops/pulls/694","id":89928158,"html_url":"https://github.com/kubernetes/kops/pull/694","diff_url":"https://github.com/kubernetes/kops/pull/694.diff","patch_url":"https://github.com/kubernetes/kops/pull/694.patch","issue_url":"https://api.github.com/repos/kubernetes/kops/issues/694","number":694,"state":"open","locked":false,"title":"[WIP] Topology Support (AKA Private Networking) #428","user":{"login":"kris-nova","id":13757818,"avatar_url":"https://avatars.githubusercontent.com/u/13757818?v=3","gravatar_id":"","url":"https://api.github.com/users/kris-nova","html_url":"https://github.com/kris-nova","followers_url":"https://api.github.com/users/kris-nova/followers","following_url":"https://api.github.com/users/kris-nova/following{/other_user}","gists_url":"https://api.github.com/users/kris-nova/gists{/gist_id}","starred_url":"https://api.github.com/users/kris-nova/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/kris-nova/subscriptions","organizations_url":"https://api.github.com/users/kris-nova/orgs","repos_url":"https://api.github.com/users/kris-nova/repos","events_url":"https://api.github.com/users/kris-nova/events{/privacy}","received_events_url":"https://api.github.com/users/kris-nova/received_events","type":"User","site_admin":false},"body":"# Network topologies in kops\r\n\r\n**Use Case**: Private networking in AWS with Kubernetes defined in https://github.com/kubernetes/kops/issues/428\r\n**Example Usage**: [Proposed Documentation](https://github.com/DualSpark/kops/blob/private-networking/docs/topology.md)\r\n### Summary (WIP)\r\n- Adding new topologies\r\n  - **public** The existing kops creation topology. All masters and nodes launched into public subnets\r\n  - **private** A new topology. All masters and nodes launched into private subnets, a bastion server/ELB and the k8s API with an ELB.\r\n- Adding new flags for `kops create cluster`\r\n  - `--topology` public|private\r\n  - `-t`                public|private\r\n- Adding new configuration directive\r\n\r\n```\r\ntopology:\r\n   masters: public|private\r\n   nodes: public|private\r\n```\r\n","created_at":"2016-10-19T01:37:11Z","updated_at":"2016-11-08T07:24:45Z","closed_at":null,"merged_at":null,"merge_commit_sha":"08b8b2c7c563370307fffac4e95fafb303a3bf42","assignee":{"login":"justinsb","id":100893,"avatar_url":"https://avatars.githubusercontent.com/u/100893?v=3","gravatar_id":"","url":"https://api.github.com/users/justinsb","html_url":"https://github.com/justinsb","followers_url":"https://api.github.com/users/justinsb/followers","following_url":"https://api.github.com/users/justinsb/following{/other_user}","gists_url":"https://api.github.com/users/justinsb/gists{/gist_id}","starred_url":"https://api.github.com/users/justinsb/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/justinsb/subscriptions","organizations_url":"https://api.github.com/users/justinsb/orgs","repos_url":"https://api.github.com/users/justinsb/repos","events_url":"https://api.github.com/users/justinsb/events{/privacy}","received_events_url":"https://api.github.com/users/justinsb/received_events","type":"User","site_admin":false},"assignees":[{"login":"justinsb","id":100893,"avatar_url":"https://avatars.githubusercontent.com/u/100893?v=3","gravatar_id":"","url":"https://api.github.com/users/justinsb","html_url":"https://github.com/justinsb","followers_url":"https://api.github.com/users/justinsb/followers","following_url":"https://api.github.com/users/justinsb/following{/other_user}","gists_url":"https://api.github.com/users/justinsb/gists{/gist_id}","starred_url":"https://api.github.com/users/justinsb/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/justinsb/subscriptions","organizations_url":"https://api.github.com/users/justinsb/orgs","repos_url":"https://api.github.com/users/justinsb/repos","events_url":"https://api.github.com/users/justinsb/events{/privacy}","received_events_url":"https://api.github.com/users/justinsb/received_events","type":"User","site_admin":false}],"milestone":{"url":"https://api.github.com/repos/kubernetes/kops/milestones/5","html_url":"https://github.com/kubernetes/kops/milestones/1.5","labels_url":"https://api.github.com/repos/kubernetes/kops/milestones/5/labels","id":2098558,"number":5,"title":"1.5","description":"Happy New Year.  K8s 1.5 will be released, and we will drop `kops` 1.5 shortly after.\r\n\r\nThree main focus goals:\r\n\r\n1. Stability\r\n2. Security\r\n3.  API - HTTP and Programmatic","creator":{"login":"chrislovecnm","id":335402,"avatar_url":"https://avatars.githubusercontent.com/u/335402?v=3","gravatar_id":"","url":"https://api.github.com/users/chrislovecnm","html_url":"https://github.com/chrislovecnm","followers_url":"https://api.github.com/users/chrislovecnm/followers","following_url":"https://api.github.com/users/chrislovecnm/following{/other_user}","gists_url":"https://api.github.com/users/chrislovecnm/gists{/gist_id}","starred_url":"https://api.github.com/users/chrislovecnm/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/chrislovecnm/subscriptions","organizations_url":"https://api.github.com/users/chrislovecnm/orgs","repos_url":"https://api.github.com/users/chrislovecnm/repos","events_url":"https://api.github.com/users/chrislovecnm/events{/privacy}","received_events_url":"https://api.github.com/users/chrislovecnm/received_events","type":"User","site_admin":false},"open_issues":13,"closed_issues":3,"state":"open","created_at":"2016-10-27T21:31:37Z","updated_at":"2016-11-07T19:33:47Z","due_on":"2017-01-03T00:00:00Z","closed_at":null},"commits_url":"https://api.github.com/repos/kubernetes/kops/pulls/694/commits","review_comments_url":"https://api.github.com/repos/kubernetes/kops/pulls/694/comments","review_comment_url":"https://api.github.com/repos/kubernetes/kops/pulls/comments{/number}","comments_url":"https://api.github.com/repos/kubernetes/kops/issues/694/comments","statuses_url":"https://api.github.com/repos/kubernetes/kops/statuses/10d7edc0bd465e41222d6bbdaa944e2b9ab4d79c","head":{"label":"DualSpark:private-networking","ref":"private-networking","sha":"10d7edc0bd465e41222d6bbdaa944e2b9ab4d79c","user":{"login":"DualSpark","id":7940266,"avatar_url":"https://avatars.githubusercontent.com/u/7940266?v=3","gravatar_id":"","url":"https://api.github.com/users/DualSpark","html_url":"https://github.com/DualSpark","followers_url":"https://api.github.com/users/DualSpark/followers","following_url":"https://api.github.com/users/DualSpark/following{/other_user}","gists_url":"https://api.github.com/users/DualSpark/gists{/gist_id}","starred_url":"https://api.github.com/users/DualSpark/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/DualSpark/subscriptions","organizations_url":"https://api.github.com/users/DualSpark/orgs","repos_url":"https://api.github.com/users/DualSpark/repos","events_url":"https://api.github.com/users/DualSpark/events{/privacy}","received_events_url":"https://api.github.com/users/DualSpark/received_events","type":"Organization","site_admin":false},"repo":{"id":67741894,"name":"kops","full_name":"DualSpark/kops","owner":{"login":"DualSpark","id":7940266,"avatar_url":"https://avatars.githubusercontent.com/u/7940266?v=3","gravatar_id":"","url":"https://api.github.com/users/DualSpark","html_url":"https://github.com/DualSpark","followers_url":"https://api.github.com/users/DualSpark/followers","following_url":"https://api.github.com/users/DualSpark/following{/other_user}","gists_url":"https://api.github.com/users/DualSpark/gists{/gist_id}","starred_url":"https://api.github.com/users/DualSpark/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/DualSpark/subscriptions","organizations_url":"https://api.github.com/users/DualSpark/orgs","repos_url":"https://api.github.com/users/DualSpark/repos","events_url":"https://api.github.com/users/DualSpark/events{/privacy}","received_events_url":"https://api.github.com/users/DualSpark/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/DualSpark/kops","description":"kops deployment","fork":true,"url":"https://api.github.com/repos/DualSpark/kops","forks_url":"https://api.github.com/repos/DualSpark/kops/forks","keys_url":"https://api.github.com/repos/DualSpark/kops/keys{/key_id}","collaborators_url":"https://api.github.com/repos/DualSpark/kops/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/DualSpark/kops/teams","hooks_url":"https://api.github.com/repos/DualSpark/kops/hooks","issue_events_url":"https://api.github.com/repos/DualSpark/kops/issues/events{/number}","events_url":"https://api.github.com/repos/DualSpark/kops/events","assignees_url":"https://api.github.com/repos/DualSpark/kops/assignees{/user}","branches_url":"https://api.github.com/repos/DualSpark/kops/branches{/branch}","tags_url":"https://api.github.com/repos/DualSpark/kops/tags","blobs_url":"https://api.github.com/repos/DualSpark/kops/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/DualSpark/kops/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/DualSpark/kops/git/refs{/sha}","trees_url":"https://api.github.com/repos/DualSpark/kops/git/trees{/sha}","statuses_url":"https://api.github.com/repos/DualSpark/kops/statuses/{sha}","languages_url":"https://api.github.com/repos/DualSpark/kops/languages","stargazers_url":"https://api.github.com/repos/DualSpark/kops/stargazers","contributors_url":"https://api.github.com/repos/DualSpark/kops/contributors","subscribers_url":"https://api.github.com/repos/DualSpark/kops/subscribers","subscription_url":"https://api.github.com/repos/DualSpark/kops/subscription","commits_url":"https://api.github.com/repos/DualSpark/kops/commits{/sha}","git_commits_url":"https://api.github.com/repos/DualSpark/kops/git/commits{/sha}","comments_url":"https://api.github.com/repos/DualSpark/kops/comments{/number}","issue_comment_url":"https://api.github.com/repos/DualSpark/kops/issues/comments{/number}","contents_url":"https://api.github.com/repos/DualSpark/kops/contents/{+path}","compare_url":"https://api.github.com/repos/DualSpark/kops/compare/{base}...{head}","merges_url":"https://api.github.com/repos/DualSpark/kops/merges","archive_url":"https://api.github.com/repos/DualSpark/kops/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/DualSpark/kops/downloads","issues_url":"https://api.github.com/repos/DualSpark/kops/issues{/number}","pulls_url":"https://api.github.com/repos/DualSpark/kops/pulls{/number}","milestones_url":"https://api.github.com/repos/DualSpark/kops/milestones{/number}","notifications_url":"https://api.github.com/repos/DualSpark/kops/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/DualSpark/kops/labels{/name}","releases_url":"https://api.github.com/repos/DualSpark/kops/releases{/id}","deployments_url":"https://api.github.com/repos/DualSpark/kops/deployments","created_at":"2016-09-08T21:33:05Z","updated_at":"2016-09-08T21:33:08Z","pushed_at":"2016-11-08T07:22:58Z","git_url":"git://github.com/DualSpark/kops.git","ssh_url":"git@github.com:DualSpark/kops.git","clone_url":"https://github.com/DualSpark/kops.git","svn_url":"https://github.com/DualSpark/kops","homepage":"","size":98794,"stargazers_count":0,"watchers_count":0,"language":"Go","has_issues":false,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":1,"mirror_url":null,"open_issues_count":0,"forks":1,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"kubernetes:master","ref":"master","sha":"853264416641761bf739b56dbcbbe8992c7cea74","user":{"login":"kubernetes","id":13629408,"avatar_url":"https://avatars.githubusercontent.com/u/13629408?v=3","gravatar_id":"","url":"https://api.github.com/users/kubernetes","html_url":"https://github.com/kubernetes","followers_url":"https://api.github.com/users/kubernetes/followers","following_url":"https://api.github.com/users/kubernetes/following{/other_user}","gists_url":"https://api.github.com/users/kubernetes/gists{/gist_id}","starred_url":"https://api.github.com/users/kubernetes/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/kubernetes/subscriptions","organizations_url":"https://api.github.com/users/kubernetes/orgs","repos_url":"https://api.github.com/users/kubernetes/repos","events_url":"https://api.github.com/users/kubernetes/events{/privacy}","received_events_url":"https://api.github.com/users/kubernetes/received_events","type":"Organization","site_admin":false},"repo":{"id":62091339,"name":"kops","full_name":"kubernetes/kops","owner":{"login":"kubernetes","id":13629408,"avatar_url":"https://avatars.githubusercontent.com/u/13629408?v=3","gravatar_id":"","url":"https://api.github.com/users/kubernetes","html_url":"https://github.com/kubernetes","followers_url":"https://api.github.com/users/kubernetes/followers","following_url":"https://api.github.com/users/kubernetes/following{/other_user}","gists_url":"https://api.github.com/users/kubernetes/gists{/gist_id}","starred_url":"https://api.github.com/users/kubernetes/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/kubernetes/subscriptions","organizations_url":"https://api.github.com/users/kubernetes/orgs","repos_url":"https://api.github.com/users/kubernetes/repos","events_url":"https://api.github.com/users/kubernetes/events{/privacy}","received_events_url":"https://api.github.com/users/kubernetes/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/kubernetes/kops","description":"Kubernetes Operations (kops) - Production Grade K8s Installation, Upgrades, and Management","fork":false,"url":"https://api.github.com/repos/kubernetes/kops","forks_url":"https://api.github.com/repos/kubernetes/kops/forks","keys_url":"https://api.github.com/repos/kubernetes/kops/keys{/key_id}","collaborators_url":"https://api.github.com/repos/kubernetes/kops/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/kubernetes/kops/teams","hooks_url":"https://api.github.com/repos/kubernetes/kops/hooks","issue_events_url":"https://api.github.com/repos/kubernetes/kops/issues/events{/number}","events_url":"https://api.github.com/repos/kubernetes/kops/events","assignees_url":"https://api.github.com/repos/kubernetes/kops/assignees{/user}","branches_url":"https://api.github.com/repos/kubernetes/kops/branches{/branch}","tags_url":"https://api.github.com/repos/kubernetes/kops/tags","blobs_url":"https://api.github.com/repos/kubernetes/kops/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/kubernetes/kops/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/kubernetes/kops/git/refs{/sha}","trees_url":"https://api.github.com/repos/kubernetes/kops/git/trees{/sha}","statuses_url":"https://api.github.com/repos/kubernetes/kops/statuses/{sha}","languages_url":"https://api.github.com/repos/kubernetes/kops/languages","stargazers_url":"https://api.github.com/repos/kubernetes/kops/stargazers","contributors_url":"https://api.github.com/repos/kubernetes/kops/contributors","subscribers_url":"https://api.github.com/repos/kubernetes/kops/subscribers","subscription_url":"https://api.github.com/repos/kubernetes/kops/subscription","commits_url":"https://api.github.com/repos/kubernetes/kops/commits{/sha}","git_commits_url":"https://api.github.com/repos/kubernetes/kops/git/commits{/sha}","comments_url":"https://api.github.com/repos/kubernetes/kops/comments{/number}","issue_comment_url":"https://api.github.com/repos/kubernetes/kops/issues/comments{/number}","contents_url":"https://api.github.com/repos/kubernetes/kops/contents/{+path}","compare_url":"https://api.github.com/repos/kubernetes/kops/compare/{base}...{head}","merges_url":"https://api.github.com/repos/kubernetes/kops/merges","archive_url":"https://api.github.com/repos/kubernetes/kops/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/kubernetes/kops/downloads","issues_url":"https://api.github.com/repos/kubernetes/kops/issues{/number}","pulls_url":"https://api.github.com/repos/kubernetes/kops/pulls{/number}","milestones_url":"https://api.github.com/repos/kubernetes/kops/milestones{/number}","notifications_url":"https://api.github.com/repos/kubernetes/kops/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/kubernetes/kops/labels{/name}","releases_url":"https://api.github.com/repos/kubernetes/kops/releases{/id}","deployments_url":"https://api.github.com/repos/kubernetes/kops/deployments","created_at":"2016-06-27T22:01:15Z","updated_at":"2016-11-08T01:41:47Z","pushed_at":"2016-11-08T07:22:58Z","git_url":"git://github.com/kubernetes/kops.git","ssh_url":"git@github.com:kubernetes/kops.git","clone_url":"https://github.com/kubernetes/kops.git","svn_url":"https://github.com/kubernetes/kops","homepage":"","size":98914,"stargazers_count":459,"watchers_count":459,"language":"Go","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":84,"mirror_url":null,"open_issues_count":270,"forks":84,"open_issues":270,"watchers":459,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/kubernetes/kops/pulls/694"},"html":{"href":"https://github.com/kubernetes/kops/pull/694"},"issue":{"href":"https://api.github.com/repos/kubernetes/kops/issues/694"},"comments":{"href":"https://api.github.com/repos/kubernetes/kops/issues/694/comments"},"review_comments":{"href":"https://api.github.com/repos/kubernetes/kops/pulls/694/comments"},"review_comment":{"href":"https://api.github.com/repos/kubernetes/kops/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/kubernetes/kops/pulls/694/commits"},"statuses":{"href":"https://api.github.com/repos/kubernetes/kops/statuses/10d7edc0bd465e41222d6bbdaa944e2b9ab4d79c"}}}}
{"actor":{"display_login":"kris-nova"}}