mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-09-09 05:01:46 +00:00
podex: move to contrib
This commit is contained in:
28
contrib/podex/CONTRIBUTING.md
Normal file
28
contrib/podex/CONTRIBUTING.md
Normal file
@@ -0,0 +1,28 @@
|
||||
# How to become a contributor and submit your own code
|
||||
|
||||
## Contributor License Agreements
|
||||
|
||||
We'd love to accept your patches! Before we can take them, we have to jump a couple of legal hurdles.
|
||||
|
||||
Please fill out either the individual or corporate Contributor License Agreement (CLA).
|
||||
|
||||
* If you are an individual writing original source code and you're sure you own the intellectual property, then you'll need to sign an [individual CLA](http://code.google.com/legal/individual-cla-v1.0.html).
|
||||
* If you work for a company that wants to allow you to contribute your work, then you'll need to sign a [corporate CLA](http://code.google.com/legal/corporate-cla-v1.0.html).
|
||||
|
||||
Follow either of the two links above to access the appropriate CLA and instructions for how to sign and return it. Once we receive it, we'll be able to accept your pull requests.
|
||||
|
||||
## Contributing A Patch
|
||||
|
||||
1. Submit an issue describing your proposed change to the repo in question.
|
||||
1. The repo owner will respond to your issue promptly.
|
||||
1. If your proposed change is accepted, and you haven't already done so, sign a Contributor License Agreement (see details above).
|
||||
1. Fork the desired repo, develop and test your code changes.
|
||||
1. Submit a pull request.
|
||||
|
||||
## Protocols for Collaborative Development
|
||||
|
||||
Please read [this doc](https://github.com/GoogleCloudPlatform/kubernetes/blob/master/docs/collab.md) for information on how we're running development for the project.
|
||||
|
||||
## Adding dependencies
|
||||
|
||||
If your patch depends on new packages, add that package with [`godep`](https://github.com/tools/godep). Follow the [instructions to add a dependency](https://github.com/tools/godep#add-a-dependency).
|
18
contrib/podex/MAINTAINTERS.md
Normal file
18
contrib/podex/MAINTAINTERS.md
Normal file
@@ -0,0 +1,18 @@
|
||||
# Maintainers
|
||||
|
||||
People responsible for ports of Kubernetes to different environments. CC at least one maintainer on relevant issues and PRs.
|
||||
|
||||
## OS Distributions
|
||||
|
||||
* RedHat, Fedora: [Clayton Coleman](https://github.com/smarterclayton), [Derek Carr](https://github.com/derekwaynecarr), [Scott Collier](https://github.com/scollier)
|
||||
* CoreOS: [Kelsey Hightower](https://github.com/kelseyhightower)
|
||||
|
||||
## Providers / Environments
|
||||
|
||||
* GCE: [Brendan Burns](https://github.com/brendandburns), [Joe Beda](https://github.com/jbeda), [Daniel Smith](https://github.com/lavalamp), [Tim Hockin](https://github.com/thockin)
|
||||
* Azure: [Jeff Mendoza](https://github.com/jeffmendoza)
|
||||
* Vsphere: [Pieter Noordhuis](https://github.com/pietern)
|
||||
* Rackspace: [Ryan Richard](https://github.com/doublerr)
|
||||
* Ovirt: [Federico Simoncelli](https://github.com/simon3z)
|
||||
* Local: [Derek Carr](https://github.com/derekwaynecarr)
|
||||
* Vagrant: [Derek Carr](https://github.com/derekwaynecarr)
|
14
contrib/podex/README.md
Normal file
14
contrib/podex/README.md
Normal file
@@ -0,0 +1,14 @@
|
||||
# podex
|
||||
|
||||
## Description
|
||||
|
||||
`podex` is a command line tool to bootstrap a kubernetes container manifests from docker image metadata.
|
||||
|
||||
Manifests can then be edited by a human to match deployment needs.
|
||||
|
||||
## Usage
|
||||
```
|
||||
$ docker pull google/nodejs-hello
|
||||
$ podex -yaml google/nodejs-hello > pod.yaml
|
||||
$ podex -json google/nodejs-hello > pod.json
|
||||
```
|
113
contrib/podex/podex.go
Normal file
113
contrib/podex/podex.go
Normal file
@@ -0,0 +1,113 @@
|
||||
/*
|
||||
Copyright 2014 Google Inc. All rights reserved.
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
*/
|
||||
|
||||
// podex is a command line tool to bootstrap kubernetes container
|
||||
// manifests from docker image metadata.
|
||||
//
|
||||
// Manifests can then be edited by a human to match deployment needs.
|
||||
//
|
||||
// Example usage:
|
||||
//
|
||||
// $ docker pull google/nodejs-hello
|
||||
// $ podex -yaml google/nodejs-hello > google/nodejs-hello/pod.yaml
|
||||
// $ podex -json google/nodejs-hello > google/nodejs-hello/pod.json
|
||||
|
||||
package main
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"flag"
|
||||
"log"
|
||||
"os"
|
||||
"strconv"
|
||||
"strings"
|
||||
|
||||
"github.com/GoogleCloudPlatform/kubernetes/pkg/api"
|
||||
dockerclient "github.com/fsouza/go-dockerclient"
|
||||
"gopkg.in/yaml.v1"
|
||||
)
|
||||
|
||||
const usage = "usage: podex [-json|-yaml] <repo/dockerimage>"
|
||||
|
||||
var generateJSON = flag.Bool("json", false, "generate json manifest")
|
||||
var generateYAML = flag.Bool("yaml", false, "generate yaml manifest")
|
||||
|
||||
func main() {
|
||||
flag.Parse()
|
||||
|
||||
if flag.NArg() < 1 {
|
||||
log.Fatal(usage)
|
||||
}
|
||||
|
||||
imageName := flag.Arg(0)
|
||||
if len(imageName) == 0 {
|
||||
log.Fatal(usage)
|
||||
}
|
||||
|
||||
if !*generateJSON && !*generateYAML {
|
||||
log.Fatal(usage)
|
||||
}
|
||||
|
||||
parts := strings.Split(imageName, "/")
|
||||
baseName := parts[len(parts)-1]
|
||||
|
||||
dockerHost := os.Getenv("DOCKER_HOST")
|
||||
docker, err := dockerclient.NewClient(dockerHost)
|
||||
if err != nil {
|
||||
log.Fatalf("failed to connect to %q: %v", dockerHost, err)
|
||||
}
|
||||
|
||||
img, err := docker.InspectImage(imageName)
|
||||
if err != nil {
|
||||
log.Fatalf("failed to inspect image %q: %v", imageName, err)
|
||||
}
|
||||
manifest := api.ContainerManifest{
|
||||
Version: "v1beta1",
|
||||
ID: baseName + "-pod",
|
||||
Containers: []api.Container{{
|
||||
Name: baseName,
|
||||
Image: imageName,
|
||||
}},
|
||||
RestartPolicy: api.RestartPolicy{
|
||||
Always: &api.RestartPolicyAlways{},
|
||||
},
|
||||
}
|
||||
for p, _ := range img.Config.ExposedPorts {
|
||||
port, err := strconv.Atoi(p.Port())
|
||||
if err != nil {
|
||||
log.Fatalf("failed to parse port %q: %v", parts[0], err)
|
||||
}
|
||||
manifest.Containers[0].Ports = append(manifest.Containers[0].Ports, api.Port{
|
||||
Name: strings.Join([]string{baseName, p.Proto(), p.Port()}, "-"),
|
||||
ContainerPort: port,
|
||||
Protocol: api.Protocol(strings.ToUpper(p.Proto())),
|
||||
})
|
||||
}
|
||||
if *generateJSON {
|
||||
bs, err := json.MarshalIndent(manifest, "", " ")
|
||||
if err != nil {
|
||||
log.Fatalf("failed to render JSON container manifest: %v", err)
|
||||
}
|
||||
os.Stdout.Write(bs)
|
||||
}
|
||||
if *generateYAML {
|
||||
bs, err := yaml.Marshal(manifest)
|
||||
if err != nil {
|
||||
log.Fatalf("failed to render YAML container manifest: %v", err)
|
||||
}
|
||||
os.Stdout.Write(bs)
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user