diff --git a/cmd/helm/init.go b/cmd/helm/init.go
index bf7d38f16e20d3fcf871711460ced30955720bbf..bc73a6a6cbc2c26c2bbcfcfeaf64024b82360f02 100644
--- a/cmd/helm/init.go
+++ b/cmd/helm/init.go
@@ -145,27 +145,58 @@ func (i *initCmd) run() error {
 	i.opts.ImageSpec = i.image
 
 	if flagDebug {
-		var mfs string
+		writeYAMLManifest := func(apiVersion, kind, body string, first, last bool) error {
+			w := i.out
+			if !first {
+				// YAML starting document boundary marker
+				if _, err := fmt.Fprintln(w, "---"); err != nil {
+					return err
+				}
+			}
+			if _, err := fmt.Fprintln(w, "apiVersion:", apiVersion); err != nil {
+				return err
+			}
+			if _, err := fmt.Fprintln(w, "kind:", kind); err != nil {
+				return err
+			}
+			if _, err := fmt.Fprint(w, body); err != nil {
+				return err
+			}
+			if !last {
+				return nil
+			}
+			// YAML ending document boundary marker
+			_, err := fmt.Fprintln(w, "...")
+			return err
+		}
+
+		var body string
 		var err error
 
-		// write deployment manifest
-		if mfs, err = installer.DeploymentManifest(&i.opts); err != nil {
+		// write Deployment manifest
+		if body, err = installer.DeploymentManifest(&i.opts); err != nil {
+			return err
+		}
+		if err := writeYAMLManifest("extensions/v1beta1", "Deployment", body, true, false); err != nil {
 			return err
 		}
-		fmt.Fprintln(i.out, fmt.Sprintf("apiVersion: extensions/v1beta1\nkind: Deployment\n%s", mfs))
 
-		// write service manifest
-		if mfs, err = installer.ServiceManifest(i.namespace); err != nil {
+		// write Service manifest
+		if body, err = installer.ServiceManifest(i.namespace); err != nil {
+			return err
+		}
+		if err := writeYAMLManifest("v1", "Service", body, false, !i.opts.EnableTLS); err != nil {
 			return err
 		}
-		fmt.Fprintln(i.out, fmt.Sprintf("apiVersion: v1\nkind: Service\n%s", mfs))
 
-		// write secret manifest
+		// write Secret manifest
 		if i.opts.EnableTLS {
-			if mfs, err = installer.SecretManifest(&i.opts); err != nil {
+			if body, err = installer.SecretManifest(&i.opts); err != nil {
+				return err
+			}
+			if err := writeYAMLManifest("v1", "Secret", body, false, true); err != nil {
 				return err
 			}
-			fmt.Fprintln(i.out, fmt.Sprintf("apiVersion: v1\nkind: Secret\n%s", mfs))
 		}
 	}
 
diff --git a/cmd/helm/init_test.go b/cmd/helm/init_test.go
index 00c754cfaedb4c120799c62a6c190c622a1c7c96..0ef111a72db432b9e027245d1ce2d0803a4ec490 100644
--- a/cmd/helm/init_test.go
+++ b/cmd/helm/init_test.go
@@ -156,13 +156,19 @@ func TestInitCmd_dryRun(t *testing.T) {
 	if err := cmd.run(); err != nil {
 		t.Fatal(err)
 	}
-	if len(fc.Actions()) != 0 {
-		t.Error("expected no server calls")
+	if got := len(fc.Actions()); got != 0 {
+		t.Errorf("expected no server calls, got %d", got)
 	}
 
-	var y map[string]interface{}
-	if err := yaml.Unmarshal(buf.Bytes(), &y); err != nil {
-		t.Errorf("Expected parseable YAML, got %q\n\t%s", buf.String(), err)
+	docs := bytes.Split(buf.Bytes(), []byte("\n---"))
+	if got, want := len(docs), 2; got != want {
+		t.Fatalf("Expected document count of %d, got %d", want, got)
+	}
+	for _, doc := range docs {
+		var y map[string]interface{}
+		if err := yaml.Unmarshal(doc, &y); err != nil {
+			t.Errorf("Expected parseable YAML, got %q\n\t%s", doc, err)
+		}
 	}
 }