{"action":"created","issue":{"url":"https://api.github.com/repos/kubernetes/helm/issues/1331","repository_url":"https://api.github.com/repos/kubernetes/helm","labels_url":"https://api.github.com/repos/kubernetes/helm/issues/1331/labels{/name}","comments_url":"https://api.github.com/repos/kubernetes/helm/issues/1331/comments","events_url":"https://api.github.com/repos/kubernetes/helm/issues/1331/events","html_url":"https://github.com/kubernetes/helm/issues/1331","id":182249157,"number":1331,"title":"how to add extensible (platform specific) resources in a chart?","user":{"login":"jstrachan","id":30140,"avatar_url":"https://avatars.githubusercontent.com/u/30140?v=3","gravatar_id":"","url":"https://api.github.com/users/jstrachan","html_url":"https://github.com/jstrachan","followers_url":"https://api.github.com/users/jstrachan/followers","following_url":"https://api.github.com/users/jstrachan/following{/other_user}","gists_url":"https://api.github.com/users/jstrachan/gists{/gist_id}","starred_url":"https://api.github.com/users/jstrachan/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jstrachan/subscriptions","organizations_url":"https://api.github.com/users/jstrachan/orgs","repos_url":"https://api.github.com/users/jstrachan/repos","events_url":"https://api.github.com/users/jstrachan/events{/privacy}","received_events_url":"https://api.github.com/users/jstrachan/received_events","type":"User","site_admin":false},"labels":[{"id":464871274,"url":"https://api.github.com/repos/kubernetes/helm/labels/support","name":"support","color":"5319e7","default":false}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":6,"created_at":"2016-10-11T12:19:57Z","updated_at":"2016-11-15T12:28:11Z","closed_at":null,"body":"Where possible developers should create charts that run on any kubernetes cluster - portability of cloud native apps is one of the big value propositions of kubernetes!\n\nHowever some kubernetes platforms have their own custom resources that an application developer may wish to use - but only if the app is running on that platform. e.g. OpenShift adds a few extension resources like OAuthClient, ImageStream, BuildConfig. [API Federation](https://github.com/kubernetes/kubernetes/blob/master/docs/proposals/federated-api-servers.md) may become a common way to extend kubernetes with extra capabilities. \n\nThis reminds me a little of JEE world (in a good way - honest! ;) where there were standard manifests that worked everywhere and different app server providers could have their own custom manifests to add extended metadata which were ignored by other providers but gave you finer grained configuration over behaviour on specific platforms.\n\nSo I just wanted to ponder how we might tackle this.\n\nOne option is every platform maintain their own fork of helm. (Maybe its just `Tiller` that needs to be forked actually which wouldn't be too bad maybe?). But then this means a chart must be either for vanilla kubernetes or for openshift or tectonic or GKE or whatever. I prefer the idea of shared chart repositories and each chart can run anywhere.\n\nI guess the easiest option today is to use [ThirdPartyResources](https://github.com/kubernetes/kubernetes/blob/master/docs/design/extending-api.md) for all the extensions; and assume that there's some microservice to process it on each platform and if there isn't its just some metadata which may be useful anyways even if its not processed?\n\nOr another approach is to support platform specific folders where we can put manifests which are only used on those platforms? \n\ne.g. maybe we use a canonical platform ID as a folder inside the charts? The following example is a little over the top mind you but just shows some possibilities:\n\n```\nwordpress/\n  Chart.yaml\n  templates/\n    openshift.org/\n      oauthclient.yaml\n    tectonic.io/\n     something.yaml\n    google.com/\n      googlePVs.yaml\n```\n\nThen on one of those platforms, say `openshift.org` we could register a microservice into tiller to handle applying resources in that folder? We could find these microservices using a label/annotation of, say, `tiller = openshift.org` then just post the resource to that microservices service endpoint?\n\nThoughts?\n"},"comment":{"url":"https://api.github.com/repos/kubernetes/helm/issues/comments/260628361","html_url":"https://github.com/kubernetes/helm/issues/1331#issuecomment-260628361","issue_url":"https://api.github.com/repos/kubernetes/helm/issues/1331","id":260628361,"user":{"login":"wstrange","id":447076,"avatar_url":"https://avatars.githubusercontent.com/u/447076?v=3","gravatar_id":"","url":"https://api.github.com/users/wstrange","html_url":"https://github.com/wstrange","followers_url":"https://api.github.com/users/wstrange/followers","following_url":"https://api.github.com/users/wstrange/following{/other_user}","gists_url":"https://api.github.com/users/wstrange/gists{/gist_id}","starred_url":"https://api.github.com/users/wstrange/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/wstrange/subscriptions","organizations_url":"https://api.github.com/users/wstrange/orgs","repos_url":"https://api.github.com/users/wstrange/repos","events_url":"https://api.github.com/users/wstrange/events{/privacy}","received_events_url":"https://api.github.com/users/wstrange/received_events","type":"User","site_admin":false},"created_at":"2016-11-15T12:28:11Z","updated_at":"2016-11-15T12:28:11Z","body":"I ran into this today with minikube vs. GKE.\r\n\r\nI need  a storageclass object on GKE that causes issues when deployed on minikube. \r\n\r\n"}}
{"actor":{"display_login":"wstrange"}}