Wrapping up rename and pointing k8s yaml files to github hosted docker images

This commit is contained in:
Eric Herbrandson
2021-07-16 12:08:08 -05:00
parent 3c0ed6dcec
commit 3eb1db7e71
23 changed files with 61 additions and 303 deletions

View File

@@ -1,10 +1,9 @@
# Skooner - Kubernetes Dashboard
Skooner is a sandbox project of the [Cloud Native Computing Foundation](https://www.cncf.io/sandbox-projects).
__We are changing our name from k8dash to Skooner! Please bear with us as we update our documentation and codebase to reflect this change. If you previously installed k8dash, you will need to uninstall it from your cluster and install Skooner instead. For most cases this can be done by running the following `kubectl delete deployment,service k8dash`__
__(FYI: we are changing our name from "k8dash" to "Skooner"! Please bear with us as we transition all of our documentation and codebase to reflect this name change.)__
Skooner is the easiest way to manage your Kubernetes cluster.
Skooner is the easiest way to manage your Kubernetes cluster. Skooner is now a sandbox project of the [Cloud Native Computing Foundation](https://www.cncf.io/sandbox-projects)!
* **Full cluster management**: Namespaces, Nodes, Pods, Replica Sets, Deployments, Storage, RBAC and more
* **Blazing fast and Always Live**: no need to refresh pages to see the latest cluster status
@@ -19,19 +18,21 @@ Skooner is the easiest way to manage your Kubernetes cluster.
<br>
## Table of Contents
* [Prerequisites](#Prerequisites)
* [Getting Started](#Getting-started)
* [Kubectl proxy](#kubectl-proxy)
* [Logging in](#Logging-in)
* [Service Account Token](#Service-Account-Token)
* [OIDC](#oidc)
* [NodePort](#Nodeport)
* [Metrics](#Metrics)
* [Development](#Development)
* [Skooner Architecture](#Skooner-architecture)
* [Server](#Server)
* [Client](#Client)
* [License](#License)
- [Skooner - Kubernetes Dashboard](#skooner---kubernetes-dashboard)
- [Table of Contents](#table-of-contents)
- [Prerequisites](#prerequisites)
- [Getting Started](#getting-started)
- [kubectl proxy](#kubectl-proxy)
- [Logging in](#logging-in)
- [Service Account Token](#service-account-token)
- [OIDC](#oidc)
- [NodePort](#nodeport)
- [Metrics](#metrics)
- [Development](#development)
- [Skooner Architecture](#skooner-architecture)
- [Server](#server)
- [Client](#client)
- [License](#license)
## Prerequisites
* A running Kubernetes cluster (e.g., [minikube](https://kubernetes.io/docs/tasks/tools/install-minikube/)), with...
@@ -130,7 +131,7 @@ kubectl apply -f https://raw.githubusercontent.com/skooner-k8s/skooner/master/ku
```
Additionally, you can provide other OIDC options via these environment variables:
Additionally, you can provide other OIDC options via these environment variables:
* `OIDC_SCOPES`: The default value for this value is `openid email`, but additional scopes can also be added using something like `OIDC_SCOPES="openid email groups"`
* `OIDC_METADATA`: Skooner uses the excellent [node-openid-client](https://github.com/panva/node-openid-client) module. `OIDC_METADATA` will take a JSON string and pass it to the `Client` constructor. Docs [here](https://github.com/panva/node-openid-client/blob/master/docs/README.md#client). For example, `OIDC_METADATA='{"token_endpoint_auth_method":"client_secret_post"}`

View File

@@ -1,4 +1,4 @@
# Versioning and Release Strategy
# Versioning and Release Strategy - Status: Proposed
## Table of Contents
- **[Versioning Strategy](#versioning-strategy)**<br>
- **[Release Strategy](#release-strategy)**<br>
@@ -6,28 +6,24 @@
- **[Breaking Changes Guide](#breaking-changes-guide)**<br>
## Versioning Strategy
Once Skooner version v1.0.0 is released, subsequent releases will follow [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
Until then, breaking changes may occur without an uptick to the Major version.
Once Skooner version v1.0.0 is released, subsequent releases will follow [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
Until then, breaking changes may occur without an uptick to the Major version.
Versions will use the `v<semantic version>` tag pattern.
## Release Strategy
### Major Release
**Cadence**: Approximately every 6 months
**Method**:
1. Release current content in Stable branch as a Minor/Patch release
2. Replace Stable branch content with everything from Main branch
3. Release updated Stable branch as a Major release
### Minor/Patch Release
**Cadence**: Approximately once a month
**Method**: Release Stable branch as a Minor/Patch release
### Strategy Reasoning
- To support agile feature additions at a monthly pace, users of Skooner can expect 6 months of Stable updates on each Major version before
needing to review any breaking changes. Users can simply subscribe to a particular Major version and pull the latest
- To support agile feature additions at a regular pace, users of Skooner can expect Stable updates on each Major version before
needing to review any breaking changes. Users can simply subscribe to a particular Major version and pull the latest
changes for that version without worry.
- If users want to be on the cutting edge, they have the option of subscribing to the latest changes on the Main branch.
- Helpful when needing to perform security patches for previous Major releases, fewer Major releases means less work.
@@ -55,38 +51,37 @@ The rest of this section will go into more detailed examples of breaking changes
#### Dropping Support for a K8s Cluster Version
Reasons this might happen:
- Adding a feature that only works on newer K8s clusters and not having a feature switch that would allow for the new
feature to go dark on older cluster versions, maintaining the functionality that was present before the feature add.
feature to go dark on older cluster versions, maintaining the functionality that was present before the feature add.
- Removing any logic that is needed to support a particular K8s cluster version
#### Dropping Support for a CRD or Version of a CRD
HPA for example:
- If HPA support is removed
- Logic is added to scrape the new HPA CRD fields provided in K8s 1.18 and isn't able to continue supporting the
- Logic is added to scrape the new HPA CRD fields provided in K8s 1.18 and isn't able to continue supporting the
limited information from 1.17.
#### Browser Support
Browser support is an important interface because companies often leverage a single browser for all needs and sometimes
Browser support is an important interface because companies often leverage a single browser for all needs and sometimes
they get locked into old versions for a variety of reasons. The following are examples of breaking changes:
- Removing support for a browser type (Mozilla, Chrome, etc)
- Removing support for a browser version
- Adding a feature that won't work on an older browser, such as the deprecations mentioned above
#### OpenId Connect Support
Deprecation of a previously supported version of [OpenId Connect](https://github.com/indeedeng/k8dash#oidc)
Deprecation of a previously supported version of [OpenId Connect](https://github.com/skooner-k8s/skooner#oidc)
#### Metrics-Server Support
Deprecation of a previously supported version of [metrics-server](https://github.com/indeedeng/k8dash#metrics)
Deprecation of a previously supported version of [metrics-server](https://github.com/skooner-k8s/skooner#metrics)
#### Noteworthy Performance Changes
Changes in the minimum resource requirements for the deployment, due to a feature change. This can be hard to identify,
Changes in the minimum resource requirements for the deployment, due to a feature change. This can be hard to identify,
but ideally is considered in obvious cases.
A new feature might be more CPU intensive or require caching that increases memory requirements. Without this new
minimum, Skooner might crash. Consider the following:
- How might the requested change impact the performance of pulling or presenting a list of N items on large and active clusters?
- Pulling a large dataset (even for a few items), depending on the auto-refresh frequency and use frequency,
- Pulling a large dataset (even for a few items), depending on the auto-refresh frequency and use frequency,
could cause congestion, even on a small cluster
- Any added caching might increase the minimum memory consumption

View File

@@ -1,5 +1,5 @@
{
"name": "client",
"name": "@skooner-k8s/skooner-client",
"version": "0.1.0",
"lockfileVersion": 1,
"requires": true,

View File

@@ -2,8 +2,8 @@
"name": "@skooner-k8s/skooner-client",
"version": "0.1.0",
"homepage": ".",
"repository" : {
"type" : "git",
"repository": {
"type": "git",
"url": "ssh://git@github.com/skooner-k8s/skooner.git",
"directory": "skooner/client"
},

View File

@@ -49,8 +49,7 @@ export default class Account extends Base<{}, State> {
<div className='contentPanel'>
<h3>Learn More</h3>
<div>Follow K8dash on <a href='https://github.com/indeedeng/k8dash'>GitHub</a></div>
<div>or at <a href='https://hub.docker.com/r/herbrandson/k8dash'>DockerHub</a></div>
<div>Follow Skooner on <a href='https://github.com/skooner-k8s/skooner'>GitHub</a></div>
</div>
<div className='contentPanel'>

View File

@@ -1,18 +0,0 @@
apiVersion: v1
entries:
k8dash:
- apiVersion: v1
appVersion: 0.0.1
created: 2019-04-25T11:53:15.386073-05:00
description: A Helm chart for Kubernetes Skooner
digest: 7a84cff8455803b1a5610987e054cebbe52b14878a2db6b22ae7b455a6105e09
maintainers:
- email: kiryanov.i@gmail.com
name: Ivan Kirianov
- email: eric@herbrandson.com
name: Eric Herbrandson
name: k8dash
urls:
- k8dash-0.0.1.tgz
version: 0.0.1
generated: 2019-04-25T11:53:15.385127-05:00

Binary file not shown.

View File

@@ -1 +0,0 @@
k8dash*.tgz

View File

@@ -1,10 +0,0 @@
apiVersion: v1
version: 0.0.3
appVersion: 0.0.1
name: k8dash
description: A Helm chart for Kubernetes K8Dash
maintainers:
- name: Ivan Kirianov
email: kiryanov.i@gmail.com
- name: Eric Herbrandson
email: eric@herbrandson.com

View File

@@ -1,46 +0,0 @@
apiVersion: v1
entries:
k8dash:
- apiVersion: v1
appVersion: 0.0.1
created: "2020-01-30T16:04:39.096068-05:00"
description: A Helm chart for Kubernetes K8Dash
digest: 8b8a95c95f36967f3a8d7f93e5987887d8bf08e4f0565d4f3495a0015f25042f
maintainers:
- email: kiryanov.i@gmail.com
name: Ivan Kirianov
- email: eric@herbrandson.com
name: Eric Herbrandson
name: k8dash
urls:
- k8dash-0.0.3.tgz
version: 0.0.3
- apiVersion: v1
appVersion: 0.0.1
created: "2020-01-30T16:04:39.096068-05:00"
description: A Helm chart for Kubernetes K8Dash
digest: 032d1170af9317e6270b6a139f3a3a0fc3f7e25d3966e2ec30fed5077389e94e
maintainers:
- email: kiryanov.i@gmail.com
name: Ivan Kirianov
- email: eric@herbrandson.com
name: Eric Herbrandson
name: k8dash
urls:
- k8dash-0.0.2.tgz
version: 0.0.2
- apiVersion: v1
appVersion: 0.0.1
created: "2020-01-30T16:04:39.0950656-05:00"
description: A Helm chart for Kubernetes K8Dash
digest: 8011dae258eb9c869d3cdeb9b29f7cb1b27dbb08b84b518aef2e8777da8b4778
maintainers:
- email: kiryanov.i@gmail.com
name: Ivan Kirianov
- email: eric@herbrandson.com
name: Eric Herbrandson
name: k8dash
urls:
- k8dash-0.0.1.tgz
version: 0.0.1
generated: "2020-01-30T16:04:39.0950656-05:00"

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -1,19 +0,0 @@
---
apiVersion: v1
kind: ServiceAccount
metadata:
name: k8dash-sa
---
apiVersion: rbac.authorization.k8s.io/v1beta1
kind: ClusterRoleBinding
metadata:
name: k8dash-sa
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: cluster-admin
subjects:
- kind: ServiceAccount
name: k8dash-sa
namespace: default
---

View File

@@ -1,32 +0,0 @@
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: "{{ .Chart.Name }}"
labels:
app: k8dash
chart: "{{ .Chart.Name }}-{{ .Chart.Version }}"
release: "{{ .Release.Name }}"
heritage: "{{ .Release.Service }}"
spec:
replicas: {{ .Values.replicaCount }}
selector:
matchLabels:
app: k8dash
release: {{ .Release.Name }}
template:
metadata:
labels:
app: k8dash
release: {{ .Release.Name }}
spec:
containers:
- name: {{ .Chart.Name }}
image: "{{ .Values.image.registry }}/{{ .Values.image.name }}:{{ .Values.image.tag }}"
imagePullPolicy: IfNotPresent
resources:
requests:
cpu: "25m"
memory: "100Mi"
limits:
cpu: "100m"
memory: "200Mi"

View File

@@ -1,30 +0,0 @@
{{- if .Values.ingress.enabled -}}
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: k8dash
labels:
app: k8dash
chart: "{{ .Chart.Name }}-{{ .Chart.Version }}"
release: "{{ .Release.Name }}"
heritage: "{{ .Release.Service }}"
{{- if .Values.ingress.annotations }}
annotations:
{{ toYaml .Values.ingress.annotations | indent 4 }}
{{- end }}
spec:
rules:
- host: {{ .Values.ingress.host }}
http:
paths:
{{- range $p := .Values.ingress.paths }}
- path: {{ $p }}
backend:
serviceName: k8dash
servicePort: 80
{{- end -}}
{{- if .Values.ingress.tls }}
tls:
{{ toYaml .Values.ingress.tls | indent 4 }}
{{- end -}}
{{- end -}}

View File

@@ -1,17 +0,0 @@
apiVersion: v1
kind: Service
metadata:
name: k8dash
labels:
app: k8dash
chart: "{{ .Chart.Name }}-{{ .Chart.Version }}"
release: "{{ .Release.Name }}"
heritage: "{{ .Release.Service }}"
spec:
ports:
- name: k8dash
port: 80
targetPort: 4654
selector:
app: k8dash
release: {{ .Release.Name }}

View File

@@ -1,21 +0,0 @@
{{- if .Values.createServiceAccount -}}
---
apiVersion: v1
kind: ServiceAccount
metadata:
name: k8dash-sa
---
apiVersion: rbac.authorization.k8s.io/v1beta1
kind: ClusterRoleBinding
metadata:
name: k8dash-sa
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: cluster-admin
subjects:
- kind: ServiceAccount
name: k8dash-sa
namespace: {{ .Release.Namespace }}
---
{{- end -}}

View File

@@ -1,43 +0,0 @@
replicaCount: 1
revisionHistoryLimit: 1
image:
registry: herbrandson
name: k8dash
tag: latest
pullPolicy: IfNotPresent
resources:
requests:
cpu: 200m
memory: 300Mi
livenessProbe:
initialDelaySeconds: 30
periodSeconds: 30
service:
name: Node
type: NodePort
servicePort: 4654
# If true will create k8dash-sa and associate with cluster-admin role. Secret can be used for auth page with:
# kubectl describe secret k8dash-sa-token-xxxxx
createServiceAccount: false
ingress:
enabled: false
## Kubernetes Dashboard Ingress annotations
# annotations:
# kubernetes.io/ingress.class: nginx
## Kubernetes Dashboard Ingress hostnames
# host: kubernetes-dashboard.domain.com
paths:
- /
## Kubernetes Dashboard Ingress TLS configuration
# tls:
# - secretName: kubernetes-dashboard-tls
# hosts:
# - kubernetes-dashboard.domain.com

View File

@@ -1,21 +1,21 @@
kind: Deployment
apiVersion: apps/v1
metadata:
name: k8dash
name: skooner
namespace: kube-system
spec:
replicas: 1
selector:
matchLabels:
k8s-app: k8dash
k8s-app: skooner
template:
metadata:
labels:
k8s-app: k8dash
k8s-app: skooner
spec:
containers:
- name: k8dash
image: herbrandson/k8dash:latest
- name: skooner
image: ghcr.io/skooner-k8s/skooner:stable
ports:
- containerPort: 4654
livenessProbe:
@@ -32,11 +32,11 @@ spec:
kind: Service
apiVersion: v1
metadata:
name: k8dash
name: skooner
namespace: kube-system
spec:
type: NodePort
ports:
- port: 4654
selector:
k8s-app: k8dash
k8s-app: skooner

View File

@@ -1,21 +1,21 @@
kind: Deployment
apiVersion: apps/v1
metadata:
name: k8dash
name: skooner
namespace: kube-system
spec:
replicas: 1
selector:
matchLabels:
k8s-app: k8dash
k8s-app: skooner
template:
metadata:
labels:
k8s-app: k8dash
k8s-app: skooner
spec:
containers:
- name: k8dash
image: herbrandson/k8dash:latest
- name: skooner
image: ghcr.io/skooner-k8s/skooner:stable
ports:
- containerPort: 4654
livenessProbe:
@@ -29,17 +29,17 @@ spec:
- name: OIDC_URL
valueFrom:
secretKeyRef:
name: k8dash
name: skooner
key: url
- name: OIDC_CLIENT_ID
valueFrom:
secretKeyRef:
name: k8dash
name: skooner
key: id
- name: OIDC_SECRET
valueFrom:
secretKeyRef:
name: k8dash
name: skooner
key: secret
nodeSelector:
'beta.kubernetes.io/os': linux
@@ -48,11 +48,11 @@ spec:
kind: Service
apiVersion: v1
metadata:
name: k8dash
name: skooner
namespace: kube-system
spec:
ports:
- port: 80
targetPort: 4654
selector:
k8s-app: k8dash
k8s-app: skooner

View File

@@ -1,18 +1,18 @@
apiVersion: v1
kind: ServiceAccount
metadata:
name: k8dash-sa
name: skooner-sa
---
apiVersion: rbac.authorization.k8s.io/v1beta1
kind: ClusterRoleBinding
metadata:
name: k8dash-sa
name: skooner-sa
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: cluster-admin
subjects:
- kind: ServiceAccount
name: k8dash-sa
name: skooner-sa
namespace: default
---

View File

@@ -1,21 +1,21 @@
kind: Deployment
apiVersion: apps/v1
metadata:
name: k8dash
name: skooner
namespace: kube-system
spec:
replicas: 1
selector:
matchLabels:
k8s-app: k8dash
k8s-app: skooner
template:
metadata:
labels:
k8s-app: k8dash
k8s-app: skooner
spec:
containers:
- name: k8dash
image: herbrandson/k8dash:latest
- name: skooner
image: ghcr.io/skooner-k8s/skooner:stable
ports:
- containerPort: 4654
livenessProbe:
@@ -32,11 +32,11 @@ spec:
kind: Service
apiVersion: v1
metadata:
name: k8dash
name: skooner
namespace: kube-system
spec:
ports:
- port: 80
targetPort: 4654
selector:
k8s-app: k8dash
k8s-app: skooner