generate service object inline

no longer require the service object be output to a different file; we should be
doing this inline with the pods for user convenience.

Signed-off-by: baude <bbaude@redhat.com>
This commit is contained in:
baude 2018-12-17 13:19:05 -06:00
parent 510b5a81dc
commit 0702e71ca5
2 changed files with 64 additions and 25 deletions

View file

@ -17,7 +17,7 @@ var (
containerKubeFlags = []cli.Flag{
cli.BoolFlag{
Name: "service, s",
Usage: "only generate YAML for kubernetes service object",
Usage: "generate YAML for kubernetes service object",
},
}
containerKubeDescription = "Generate Kubernetes Pod YAML"
@ -36,13 +36,14 @@ var (
// generateKubeYAMLCmdgenerates or replays kube
func generateKubeYAMLCmd(c *cli.Context) error {
var (
podYAML *v1.Pod
container *libpod.Container
err error
output []byte
pod *libpod.Pod
mashalledBytes []byte
servicePorts []v1.ServicePort
podYAML *v1.Pod
container *libpod.Container
err error
output []byte
pod *libpod.Pod
marshalledPod []byte
marshalledService []byte
servicePorts []v1.ServicePort
)
if rootless.IsRootless() {
@ -79,11 +80,13 @@ func generateKubeYAMLCmd(c *cli.Context) error {
if c.Bool("service") {
serviceYAML := libpod.GenerateKubeServiceFromV1Pod(podYAML, servicePorts)
mashalledBytes, err = yaml.Marshal(serviceYAML)
} else {
// Marshall the results
mashalledBytes, err = yaml.Marshal(podYAML)
marshalledService, err = yaml.Marshal(serviceYAML)
if err != nil {
return err
}
}
// Marshall the results
marshalledPod, err = yaml.Marshal(podYAML)
if err != nil {
return err
}
@ -96,7 +99,11 @@ func generateKubeYAMLCmd(c *cli.Context) error {
# Created with podman-%s
`
output = append(output, []byte(fmt.Sprintf(header, podmanVersion.Version))...)
output = append(output, mashalledBytes...)
output = append(output, marshalledPod...)
if c.Bool("service") {
output = append(output, []byte("---\n")...)
output = append(output, marshalledService...)
}
// Output the v1.Pod with the v1.Container
fmt.Println(string(output))

View file

@ -22,7 +22,7 @@ random port is assigned by Podman in the specification.
# OPTIONS:
**s** **--service**
Generate a service file for the resulting Pod YAML.
Generate a Kubernetes service object in addition to the Pods.
## Examples ##
@ -82,31 +82,63 @@ spec:
status: {}
```
Create Kubernetes service YAML for a container called `some-mariabdb`
Create Kubernetes Pod YAML for a pod called `demoweb` and include a service.
```
$ sudo podman generate kube -s some-mariadb
# Generation of Kubenetes YAML is still under development!
$ sudo podman generate kube -s demoweb
# Generation of Kubernetes YAML is still under development!
#
# Save the output of this file and use kubectl create -f to import
# it into Kubernetes.
#
# Created with podman-0.11.2-dev
# Created with podman-0.12.2-dev
apiVersion: v1
kind: Pod
metadata:
creationTimestamp: 2018-12-18T15:16:06Z
labels:
app: demoweb
name: demoweb-libpod
spec:
containers:
- command:
- python3
- /root/code/graph.py
env:
- name: PATH
value: /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
- name: TERM
value: xterm
- name: HOSTNAME
- name: container
value: podman
image: quay.io/baude/demoweb:latest
name: practicalarchimedes
resources: {}
securityContext:
allowPrivilegeEscalation: true
capabilities: {}
privileged: false
readOnlyRootFilesystem: false
tty: true
workingDir: /root/code
status: {}
---
apiVersion: v1
kind: Service
metadata:
creationTimestamp: 2018-12-03T19:08:24Z
creationTimestamp: 2018-12-18T15:16:06Z
labels:
app: some-mariadb
name: some-mariadb-libpod
app: demoweb
name: demoweb-libpod
spec:
ports:
- name: "3306"
nodePort: 30929
port: 3306
- name: "8050"
nodePort: 31269
port: 8050
protocol: TCP
targetPort: 0
selector:
app: some-mariadb
app: demoweb
type: NodePort
status:
loadBalancer: {}