Commit e6179612 authored by Darren Shepherd's avatar Darren Shepherd

Add rebase instructions

parent 030017fc
...@@ -6,96 +6,48 @@ ...@@ -6,96 +6,48 @@
Kubernetes without the features I don't care about. Kubernetes without the features I don't care about.
Some of the removed features Rebase Instructions
-------------------
* OpenAPI/Swagger ## Patch rebase
* cloud-controller-manager
* kube aggregation
* APIs (NOTE: most of these are old APIs that have been replaced)
* admissionregistration/v1alpha1, authentication/v1beta1, authorization/v1beta1, certificates/v1beta1, events/v1beta1, imagepolicy/v1alpha1, rbac/v1alpha1, settings/v1alpha1, storage/v1alpha1,
* Authentication
* bootstrap token, oidc
* Authorization
* ABAC
* All alpha features
* Cloud Providers (all of them)
* Controllers
* Bootstrap
* Certificates
* Cloud
* Cloud based node IPAM
* Route
* Credential Providers AWS/GCP/Azure/Rancher
* Kubelet
* Device Plugin
* Certificates
* Checkpoint
* Device Manager
* Custom Metrics
* Dockershim (IMPORTANT: No docker support, the only runtime that works in containerd)
* GPU
* Mount Pod
* Network
* Hairpin
* Kubenet
* rkt
* Volume Drivers
* aws_ebs, azure_dd, azure_file, cephfs, cinder, fc, flocker, gce_pd, glusterfs, iscsi, photon_pd, portworx, quobyte, rbd, scaleio, storageos, vsphere_volume
* Admission Controllers
* admin, alwayspullimages, antiaffinity, defaulttolerationseconds, deny, eventratelimit, exec, extendedresourcetoleration, gc, imagepolicy, initialreosurces, limitranger, namespace, noderestriction, persistentvolume, podnodeselector, podpreset, podtolerationrestriction, priority, resourcequota, security, securitycontext, storageobjectinuseprotection
What is left? A lot. Basically all your normal pod/deployment/service stuff is there. Most apps for kubernetes will run just fine. These are instructions for rebasing a patch version. For example if the current
k3s k8s version is v1.13.3 and v1.13.4 comes out these are the procedures on how
to rebase and create a new release. If v1.14 comes out that procedure is different.
Full Build The below instructions will use the example of rebasing from v1.13.3 to v1.13.4.
---------- For git commands the remote `rancher` is github.com/rancher/k3s and the remote
`upstream` refers to github.com/kubernetes/kubernetes
# Setup your GOPATH. Note that this code should be at k8s.io/kubernetes in your GOPATH, not github.com/ibuildthecloud/k3s
go build -o kubectl ./cmd/kubectl
go build -o hyperkube ./cmd/hyperkube
Now just run hyperkube as you normally would.
Super Opinionated Approach that probably won't work for you
-----------------------------------------------------------
# Setup your GOPATH. Note that this code should be at k8s.io/kubernetes in your GOPATH, not github.com/ibuildthecloud/k3s
go build -o k3s
go build -o kubectl ./cmd/kubectl
Run
---
Run containerd
* Create a branch in github.com/rancher/k3s called k3s-${VERSION} that is branched
from the upstream tag ${VERSION}.
```bash ```bash
# Download and install containerd and runc VERSION=v1.13.4
sudo curl -fL -o /usr/local/bin/runc https://github.com/opencontainers/runc/releases/download/v1.0.0-rc5/runc.amd64 git fetch upstream
sudo chmod +x /usr/local/bin/runc git checkout -b k3s-${VERSION} ${VERSION}
git push rancher k3s-${VERSION}
curl -fsL https://github.com/containerd/containerd/releases/download/v1.1.1/containerd-1.1.1.linux-amd64.tar.gz | sudo tar xvf /usr/src/containerd.tgz -C /usr/local/bin bin/ --strip-components=1
# Some CNI
sudo mkdir -p /opt/cni/bin
curl -fsL https://github.com/containernetworking/plugins/releases/download/v0.7.1/cni-plugins-amd64-v0.7.1.tgz | sudo tar xvzf - -C /opt/cni/bin ./loopback
sudo containerd &
``` ```
Run Kubernetes * Start rebase
```bash ```bash
# Server OLD_VERSION=v1.13.3
./k3s VERSION=v1.13.4
git fetch rancher
# Agent (If doing this on another host copy the ./data folder) git checkout k3s-${VERSION}
sudo ./k3s agent git reset --hard rancher/k3s-${OLD_VERSION}
git rebase -i ${VERSION}
# Install Networking
export KUBECONFIG=./data/cred/kubeconfig.yaml
curl -s "https://cloud.weave.works/k8s/net?k8s-version=$(./kubectl version | base64 | tr -d '\n')" | ./kubectl apply -f -
``` ```
* When presented with the patch edit screen you want to drop an commit titled
"Update Vendor" or a version commit like "v1.13.3-k3s.6"
* Continue rebase and resolve any conflicts.
* Run the below to update vendor and apply tag
Your kubeconfig file is in `./data/cred/kubeconfig.yaml` ```bash
VERSION=v1.13.4
./deps && ./tag.sh ${VERSION}-k3s.1
```
Enjoy. * Update the README.md with anything that might have changed in the procedure
* Put in PR to github.com/rancher/k3s k3s-${VERSION} branch
* After merge apply ${VERSION}-k3s.1 tag in github then vendor into k3s
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment