From 0702e71ca5440c6cf801a05cff616eafc6454220 Mon Sep 17 00:00:00 2001 From: baude Date: Mon, 17 Dec 2018 13:19:05 -0600 Subject: 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 --- cmd/podman/generate_kube.go | 33 +++++++++++++++---------- docs/podman-generate-kube.1.md | 56 +++++++++++++++++++++++++++++++++--------- 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: {} -- cgit v1.2.3-54-g00ecf