• Stars
    star
    888
  • Rank 51,399 (Top 2 %)
  • Language
    Go
  • License
    Apache License 2.0
  • Created over 5 years ago
  • Updated 3 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

KOTS provides the framework, tools and integrations that enable the delivery and management of 3rd-party Kubernetes applications, a.k.a. Kubernetes Off-The-Shelf (KOTS) Software.

Develop on Okteto go.dev reference FOSSA Status

Kubernetes Off-The-Shelf (KOTS) Software

Replicated KOTS is the collective set of tools that enable the distribution and management of Kubernetes Off-The-Shelf (KOTS) software. The Kots CLI (a Kubectl plugin) is a general purpose, client-side binary for configuring and building dynamic Kubernetes manifests. The Kots CLI also serves as the bootstrapper for the in-cluster Kubernetes application Admin Console kotsadm which can be used to automate the core Kots CLI tasks for managing applications (license verification, configuration, updates, image renaming, version controlling changes, and deployment) as well as additional KOTS tasks (running preflight checks and performing support bundle analysis).

Distributing a KOTS application

Software vendors can package their Kubernetes applications or Helm charts or Operators as a KOTS application in order to distribute the application to cluster operators.

Kots CLI Documentation

Check out the full docs on the cluster operator experience for using the Kots CLI as a Kubectl plugin.

Try Kots

Try Kots as a cluster operator by installing the Replicated sample app (Sentry Pro Example) into an existing Kubernetes cluster. First, install the Kots CLI (a Kubectl plugin) on your workstation:

curl https://kots.io/install | bash

Run kots install

The install command is the recommended way to learn KOTS. Executing the install command will install an application and the kotsadm Admin Console to an existing Kubernetes cluster. This command supports installing Helm charts (without Tiller), standard Kubernetes applications and also Replicated KOTS apps.

Continue with the demo by running the following command:

kubectl kots install sentry-pro

Set a namespace for the admin console and the application components to be installed, and provide a password for the admin console. After this command completes, the kotsadm Admin Console will be running in your cluster, listening on port :8800 on a ClusterIP service in the namespace you deployed the application to. By default this is exposed to your workstation using kubectl port-forward, but you could set up an ingress/load balancer of your own.

NOTE Currently, the kotsadm pod can only be scheduled on nodes with the linux/amd64 platform.

Access the Admin Console

Visit http://localhost:8800 to access the Admin Console, enter the password.

Download the sample license for Sentry Pro & upload it to the console. You'll then be presented with configuration settings, preflight checks and other application options.

If you terminate your terminal session, the port-forward will also terminate. To access the admin console again, just run:

kubectl kots admin-console --namespace sentry-pro

Supportability

Currently, the KOTS CLI supports OSX (including Apple Silicon arm64) and Linux platforms. However, the Kubernetes resources that it creates can only be scheduled on nodes with the linux/amd64 platform.

Community

For questions about using KOTS, there's a Replicated Community forum, and a #kots channel in Kubernetes Slack.

Notifications

By default, KOTS will leverage MinIO as a standalone object store instance to store application archives and support bundles. All communication between KOTS and the MinIO object store is limited to a REST API released under the Apache 2.0 license. KOTS has not modified the MinIO source code. Use of MinIO is currently governed by the GNU AGPLv3 license that can be found in their LICENSE file. To remove MinIO usage for this use case in an existing cluster, an optional install flag --with-minio=false is available for new KOTS installs or upgrades from existing versions. To remove MinIO usage for this use case in an embedded cluster, the disableS3 option is available in the KOTS add-on and can be used for new installs or upgrades.

Software Bill of Materials

Signed SBOMs for KOTS Go dependencies and are included in each release. Use Cosign to validate the signature by running the following command.

cosign verify-blob --key sbom/key.pub --signature sbom/kots-sbom.tgz.sig sbom/kots-sbom.tgz

Development

Okteto

Known issues

  1. Kots cannot be installed through the CLI.
  2. When a manifest yaml file changes, the only supported way to apply it right now is to redeploy the whole pipeline.

Unsupported workflows

  1. Deploying a vendor application for debugging. While this could work, it's unsupported, and a different cluster should be used.

How To

Deploying an application to a different namespace from Kots Admin

If you need to test deploying an application to a different namespace, you'll need to first create the additional namespace in Okteto. Your permissions will be the same between both namespaces, and you will be able to create deploy/resources there.

Use the Kots CLI while Kots Admin is running
  1. okteto up - Put the the kots pod into dev mode
  2. make build run - Runs Kots Admin
  3. In a new terminal, navigate to the kots project.
  4. okteto exec bash - Runs bash interactively in the kots pod.
  5. ./bin/kots {{COMMAND}} - Run the kots commands you need.

Running KOTS in Helm managed mode in Okteto

Steps to run in Helm managed mode:

  1. okteto pipeline deploy
  2. Ensure your local context is set to your okteto environment
  3. Set the IS_HELM_MANAGED environment variable for the kots deployment kubectl set env deployment/kotsadm IS_HELM_MANAGED=true
  4. Remove S3 endpoint: kubectl set env deployment/kotsadm S3_ENDPOINT=""
  5. Optional:
    • if you wish to use Admin Console with production: kubectl set env deployment/kotsadm REPLICATED_API_ENDPOINT=""
    • if you wish to use Admin Console with staging: kubectl set env deployment/kotsadm REPLICATED_API_ENDPOINT="https://staging.replicated.app"

Build V2 (EXPERIMENTAL)

Description

This new iteration of our Okteto workspace has significant changes and requires a new workflow by developers.

Why

We've been trying to optimize our build times and make developing on Okteto as frictionless as possible. However, we've realized that there are some fundemental issues with our current strategy, such as:

  1. Builds take place in two places (buildkit, in dev containers). This causes issues with cache sharing, image size, etc.
  2. Spike in resources for development containers. Some of our apps put a heavy strain on resources when built, this require us to either give them a lot of resources while in development mode (which can be long-lasting) or starve them of resources and bottleneck builds.
  3. Unable to quickly/easily deploy kubernetes manifest changes.

Solution

This V2 work flow attempts to solve these issues by:

  1. Build application only on the buildkit servers so that the cache lives in one place and image sizes stay lean. This excluded applications that have live reloading (web).
  2. Only use development containers where needed. (web apps, schema hero, etc)
  3. Update the Okteto manifest to the new schema which allows for separating build and deploy specs, allowing us to run okteto deploy and only deploy the manifest.

Reference

Action Syntax Description
Build and Deploy okteto pipeline deploy -f okteto-v2.yml Runs both build and deploy sections of the Okteto manifest. Perfect for updating or creating a namespace.
Build single service okteto build -f okteto-v2.yml {{SERVICE_NAME}} Builds the named service (kotsadm, kotsadm-web, kotsadm-migrations) and pushes it to the Okteto registry.
Deploy okteto deploy -f okteto-v2.yml Deploys the kubernetes manifests. If there were builds before this command, the new images will be used in the deployment.
Development mode okteto up -f okteto-v2.yml Prompts the use for what container to put into development mode. kotsadm(api), web and migrations will appear for debugging.

Warning

Because this new workflow is experimental, we still have the old workflow in the project. If you are using the new workflow, and fail to provide the -f flag with the v2 manifest, you will be invoking the old workflow.

Example workflow: kotsadm change

  1. okteto pipeline deploy -f okteto-v2.yml
  2. Make code changes to kots.
  3. okteto build -f okteto-v2.yml kotsadm
  4. okteto deploy -f okteto-v2.yml

Example workflow: kubernetes manifest change

  1. okteto pipeline deploy -f okteto-v2.yml
  2. Make manifest changes.
  3. okteto deploy -f okteto-v2.yml

Example workflow: kotsadm web changes

  1. okteto pipeline deploy -f okteto-v2.yml
  2. okteto up -f okteto-v2.yml
  3. Select kotsadm-web.
  4. Make code changes to kotsadm web.

More Repositories

1

dockerfilelint

An opinionated Dockerfile linter.
JavaScript
990
star
2

kURL

Production-grade, airgapped Kubernetes installer combining upstream k8s with overlays and popular components
Shell
737
star
3

ship

A better way to deploy Kubernetes Helm charts
Go
638
star
4

troubleshoot

Preflight Checks and Support Bundles Framework for Kubernetes Applications
Go
533
star
5

ttl.sh

An anonymous & ephemeral Docker image registry
TypeScript
461
star
6

outdated

Kubectl plugin to find and report outdated images running in a Kubernetes cluster
Go
422
star
7

kotsadm

Kotsadm has been merged into the KOTS repo
JavaScript
250
star
8

unfork

Kubectl plugin to find forked Helm Charts and other K8s resources and unfork them with Kustomize
Go
145
star
9

gatekeeper

Kubernetes Operator to manage Dynamic Admission Controllers using Open Policy Agent
Go
107
star
10

krew-plugin-template

GitHub Repository Template for creating new Kubectl plugins
Go
65
star
11

kubeflare

A Kubernetes Operator to manage Cloudflare settings via a declarative Kubernetes API
Go
56
star
12

pvmigrate

Go
54
star
13

hugo-algolia

Enables search with Algolia in Hugo static sites
JavaScript
47
star
14

sbctl

Go
40
star
15

replicated

A CLI to create, edit and promote releases in Replicated
Go
34
star
16

local-volume-provider

A Velero plugin for backup/restore directly to Kubernetes volumes.
Go
32
star
17

troubleshoot.sh

JavaScript
29
star
18

fromlatest.io

JavaScript
19
star
19

embedded-cluster

Go
18
star
20

replicated-field-labs

Defines the Replicated Platform Hands-On Labs powered by the Instruqt platform
Shell
16
star
21

studio

Streamline your Replicated Application development in 3 easy steps, or your money back!
TypeScript
14
star
22

kots-sentry

Makefile
14
star
23

kurl.sh

JavaScript
11
star
24

libyaml

Go
11
star
25

replicated-lint

YAML linting tools for Replicated applications
TypeScript
8
star
26

ekco

ekco: Embedded kURL Cluster Operator
Go
8
star
27

replicated-docs

Replicated Product Documentation
JavaScript
8
star
28

replicated-starter-ship

Starter repo for managing Ship Apps in GitHub
Makefile
8
star
29

k8s-secret-generator

Go
7
star
30

enterprise-gtm-starter

Go-to-market starter project for Replicated apps
Go
7
star
31

ips

Current list of Replicated public facing IP addresses
6
star
32

replicated-actions

TypeScript
6
star
33

kots-lint

Lint a KOTS application before deploying it
Go
6
star
34

kubectl-traceroute

A kubectl plugin to diagnose and debug why a service is not responding
Go
6
star
35

homebrew-ship

Homebrew Formulae to ship binaries, powered by @replicatedhq
Ruby
6
star
36

kots.io

Docs site for KOTS
SCSS
6
star
37

vendor-docs-starter

6
star
38

help-center

Replicated help center
HTML
4
star
39

replicated-sdk

Service that allows you to embed key Replicated features alongside your application.
Go
4
star
40

ansible

Shell
4
star
41

helm-charts

Smarty
4
star
42

replicated-installer

Shell
4
star
43

troubleshoot-specs

Python
4
star
44

replicated-ci-demo

Example repo showcasing how to use the Replicated APIs and tools to manage your Replicated application YAML using git
Makefile
3
star
45

repl-yaml-samples

Resource for Replicated sample YAML's and snippets
3
star
46

replicated-automation

Shell
3
star
47

replicated-starter-helm

3
star
48

kots-helm

Smarty
3
star
49

platform-examples

Large and small examples of Replicated Platform capabilities
Smarty
3
star
50

kotsapps

Mustache
3
star
51

ledismock

Go
3
star
52

cc-qa-automation

Coding Challenge: QA Automation Engineer
Go
3
star
53

replicated-starter-kubernetes

Starter repo for developing Kubernetes applications on Replicated
Makefile
3
star
54

docs

Replicated Documentation
CSS
3
star
55

terraform-kots-eks

HCL
3
star
56

kots-cicd-demo

3
star
57

action-kots-lint

Dockerfile
2
star
58

exfilter

C
2
star
59

replicated-preview

CoffeeScript
2
star
60

homebrew-replicated

Replicated Homebrew Tap
Ruby
2
star
61

kots-default-yaml

YAML files used for new KOTS projects
2
star
62

kgrid

Go
2
star
63

kubectl-grid

Go
2
star
64

replicated-starter-swarm

Starter repo for developing Docker Swarm applications on Replicated
Makefile
2
star
65

kurlkinds

Host of kurl's Kubernetes clients and types.
Go
2
star
66

terraform-provider-replicated

Go
2
star
67

codeclimate-dockerfile

A CodeClimate engine for Dockerfilelint
JavaScript
2
star
68

action-k3s

JavaScript
2
star
69

tslint-config-replicated

TypeScript
1
star
70

replicated-action

A GitHub Action to interact with the Replicated API
Dockerfile
1
star
71

action-kots-release

Dockerfile
1
star
72

crd-to-openapischema

Go
1
star
73

grafana-kube-demo

Makefile
1
star
74

action-okteto-test

JavaScript
1
star
75

community

1
star
76

troubleshoot-preview

Go
1
star
77

superbigtool-k8s

1
star
78

velero-exec-hooks-qa

Shell
1
star
79

kURL-testgrid

Testgrid is a an automation testing platform for kURL
Go
1
star
80

kots-idp-example-app

Go
1
star
81

replicated-scripts

Python
1
star
82

vendor-schemas

1
star
83

license-create-download-worker

TypeScript
1
star
84

kustomize-demo

JavaScript
1
star
85

embedded-cluster-operator

Go
1
star
86

terraform-provider-kURL

this repo will be used as terraform provisioning a customer kurl cluster based on their kurl installer config
HCL
1
star
87

kots2helm

Go
1
star
88

ship-starter-compose

Starter repo for developing Docker Compose / Swarm application on Ship
Makefile
1
star
89

dehydrated-docker

Makefile
1
star