Skip to content

Commit 2a1b2da

Browse files
authored
Merge pull request #3439 from replicatedhq/quick-start-updates
Quick start updates
2 parents 63a4acc + 5564e10 commit 2a1b2da

File tree

68 files changed

+687
-3254
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

68 files changed

+687
-3254
lines changed

docs/intro.md

Lines changed: 3 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,9 @@ hide_table_of_contents: true
4343
<li>
4444
<p>Onboarding workflows, tutorials, and labs to help you get started with Replicated quickly.</p>
4545
</li>
46+
<li>
47+
<a href="/vendor/quick-start">Quick Start</a>
48+
</li>
4649
<li>
4750
<a href="intro-replicated">Introduction to Replicated</a>
4851
</li>
@@ -52,9 +55,6 @@ hide_table_of_contents: true
5255
<li>
5356
<a href="/vendor/replicated-onboarding">Replicated Onboarding</a>
5457
</li>
55-
<li>
56-
<a href="/vendor/tutorial-embedded-cluster-setup">Tutorials</a>
57-
</li>
5858
</ul>
5959
</section>
6060
<section class="tile__container">
@@ -151,9 +151,6 @@ hide_table_of_contents: true
151151
<li>
152152
<a href="/enterprise/installing-embedded">Install with Embedded Cluster</a>
153153
</li>
154-
<li>
155-
<a href="/vendor/tutorial-embedded-cluster-setup">Tutorial: Deploy a Helm Chart on a VM with Embedded Cluster</a>
156-
</li>
157154
</ul>
158155
</section>
159156
<section class="tile__container">
@@ -230,9 +227,6 @@ hide_table_of_contents: true
230227
<li>
231228
<a href="/vendor/preflight-running">Run Preflight Checks for Helm Installations</a>
232229
</li>
233-
<li>
234-
<a href="/vendor/tutorial-preflight-helm-setup">Preflight Checks Tutorial for Helm Charts</a>
235-
</li>
236230
<li>
237231
<a href="https://play.instruqt.com/embed/replicated/tracks/avoiding-installation-pitfalls?token=em_gJjtIzzTTtdd5RFG">Preflight Checks Lab in Instruqt</a>
238232
</li>
Lines changed: 137 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,137 @@
1+
```yaml
2+
apiVersion: kots.io/v1beta2
3+
kind: HelmChart
4+
metadata:
5+
name: slackernews
6+
spec:
7+
# chart identifies a matching chart from a .tgz
8+
chart:
9+
name: slackernews
10+
chartVersion: 1.0.0
11+
namespace: slackernews
12+
13+
# values are used in the customer environment, as a pre-render step
14+
# these values will be supplied to helm template
15+
values:
16+
postgres:
17+
enabled: true
18+
deploy_postgres: repl{{ ConfigOption "deploy_postgres" | ParseBool }}
19+
slack:
20+
botToken: repl{{ ConfigOption "slack_bot_token" | quote }}
21+
userToken: repl{{ ConfigOption "slack_user_token" | quote }}
22+
clientId: repl{{ ConfigOption "slack_clientid" | quote }}
23+
clientSecret: repl{{ ConfigOption "slack_clientsecret" | quote }}
24+
slackernews:
25+
domain: repl{{ ConfigOption "slackernews_domain" }}
26+
adminUserEmails: repl{{ ConfigOption "slackernews_admin_user_emails" | quote }}
27+
admin-console:
28+
enabled: false
29+
replicated:
30+
isEmbeddedCluster: repl{{ eq Distribution "embedded-cluster"}}
31+
isKOTSManaged: true
32+
imagePullSecrets:
33+
- name: '{{repl ImagePullSecretName }}'
34+
service:
35+
tls:
36+
enabled: true
37+
nginx:
38+
enabled: true
39+
images:
40+
pullSecrets:
41+
- name: '{{repl ImagePullSecretName }}'
42+
43+
optionalValues:
44+
# load images from the local registry in an air-gapped environment
45+
- when: '{{repl HasLocalRegistry }}'
46+
recursiveMerge: true
47+
values:
48+
replicated:
49+
isAirgap: true
50+
image:
51+
registry: '{{repl LocalRegistryHost }}'
52+
repository: '{{repl LocalRegistryNamespace }}/replicated-sdk-image'
53+
slackernews:
54+
registry: '{{repl LocalRegistryHost}}'
55+
repository: '{{LocalRegistryNamespace}}/slackernews-web'
56+
nginx:
57+
registry: '{{repl LocalRegistryHost}}'
58+
repository: '{{LocalRegistryNamespace}}/nginx'
59+
postgres:
60+
registry: '{{repl LocalRegistryHost}}'
61+
repository: '{{LocalRegistryNamespace}}/postgres'
62+
63+
# the user wants us to deploy a local Postgres instance
64+
- when: '{{repl ConfigOptionEquals "deploy_postgres" "1"}}'
65+
recursiveMerge: true
66+
values:
67+
postgres:
68+
password: '{{repl ConfigOption "postgres_password" }}'
69+
70+
# the user provided their own Postgres instance
71+
- when: '{{repl ConfigOptionEquals "deploy_postgres" "0"}}'
72+
recursiveMerge: true
73+
values:
74+
postgres:
75+
uri: '{{repl ConfigOption "postgres_external_uri" }}'
76+
77+
# use the user-provided certificates
78+
- when: '{{repl ConfigOptionEquals "certificate_source" "upload_existing"}}'
79+
recursiveMerge: true
80+
values:
81+
service:
82+
tls:
83+
enabled: true
84+
cert: repl{{ ConfigOptionData "tls_cert" | nindent 14 }}
85+
key: repl{{ ConfigOptionData "tls_key" | nindent 14 }}
86+
ca: repl{{ ConfigOptionData "tls_ca" | nindent 14 }}
87+
88+
# or generate our own
89+
- when: '{{repl ConfigOptionEquals "certificate_source" "generate_internal"}}'
90+
recursiveMerge: true
91+
values:
92+
service:
93+
tls:
94+
enabled: true
95+
ca: |-
96+
{{repl $ca := genCA (LicenseFieldValue "customerName") 365 }}
97+
{{repl $ca.Cert | Base64Encode}}
98+
cert: |-
99+
{{repl $cert := genSignedCert (ConfigOption "slackernews_domain") nil (list (ConfigOption "slackernews_domain")) 365 $ca }}
100+
{{repl $cert.Cert | nindent 14 }}
101+
key: |-
102+
{{repl $cert.Key | nindent 14 }}
103+
104+
# handle different service types
105+
- when: '{{repl ConfigOptionEquals "service_type" "cluster_ip"}}'
106+
recursiveMerge: true
107+
values:
108+
nginx:
109+
service:
110+
type: ClusterIP
111+
112+
- when: '{{repl ConfigOptionEquals "service_type" "load_balancer"}}'
113+
recursiveMerge: true
114+
values:
115+
nginx:
116+
service:
117+
type: LoadBalancer
118+
119+
- when: '{{repl ConfigOptionEquals "service_type" "node_port"}}'
120+
recursiveMerge: true
121+
values:
122+
nginx:
123+
service:
124+
type: NodePort
125+
nodePort:
126+
port: repl{{ ConfigOption "node_port_port" }}
127+
128+
129+
130+
# builder values provide a way to render the chart with all images
131+
# and manifests. this is used in Replicated to create airgap packages
132+
builder:
133+
postgres:
134+
password: this-is-not-used-but-needed-for-builder
135+
deploy_postgres: true
136+
enabled: true
137+
```
Lines changed: 153 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,153 @@
1+
```yaml
2+
apiVersion: kots.io/v1beta1
3+
kind: Config
4+
metadata:
5+
name: slackernews-config
6+
spec:
7+
groups:
8+
- name: slackernews
9+
title: Application Core
10+
description: |
11+
For this section, you can specify some core parameters for how
12+
Slackernews operates, including the domain where users will access it
13+
and the user who can administer it.
14+
15+
Users that you specify under **Admin Users** will be able to access the
16+
Slackernews adminstrative console at `/admin`, allowing them to manage
17+
content, users, and settings. Changes will take effect the next time
18+
they are active in the Slackernews application.
19+
items:
20+
- name: slackernews_domain
21+
title: Ingress Hostname
22+
help_text: >
23+
The domain name at which you'll access SlackerNews. Don't include
24+
the `https://` or any path elements.
25+
type: text
26+
required: true
27+
# validation:
28+
# regex:
29+
# pattern: ^(?!-)[A-Za-z0-9-]{1,63}(?<!-)(\.(?!-)[A-Za-z0-9-]{1,63}(?<!-))*\.[A-Za-z]{2,}$
30+
# message: Please enter a valid hostname
31+
- name: slackernews_admin_user_emails
32+
title: Admin Users
33+
type: text
34+
help_text: >
35+
Provide a comma-separated list of email addresses for the users you
36+
want to grant admin access to.
37+
38+
- name: ingress
39+
title: Application Access
40+
description: |
41+
You can customize how you will expose SlackerNews to the internet.
42+
Note that the domain you use will need to be publicly addressable with certs signed by a public authority
43+
so it can receive webhooks from Slack.
44+
45+
Common configurations include:
46+
47+
- **ClusterIP** Using a Cluster IP and configuring your existing ingress controller to route traffic to SlackerNews
48+
- **NodePort** Using a NodePort and configuring an existing load balancer to route traffic to SlackerNews
49+
- **LoadBalancer** Using a LoadBalancer service and letting Kubernetes provision a load balancer for you
50+
51+
If you're running in a supported cloud provider and want Kubernetes to provision a Load Balancer, use LoadBalancer.
52+
items:
53+
- name: service_type
54+
title: Service Type
55+
type: select_one
56+
items:
57+
- name: node_port
58+
title: NodePort
59+
- name: cluster_ip
60+
title: ClusterIP
61+
- name: load_balancer
62+
title: LoadBalancer
63+
default: node_port
64+
- name: node_port_port
65+
title: Node Port
66+
help_text: >
67+
(Optional) - The port to use for the NodePort service type. Leave this blank to have Kubernetes choose a port for you.
68+
type: text
69+
default: "443"
70+
when: repl{{ ConfigOptionEquals "service_type" "node_port" }}
71+
72+
- name: tls
73+
title: Certificates
74+
description: |
75+
You can secure the Slackernews application with certificates from a trusted certificate authority
76+
or we can generate them for you. We recommend that you upload your own certificates for production installations.
77+
items:
78+
- name: certificate_source
79+
type: select_one
80+
title: Certificate Source
81+
default: generate_internal
82+
items:
83+
- name: generate_internal
84+
title: Generate
85+
- name: upload_existing
86+
title: Upload
87+
- name: tls_cert
88+
title: Certificate
89+
type: file
90+
when: '{{repl ConfigOptionEquals "certificate_source" "upload_existing"}}'
91+
- name: tls_key
92+
title: Private Key
93+
type: file
94+
when: '{{repl ConfigOptionEquals "certificate_source" "upload_existing"}}'
95+
- name: tls_ca
96+
title: Signing Authority
97+
type: file
98+
when: '{{repl ConfigOptionEquals "certificate_source" "upload_existing"}}'
99+
100+
- name: slack
101+
title: Slack Settings
102+
description: |
103+
If desired, you can preconfigure the slack settings for SlackerNews.
104+
These are required for logging into SlackerNews and pulling/organizing content from your slack instance.
105+
If you don't preconfigure these settings, you'll be prompted to configure them when you first access SlackerNews.
106+
107+
Instructions on how to configure your slack application and collect these values can be found in [the SlackerNews slack documentation](https://docs.slackernews.io/slack/).
108+
items:
109+
- name: slack_clientid
110+
title: Slack Client ID
111+
type: text
112+
- name: slack_clientsecret
113+
title: Slack Client Secret
114+
type: password
115+
- name: slack_user_token
116+
title: User OAuth Token
117+
type: password
118+
validation:
119+
regex:
120+
pattern: ^xoxp-.*$
121+
message: Please enter the Slack user token for your instance of Slackernews
122+
- name: slack_bot_token
123+
title: Bot User OAuth Token
124+
type: password
125+
validation:
126+
regex:
127+
pattern: ^xoxb-.*$
128+
message: Please enter the Slack bot token for your instance of Slackernews
129+
130+
- name: postgres
131+
description: >
132+
This section can be used to configure the postgresql database required by SlackerNews. You
133+
can either deploy postgresql as part of the installation or provide an external URI to an existing postgresql instance
134+
that you will use for SlackerNews.
135+
title: Postgresql
136+
items:
137+
- name: deploy_postgres
138+
type: bool
139+
title: Deploy Postgresql Database
140+
default: "1"
141+
- name: postgres_password
142+
type: password
143+
title: Postgresql Password
144+
required: true
145+
hidden: true
146+
when: repl{{ ConfigOptionEquals "deploy_postgres" "1"}}
147+
value: repl{{ RandomString 40}}
148+
- name: postgres_external_uri
149+
type: text
150+
title: Postgresql URI
151+
required: true
152+
when: repl{{ ConfigOptionEquals "deploy_postgres" "0"}}
153+
```
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
```yaml
2+
apiVersion: embeddedcluster.replicated.com/v1beta1
3+
kind: Config
4+
spec:
5+
version: 2.10.0+k8s-1.33
6+
```
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
```yaml
2+
apiVersion: app.k8s.io/v1beta1
3+
kind: Application
4+
metadata:
5+
name: "slackernews"
6+
annotations:
7+
kots.io/exclude: "true"
8+
labels:
9+
app.kubernetes.io/name: "slackernews"
10+
app.kubernetes.io/version: "0.0.1"
11+
spec:
12+
selector:
13+
matchLabels:
14+
app.kubernetes.io/name: "slackernews"
15+
componentKinds:
16+
- group: core
17+
kind: Service
18+
- group: apps
19+
kind: Deployment
20+
descriptor:
21+
version: "1.0.0"
22+
description: "SlackerNews"
23+
icons:
24+
- src: "https://uploads-ssl.webflow.com/6310ad0e6a18aa1620da6ae8/6330e04f42bc6a7ba03b4725_snicon.png"
25+
type: "image/png"
26+
type: slackernews
27+
links:
28+
- description: 🔗 Open Slackernews
29+
url: 'https://{{repl ConfigOption "slackernews_domain" }}'
30+
```
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
```yaml
2+
apiVersion: kots.io/v1beta1
3+
kind: Application
4+
metadata:
5+
name: slackernews
6+
annotations:
7+
kots.io/exclude: "true"
8+
spec:
9+
title: SlackerNews
10+
icon: "https://uploads-ssl.webflow.com/6310ad0e6a18aa1620da6ae8/6330e04f42bc6a7ba03b4725_snicon.png"
11+
statusInformers:
12+
- slackernews/deployment/slackernews
13+
- slackernews/deployment/slackernews-nginx
14+
- '{{repl if ConfigOptionEquals "deploy_postgres" "1"}}slackernews/statefulset/postgres{{repl end}}'
15+
additionalNamespaces:
16+
- slackernews
17+
```

0 commit comments

Comments
 (0)