mirror of https://github.com/helm/helm
Merge pull request #5365 from bacongobbler/remove-pkg-tiller
ref: remove pkg/helm, pkg/hapi, pkg/tillerpull/5440/head
commit
e5094169d7
@ -1,225 +0,0 @@
|
|||||||
/*
|
|
||||||
Copyright The Helm Authors.
|
|
||||||
|
|
||||||
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.
|
|
||||||
*/
|
|
||||||
|
|
||||||
package main // import "k8s.io/helm/cmd/helm"
|
|
||||||
|
|
||||||
import (
|
|
||||||
"io/ioutil"
|
|
||||||
"net/url"
|
|
||||||
"os"
|
|
||||||
"path/filepath"
|
|
||||||
"strings"
|
|
||||||
|
|
||||||
"github.com/ghodss/yaml"
|
|
||||||
"github.com/pkg/errors"
|
|
||||||
"github.com/spf13/pflag"
|
|
||||||
|
|
||||||
"k8s.io/helm/pkg/downloader"
|
|
||||||
"k8s.io/helm/pkg/getter"
|
|
||||||
"k8s.io/helm/pkg/repo"
|
|
||||||
"k8s.io/helm/pkg/strvals"
|
|
||||||
)
|
|
||||||
|
|
||||||
// -----------------------------------------------------------------------------
|
|
||||||
// Values Options
|
|
||||||
|
|
||||||
type valuesOptions struct {
|
|
||||||
valueFiles []string // --values
|
|
||||||
values []string // --set
|
|
||||||
stringValues []string // --set-string
|
|
||||||
}
|
|
||||||
|
|
||||||
func (o *valuesOptions) addFlags(fs *pflag.FlagSet) {
|
|
||||||
fs.StringSliceVarP(&o.valueFiles, "values", "f", []string{}, "specify values in a YAML file or a URL(can specify multiple)")
|
|
||||||
fs.StringArrayVar(&o.values, "set", []string{}, "set values on the command line (can specify multiple or separate values with commas: key1=val1,key2=val2)")
|
|
||||||
fs.StringArrayVar(&o.stringValues, "set-string", []string{}, "set STRING values on the command line (can specify multiple or separate values with commas: key1=val1,key2=val2)")
|
|
||||||
}
|
|
||||||
|
|
||||||
// mergeValues merges values from files specified via -f/--values and
|
|
||||||
// directly via --set or --set-string, marshaling them to YAML
|
|
||||||
func (o *valuesOptions) mergedValues() (map[string]interface{}, error) {
|
|
||||||
base := map[string]interface{}{}
|
|
||||||
|
|
||||||
// User specified a values files via -f/--values
|
|
||||||
for _, filePath := range o.valueFiles {
|
|
||||||
currentMap := map[string]interface{}{}
|
|
||||||
|
|
||||||
bytes, err := readFile(filePath)
|
|
||||||
if err != nil {
|
|
||||||
return base, err
|
|
||||||
}
|
|
||||||
|
|
||||||
if err := yaml.Unmarshal(bytes, ¤tMap); err != nil {
|
|
||||||
return base, errors.Wrapf(err, "failed to parse %s", filePath)
|
|
||||||
}
|
|
||||||
// Merge with the previous map
|
|
||||||
base = mergeValues(base, currentMap)
|
|
||||||
}
|
|
||||||
|
|
||||||
// User specified a value via --set
|
|
||||||
for _, value := range o.values {
|
|
||||||
if err := strvals.ParseInto(value, base); err != nil {
|
|
||||||
return base, errors.Wrap(err, "failed parsing --set data")
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// User specified a value via --set-string
|
|
||||||
for _, value := range o.stringValues {
|
|
||||||
if err := strvals.ParseIntoString(value, base); err != nil {
|
|
||||||
return base, errors.Wrap(err, "failed parsing --set-string data")
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return base, nil
|
|
||||||
}
|
|
||||||
|
|
||||||
// readFile load a file from stdin, the local directory, or a remote file with a url.
|
|
||||||
func readFile(filePath string) ([]byte, error) {
|
|
||||||
if strings.TrimSpace(filePath) == "-" {
|
|
||||||
return ioutil.ReadAll(os.Stdin)
|
|
||||||
}
|
|
||||||
u, _ := url.Parse(filePath)
|
|
||||||
p := getter.All(settings)
|
|
||||||
|
|
||||||
// FIXME: maybe someone handle other protocols like ftp.
|
|
||||||
getterConstructor, err := p.ByScheme(u.Scheme)
|
|
||||||
|
|
||||||
if err != nil {
|
|
||||||
return ioutil.ReadFile(filePath)
|
|
||||||
}
|
|
||||||
|
|
||||||
getter, err := getterConstructor(filePath, "", "", "")
|
|
||||||
if err != nil {
|
|
||||||
return []byte{}, err
|
|
||||||
}
|
|
||||||
data, err := getter.Get(filePath)
|
|
||||||
return data.Bytes(), err
|
|
||||||
}
|
|
||||||
|
|
||||||
// -----------------------------------------------------------------------------
|
|
||||||
// Chart Path Options
|
|
||||||
|
|
||||||
type chartPathOptions struct {
|
|
||||||
caFile string // --ca-file
|
|
||||||
certFile string // --cert-file
|
|
||||||
keyFile string // --key-file
|
|
||||||
keyring string // --keyring
|
|
||||||
password string // --password
|
|
||||||
repoURL string // --repo
|
|
||||||
username string // --username
|
|
||||||
verify bool // --verify
|
|
||||||
version string // --version
|
|
||||||
}
|
|
||||||
|
|
||||||
// defaultKeyring returns the expanded path to the default keyring.
|
|
||||||
func defaultKeyring() string {
|
|
||||||
if v, ok := os.LookupEnv("GNUPGHOME"); ok {
|
|
||||||
return filepath.Join(v, "pubring.gpg")
|
|
||||||
}
|
|
||||||
return os.ExpandEnv("$HOME/.gnupg/pubring.gpg")
|
|
||||||
}
|
|
||||||
|
|
||||||
func (o *chartPathOptions) addFlags(fs *pflag.FlagSet) {
|
|
||||||
fs.StringVar(&o.version, "version", "", "specify the exact chart version to install. If this is not specified, the latest version is installed")
|
|
||||||
fs.BoolVar(&o.verify, "verify", false, "verify the package before installing it")
|
|
||||||
fs.StringVar(&o.keyring, "keyring", defaultKeyring(), "location of public keys used for verification")
|
|
||||||
fs.StringVar(&o.repoURL, "repo", "", "chart repository url where to locate the requested chart")
|
|
||||||
fs.StringVar(&o.username, "username", "", "chart repository username where to locate the requested chart")
|
|
||||||
fs.StringVar(&o.password, "password", "", "chart repository password where to locate the requested chart")
|
|
||||||
fs.StringVar(&o.certFile, "cert-file", "", "identify HTTPS client using this SSL certificate file")
|
|
||||||
fs.StringVar(&o.keyFile, "key-file", "", "identify HTTPS client using this SSL key file")
|
|
||||||
fs.StringVar(&o.caFile, "ca-file", "", "verify certificates of HTTPS-enabled servers using this CA bundle")
|
|
||||||
}
|
|
||||||
|
|
||||||
func (o *chartPathOptions) locateChart(name string) (string, error) {
|
|
||||||
return locateChartPath(o.repoURL, o.username, o.password, name, o.version, o.keyring, o.certFile, o.keyFile, o.caFile, o.verify)
|
|
||||||
}
|
|
||||||
|
|
||||||
// locateChartPath looks for a chart directory in known places, and returns either the full path or an error.
|
|
||||||
//
|
|
||||||
// This does not ensure that the chart is well-formed; only that the requested filename exists.
|
|
||||||
//
|
|
||||||
// Order of resolution:
|
|
||||||
// - relative to current working directory
|
|
||||||
// - if path is absolute or begins with '.', error out here
|
|
||||||
// - chart repos in $HELM_HOME
|
|
||||||
// - URL
|
|
||||||
//
|
|
||||||
// If 'verify' is true, this will attempt to also verify the chart.
|
|
||||||
func locateChartPath(repoURL, username, password, name, version, keyring,
|
|
||||||
certFile, keyFile, caFile string, verify bool) (string, error) {
|
|
||||||
name = strings.TrimSpace(name)
|
|
||||||
version = strings.TrimSpace(version)
|
|
||||||
|
|
||||||
if _, err := os.Stat(name); err == nil {
|
|
||||||
abs, err := filepath.Abs(name)
|
|
||||||
if err != nil {
|
|
||||||
return abs, err
|
|
||||||
}
|
|
||||||
if verify {
|
|
||||||
if _, err := downloader.VerifyChart(abs, keyring); err != nil {
|
|
||||||
return "", err
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return abs, nil
|
|
||||||
}
|
|
||||||
if filepath.IsAbs(name) || strings.HasPrefix(name, ".") {
|
|
||||||
return name, errors.Errorf("path %q not found", name)
|
|
||||||
}
|
|
||||||
|
|
||||||
crepo := filepath.Join(settings.Home.Repository(), name)
|
|
||||||
if _, err := os.Stat(crepo); err == nil {
|
|
||||||
return filepath.Abs(crepo)
|
|
||||||
}
|
|
||||||
|
|
||||||
dl := downloader.ChartDownloader{
|
|
||||||
HelmHome: settings.Home,
|
|
||||||
Out: os.Stdout,
|
|
||||||
Keyring: keyring,
|
|
||||||
Getters: getter.All(settings),
|
|
||||||
Username: username,
|
|
||||||
Password: password,
|
|
||||||
}
|
|
||||||
if verify {
|
|
||||||
dl.Verify = downloader.VerifyAlways
|
|
||||||
}
|
|
||||||
if repoURL != "" {
|
|
||||||
chartURL, err := repo.FindChartInAuthRepoURL(repoURL, username, password, name, version,
|
|
||||||
certFile, keyFile, caFile, getter.All(settings))
|
|
||||||
if err != nil {
|
|
||||||
return "", err
|
|
||||||
}
|
|
||||||
name = chartURL
|
|
||||||
}
|
|
||||||
|
|
||||||
if _, err := os.Stat(settings.Home.Archive()); os.IsNotExist(err) {
|
|
||||||
os.MkdirAll(settings.Home.Archive(), 0744)
|
|
||||||
}
|
|
||||||
|
|
||||||
filename, _, err := dl.DownloadTo(name, version, settings.Home.Archive())
|
|
||||||
if err == nil {
|
|
||||||
lname, err := filepath.Abs(filename)
|
|
||||||
if err != nil {
|
|
||||||
return filename, err
|
|
||||||
}
|
|
||||||
debug("Fetched %s to %s\n", name, filename)
|
|
||||||
return lname, nil
|
|
||||||
} else if settings.Debug {
|
|
||||||
return filename, err
|
|
||||||
}
|
|
||||||
|
|
||||||
return filename, errors.Errorf("failed to download %q (hint: running `helm repo update` may help)", name)
|
|
||||||
}
|
|
@ -1 +0,0 @@
|
|||||||
Error: FindFirstFile \no\such\chart: The system cannot find the path specified.
|
|
@ -1 +0,0 @@
|
|||||||
WARNING: no dependencies at testdata\testcharts\alpine\charts
|
|
@ -1,2 +0,0 @@
|
|||||||
atlas-guide
|
|
||||||
thomas-guide
|
|
@ -1,2 +0,0 @@
|
|||||||
atlas-guide
|
|
||||||
thomas-guide
|
|
@ -1,2 +0,0 @@
|
|||||||
atlas-guide
|
|
||||||
thomas-guide
|
|
@ -1,2 +0,0 @@
|
|||||||
atlas-guide
|
|
||||||
thomas-guide
|
|
@ -1,2 +0,0 @@
|
|||||||
atlas-guide
|
|
||||||
thomas-guide
|
|
@ -1,2 +0,0 @@
|
|||||||
atlas-guide
|
|
||||||
thomas-guide
|
|
@ -1,3 +0,0 @@
|
|||||||
NAME REVISION UPDATED STATUS CHART NAMESPACE
|
|
||||||
thomas-guide 1 1977-09-02 22:04:05 +0000 UTC deployed foo-0.1.0-beta.1 default
|
|
||||||
thomas-guide 2 1977-09-02 22:04:05 +0000 UTC failed foo-0.1.0-beta.1 default
|
|
@ -1,4 +0,0 @@
|
|||||||
atlas-guide
|
|
||||||
crazy-maps
|
|
||||||
thomas-guide
|
|
||||||
wild-idea
|
|
@ -1,2 +0,0 @@
|
|||||||
NAME REVISION UPDATED STATUS CHART NAMESPACE
|
|
||||||
thomas-guide 1 1977-09-02 22:04:05 +0000 UTC deployed foo-0.1.0-beta.1 default
|
|
@ -1,2 +0,0 @@
|
|||||||
NAME REVISION UPDATED STATUS CHART NAMESPACE
|
|
||||||
atlas 1 1977-09-02 22:04:05 +0000 UTC deployed foo-0.1.0-beta.1 default
|
|
@ -1,22 +0,0 @@
|
|||||||
---
|
|
||||||
# Source: subchart1/templates/service.yaml
|
|
||||||
apiVersion: v1
|
|
||||||
kind: Service
|
|
||||||
metadata:
|
|
||||||
name: subchart1
|
|
||||||
labels:
|
|
||||||
chart: "subchart1-0.1.0"
|
|
||||||
release-name: "RELEASE-NAME"
|
|
||||||
kube-version/major: "1"
|
|
||||||
kube-version/minor: "9"
|
|
||||||
kube-version/gitversion: "v1.9.0"
|
|
||||||
spec:
|
|
||||||
type: ClusterIP
|
|
||||||
ports:
|
|
||||||
- port: 80
|
|
||||||
targetPort: 80
|
|
||||||
protocol: TCP
|
|
||||||
name: apache
|
|
||||||
selector:
|
|
||||||
app: subchart1
|
|
||||||
|
|
@ -1,58 +0,0 @@
|
|||||||
---
|
|
||||||
# Source: subchart1/charts/subcharta/templates/service.yaml
|
|
||||||
apiVersion: v1
|
|
||||||
kind: Service
|
|
||||||
metadata:
|
|
||||||
name: subcharta
|
|
||||||
labels:
|
|
||||||
chart: "subcharta-0.1.0"
|
|
||||||
spec:
|
|
||||||
type: ClusterIP
|
|
||||||
ports:
|
|
||||||
- port: 80
|
|
||||||
targetPort: 80
|
|
||||||
protocol: TCP
|
|
||||||
name: apache
|
|
||||||
selector:
|
|
||||||
app: subcharta
|
|
||||||
|
|
||||||
---
|
|
||||||
# Source: subchart1/charts/subchartb/templates/service.yaml
|
|
||||||
apiVersion: v1
|
|
||||||
kind: Service
|
|
||||||
metadata:
|
|
||||||
name: subchartb
|
|
||||||
labels:
|
|
||||||
chart: "subchartb-0.1.0"
|
|
||||||
spec:
|
|
||||||
type: ClusterIP
|
|
||||||
ports:
|
|
||||||
- port: 80
|
|
||||||
targetPort: 80
|
|
||||||
protocol: TCP
|
|
||||||
name: nginx
|
|
||||||
selector:
|
|
||||||
app: subchartb
|
|
||||||
|
|
||||||
---
|
|
||||||
# Source: subchart1/templates/service.yaml
|
|
||||||
apiVersion: v1
|
|
||||||
kind: Service
|
|
||||||
metadata:
|
|
||||||
name: subchart1
|
|
||||||
labels:
|
|
||||||
chart: "subchart1-0.1.0"
|
|
||||||
release-name: "RELEASE-NAME"
|
|
||||||
kube-version/major: "1"
|
|
||||||
kube-version/minor: "6"
|
|
||||||
kube-version/gitversion: "v1.6.0"
|
|
||||||
spec:
|
|
||||||
type: ClusterIP
|
|
||||||
ports:
|
|
||||||
- port: 80
|
|
||||||
targetPort: 80
|
|
||||||
protocol: TCP
|
|
||||||
name: nginx
|
|
||||||
selector:
|
|
||||||
app: subchart1
|
|
||||||
|
|
@ -1,58 +0,0 @@
|
|||||||
---
|
|
||||||
# Source: subchart1/charts/subcharta/templates/service.yaml
|
|
||||||
apiVersion: v1
|
|
||||||
kind: Service
|
|
||||||
metadata:
|
|
||||||
name: subcharta
|
|
||||||
labels:
|
|
||||||
chart: "subcharta-0.1.0"
|
|
||||||
spec:
|
|
||||||
type: ClusterIP
|
|
||||||
ports:
|
|
||||||
- port: 80
|
|
||||||
targetPort: 80
|
|
||||||
protocol: TCP
|
|
||||||
name: apache
|
|
||||||
selector:
|
|
||||||
app: subcharta
|
|
||||||
|
|
||||||
---
|
|
||||||
# Source: subchart1/charts/subchartb/templates/service.yaml
|
|
||||||
apiVersion: v1
|
|
||||||
kind: Service
|
|
||||||
metadata:
|
|
||||||
name: subchartb
|
|
||||||
labels:
|
|
||||||
chart: "subchartb-0.1.0"
|
|
||||||
spec:
|
|
||||||
type: ClusterIP
|
|
||||||
ports:
|
|
||||||
- port: 80
|
|
||||||
targetPort: 80
|
|
||||||
protocol: TCP
|
|
||||||
name: nginx
|
|
||||||
selector:
|
|
||||||
app: subchartb
|
|
||||||
|
|
||||||
---
|
|
||||||
# Source: subchart1/templates/service.yaml
|
|
||||||
apiVersion: v1
|
|
||||||
kind: Service
|
|
||||||
metadata:
|
|
||||||
name: subchart1
|
|
||||||
labels:
|
|
||||||
chart: "subchart1-0.1.0"
|
|
||||||
release-name: "test"
|
|
||||||
kube-version/major: "1"
|
|
||||||
kube-version/minor: "9"
|
|
||||||
kube-version/gitversion: "v1.9.0"
|
|
||||||
spec:
|
|
||||||
type: ClusterIP
|
|
||||||
ports:
|
|
||||||
- port: 80
|
|
||||||
targetPort: 80
|
|
||||||
protocol: TCP
|
|
||||||
name: nginx
|
|
||||||
selector:
|
|
||||||
app: subchart1
|
|
||||||
|
|
@ -1,61 +0,0 @@
|
|||||||
---
|
|
||||||
# Source: subchart1/charts/subcharta/templates/service.yaml
|
|
||||||
apiVersion: v1
|
|
||||||
kind: Service
|
|
||||||
metadata:
|
|
||||||
name: subcharta
|
|
||||||
labels:
|
|
||||||
chart: "subcharta-0.1.0"
|
|
||||||
spec:
|
|
||||||
type: ClusterIP
|
|
||||||
ports:
|
|
||||||
- port: 80
|
|
||||||
targetPort: 80
|
|
||||||
protocol: TCP
|
|
||||||
name: apache
|
|
||||||
selector:
|
|
||||||
app: subcharta
|
|
||||||
|
|
||||||
---
|
|
||||||
# Source: subchart1/charts/subchartb/templates/service.yaml
|
|
||||||
apiVersion: v1
|
|
||||||
kind: Service
|
|
||||||
metadata:
|
|
||||||
name: subchartb
|
|
||||||
labels:
|
|
||||||
chart: "subchartb-0.1.0"
|
|
||||||
spec:
|
|
||||||
type: ClusterIP
|
|
||||||
ports:
|
|
||||||
- port: 80
|
|
||||||
targetPort: 80
|
|
||||||
protocol: TCP
|
|
||||||
name: nginx
|
|
||||||
selector:
|
|
||||||
app: subchartb
|
|
||||||
|
|
||||||
---
|
|
||||||
# Source: subchart1/templates/service.yaml
|
|
||||||
apiVersion: v1
|
|
||||||
kind: Service
|
|
||||||
metadata:
|
|
||||||
name: subchart1
|
|
||||||
labels:
|
|
||||||
chart: "subchart1-0.1.0"
|
|
||||||
release-name: "RELEASE-NAME"
|
|
||||||
kube-version/major: "1"
|
|
||||||
kube-version/minor: "9"
|
|
||||||
kube-version/gitversion: "v1.9.0"
|
|
||||||
spec:
|
|
||||||
type: ClusterIP
|
|
||||||
ports:
|
|
||||||
- port: 80
|
|
||||||
targetPort: 80
|
|
||||||
protocol: TCP
|
|
||||||
name: nginx
|
|
||||||
selector:
|
|
||||||
app: subchart1
|
|
||||||
|
|
||||||
---
|
|
||||||
# Source: subchart1/templates/NOTES.txt
|
|
||||||
Sample notes for subchart1
|
|
@ -1,2 +0,0 @@
|
|||||||
ERROR: yellow lights everywhere
|
|
||||||
Error: 1 test(s) failed
|
|
@ -1,2 +1,11 @@
|
|||||||
FAILURE: red lights everywhere
|
NAME: test-failure
|
||||||
Error: 1 test(s) failed
|
LAST DEPLOYED: 1977-09-02 22:04:05 +0000 UTC
|
||||||
|
NAMESPACE: default
|
||||||
|
STATUS: deployed
|
||||||
|
|
||||||
|
TEST SUITE:
|
||||||
|
Last Started: 1977-09-02 22:04:05 +0000 UTC
|
||||||
|
Last Completed: 1977-09-02 22:04:05 +0000 UTC
|
||||||
|
|
||||||
|
TEST STATUS INFO STARTED COMPLETED
|
||||||
|
test-failure failure 2016-01-16 00:00:00 +0000 UTC 2016-01-16 00:00:00 +0000 UTC
|
||||||
|
@ -0,0 +1 @@
|
|||||||
|
No Tests Found
|
@ -1 +1,11 @@
|
|||||||
RUNNING: things are happpeningggg
|
NAME: test-running
|
||||||
|
LAST DEPLOYED: 1977-09-02 22:04:05 +0000 UTC
|
||||||
|
NAMESPACE: default
|
||||||
|
STATUS: deployed
|
||||||
|
|
||||||
|
TEST SUITE:
|
||||||
|
Last Started: 1977-09-02 22:04:05 +0000 UTC
|
||||||
|
Last Completed: 1977-09-02 22:04:05 +0000 UTC
|
||||||
|
|
||||||
|
TEST STATUS INFO STARTED COMPLETED
|
||||||
|
test-running running 2016-01-16 00:00:00 +0000 UTC 2016-01-16 00:00:00 +0000 UTC
|
||||||
|
@ -0,0 +1,11 @@
|
|||||||
|
NAME: test-success
|
||||||
|
LAST DEPLOYED: 1977-09-02 22:04:05 +0000 UTC
|
||||||
|
NAMESPACE: default
|
||||||
|
STATUS: deployed
|
||||||
|
|
||||||
|
TEST SUITE:
|
||||||
|
Last Started: 1977-09-02 22:04:05 +0000 UTC
|
||||||
|
Last Completed: 1977-09-02 22:04:05 +0000 UTC
|
||||||
|
|
||||||
|
TEST STATUS INFO STARTED COMPLETED
|
||||||
|
test-success success 2016-01-16 00:00:00 +0000 UTC 2016-01-16 00:00:00 +0000 UTC
|
@ -1 +1,11 @@
|
|||||||
UNKNOWN: yellow lights everywhere
|
NAME: test-unknown
|
||||||
|
LAST DEPLOYED: 1977-09-02 22:04:05 +0000 UTC
|
||||||
|
NAMESPACE: default
|
||||||
|
STATUS: deployed
|
||||||
|
|
||||||
|
TEST SUITE:
|
||||||
|
Last Started: 1977-09-02 22:04:05 +0000 UTC
|
||||||
|
Last Completed: 1977-09-02 22:04:05 +0000 UTC
|
||||||
|
|
||||||
|
TEST STATUS INFO STARTED COMPLETED
|
||||||
|
test-unknown unknown 2016-01-16 00:00:00 +0000 UTC 2016-01-16 00:00:00 +0000 UTC
|
||||||
|
@ -1 +0,0 @@
|
|||||||
PASSED: green lights everywhere
|
|
@ -1,5 +1,11 @@
|
|||||||
Release "crazy-bunny" has been upgraded. Happy Helming!
|
Release "crazy-bunny" has been upgraded. Happy Helming!
|
||||||
|
NAME: crazy-bunny
|
||||||
LAST DEPLOYED: 1977-09-02 22:04:05 +0000 UTC
|
LAST DEPLOYED: 1977-09-02 22:04:05 +0000 UTC
|
||||||
NAMESPACE: default
|
NAMESPACE: default
|
||||||
STATUS: deployed
|
STATUS: deployed
|
||||||
|
|
||||||
|
NOTES:
|
||||||
|
1. Get the application URL by running these commands:
|
||||||
|
export POD_NAME=$(kubectl get pods -l "app=testUpgradeChart,release=crazy-bunny" -o jsonpath="{.items[0].metadata.name}")
|
||||||
|
echo "Visit http://127.0.0.1:8080 to use your application"
|
||||||
|
kubectl port-forward $POD_NAME 8080:80
|
||||||
|
@ -1,5 +1,11 @@
|
|||||||
Release "zany-bunny" has been upgraded. Happy Helming!
|
Release "zany-bunny" has been upgraded. Happy Helming!
|
||||||
|
NAME: zany-bunny
|
||||||
LAST DEPLOYED: 1977-09-02 22:04:05 +0000 UTC
|
LAST DEPLOYED: 1977-09-02 22:04:05 +0000 UTC
|
||||||
NAMESPACE: default
|
NAMESPACE: default
|
||||||
STATUS: deployed
|
STATUS: deployed
|
||||||
|
|
||||||
|
NOTES:
|
||||||
|
1. Get the application URL by running these commands:
|
||||||
|
export POD_NAME=$(kubectl get pods -l "app=testUpgradeChart,release=zany-bunny" -o jsonpath="{.items[0].metadata.name}")
|
||||||
|
echo "Visit http://127.0.0.1:8080 to use your application"
|
||||||
|
kubectl port-forward $POD_NAME 8080:80
|
||||||
|
@ -1,5 +1,11 @@
|
|||||||
Release "funny-bunny" has been upgraded. Happy Helming!
|
Release "funny-bunny" has been upgraded. Happy Helming!
|
||||||
|
NAME: funny-bunny
|
||||||
LAST DEPLOYED: 1977-09-02 22:04:05 +0000 UTC
|
LAST DEPLOYED: 1977-09-02 22:04:05 +0000 UTC
|
||||||
NAMESPACE: default
|
NAMESPACE: default
|
||||||
STATUS: deployed
|
STATUS: deployed
|
||||||
|
|
||||||
|
NOTES:
|
||||||
|
1. Get the application URL by running these commands:
|
||||||
|
export POD_NAME=$(kubectl get pods -l "app=testUpgradeChart,release=funny-bunny" -o jsonpath="{.items[0].metadata.name}")
|
||||||
|
echo "Visit http://127.0.0.1:8080 to use your application"
|
||||||
|
kubectl port-forward $POD_NAME 8080:80
|
||||||
|
@ -1,5 +1,11 @@
|
|||||||
Release "funny-bunny" has been upgraded. Happy Helming!
|
Release "funny-bunny" has been upgraded. Happy Helming!
|
||||||
|
NAME: funny-bunny
|
||||||
LAST DEPLOYED: 1977-09-02 22:04:05 +0000 UTC
|
LAST DEPLOYED: 1977-09-02 22:04:05 +0000 UTC
|
||||||
NAMESPACE: default
|
NAMESPACE: default
|
||||||
STATUS: deployed
|
STATUS: deployed
|
||||||
|
|
||||||
|
NOTES:
|
||||||
|
1. Get the application URL by running these commands:
|
||||||
|
export POD_NAME=$(kubectl get pods -l "app=testUpgradeChart,release=funny-bunny" -o jsonpath="{.items[0].metadata.name}")
|
||||||
|
echo "Visit http://127.0.0.1:8080 to use your application"
|
||||||
|
kubectl port-forward $POD_NAME 8080:80
|
||||||
|
@ -1,5 +1,11 @@
|
|||||||
Release "funny-bunny" has been upgraded. Happy Helming!
|
Release "funny-bunny" has been upgraded. Happy Helming!
|
||||||
|
NAME: funny-bunny
|
||||||
LAST DEPLOYED: 1977-09-02 22:04:05 +0000 UTC
|
LAST DEPLOYED: 1977-09-02 22:04:05 +0000 UTC
|
||||||
NAMESPACE: default
|
NAMESPACE: default
|
||||||
STATUS: deployed
|
STATUS: deployed
|
||||||
|
|
||||||
|
NOTES:
|
||||||
|
1. Get the application URL by running these commands:
|
||||||
|
export POD_NAME=$(kubectl get pods -l "app=testUpgradeChart,release=funny-bunny" -o jsonpath="{.items[0].metadata.name}")
|
||||||
|
echo "Visit http://127.0.0.1:8080 to use your application"
|
||||||
|
kubectl port-forward $POD_NAME 8080:80
|
||||||
|
@ -1,5 +1,11 @@
|
|||||||
Release "crazy-bunny" has been upgraded. Happy Helming!
|
Release "crazy-bunny" has been upgraded. Happy Helming!
|
||||||
|
NAME: crazy-bunny
|
||||||
LAST DEPLOYED: 1977-09-02 22:04:05 +0000 UTC
|
LAST DEPLOYED: 1977-09-02 22:04:05 +0000 UTC
|
||||||
NAMESPACE: default
|
NAMESPACE: default
|
||||||
STATUS: deployed
|
STATUS: deployed
|
||||||
|
|
||||||
|
NOTES:
|
||||||
|
1. Get the application URL by running these commands:
|
||||||
|
export POD_NAME=$(kubectl get pods -l "app=testUpgradeChart,release=crazy-bunny" -o jsonpath="{.items[0].metadata.name}")
|
||||||
|
echo "Visit http://127.0.0.1:8080 to use your application"
|
||||||
|
kubectl port-forward $POD_NAME 8080:80
|
||||||
|
@ -1,5 +1,11 @@
|
|||||||
Release "funny-bunny" has been upgraded. Happy Helming!
|
Release "funny-bunny" has been upgraded. Happy Helming!
|
||||||
|
NAME: funny-bunny
|
||||||
LAST DEPLOYED: 1977-09-02 22:04:05 +0000 UTC
|
LAST DEPLOYED: 1977-09-02 22:04:05 +0000 UTC
|
||||||
NAMESPACE: default
|
NAMESPACE: default
|
||||||
STATUS: deployed
|
STATUS: deployed
|
||||||
|
|
||||||
|
NOTES:
|
||||||
|
1. Get the application URL by running these commands:
|
||||||
|
export POD_NAME=$(kubectl get pods -l "app=testUpgradeChart,release=funny-bunny" -o jsonpath="{.items[0].metadata.name}")
|
||||||
|
echo "Visit http://127.0.0.1:8080 to use your application"
|
||||||
|
kubectl port-forward $POD_NAME 8080:80
|
||||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in new issue