This repository is used to track progress on my GSoC project for CNCF & Kubernetes - Storage API for Aggregated API Servers.
To easier track the progress, I've created a public Trello board and a Google Document. I'll provide daily progress updates in both Google Document and Trello Board.
Kubernetes offers two ways to extend the core API, by using the CustomResourceDefinitons or by setting up an aggregated API server. This ensures users don’t need to modify the core API in order to add the features needed for their workflow, which later ensures the more stable and secure core API.
One missing part is how to efficiently store data used by aggregated API servers. This project implements a Storage API, with a main goal to share the cluster’s main etcd server with the Aggregated API Servers, allowing it to use cluster’s main etcd just like it would use it’s own etcd server.
Name: Marko Mudrinić
E-mail: mudrinic.mare@gmail.com
Website and Blog: https://xmudrii.com
GitHub: xmudrii
Slack (Kubernetes): xmudrii
Twitter: xmudrii
Time zone: UTC+02:00 (Central European Summer Time)
Mentors: David Eads, Dr. Stefan Schimanski
- Project Repository (
xmudrii/etcdproxy-controller
) - Project on GSoC website
- Proposal Submitted for GSoC
- Proposal Draft (Google Doc)
- Proposal on SIG-API-Machinery Mailing list
- CNCF GSoC Projects Announcement
- Progress Tracker (Trello Board)
- Progress Tracker (Google Document)
- GSoC Journey: Week 1 & 3 — Community Bonding
- GSoC Journey: Week 2 — Getting started with Kubernetes & KubeCon
- Spawning Kubernetes Clusters in CI for Integration and E2E tests
- Kubernetes Community Meeting (September 6th): EtcdProxyController—Solving the aggregated API server storage pain (slides)
- SIG-API-Machinery Office Hours (August 15th): Deep Dive Into EtcdProxyController
The following list is automatically generated using https://github.com/nikhita/github-contrib.
TOTAL: 69
Repository: etcdproxy-controller
Total Pull Requests Created: 44
- xmudrii/etcdproxy-controller#69 - docs: update the README.md files to match latest changes to the controller
- xmudrii/etcdproxy-controller#68 - demo: add demo manifests
- xmudrii/etcdproxy-controller#66 - controller/certs: grace period for certs regeneration
- xmudrii/etcdproxy-controller#65 - Make certificates validity configurable via EtcdStorage Spec and define default values
- xmudrii/etcdproxy-controller#64 - controller/test: Add simple test framework for controller
- xmudrii/etcdproxy-controller#63 - Refactor functions for handling EtcdProxy certificates. Implement certificates renewal.
- xmudrii/etcdproxy-controller#62 - Add liveness probe to the etcdproxy deployment and raise number of replicas to 3
- xmudrii/etcdproxy-controller#61 - controller/certs: fix typo between serving and client ca
- xmudrii/etcdproxy-controller#60 - Add functions for appending new cert to CA bundle
- xmudrii/etcdproxy-controller#59 - Refactor functions for handling certs ConfigMaps and Secrets
- xmudrii/etcdproxy-controller#58 - Switch to Deployments instead of ReplicaSets for deploying EtcdProxy pods
- xmudrii/etcdproxy-controller#57 - Add utility functions for parsing certificates
- xmudrii/etcdproxy-controller#56 - Make etcdproxy pods use etcd 3.2.24 instead of 3.3.8
- xmudrii/etcdproxy-controller#55 - Set correct labels to EtcdProxy ReplicaSets and Services
- xmudrii/etcdproxy-controller#53 - Generate new Client certificate pair for each certificate source
- xmudrii/etcdproxy-controller#48 - Rename core-etcd certificates to match names used by Kubernetes
- xmudrii/etcdproxy-controller#47 - Enable RBAC in Travis-CI Minikube cluster and fix APIServer ConfigMap/Secret Role APIGroup
- xmudrii/etcdproxy-controller#46 - Implement CA for handling EtcdProxy certificates
- xmudrii/etcdproxy-controller#45 - Import GCP plugin to prevent controller startup failures in GKE
- xmudrii/etcdproxy-controller#42 - Add note about GKE permissions note needed to deploy the controller and fix typo
- xmudrii/etcdproxy-controller#40 - Set appropriate EtcdStorage condition on error. Improve event handling and error messages.
- xmudrii/etcdproxy-controller#39 - Enable E2E tests in Travis-CI using Minikube and Kubernetes v1.10.0
- xmudrii/etcdproxy-controller#38 - Upgrade etcd for etcd proxy pods to v3.3.8
- xmudrii/etcdproxy-controller#37 - Prevent UpdateStatus loops
- xmudrii/etcdproxy-controller#36 - Allow multiple core etcd endpoints to be specified
- xmudrii/etcdproxy-controller#35 - Handle certificates for the etcd-proxy
- xmudrii/etcdproxy-controller#33 - Add deploying Flunder resource to the sample-apiserver E2E story and fix minor bugs
- xmudrii/etcdproxy-controller#32 - Add E2E tests
- xmudrii/etcdproxy-controller#29 - Add server and client certificates to the core etcd deployment
- xmudrii/etcdproxy-controller#28 - Create manifests for deploying the sample-apiserver
- xmudrii/etcdproxy-controller#23 - Remove Kubeconfig validation rule
- xmudrii/etcdproxy-controller#22 - Fix lint errors
- xmudrii/etcdproxy-controller#21 - Use double-slash prefixed flags in controller deployment manifest
- xmudrii/etcdproxy-controller#20 - Remove Config function in favor of Validate and ApplyTo
- xmudrii/etcdproxy-controller#19 - Remove license headers from Go and Bash files
- xmudrii/etcdproxy-controller#16 - Add documentation describing required setup and how to run EtcdProxyController
- xmudrii/etcdproxy-controller#15 - Refactor the main package to use Cobra
- xmudrii/etcdproxy-controller#14 - Add status subresource and conditions to EtcdStorage CRD
- xmudrii/etcdproxy-controller#13 - Make etcd image configurable. Add OwnerRef if object exists. Tighten functions to a private helper.
- xmudrii/etcdproxy-controller#6 - Update Dockerfile to utilize Makefile
- xmudrii/etcdproxy-controller#4 - Disable Travis fail email notifications
- xmudrii/etcdproxy-controller#3 - Add manifest for deploying the controller
- xmudrii/etcdproxy-controller#2 - Create controller for handling etcd proxy pods and services
- xmudrii/etcdproxy-controller#1 - Add manifests for deploying core etcd and etcd proxy
Total Issues Opened: 25
- xmudrii/etcdproxy-controller#67 - Unconditionally regenerate certificates on EtcdStorage Spec change
- xmudrii/etcdproxy-controller#54 - EtcdProxyController Services are pointing to all etcd-proxy pods instead to specific pods
- xmudrii/etcdproxy-controller#52 - Make certificates validity configurable
- xmudrii/etcdproxy-controller#51 - Handle the API Server certificates
- xmudrii/etcdproxy-controller#50 - Implement etcd proxy certificates regeneration mechanism
- xmudrii/etcdproxy-controller#49 - Make API Server handle etcd certificates rotation
- xmudrii/etcdproxy-controller#44 - Update EtcdStorage CRD to check are provided name/namespace pairs for certificate ConfigMaps/Secrets valid
- xmudrii/etcdproxy-controller#43 - Update certificates type and ConfigMap/Secret names to match Kubernetes TLS type and Secret names
- xmudrii/etcdproxy-controller#41 - Improve event handling and error messages
- xmudrii/etcdproxy-controller#34 - E2E tests are using incorrect Docker image for deploying the controller
- xmudrii/etcdproxy-controller#31 - EtcdProxy Controller deployment doesn't work in GKE
- xmudrii/etcdproxy-controller#30 - Add fields to EtcdStorage Spec for name and namespace of proxy etcd certs Secret/ConfigMap
- xmudrii/etcdproxy-controller#27 - Improve redundancy and handle etcd proxy pod failures
- xmudrii/etcdproxy-controller#26 - Allow multiple core etcd endpoints
- xmudrii/etcdproxy-controller#25 - Add manifests for deploying sample-apiserver
- xmudrii/etcdproxy-controller#24 - Add E2E tests
- xmudrii/etcdproxy-controller#18 - Add additional conditions for EtcdStorage resources
- xmudrii/etcdproxy-controller#17 - Remove license headers from files
- xmudrii/etcdproxy-controller#12 - Update README file to include instructions how to use controller and how to run it out/in-cluster
- xmudrii/etcdproxy-controller#11 - Tighten newReplicaSet and newService functions to a private helper
- xmudrii/etcdproxy-controller#10 - Make etcd image property for creating ReplicaSet configurable
- xmudrii/etcdproxy-controller#9 - Add OwnerRef if object already exists instead of failing
- xmudrii/etcdproxy-controller#8 - Utilize the subresource status capability of the CRDs when updating CRD status
- xmudrii/etcdproxy-controller#7 - Refactor the main package
- xmudrii/etcdproxy-controller#5 - Switch to spf13/cobra for controller's CLI
The following list is automatically generated using https://github.com/nikhita/github-contrib.
TOTAL: 12
Repository: kubernetes
Total Pull Requests Created: 4
- kubernetes/kubernetes#65916 - [1.10] gc: remove crd and apiservice from ignored resources
- kubernetes/kubernetes#65206 - sample-apiserver: Add RBAC roles and ClusterRoleBindings for Admission Webhooks
- kubernetes/kubernetes#63068 - Add Establishing Controller to avoid race between Established condition and CRs actually served
- kubernetes/kubernetes#60592 - apiextensions-apiserver: TestFinaliazationAndDeletion integration test
Total Issues Opened: 4
- kubernetes/kubernetes#66448 - Implement mechanism for certificates rotation in aggregated API servers
- kubernetes/kubernetes#65442 - Create aggregated ClusterRole for API Servers to allow getting Namespaces and Admission Webhooks
- kubernetes/kubernetes#63656 - Revisit Creating CustomResourceDefinitions from apiextensions-apiserver integration tests
- kubernetes/kubernetes#62725 - Improve Establishing logic for CRDs by implementing Installing status to prevent race conditions
Total Pull Requests Reviewed: 4
- kubernetes/kubernetes#65918 - [1.9] GC: remove CRD and APIService from ignored resources
- kubernetes/kubernetes#65856 - only need to ignore resources that match discovery conditions
- kubernetes/kubernetes#63587 - apiextensions: handle CRD conflict errs in integration tests
- kubernetes/kubernetes#55476 - apiserver: document how to run sample-apiserver standalone outside the cluster