{"action":"created","issue":{"url":"https://api.github.com/repos/BuoyantIO/linkerd/issues/393","repository_url":"https://api.github.com/repos/BuoyantIO/linkerd","labels_url":"https://api.github.com/repos/BuoyantIO/linkerd/issues/393/labels{/name}","comments_url":"https://api.github.com/repos/BuoyantIO/linkerd/issues/393/comments","events_url":"https://api.github.com/repos/BuoyantIO/linkerd/issues/393/events","html_url":"https://github.com/BuoyantIO/linkerd/issues/393","id":154346629,"number":393,"title":"Prefix bound names with # path segment","user":{"login":"adleong","id":3979810,"avatar_url":"https://avatars.githubusercontent.com/u/3979810?v=3","gravatar_id":"","url":"https://api.github.com/users/adleong","html_url":"https://github.com/adleong","followers_url":"https://api.github.com/users/adleong/followers","following_url":"https://api.github.com/users/adleong/following{/other_user}","gists_url":"https://api.github.com/users/adleong/gists{/gist_id}","starred_url":"https://api.github.com/users/adleong/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/adleong/subscriptions","organizations_url":"https://api.github.com/users/adleong/orgs","repos_url":"https://api.github.com/users/adleong/repos","events_url":"https://api.github.com/users/adleong/events{/privacy}","received_events_url":"https://api.github.com/users/adleong/received_events","type":"User","site_admin":false},"labels":[],"state":"closed","locked":false,"assignee":{"login":"adleong","id":3979810,"avatar_url":"https://avatars.githubusercontent.com/u/3979810?v=3","gravatar_id":"","url":"https://api.github.com/users/adleong","html_url":"https://github.com/adleong","followers_url":"https://api.github.com/users/adleong/followers","following_url":"https://api.github.com/users/adleong/following{/other_user}","gists_url":"https://api.github.com/users/adleong/gists{/gist_id}","starred_url":"https://api.github.com/users/adleong/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/adleong/subscriptions","organizations_url":"https://api.github.com/users/adleong/orgs","repos_url":"https://api.github.com/users/adleong/repos","events_url":"https://api.github.com/users/adleong/events{/privacy}","received_events_url":"https://api.github.com/users/adleong/received_events","type":"User","site_admin":false},"milestone":null,"comments":3,"created_at":"2016-05-11T21:24:48Z","updated_at":"2016-05-17T19:08:15Z","closed_at":"2016-05-16T23:41:34Z","body":"In order to easily differentiate bound paths (ie paths that are to be processed by a namer rather than by delegation) we should apply the convention where bound paths start with a # path segment.\n\ne.g. /#/io.l5d.fs/foobar\n\nThat is, /# should be prepended to the prefix of all namers.\n\nThis makes delegations easier to understand because it will be more immediately obvious which paths are \"terminal\"."},"comment":{"url":"https://api.github.com/repos/BuoyantIO/linkerd/issues/comments/219821702","html_url":"https://github.com/BuoyantIO/linkerd/issues/393#issuecomment-219821702","issue_url":"https://api.github.com/repos/BuoyantIO/linkerd/issues/393","id":219821702,"user":{"login":"klingerf","id":9226,"avatar_url":"https://avatars.githubusercontent.com/u/9226?v=3","gravatar_id":"","url":"https://api.github.com/users/klingerf","html_url":"https://github.com/klingerf","followers_url":"https://api.github.com/users/klingerf/followers","following_url":"https://api.github.com/users/klingerf/following{/other_user}","gists_url":"https://api.github.com/users/klingerf/gists{/gist_id}","starred_url":"https://api.github.com/users/klingerf/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/klingerf/subscriptions","organizations_url":"https://api.github.com/users/klingerf/orgs","repos_url":"https://api.github.com/users/klingerf/repos","events_url":"https://api.github.com/users/klingerf/events{/privacy}","received_events_url":"https://api.github.com/users/klingerf/received_events","type":"User","site_admin":false},"created_at":"2016-05-17T19:08:15Z","updated_at":"2016-05-17T19:08:15Z","body":"I encountered another subtle upgrade issue with this change and the tls bound path matcher.  I'm not sure there's anything we can do about it, but I wanted to post it here in case other folks run into similar.\r\n\r\nSuppose I have a linkerd config as follows:\r\n\r\n    namers:\r\n    - kind: io.l5d.experimental.k8s\r\n      host: localhost\r\n      port: 8001\r\n    routers:\r\n    - protocol: http\r\n      label: demo\r\n      identifier:\r\n        kind: io.l5d.path\r\n      baseDtab: |\r\n        /ns    => /io.l5d.k8s;\r\n        /iface => /ns/kltest;\r\n        /srv   => /iface/incoming;\r\n        /http  => /srv;\r\n      client:\r\n        tls:\r\n          kind: io.l5d.clientTls.boundPath\r\n          caCertPath: /io.buoyant/linkerd/certs/cacertificate.pem\r\n          names:\r\n          - prefix: \"/*/*/*/{service}\"\r\n            commonNamePattern: \"{service}\"\r\n      servers:\r\n      - port: 8080\r\n        ip: 0.0.0.0\r\n\r\nWhen I change the k8s namer dtab entry to `/ns => /#/io.l5d.k8s`, then I also have to change the tls boundPath prefix to `/*/*/*/*/{service}`, since the bound path for my service has changed from `/io.l5d.k8s/kltest/incoming/svcname` to `/#/io.l5d.k8s/kltest/incoming/svcname`."}}