summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorbaude <bbaude@redhat.com>2018-12-17 13:19:05 -0600
committerbaude <bbaude@redhat.com>2018-12-18 09:17:30 -0600
commit0702e71ca5440c6cf801a05cff616eafc6454220 (patch)
treec937c8b919fd76f7c51e67dfc36b448124a80033
parent510b5a81dcea7df4c95388db0b66df17a691cb1c (diff)
downloadpodman-0702e71ca5440c6cf801a05cff616eafc6454220.tar.gz
podman-0702e71ca5440c6cf801a05cff616eafc6454220.tar.bz2
podman-0702e71ca5440c6cf801a05cff616eafc6454220.zip
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>
-rw-r--r--cmd/podman/generate_kube.go33
-rw-r--r--docs/podman-generate-kube.1.md56
2 files changed, 64 insertions, 25 deletions
diff --git a/cmd/podman/generate_kube.go b/cmd/podman/generate_kube.go
index 6483ffd72..8f2f0de32 100644
--- a/cmd/podman/generate_kube.go
+++ b/cmd/podman/generate_kube.go
@@ -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))
diff --git a/docs/podman-generate-kube.1.md b/docs/podman-generate-kube.1.md
index 59c3353a5..396f69615 100644
--- a/docs/podman-generate-kube.1.md
+++ b/docs/podman-generate-kube.1.md
@@ -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: {}