Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

add proposal for k1-for-devs #1757

Closed
wants to merge 3 commits into from

Conversation

stroebitzer
Copy link
Member

What this PR does / why we need it:

Having a discussion base for the project kubeone for devs

Which issue(s) this PR fixes (optional, in fixes #<issue number>(, fixes #<issue_number>, ...) format, will close the issue(s) when PR gets merged):

Special notes for your reviewer:
This is a rather quick draft missing a lot of technical details. It should be seen as a document to gather the requirements.

Does this PR introduce a user-facing change?:

@kubermatic-bot
Copy link
Contributor

@stroebitzer: Adding the "do-not-merge/release-note-label-needed" label because no release-note block was detected, please follow our release note process to remove it.

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository.

@kubermatic-bot kubermatic-bot added dco-signoff: yes Denotes that all commits in the pull request have the valid DCO signoff message. do-not-merge/release-note-label-needed Indicates that a PR should not merge because it's missing one of the release note labels. size/M Denotes a PR that changes 30-99 lines, ignoring generated files. labels Jan 26, 2022
@stroebitzer
Copy link
Member Author

/assign @scheeles

@kubermatic-bot kubermatic-bot added size/L Denotes a PR that changes 100-499 lines, ignoring generated files. and removed size/M Denotes a PR that changes 30-99 lines, ignoring generated files. labels Jan 27, 2022
@kubermatic-bot kubermatic-bot added size/M Denotes a PR that changes 30-99 lines, ignoring generated files. and removed size/L Denotes a PR that changes 100-499 lines, ignoring generated files. labels Jan 27, 2022
### GitOps
* FluxCD and/or ArgoCD should get supported. They should become its own KubeOne AddOn. Their controllers should get installed into the KubeOne cluster. We should take care that the Git Repo holding the yaml files for the Kubernetes Cluster can be configured easily.

### Vault
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I would consider Vault for a later stage.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

TBH, I wouldn't consider Vault at all. Vault is in fact a very complex component if you want to set it up in a proper way. You mostly like want to integrate with your cloud provider KMS solution, secure your keys, etc... Abstracting that away from the user can create a huge security hole.

* Theia is a nodejs application which provides the IDE. Workspace management has to be provided by Eclipse Che.
* Eclipse Che is holding all the workspace data and all user-specific file-based configurations, eg the .gitconfig

### Terminal integrations
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I would add tilt https://github.com/tilt-dev/tilt so that you constantly deploy the code to the cluster

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@archups @nerdeveloper can you please take a look at it and give some info about your experiences

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I have heard about it, I am not entirely sure if tilt and entando do the same thing. I could take tilt for a spin and check the developer experience.

* Dex as IDP with Github

### Visualization of the Kubernetes Cluster
* Either via enabling the Kubernetes Dashboard or via the [VSCode Kubernetes AddOn](https://marketplace.visualstudio.com/items?itemName=ms-kubernetes-tools.vscode-kubernetes-tools) (if that is doable in Theia)
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Preferred the K8s Dashboard

## Implementation

### IDE
* Using [Eclipse Che](https://github.com/eclipse/che) as Cloud IDE. Eclipse Che is a workspace server integrating Theia as a default.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Let try the devworkspace https://www.eclipse.org/che/docs/che-7/administration-guide/architecture-overview-with-devworkspace/ as it uses more the K8s API and is the future of Che eclipse-che/che#20830


### IDE
* Using [Eclipse Che](https://github.com/eclipse/che) as Cloud IDE. Eclipse Che is a workspace server integrating Theia as a default.
* Theia is a nodejs application which provides the IDE. Workspace management has to be provided by Eclipse Che.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

For the future, I think we should consider VS Code as the default but still need some development eclipse-che/che#20500

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes we should definitely consider something different than Theia. I had bad experiences with it due to nodejs dependency hell.

@@ -0,0 +1,76 @@
# KubeOne for Developers
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This proposal is missing some key sections:

  • Values and alternatives -- the key question I'd like to see answered is why would someone want to use this over GitPod and GitHub Codespaces? Those two products are also cheaper than a Kubernetes cluster created by KubeOne on any cloud provider, so there's that too.
  • Ownership -- who is going to own and maintain the project?
  • Location -- where is this addon going to live? This depends on the ownership question as well. If this is to be maintained by a dedicated team then it should live in another repo.

In my opinion, everyone should be able to use KubeOne as a building block. In that aspect, I'd like this proposal to focus on what we can do to make implementing this possible. I see two key aspects:

  • Improving usability and the infrastructure management experience
  • Improving the addons mechanism

If that's the case, I'd like to see what we can do to improve those two aspects.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Values and alternatives Yes, I think we should spent some time looking for alternatives on the market before starting implementation. Concerning GitPod and CodeSpaces: I am not sure if those are usable on private clusters. Those tools are running on some GitHub infra and not in a dedicated cluster. IMO the idea is to add functionality to clusters created via KubeOne. Which you may can do with GitPod and CodeSpaces via connecting them to your Kubernetes Cluster but this will not be doable all the time (private clusters) and also has some security implications.

Ownership & Location Good question, we should discuss this, maybe @scheeles has some input here


## Goals
* "Developer Batteries included"
* Developers should get enabled to start working on the Kubernetes Cluster without having to deal with infrastructure setup problems
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is unclear and should be clarified.

It's just impossible to get a cluster on any cloud provider without infrastructure setup problems. You at least have to create an account, and in many cases, set up your account, configure billing, configure initial subnets and network gateways (especially on AWS), etc...

Therefore, what are the problems that we should solve?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think this is a different problem you are talking. Yes, you are right you need that stuff to get your cluster via KubeOne up and running.

The problem which we want to solve with this proposal is more about: OK, now I have my running cluster via KubeOne, what do I need to do to have a cool developer experience on it. By developer I mean the "enduser-developer", the one writing apps on the already existing Kubernetes Cluster.

### GitOps
* FluxCD and/or ArgoCD should get supported. They should become its own KubeOne AddOn. Their controllers should get installed into the KubeOne cluster. We should take care that the Git Repo holding the yaml files for the Kubernetes Cluster can be configured easily.

### Vault
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

TBH, I wouldn't consider Vault at all. Vault is in fact a very complex component if you want to set it up in a proper way. You mostly like want to integrate with your cloud provider KMS solution, secure your keys, etc... Abstracting that away from the user can create a huge security hole.

@kubermatic-bot
Copy link
Contributor

[APPROVALNOTIFIER] This PR is NOT APPROVED

This pull-request has been approved by: stroebitzer
To complete the pull request process, please ask for approval from xmudrii after the PR has been reviewed.

The full list of commands accepted by this bot can be found here.

Needs approval from an approver in each of these files:

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

@xmudrii xmudrii closed this Feb 18, 2022
@xmudrii xmudrii reopened this Feb 18, 2022
@kubermatic-bot kubermatic-bot added the do-not-merge/needs-kind Indicates a PR lacks a `kind/foo` label and requires one. label Feb 18, 2022
@xmudrii xmudrii added the kind/documentation Categorizes issue or PR as related to documentation. label Feb 21, 2022
@kubermatic-bot kubermatic-bot removed the do-not-merge/needs-kind Indicates a PR lacks a `kind/foo` label and requires one. label Feb 21, 2022
@xmudrii xmudrii removed their assignment Aug 30, 2022
@xmudrii
Copy link
Member

xmudrii commented Jan 4, 2024

Given that there's no activity on this PR for a long time, I'll go ahead and close it. Please feel free to reopen it or create a new one if you want to proceed with this proposal.
/close

@kubermatic-bot
Copy link
Contributor

@xmudrii: Closed this PR.

In response to this:

Given that there's no activity on this PR for a long time, I'll go ahead and close it. Please feel free to reopen it or create a new one if you want to proceed with this proposal.
/close

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
dco-signoff: yes Denotes that all commits in the pull request have the valid DCO signoff message. do-not-merge/release-note-label-needed Indicates that a PR should not merge because it's missing one of the release note labels. kind/documentation Categorizes issue or PR as related to documentation. size/M Denotes a PR that changes 30-99 lines, ignoring generated files.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants