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

More flexible Kubernetes cluster creation with kubeadm feature flags #138

Closed
23 tasks
bogdando opened this issue Oct 27, 2016 · 5 comments
Closed
23 tasks

Comments

@bogdando
Copy link

bogdando commented Oct 27, 2016

Description

The kubeadm, a Kubernetes cluster bootstrap and lifecycle management tool, simplifies the cluster creation a lot. It executes a fixed set of configuration steps, like certificates management or creation of system pods manifests, although doing them all and in the strict order, which is not flexible.

This is a problem when it comes about integrating with external configuration management tools (aka installers) taking off some of those configuration steps away from the kubeadm.

The feature flags, either CLI or config file based, should ease such integration efforts and make the tool more flexible as well.

Source issue kubernetes/kubernetes#35133
Related feature #11

Progress Tracker

  • Alpha
    • Write and maintain draft quality doc
      • During development keep a doc up-to-date about the desired experience of the feature and how someone can try the feature in its current state. Think of it as the README of your new feature and a skeleton for the docs to be written before the Kubernetes release. Paste link to Google Doc: DOC-LINK
    • Design Approval
      • Design Proposal. This goes under docs/proposals. Doing a proposal as a PR allows line-by-line commenting from community, and creates the basis for later design documentation. Paste link to merged design proposal here: PROPOSAL-NUMBER
      • Decide which repo this feature's code will be checked into. Not everything needs to land in the core kubernetes repo. REPO-NAME
      • Initial API review (if API). Maybe same PR as design doc. PR-NUMBER
        • Any code that changes an API (/pkg/apis/...)
        • cc @kubernetes/api
      • Identify shepherd (your SIG lead and/or kubernetes-pm@googlegroups.com will be able to help you). My Shepherd is: replace.me@replaceme.com (and/or GH Handle)
        • A shepherd is an individual who will help acquaint you with the process of getting your feature into the repo, identify reviewers and provide feedback on the feature. They are not (necessarily) the code reviewer of the feature, or tech lead for the area.
        • The shepherd is not responsible for showing up to Kubernetes-PM meetings and/or communicating if the feature is on-track to make the release goals. That is still your responsibility.
      • Identify secondary/backup contact point. My Secondary Contact Point is: replace.me@replaceme.com (and/or GH Handle)
    • Write (code + tests + docs) then get them merged. ALL-PR-NUMBERS
      • Code needs to be disabled by default. Verified by code OWNERS
      • Minimal testing
      • Minimal docs
        • cc @kubernetes/docs on docs PR
        • cc @kubernetes/sig-cluster-lifecycle on this issue to get approval before checking this off
        • New apis: Glossary Section Item in the docs repo: kubernetes/kubernetes.github.io
      • Update release notes
  • Beta
    • Testing is sufficient for beta
    • User docs with tutorials
      • Updated walkthrough / tutorial in the docs repo: kubernetes/kubernetes.github.io
      • cc @kubernetes/docs on docs PR
      • cc @kubernetes/sig-cluster-lifecycle on this issue to get approval before checking this off
    • Thorough API review
      • cc @kubernetes/api
  • Stable
    • docs/proposals/foo.md moved to docs/design/foo.md
      • cc @kubernetes/sig-cluster-lifecycle on this issue to get approval before checking this off
    • Soak, load testing
    • detailed user docs and examples
      • cc @kubernetes/docs
      • cc @kubernetes/sig-cluster-lifecycle on this issue to get approval before checking this off

FEATURE_STATUS is used for feature tracking and to be updated by @kubernetes/sig-cluster-lifecycle.
FEATURE_STATUS: IN_DEVELOPMENT

More advice:

Design

  • Once you get LGTM from a @kubernetes/sig-cluster-lifecycle member, you can check this checkbox, and the reviewer will apply the "design-complete" label.

Coding

  • Use as many PRs as you need. Write tests in the same or different PRs, as is convenient for you.
  • As each PR is merged, add a comment to this issue referencing the PRs. Code goes in the http://github.com/kubernetes/kubernetes repository,
    and sometimes http://github.com/kubernetes/contrib, or other repos.
  • When you are done with the code, apply the "code-complete" label.
  • When the feature has user docs, please add a comment mentioning @kubernetes/sig-cluster-lifecycle and they will
    check that the code matches the proposed feature and design, and that everything is done, and that there is adequate
    testing. They won't do detailed code review: that already happened when your PRs were reviewed.
    When that is done, you can check this box and the reviewer will apply the "code-complete" label.

Docs

  • Write user docs and get them merged in.
  • User docs go into http://github.com/kubernetes/kubernetes.github.io.
  • When the feature has user docs, please add a comment mentioning @kubernetes/docs.
  • When you get LGTM, you can check this checkbox, and the reviewer will apply the "docs-complete" label.
@bogdando
Copy link
Author

@jbeda @lukemarsden

@idvoretskyi
Copy link
Member

@bogdando is @kubernetes/sig-cluster-lifecycle responsible for the feature?

@bogdando
Copy link
Author

bogdando commented Oct 27, 2016

Yes. That's an action item from the last sig-cluster-lifecycle weekly meeting, @idvoretskyi , see https://goo.gl/FFjCEc for details

@idvoretskyi
Copy link
Member

@bogdando thank you. Which K8s release this feature is targeting? I'd like to remind you about the feature freeze for 1.5 that already happened (Oct 10). /cc @kubernetes/sig-cluster-lifecycle

@luxas
Copy link
Member

luxas commented Oct 27, 2016

Ok, so I do definitely not think this is a "kubernetes/feature" in the sense this repo is tracking features.
It is a refactoring enhancement to #11, nothing more.

@bogdando Please read this repo's README to understand what this kind of "feature" is.
I totally agree we should do this, but it is a subtask of #11, not a feature on its own.
This proposal only affects some Go code under cmd/kubeadm/app/ that should be refactored for the ability to invoke the functions of kubeadm independently.

I suggest we close this, and @bogdando may comment this information in #11 instead.

Sorry if it sounds unfriendly, but this is my take on it.

k8s-github-robot pushed a commit to kubernetes/kubernetes that referenced this issue Apr 18, 2017
Automatic merge from submit-queue

Allow configurable etcd options

**What this PR does / why we need it**:

Allows users to set the `--listen-client-urls` and `--advertise-client-urls` flags on etcd binaries for clusters set up with kubeadm.

**Which issue this PR fixes**:

As far as I can tell right now, other nodes in a cluster set up with kubeadm cannot communicate with the etcd static pod running on the master. This is needed in order to set up calico/canal SDN which needs access to a publicly addressable IPv4 _before_ the overlay network and inter-cluster subnet is created.

Addresses kubernetes/enhancements#138 and kubernetes/enhancements#11.

**Release note**:
```release-note
Users can now specify listen and advertise URLs for etcd in a kubeadm cluster 
```
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants