2018-03-17 18:26:18 +05:30
|
|
|
<script>
|
2018-10-15 14:42:47 +05:30
|
|
|
import _ from 'underscore';
|
2018-12-13 13:39:08 +05:30
|
|
|
import helmInstallIllustration from '@gitlab/svgs/dist/illustrations/kubernetes-installation.svg';
|
2019-07-07 11:18:12 +05:30
|
|
|
import { GlLoadingIcon } from '@gitlab/ui';
|
2018-12-05 23:21:45 +05:30
|
|
|
import elasticsearchLogo from 'images/cluster_app_logos/elasticsearch.png';
|
|
|
|
import gitlabLogo from 'images/cluster_app_logos/gitlab.png';
|
|
|
|
import helmLogo from 'images/cluster_app_logos/helm.png';
|
|
|
|
import jeagerLogo from 'images/cluster_app_logos/jeager.png';
|
|
|
|
import jupyterhubLogo from 'images/cluster_app_logos/jupyterhub.png';
|
|
|
|
import kubernetesLogo from 'images/cluster_app_logos/kubernetes.png';
|
2019-02-15 15:39:39 +05:30
|
|
|
import certManagerLogo from 'images/cluster_app_logos/cert_manager.png';
|
2018-12-13 13:39:08 +05:30
|
|
|
import knativeLogo from 'images/cluster_app_logos/knative.png';
|
2018-12-05 23:21:45 +05:30
|
|
|
import meltanoLogo from 'images/cluster_app_logos/meltano.png';
|
|
|
|
import prometheusLogo from 'images/cluster_app_logos/prometheus.png';
|
2018-10-15 14:42:47 +05:30
|
|
|
import { s__, sprintf } from '../../locale';
|
|
|
|
import applicationRow from './application_row.vue';
|
|
|
|
import clipboardButton from '../../vue_shared/components/clipboard_button.vue';
|
2019-09-04 21:01:54 +05:30
|
|
|
import KnativeDomainEditor from './knative_domain_editor.vue';
|
2019-02-15 15:39:39 +05:30
|
|
|
import { CLUSTER_TYPE, APPLICATION_STATUS, INGRESS } from '../constants';
|
2019-07-07 11:18:12 +05:30
|
|
|
import LoadingButton from '~/vue_shared/components/loading_button.vue';
|
|
|
|
import eventHub from '~/clusters/event_hub';
|
2018-03-17 18:26:18 +05:30
|
|
|
|
2018-10-15 14:42:47 +05:30
|
|
|
export default {
|
|
|
|
components: {
|
|
|
|
applicationRow,
|
|
|
|
clipboardButton,
|
2019-07-07 11:18:12 +05:30
|
|
|
LoadingButton,
|
|
|
|
GlLoadingIcon,
|
2019-09-04 21:01:54 +05:30
|
|
|
KnativeDomainEditor,
|
2018-10-15 14:42:47 +05:30
|
|
|
},
|
|
|
|
props: {
|
2019-02-15 15:39:39 +05:30
|
|
|
type: {
|
|
|
|
type: String,
|
|
|
|
required: false,
|
|
|
|
default: CLUSTER_TYPE.PROJECT,
|
|
|
|
},
|
2018-10-15 14:42:47 +05:30
|
|
|
applications: {
|
|
|
|
type: Object,
|
|
|
|
required: false,
|
|
|
|
default: () => ({}),
|
2018-03-17 18:26:18 +05:30
|
|
|
},
|
2018-10-15 14:42:47 +05:30
|
|
|
helpPath: {
|
|
|
|
type: String,
|
|
|
|
required: false,
|
|
|
|
default: '',
|
2018-03-17 18:26:18 +05:30
|
|
|
},
|
2018-10-15 14:42:47 +05:30
|
|
|
ingressHelpPath: {
|
|
|
|
type: String,
|
|
|
|
required: false,
|
|
|
|
default: '',
|
|
|
|
},
|
|
|
|
ingressDnsHelpPath: {
|
|
|
|
type: String,
|
|
|
|
required: false,
|
|
|
|
default: '',
|
|
|
|
},
|
|
|
|
managePrometheusPath: {
|
|
|
|
type: String,
|
|
|
|
required: false,
|
|
|
|
default: '',
|
|
|
|
},
|
2019-02-15 15:39:39 +05:30
|
|
|
rbac: {
|
|
|
|
type: Boolean,
|
|
|
|
required: false,
|
|
|
|
default: false,
|
|
|
|
},
|
2018-10-15 14:42:47 +05:30
|
|
|
},
|
2018-12-05 23:21:45 +05:30
|
|
|
data: () => ({
|
|
|
|
elasticsearchLogo,
|
|
|
|
gitlabLogo,
|
|
|
|
helmLogo,
|
|
|
|
jeagerLogo,
|
|
|
|
jupyterhubLogo,
|
|
|
|
kubernetesLogo,
|
2019-02-15 15:39:39 +05:30
|
|
|
certManagerLogo,
|
2018-12-13 13:39:08 +05:30
|
|
|
knativeLogo,
|
2018-12-05 23:21:45 +05:30
|
|
|
meltanoLogo,
|
|
|
|
prometheusLogo,
|
|
|
|
}),
|
2018-10-15 14:42:47 +05:30
|
|
|
computed: {
|
2019-02-15 15:39:39 +05:30
|
|
|
isProjectCluster() {
|
|
|
|
return this.type === CLUSTER_TYPE.PROJECT;
|
|
|
|
},
|
2018-12-05 23:21:45 +05:30
|
|
|
helmInstalled() {
|
|
|
|
return (
|
|
|
|
this.applications.helm.status === APPLICATION_STATUS.INSTALLED ||
|
|
|
|
this.applications.helm.status === APPLICATION_STATUS.UPDATED
|
2018-10-15 14:42:47 +05:30
|
|
|
);
|
|
|
|
},
|
|
|
|
ingressId() {
|
|
|
|
return INGRESS;
|
|
|
|
},
|
|
|
|
ingressInstalled() {
|
2018-11-18 11:00:15 +05:30
|
|
|
return this.applications.ingress.status === APPLICATION_STATUS.INSTALLED;
|
2018-10-15 14:42:47 +05:30
|
|
|
},
|
2019-07-07 11:18:12 +05:30
|
|
|
ingressExternalEndpoint() {
|
|
|
|
return this.applications.ingress.externalIp || this.applications.ingress.externalHostname;
|
2018-10-15 14:42:47 +05:30
|
|
|
},
|
2019-02-15 15:39:39 +05:30
|
|
|
certManagerInstalled() {
|
|
|
|
return this.applications.cert_manager.status === APPLICATION_STATUS.INSTALLED;
|
|
|
|
},
|
2018-10-15 14:42:47 +05:30
|
|
|
ingressDescription() {
|
2019-07-07 11:18:12 +05:30
|
|
|
return sprintf(
|
2019-05-30 16:15:17 +05:30
|
|
|
_.escape(
|
|
|
|
s__(
|
2019-07-07 11:18:12 +05:30
|
|
|
`ClusterIntegration|Installing Ingress may incur additional costs. Learn more about %{pricingLink}.`,
|
2019-05-30 16:15:17 +05:30
|
|
|
),
|
|
|
|
),
|
|
|
|
{
|
2019-07-07 11:18:12 +05:30
|
|
|
pricingLink: `<strong><a href="https://cloud.google.com/compute/pricing#lb"
|
|
|
|
target="_blank" rel="noopener noreferrer">
|
|
|
|
${_.escape(s__('ClusterIntegration|pricing'))}</a></strong>`,
|
2018-10-15 14:42:47 +05:30
|
|
|
},
|
|
|
|
false,
|
|
|
|
);
|
|
|
|
},
|
2019-02-15 15:39:39 +05:30
|
|
|
certManagerDescription() {
|
|
|
|
return sprintf(
|
|
|
|
_.escape(
|
|
|
|
s__(
|
|
|
|
`ClusterIntegration|Cert-Manager is a native Kubernetes certificate management controller that helps with issuing certificates.
|
|
|
|
Installing Cert-Manager on your cluster will issue a certificate by %{letsEncrypt} and ensure that certificates
|
|
|
|
are valid and up-to-date.`,
|
|
|
|
),
|
|
|
|
),
|
|
|
|
{
|
|
|
|
letsEncrypt: `<a href="https://letsencrypt.org/"
|
|
|
|
target="_blank" rel="noopener noreferrer">
|
|
|
|
${_.escape(s__("ClusterIntegration|Let's Encrypt"))}</a>`,
|
|
|
|
},
|
|
|
|
false,
|
|
|
|
);
|
|
|
|
},
|
2018-10-15 14:42:47 +05:30
|
|
|
prometheusDescription() {
|
|
|
|
return sprintf(
|
|
|
|
_.escape(
|
|
|
|
s__(
|
2018-03-17 18:26:18 +05:30
|
|
|
`ClusterIntegration|Prometheus is an open-source monitoring system
|
|
|
|
with %{gitlabIntegrationLink} to monitor deployed applications.`,
|
2018-10-15 14:42:47 +05:30
|
|
|
),
|
|
|
|
),
|
|
|
|
{
|
|
|
|
gitlabIntegrationLink: `<a href="https://docs.gitlab.com/ce/user/project/integrations/prometheus.html"
|
2018-03-17 18:26:18 +05:30
|
|
|
target="_blank" rel="noopener noreferrer">
|
|
|
|
${_.escape(s__('ClusterIntegration|GitLab Integration'))}</a>`,
|
2018-10-15 14:42:47 +05:30
|
|
|
},
|
|
|
|
false,
|
|
|
|
);
|
2018-03-17 18:26:18 +05:30
|
|
|
},
|
2018-11-08 19:23:39 +05:30
|
|
|
jupyterInstalled() {
|
2018-11-18 11:00:15 +05:30
|
|
|
return this.applications.jupyter.status === APPLICATION_STATUS.INSTALLED;
|
2018-11-08 19:23:39 +05:30
|
|
|
},
|
|
|
|
jupyterHostname() {
|
|
|
|
return this.applications.jupyter.hostname;
|
|
|
|
},
|
2019-07-07 11:18:12 +05:30
|
|
|
knative() {
|
|
|
|
return this.applications.knative;
|
|
|
|
},
|
2018-10-15 14:42:47 +05:30
|
|
|
},
|
2018-12-05 23:21:45 +05:30
|
|
|
created() {
|
|
|
|
this.helmInstallIllustration = helmInstallIllustration;
|
|
|
|
},
|
2019-07-07 11:18:12 +05:30
|
|
|
methods: {
|
2019-09-04 21:01:54 +05:30
|
|
|
saveKnativeDomain(hostname) {
|
2019-07-07 11:18:12 +05:30
|
|
|
eventHub.$emit('saveKnativeDomain', {
|
|
|
|
id: 'knative',
|
2019-09-04 21:01:54 +05:30
|
|
|
params: { hostname },
|
|
|
|
});
|
|
|
|
},
|
|
|
|
setKnativeHostname(hostname) {
|
|
|
|
eventHub.$emit('setKnativeHostname', {
|
|
|
|
id: 'knative',
|
|
|
|
hostname,
|
2019-07-07 11:18:12 +05:30
|
|
|
});
|
|
|
|
},
|
|
|
|
},
|
2018-10-15 14:42:47 +05:30
|
|
|
};
|
2018-03-17 18:26:18 +05:30
|
|
|
</script>
|
|
|
|
|
|
|
|
<template>
|
2018-12-05 23:21:45 +05:30
|
|
|
<section id="cluster-applications">
|
2019-02-15 15:39:39 +05:30
|
|
|
<h4>{{ s__('ClusterIntegration|Applications') }}</h4>
|
2018-12-05 23:21:45 +05:30
|
|
|
<p class="append-bottom-0">
|
2019-02-15 15:39:39 +05:30
|
|
|
{{
|
|
|
|
s__(`ClusterIntegration|Choose which applications to install on your Kubernetes cluster.
|
2019-07-31 22:56:46 +05:30
|
|
|
Helm Tiller is required to install any of the following applications.`)
|
2019-02-15 15:39:39 +05:30
|
|
|
}}
|
2019-07-31 22:56:46 +05:30
|
|
|
<a :href="helpPath">{{ __('More information') }}</a>
|
2018-12-05 23:21:45 +05:30
|
|
|
</p>
|
2018-03-17 18:26:18 +05:30
|
|
|
|
2018-12-05 23:21:45 +05:30
|
|
|
<div class="cluster-application-list prepend-top-10">
|
|
|
|
<application-row
|
|
|
|
id="helm"
|
|
|
|
:logo-url="helmLogo"
|
|
|
|
:title="applications.helm.title"
|
|
|
|
:status="applications.helm.status"
|
|
|
|
:status-reason="applications.helm.statusReason"
|
|
|
|
:request-status="applications.helm.requestStatus"
|
|
|
|
:request-reason="applications.helm.requestReason"
|
2019-07-31 22:56:46 +05:30
|
|
|
:installed="applications.helm.installed"
|
|
|
|
:install-failed="applications.helm.installFailed"
|
|
|
|
:uninstallable="applications.helm.uninstallable"
|
|
|
|
:uninstall-successful="applications.helm.uninstallSuccessful"
|
|
|
|
:uninstall-failed="applications.helm.uninstallFailed"
|
2018-12-05 23:21:45 +05:30
|
|
|
class="rounded-top"
|
|
|
|
title-link="https://docs.helm.sh/"
|
|
|
|
>
|
|
|
|
<div slot="description">
|
2019-02-15 15:39:39 +05:30
|
|
|
{{
|
|
|
|
s__(`ClusterIntegration|Helm streamlines installing
|
2019-07-31 22:56:46 +05:30
|
|
|
and managing Kubernetes applications.
|
|
|
|
Tiller runs inside of your Kubernetes Cluster,
|
|
|
|
and manages releases of your charts.`)
|
2019-02-15 15:39:39 +05:30
|
|
|
}}
|
2018-12-05 23:21:45 +05:30
|
|
|
</div>
|
|
|
|
</application-row>
|
2019-02-15 15:39:39 +05:30
|
|
|
<div v-show="!helmInstalled" class="cluster-application-warning">
|
|
|
|
<div class="svg-container" v-html="helmInstallIllustration"></div>
|
|
|
|
{{
|
|
|
|
s__(`ClusterIntegration|You must first install Helm Tiller before
|
2019-07-31 22:56:46 +05:30
|
|
|
installing the applications below`)
|
2019-02-15 15:39:39 +05:30
|
|
|
}}
|
2018-12-05 23:21:45 +05:30
|
|
|
</div>
|
|
|
|
<application-row
|
|
|
|
:id="ingressId"
|
|
|
|
:logo-url="kubernetesLogo"
|
|
|
|
:title="applications.ingress.title"
|
|
|
|
:status="applications.ingress.status"
|
|
|
|
:status-reason="applications.ingress.statusReason"
|
|
|
|
:request-status="applications.ingress.requestStatus"
|
|
|
|
:request-reason="applications.ingress.requestReason"
|
2019-07-31 22:56:46 +05:30
|
|
|
:installed="applications.ingress.installed"
|
|
|
|
:install-failed="applications.ingress.installFailed"
|
|
|
|
:uninstallable="applications.ingress.uninstallable"
|
|
|
|
:uninstall-successful="applications.ingress.uninstallSuccessful"
|
|
|
|
:uninstall-failed="applications.ingress.uninstallFailed"
|
2018-12-05 23:21:45 +05:30
|
|
|
:disabled="!helmInstalled"
|
|
|
|
title-link="https://kubernetes.io/docs/concepts/services-networking/ingress/"
|
|
|
|
>
|
|
|
|
<div slot="description">
|
|
|
|
<p>
|
2019-02-15 15:39:39 +05:30
|
|
|
{{
|
|
|
|
s__(`ClusterIntegration|Ingress gives you a way to route
|
2019-07-31 22:56:46 +05:30
|
|
|
requests to services based on the request host or path,
|
|
|
|
centralizing a number of services into a single entrypoint.`)
|
2019-02-15 15:39:39 +05:30
|
|
|
}}
|
2018-12-05 23:21:45 +05:30
|
|
|
</p>
|
2018-03-27 19:54:05 +05:30
|
|
|
|
2018-12-05 23:21:45 +05:30
|
|
|
<template v-if="ingressInstalled">
|
|
|
|
<div class="form-group">
|
2019-07-31 22:56:46 +05:30
|
|
|
<label for="ingress-endpoint">{{ s__('ClusterIntegration|Ingress Endpoint') }}</label>
|
2019-07-07 11:18:12 +05:30
|
|
|
<div v-if="ingressExternalEndpoint" class="input-group">
|
2018-03-27 19:54:05 +05:30
|
|
|
<input
|
2019-07-07 11:18:12 +05:30
|
|
|
id="ingress-endpoint"
|
|
|
|
:value="ingressExternalEndpoint"
|
2018-03-27 19:54:05 +05:30
|
|
|
type="text"
|
2019-07-07 11:18:12 +05:30
|
|
|
class="form-control js-endpoint"
|
2018-03-27 19:54:05 +05:30
|
|
|
readonly
|
|
|
|
/>
|
2018-12-05 23:21:45 +05:30
|
|
|
<span class="input-group-append">
|
|
|
|
<clipboard-button
|
2019-07-07 11:18:12 +05:30
|
|
|
:text="ingressExternalEndpoint"
|
|
|
|
:title="s__('ClusterIntegration|Copy Ingress Endpoint to clipboard')"
|
2018-12-05 23:21:45 +05:30
|
|
|
class="input-group-text js-clipboard-btn"
|
|
|
|
/>
|
|
|
|
</span>
|
2018-03-27 19:54:05 +05:30
|
|
|
</div>
|
2019-07-07 11:18:12 +05:30
|
|
|
<div v-else class="input-group">
|
|
|
|
<input type="text" class="form-control js-endpoint" readonly />
|
|
|
|
<gl-loading-icon
|
|
|
|
class="position-absolute align-self-center ml-2 js-ingress-ip-loading-icon"
|
|
|
|
/>
|
|
|
|
</div>
|
2019-02-15 15:39:39 +05:30
|
|
|
<p class="form-text text-muted">
|
|
|
|
{{
|
|
|
|
s__(`ClusterIntegration|Point a wildcard DNS to this
|
2019-07-31 22:56:46 +05:30
|
|
|
generated endpoint in order to access
|
|
|
|
your application after it has been deployed.`)
|
2019-02-15 15:39:39 +05:30
|
|
|
}}
|
2019-09-04 21:01:54 +05:30
|
|
|
<a :href="ingressDnsHelpPath" target="_blank" rel="noopener noreferrer">
|
|
|
|
{{ __('More information') }}
|
|
|
|
</a>
|
2019-02-15 15:39:39 +05:30
|
|
|
</p>
|
2018-12-05 23:21:45 +05:30
|
|
|
</div>
|
2018-03-27 19:54:05 +05:30
|
|
|
|
2019-07-07 11:18:12 +05:30
|
|
|
<p v-if="!ingressExternalEndpoint" class="settings-message js-no-endpoint-message">
|
2019-02-15 15:39:39 +05:30
|
|
|
{{
|
2019-07-07 11:18:12 +05:30
|
|
|
s__(`ClusterIntegration|The endpoint is in
|
2019-07-31 22:56:46 +05:30
|
|
|
the process of being assigned. Please check your Kubernetes
|
|
|
|
cluster or Quotas on Google Kubernetes Engine if it takes a long time.`)
|
2019-02-15 15:39:39 +05:30
|
|
|
}}
|
2019-09-04 21:01:54 +05:30
|
|
|
<a :href="ingressDnsHelpPath" target="_blank" rel="noopener noreferrer">
|
|
|
|
{{ __('More information') }}
|
|
|
|
</a>
|
2018-12-05 23:21:45 +05:30
|
|
|
</p>
|
|
|
|
</template>
|
2019-07-07 11:18:12 +05:30
|
|
|
<template v-if="!ingressInstalled">
|
|
|
|
<div class="bs-callout bs-callout-info" v-html="ingressDescription"></div>
|
|
|
|
</template>
|
2019-01-03 12:48:30 +05:30
|
|
|
</div>
|
2018-12-23 12:14:25 +05:30
|
|
|
</application-row>
|
|
|
|
<application-row
|
2019-02-15 15:39:39 +05:30
|
|
|
id="cert_manager"
|
|
|
|
:logo-url="certManagerLogo"
|
|
|
|
:title="applications.cert_manager.title"
|
|
|
|
:status="applications.cert_manager.status"
|
|
|
|
:status-reason="applications.cert_manager.statusReason"
|
|
|
|
:request-status="applications.cert_manager.requestStatus"
|
|
|
|
:request-reason="applications.cert_manager.requestReason"
|
2019-07-31 22:56:46 +05:30
|
|
|
:installed="applications.cert_manager.installed"
|
|
|
|
:install-failed="applications.cert_manager.installFailed"
|
2019-02-15 15:39:39 +05:30
|
|
|
:install-application-request-params="{ email: applications.cert_manager.email }"
|
2019-07-31 22:56:46 +05:30
|
|
|
:uninstallable="applications.cert_manager.uninstallable"
|
|
|
|
:uninstall-successful="applications.cert_manager.uninstallSuccessful"
|
|
|
|
:uninstall-failed="applications.cert_manager.uninstallFailed"
|
2019-02-15 15:39:39 +05:30
|
|
|
:disabled="!helmInstalled"
|
|
|
|
title-link="https://cert-manager.readthedocs.io/en/latest/#"
|
|
|
|
>
|
|
|
|
<template>
|
|
|
|
<div slot="description">
|
|
|
|
<p v-html="certManagerDescription"></p>
|
|
|
|
<div class="form-group">
|
2019-09-04 21:01:54 +05:30
|
|
|
<label for="cert-manager-issuer-email">
|
|
|
|
{{ s__('ClusterIntegration|Issuer Email') }}
|
|
|
|
</label>
|
2019-02-15 15:39:39 +05:30
|
|
|
<div class="input-group">
|
|
|
|
<input
|
|
|
|
v-model="applications.cert_manager.email"
|
|
|
|
:readonly="certManagerInstalled"
|
|
|
|
type="text"
|
|
|
|
class="form-control js-email"
|
|
|
|
/>
|
|
|
|
</div>
|
|
|
|
<p class="form-text text-muted">
|
|
|
|
{{
|
|
|
|
s__(`ClusterIntegration|Issuers represent a certificate authority.
|
2019-07-31 22:56:46 +05:30
|
|
|
You must provide an email address for your Issuer. `)
|
2019-02-15 15:39:39 +05:30
|
|
|
}}
|
|
|
|
<a
|
|
|
|
href="http://docs.cert-manager.io/en/latest/reference/issuers.html?highlight=email"
|
|
|
|
target="_blank"
|
|
|
|
rel="noopener noreferrer"
|
2019-07-31 22:56:46 +05:30
|
|
|
>{{ __('More information') }}</a
|
2019-02-15 15:39:39 +05:30
|
|
|
>
|
|
|
|
</p>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</template>
|
|
|
|
</application-row>
|
|
|
|
<application-row
|
2018-12-05 23:21:45 +05:30
|
|
|
id="prometheus"
|
|
|
|
:logo-url="prometheusLogo"
|
|
|
|
:title="applications.prometheus.title"
|
|
|
|
:manage-link="managePrometheusPath"
|
|
|
|
:status="applications.prometheus.status"
|
|
|
|
:status-reason="applications.prometheus.statusReason"
|
|
|
|
:request-status="applications.prometheus.requestStatus"
|
|
|
|
:request-reason="applications.prometheus.requestReason"
|
2019-07-31 22:56:46 +05:30
|
|
|
:installed="applications.prometheus.installed"
|
|
|
|
:install-failed="applications.prometheus.installFailed"
|
|
|
|
:uninstallable="applications.prometheus.uninstallable"
|
|
|
|
:uninstall-successful="applications.prometheus.uninstallSuccessful"
|
|
|
|
:uninstall-failed="applications.prometheus.uninstallFailed"
|
2018-12-05 23:21:45 +05:30
|
|
|
:disabled="!helmInstalled"
|
|
|
|
title-link="https://prometheus.io/docs/introduction/overview/"
|
|
|
|
>
|
2019-02-15 15:39:39 +05:30
|
|
|
<div slot="description" v-html="prometheusDescription"></div>
|
2018-12-05 23:21:45 +05:30
|
|
|
</application-row>
|
|
|
|
<application-row
|
|
|
|
id="runner"
|
|
|
|
:logo-url="gitlabLogo"
|
|
|
|
:title="applications.runner.title"
|
|
|
|
:status="applications.runner.status"
|
|
|
|
:status-reason="applications.runner.statusReason"
|
|
|
|
:request-status="applications.runner.requestStatus"
|
|
|
|
:request-reason="applications.runner.requestReason"
|
2019-03-02 22:35:43 +05:30
|
|
|
:version="applications.runner.version"
|
|
|
|
:chart-repo="applications.runner.chartRepo"
|
2019-09-04 21:01:54 +05:30
|
|
|
:update-available="applications.runner.updateAvailable"
|
2019-07-31 22:56:46 +05:30
|
|
|
:installed="applications.runner.installed"
|
|
|
|
:install-failed="applications.runner.installFailed"
|
|
|
|
:update-successful="applications.runner.updateSuccessful"
|
|
|
|
:update-failed="applications.runner.updateFailed"
|
|
|
|
:uninstallable="applications.runner.uninstallable"
|
|
|
|
:uninstall-successful="applications.runner.uninstallSuccessful"
|
|
|
|
:uninstall-failed="applications.runner.uninstallFailed"
|
2018-12-05 23:21:45 +05:30
|
|
|
:disabled="!helmInstalled"
|
|
|
|
title-link="https://docs.gitlab.com/runner/"
|
|
|
|
>
|
|
|
|
<div slot="description">
|
2019-02-15 15:39:39 +05:30
|
|
|
{{
|
2019-07-07 11:18:12 +05:30
|
|
|
s__(`ClusterIntegration|GitLab Runner connects to the
|
2019-07-31 22:56:46 +05:30
|
|
|
repository and executes CI/CD jobs,
|
|
|
|
pushing results back and deploying
|
|
|
|
applications to production.`)
|
2019-02-15 15:39:39 +05:30
|
|
|
}}
|
2018-12-05 23:21:45 +05:30
|
|
|
</div>
|
|
|
|
</application-row>
|
|
|
|
<application-row
|
2019-02-15 15:39:39 +05:30
|
|
|
v-if="isProjectCluster"
|
2018-12-05 23:21:45 +05:30
|
|
|
id="jupyter"
|
|
|
|
:logo-url="jupyterhubLogo"
|
|
|
|
:title="applications.jupyter.title"
|
|
|
|
:status="applications.jupyter.status"
|
|
|
|
:status-reason="applications.jupyter.statusReason"
|
|
|
|
:request-status="applications.jupyter.requestStatus"
|
|
|
|
:request-reason="applications.jupyter.requestReason"
|
2019-07-31 22:56:46 +05:30
|
|
|
:installed="applications.jupyter.installed"
|
|
|
|
:install-failed="applications.jupyter.installFailed"
|
|
|
|
:uninstallable="applications.jupyter.uninstallable"
|
|
|
|
:uninstall-successful="applications.jupyter.uninstallSuccessful"
|
|
|
|
:uninstall-failed="applications.jupyter.uninstallFailed"
|
2018-12-05 23:21:45 +05:30
|
|
|
:install-application-request-params="{ hostname: applications.jupyter.hostname }"
|
|
|
|
:disabled="!helmInstalled"
|
|
|
|
title-link="https://jupyterhub.readthedocs.io/en/stable/"
|
|
|
|
>
|
|
|
|
<div slot="description">
|
|
|
|
<p>
|
2019-02-15 15:39:39 +05:30
|
|
|
{{
|
|
|
|
s__(`ClusterIntegration|JupyterHub, a multi-user Hub, spawns,
|
2019-07-31 22:56:46 +05:30
|
|
|
manages, and proxies multiple instances of the single-user
|
|
|
|
Jupyter notebook server. JupyterHub can be used to serve
|
|
|
|
notebooks to a class of students, a corporate data science group,
|
|
|
|
or a scientific research group.`)
|
2019-02-15 15:39:39 +05:30
|
|
|
}}
|
2018-12-05 23:21:45 +05:30
|
|
|
</p>
|
2018-11-08 19:23:39 +05:30
|
|
|
|
2019-07-07 11:18:12 +05:30
|
|
|
<template v-if="ingressExternalEndpoint">
|
2018-12-05 23:21:45 +05:30
|
|
|
<div class="form-group">
|
2019-07-31 22:56:46 +05:30
|
|
|
<label for="jupyter-hostname">{{ s__('ClusterIntegration|Jupyter Hostname') }}</label>
|
2018-11-08 19:23:39 +05:30
|
|
|
|
2018-12-05 23:21:45 +05:30
|
|
|
<div class="input-group">
|
|
|
|
<input
|
|
|
|
v-model="applications.jupyter.hostname"
|
|
|
|
:readonly="jupyterInstalled"
|
|
|
|
type="text"
|
|
|
|
class="form-control js-hostname"
|
|
|
|
/>
|
2019-02-15 15:39:39 +05:30
|
|
|
<span class="input-group-btn">
|
2018-12-05 23:21:45 +05:30
|
|
|
<clipboard-button
|
|
|
|
:text="jupyterHostname"
|
|
|
|
:title="s__('ClusterIntegration|Copy Jupyter Hostname to clipboard')"
|
|
|
|
class="js-clipboard-btn"
|
2018-11-08 19:23:39 +05:30
|
|
|
/>
|
2018-12-05 23:21:45 +05:30
|
|
|
</span>
|
2018-11-08 19:23:39 +05:30
|
|
|
</div>
|
2019-02-15 15:39:39 +05:30
|
|
|
|
|
|
|
<p v-if="ingressInstalled" class="form-text text-muted">
|
|
|
|
{{
|
|
|
|
s__(`ClusterIntegration|Replace this with your own hostname if you want.
|
2019-07-31 22:56:46 +05:30
|
|
|
If you do so, point hostname to Ingress IP Address from above.`)
|
2019-02-15 15:39:39 +05:30
|
|
|
}}
|
2019-09-04 21:01:54 +05:30
|
|
|
<a :href="ingressDnsHelpPath" target="_blank" rel="noopener noreferrer">
|
|
|
|
{{ __('More information') }}
|
|
|
|
</a>
|
2019-02-15 15:39:39 +05:30
|
|
|
</p>
|
2018-12-05 23:21:45 +05:30
|
|
|
</div>
|
|
|
|
</template>
|
|
|
|
</div>
|
|
|
|
</application-row>
|
2018-12-13 13:39:08 +05:30
|
|
|
<application-row
|
2019-02-15 15:39:39 +05:30
|
|
|
v-if="isProjectCluster"
|
2018-12-13 13:39:08 +05:30
|
|
|
id="knative"
|
|
|
|
:logo-url="knativeLogo"
|
|
|
|
:title="applications.knative.title"
|
|
|
|
:status="applications.knative.status"
|
|
|
|
:status-reason="applications.knative.statusReason"
|
|
|
|
:request-status="applications.knative.requestStatus"
|
|
|
|
:request-reason="applications.knative.requestReason"
|
2019-07-31 22:56:46 +05:30
|
|
|
:installed="applications.knative.installed"
|
|
|
|
:install-failed="applications.knative.installFailed"
|
2019-02-15 15:39:39 +05:30
|
|
|
:install-application-request-params="{ hostname: applications.knative.hostname }"
|
2019-07-31 22:56:46 +05:30
|
|
|
:uninstallable="applications.knative.uninstallable"
|
|
|
|
:uninstall-successful="applications.knative.uninstallSuccessful"
|
|
|
|
:uninstall-failed="applications.knative.uninstallFailed"
|
2019-09-04 21:01:54 +05:30
|
|
|
:updateable="false"
|
2018-12-13 13:39:08 +05:30
|
|
|
:disabled="!helmInstalled"
|
2019-07-31 22:56:46 +05:30
|
|
|
v-bind="applications.knative"
|
2018-12-13 13:39:08 +05:30
|
|
|
title-link="https://github.com/knative/docs"
|
|
|
|
>
|
|
|
|
<div slot="description">
|
2019-02-15 15:39:39 +05:30
|
|
|
<span v-if="!rbac">
|
2019-07-07 11:18:12 +05:30
|
|
|
<p v-if="!rbac" class="rbac-notice bs-callout bs-callout-info append-bottom-0">
|
2019-02-15 15:39:39 +05:30
|
|
|
{{
|
|
|
|
s__(`ClusterIntegration|You must have an RBAC-enabled cluster
|
2019-07-31 22:56:46 +05:30
|
|
|
to install Knative.`)
|
2019-02-15 15:39:39 +05:30
|
|
|
}}
|
2019-09-04 21:01:54 +05:30
|
|
|
<a :href="helpPath" target="_blank" rel="noopener noreferrer">
|
|
|
|
{{ __('More information') }}
|
|
|
|
</a>
|
2019-02-15 15:39:39 +05:30
|
|
|
</p>
|
|
|
|
<br />
|
|
|
|
</span>
|
2018-12-13 13:39:08 +05:30
|
|
|
<p>
|
2019-02-15 15:39:39 +05:30
|
|
|
{{
|
|
|
|
s__(`ClusterIntegration|Knative extends Kubernetes to provide
|
2019-07-31 22:56:46 +05:30
|
|
|
a set of middleware components that are essential to build modern,
|
|
|
|
source-centric, and container-based applications that can run
|
|
|
|
anywhere: on premises, in the cloud, or even in a third-party data center.`)
|
2019-02-15 15:39:39 +05:30
|
|
|
}}
|
2018-12-13 13:39:08 +05:30
|
|
|
</p>
|
|
|
|
|
2019-09-04 21:01:54 +05:30
|
|
|
<knative-domain-editor
|
|
|
|
v-if="knative.installed || (helmInstalled && rbac)"
|
|
|
|
:knative="knative"
|
|
|
|
:ingress-dns-help-path="ingressDnsHelpPath"
|
|
|
|
@save="saveKnativeDomain"
|
|
|
|
@set="setKnativeHostname"
|
|
|
|
/>
|
2018-12-13 13:39:08 +05:30
|
|
|
</div>
|
|
|
|
</application-row>
|
2018-03-17 18:26:18 +05:30
|
|
|
</div>
|
|
|
|
</section>
|
|
|
|
</template>
|