Reduce harbor resources
This commit is contained in:
parent
57f71cab43
commit
ddc8ac5ced
@ -1,22 +0,0 @@
|
|||||||
# Patterns to ignore when building packages.
|
|
||||||
# This supports shell glob matching, relative path matching, and
|
|
||||||
# negation (prefixed with !). Only one pattern per line.
|
|
||||||
.DS_Store
|
|
||||||
# Common VCS dirs
|
|
||||||
.git/
|
|
||||||
.gitignore
|
|
||||||
.bzr/
|
|
||||||
.bzrignore
|
|
||||||
.hg/
|
|
||||||
.hgignore
|
|
||||||
.svn/
|
|
||||||
# Common backup files
|
|
||||||
*.swp
|
|
||||||
*.bak
|
|
||||||
*.tmp
|
|
||||||
*~
|
|
||||||
# Various IDEs
|
|
||||||
.project
|
|
||||||
.idea/
|
|
||||||
*.tmproj
|
|
||||||
.vscode/
|
|
||||||
Binary file not shown.
|
Before Width: | Height: | Size: 33 KiB |
@ -1,21 +0,0 @@
|
|||||||
1. Get the application URL by running these commands:
|
|
||||||
{{- if .Values.ingress.enabled }}
|
|
||||||
{{- range $host := .Values.ingress.hosts }}
|
|
||||||
{{- range .paths }}
|
|
||||||
http{{ if $.Values.ingress.tls }}s{{ end }}://{{ $host.host }}{{ . }}
|
|
||||||
{{- end }}
|
|
||||||
{{- end }}
|
|
||||||
{{- else if contains "NodePort" .Values.service.type }}
|
|
||||||
export NODE_PORT=$(kubectl get --namespace {{ .Release.Namespace }} -o jsonpath="{.spec.ports[0].nodePort}" services {{ include "emby.fullname" . }})
|
|
||||||
export NODE_IP=$(kubectl get nodes --namespace {{ .Release.Namespace }} -o jsonpath="{.items[0].status.addresses[0].address}")
|
|
||||||
echo http://$NODE_IP:$NODE_PORT
|
|
||||||
{{- else if contains "LoadBalancer" .Values.service.type }}
|
|
||||||
NOTE: It may take a few minutes for the LoadBalancer IP to be available.
|
|
||||||
You can watch the status of by running 'kubectl get --namespace {{ .Release.Namespace }} svc -w {{ include "emby.fullname" . }}'
|
|
||||||
export SERVICE_IP=$(kubectl get svc --namespace {{ .Release.Namespace }} {{ include "emby.fullname" . }} --template "{{"{{ range (index .status.loadBalancer.ingress 0) }}{{.}}{{ end }}"}}")
|
|
||||||
echo http://$SERVICE_IP:{{ .Values.service.port }}
|
|
||||||
{{- else if contains "ClusterIP" .Values.service.type }}
|
|
||||||
export POD_NAME=$(kubectl get pods --namespace {{ .Release.Namespace }} -l "app.kubernetes.io/name={{ include "emby.name" . }},app.kubernetes.io/instance={{ .Release.Name }}" -o jsonpath="{.items[0].metadata.name}")
|
|
||||||
echo "Visit http://127.0.0.1:8080 to use your application"
|
|
||||||
kubectl --namespace {{ .Release.Namespace }} port-forward $POD_NAME 8080:80
|
|
||||||
{{- end }}
|
|
||||||
@ -1,63 +0,0 @@
|
|||||||
{{/* vim: set filetype=mustache: */}}
|
|
||||||
{{/*
|
|
||||||
Expand the name of the chart.
|
|
||||||
*/}}
|
|
||||||
{{- define "emby.name" -}}
|
|
||||||
{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" -}}
|
|
||||||
{{- end -}}
|
|
||||||
|
|
||||||
{{/*
|
|
||||||
Create a default fully qualified app name.
|
|
||||||
We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).
|
|
||||||
If release name contains chart name it will be used as a full name.
|
|
||||||
*/}}
|
|
||||||
{{- define "emby.fullname" -}}
|
|
||||||
{{- if .Values.fullnameOverride -}}
|
|
||||||
{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" -}}
|
|
||||||
{{- else -}}
|
|
||||||
{{- $name := default .Chart.Name .Values.nameOverride -}}
|
|
||||||
{{- if contains $name .Release.Name -}}
|
|
||||||
{{- .Release.Name | trunc 63 | trimSuffix "-" -}}
|
|
||||||
{{- else -}}
|
|
||||||
{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" -}}
|
|
||||||
{{- end -}}
|
|
||||||
{{- end -}}
|
|
||||||
{{- end -}}
|
|
||||||
|
|
||||||
{{/*
|
|
||||||
Create chart name and version as used by the chart label.
|
|
||||||
*/}}
|
|
||||||
{{- define "emby.chart" -}}
|
|
||||||
{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" -}}
|
|
||||||
{{- end -}}
|
|
||||||
|
|
||||||
{{/*
|
|
||||||
Common labels
|
|
||||||
*/}}
|
|
||||||
{{- define "emby.labels" -}}
|
|
||||||
helm.sh/chart: {{ include "emby.chart" . }}
|
|
||||||
{{ include "emby.selectorLabels" . }}
|
|
||||||
{{- if .Chart.AppVersion }}
|
|
||||||
app.kubernetes.io/version: {{ .Chart.AppVersion | quote }}
|
|
||||||
{{- end }}
|
|
||||||
app.kubernetes.io/managed-by: {{ .Release.Service }}
|
|
||||||
{{- end -}}
|
|
||||||
|
|
||||||
{{/*
|
|
||||||
Selector labels
|
|
||||||
*/}}
|
|
||||||
{{- define "emby.selectorLabels" -}}
|
|
||||||
app.kubernetes.io/name: {{ include "emby.name" . }}
|
|
||||||
app.kubernetes.io/instance: {{ .Release.Name }}
|
|
||||||
{{- end -}}
|
|
||||||
|
|
||||||
{{/*
|
|
||||||
Create the name of the service account to use
|
|
||||||
*/}}
|
|
||||||
{{- define "emby.serviceAccountName" -}}
|
|
||||||
{{- if .Values.serviceAccount.create -}}
|
|
||||||
{{ default (include "emby.fullname" .) .Values.serviceAccount.name }}
|
|
||||||
{{- else -}}
|
|
||||||
{{ default "default" .Values.serviceAccount.name }}
|
|
||||||
{{- end -}}
|
|
||||||
{{- end -}}
|
|
||||||
@ -1,10 +0,0 @@
|
|||||||
apiVersion: v1
|
|
||||||
kind: ConfigMap
|
|
||||||
metadata:
|
|
||||||
name: {{ include "emby.fullname" . }}-settings
|
|
||||||
labels:
|
|
||||||
{{- include "emby.labels" . | nindent 4 }}
|
|
||||||
data:
|
|
||||||
{{- range $k, $v := .Values.configmap }}
|
|
||||||
{{ $k }}: {{ $v | quote }}
|
|
||||||
{{- end }}
|
|
||||||
@ -1,81 +0,0 @@
|
|||||||
{{- if .Values.ingress.external.enabled -}}
|
|
||||||
{{- $fullName := include "emby.fullname" . -}}
|
|
||||||
{{- $svcPort := .Values.service.port -}}
|
|
||||||
apiVersion: networking.k8s.io/v1
|
|
||||||
kind: Ingress
|
|
||||||
metadata:
|
|
||||||
name: {{ $fullName }}-ext
|
|
||||||
labels:
|
|
||||||
{{- include "emby.labels" . | nindent 4 }}
|
|
||||||
{{- with .Values.ingress.external.annotations }}
|
|
||||||
annotations:
|
|
||||||
{{- toYaml . | nindent 4 }}
|
|
||||||
{{- end }}
|
|
||||||
spec:
|
|
||||||
{{- if .Values.ingress.external.tls }}
|
|
||||||
tls:
|
|
||||||
{{- range .Values.ingress.external.tls }}
|
|
||||||
- hosts:
|
|
||||||
{{- range .hosts }}
|
|
||||||
- {{ . | quote }}
|
|
||||||
{{- end }}
|
|
||||||
secretName: {{ .secretName }}
|
|
||||||
{{- end }}
|
|
||||||
{{- end }}
|
|
||||||
rules:
|
|
||||||
{{- range .Values.ingress.external.hosts }}
|
|
||||||
- host: {{ .host | quote }}
|
|
||||||
http:
|
|
||||||
paths:
|
|
||||||
{{- range .paths }}
|
|
||||||
- path: /
|
|
||||||
pathType: Prefix
|
|
||||||
backend:
|
|
||||||
service:
|
|
||||||
name: {{ $fullName }}
|
|
||||||
port:
|
|
||||||
number: {{ $svcPort }}
|
|
||||||
{{- end }}
|
|
||||||
{{- end }}
|
|
||||||
{{- end }}
|
|
||||||
---
|
|
||||||
{{- if .Values.ingress.internal.enabled -}}
|
|
||||||
{{- $fullName := include "emby.fullname" . -}}
|
|
||||||
{{- $svcPort := .Values.service.port -}}
|
|
||||||
apiVersion: networking.k8s.io/v1
|
|
||||||
kind: Ingress
|
|
||||||
metadata:
|
|
||||||
name: {{ $fullName }}-int
|
|
||||||
labels:
|
|
||||||
{{- include "emby.labels" . | nindent 4 }}
|
|
||||||
{{- with .Values.ingress.external.annotations }}
|
|
||||||
annotations:
|
|
||||||
{{- toYaml . | nindent 4 }}
|
|
||||||
{{- end }}
|
|
||||||
spec:
|
|
||||||
{{- if .Values.ingress.internal.tls }}
|
|
||||||
tls:
|
|
||||||
{{- range .Values.ingress.internal.tls }}
|
|
||||||
- hosts:
|
|
||||||
{{- range .hosts }}
|
|
||||||
- {{ . | quote }}
|
|
||||||
{{- end }}
|
|
||||||
secretName: {{ .secretName }}
|
|
||||||
{{- end }}
|
|
||||||
{{- end }}
|
|
||||||
rules:
|
|
||||||
{{- range .Values.ingress.internal.hosts }}
|
|
||||||
- host: {{ .host | quote }}
|
|
||||||
http:
|
|
||||||
paths:
|
|
||||||
{{- range .paths }}
|
|
||||||
- path: /
|
|
||||||
pathType: Prefix
|
|
||||||
backend:
|
|
||||||
service:
|
|
||||||
name: {{ $fullName }}
|
|
||||||
port:
|
|
||||||
number: {{ $svcPort }}
|
|
||||||
{{- end }}
|
|
||||||
{{- end }}
|
|
||||||
{{- end }}
|
|
||||||
@ -1,15 +0,0 @@
|
|||||||
apiVersion: v1
|
|
||||||
kind: Service
|
|
||||||
metadata:
|
|
||||||
name: {{ include "emby.fullname" . }}
|
|
||||||
labels:
|
|
||||||
{{- include "emby.labels" . | nindent 4 }}
|
|
||||||
spec:
|
|
||||||
type: {{ .Values.service.type }}
|
|
||||||
ports:
|
|
||||||
- port: {{ .Values.service.port }}
|
|
||||||
targetPort: 8096
|
|
||||||
protocol: TCP
|
|
||||||
name: emby
|
|
||||||
selector:
|
|
||||||
{{- include "emby.selectorLabels" . | nindent 4 }}
|
|
||||||
@ -1,8 +0,0 @@
|
|||||||
{{- if .Values.serviceAccount.create -}}
|
|
||||||
apiVersion: v1
|
|
||||||
kind: ServiceAccount
|
|
||||||
metadata:
|
|
||||||
name: {{ include "emby.serviceAccountName" . }}
|
|
||||||
labels:
|
|
||||||
{{ include "emby.labels" . | nindent 4 }}
|
|
||||||
{{- end -}}
|
|
||||||
@ -1,93 +0,0 @@
|
|||||||
apiVersion: apps/v1
|
|
||||||
kind: StatefulSet
|
|
||||||
metadata:
|
|
||||||
name: {{ include "emby.fullname" . }}
|
|
||||||
labels:
|
|
||||||
{{- include "emby.labels" . | nindent 4 }}
|
|
||||||
spec:
|
|
||||||
replicas: {{ .Values.replicaCount }}
|
|
||||||
serviceName: {{ include "emby.fullname" . }}
|
|
||||||
selector:
|
|
||||||
matchLabels:
|
|
||||||
{{- include "emby.selectorLabels" . | nindent 6 }}
|
|
||||||
template:
|
|
||||||
metadata:
|
|
||||||
labels:
|
|
||||||
{{- include "emby.selectorLabels" . | nindent 8 }}
|
|
||||||
spec:
|
|
||||||
{{- with .Values.imagePullSecrets }}
|
|
||||||
imagePullSecrets:
|
|
||||||
{{- toYaml . | nindent 8 }}
|
|
||||||
{{- end }}
|
|
||||||
serviceAccountName: {{ include "emby.serviceAccountName" . }}
|
|
||||||
securityContext:
|
|
||||||
{{- toYaml .Values.podSecurityContext | nindent 8 }}
|
|
||||||
containers:
|
|
||||||
- name: {{ .Chart.Name }}
|
|
||||||
securityContext:
|
|
||||||
{{- toYaml .Values.securityContext | nindent 12 }}
|
|
||||||
image: "{{ .Values.image.repository }}:{{ .Chart.AppVersion }}"
|
|
||||||
imagePullPolicy: {{ .Values.image.pullPolicy }}
|
|
||||||
env:
|
|
||||||
- name: NODE_NAME
|
|
||||||
valueFrom:
|
|
||||||
fieldRef:
|
|
||||||
apiVersion: v1
|
|
||||||
fieldPath: spec.nodeName
|
|
||||||
- name: POD_NAME
|
|
||||||
valueFrom:
|
|
||||||
fieldRef:
|
|
||||||
apiVersion: v1
|
|
||||||
fieldPath: metadata.name
|
|
||||||
- name: POD_NAMESPACE
|
|
||||||
valueFrom:
|
|
||||||
fieldRef:
|
|
||||||
apiVersion: v1
|
|
||||||
fieldPath: metadata.namespace
|
|
||||||
- name: UID
|
|
||||||
valueFrom:
|
|
||||||
configMapKeyRef:
|
|
||||||
name: emby-settings
|
|
||||||
key: uid
|
|
||||||
- name: GID
|
|
||||||
valueFrom:
|
|
||||||
configMapKeyRef:
|
|
||||||
name: emby-settings
|
|
||||||
key: gid
|
|
||||||
ports:
|
|
||||||
- name: http
|
|
||||||
containerPort: 8096
|
|
||||||
protocol: TCP
|
|
||||||
livenessProbe:
|
|
||||||
tcpSocket:
|
|
||||||
port: 8096
|
|
||||||
readinessProbe:
|
|
||||||
tcpSocket:
|
|
||||||
port: 8096
|
|
||||||
resources:
|
|
||||||
{{- toYaml .Values.resources | nindent 12 }}
|
|
||||||
volumeMounts:
|
|
||||||
- mountPath: /data/media
|
|
||||||
name: emby-media-pv
|
|
||||||
- mountPath: /config
|
|
||||||
name: emby-config
|
|
||||||
restartPolicy: Always
|
|
||||||
volumes:
|
|
||||||
- name: emby-media-pv
|
|
||||||
persistentVolumeClaim:
|
|
||||||
claimName: {{ .Values.config.mediaPvc }}
|
|
||||||
- name: emby-config
|
|
||||||
persistentVolumeClaim:
|
|
||||||
claimName: {{ .Values.config.configPvc }}
|
|
||||||
{{- with .Values.nodeSelector }}
|
|
||||||
nodeSelector:
|
|
||||||
{{- toYaml . | nindent 8 }}
|
|
||||||
{{- end }}
|
|
||||||
{{- with .Values.affinity }}
|
|
||||||
affinity:
|
|
||||||
{{- toYaml . | nindent 8 }}
|
|
||||||
{{- end }}
|
|
||||||
{{- with .Values.tolerations }}
|
|
||||||
tolerations:
|
|
||||||
{{- toYaml . | nindent 8 }}
|
|
||||||
{{- end }}
|
|
||||||
@ -1,15 +0,0 @@
|
|||||||
apiVersion: v1
|
|
||||||
kind: Pod
|
|
||||||
metadata:
|
|
||||||
name: "{{ include "emby.fullname" . }}-test-connection"
|
|
||||||
labels:
|
|
||||||
{{ include "emby.labels" . | nindent 4 }}
|
|
||||||
annotations:
|
|
||||||
"helm.sh/hook": test-success
|
|
||||||
spec:
|
|
||||||
containers:
|
|
||||||
- name: wget
|
|
||||||
image: busybox
|
|
||||||
command: ['wget']
|
|
||||||
args: ['{{ include "emby.fullname" . }}:{{ .Values.service.port }}']
|
|
||||||
restartPolicy: Never
|
|
||||||
@ -1,85 +0,0 @@
|
|||||||
# Default values for jellyfin.
|
|
||||||
# This is a YAML-formatted file.
|
|
||||||
# Declare variables to be passed into your templates.
|
|
||||||
|
|
||||||
replicaCount: 1
|
|
||||||
|
|
||||||
image:
|
|
||||||
repository: harbor.ervine.dev/public/x86_64/embyserver
|
|
||||||
pullPolicy: IfNotPresent
|
|
||||||
|
|
||||||
imagePullSecrets: []
|
|
||||||
nameOverride: ""
|
|
||||||
fullnameOverride: ""
|
|
||||||
|
|
||||||
serviceAccount:
|
|
||||||
# Specifies whether a service account should be created
|
|
||||||
create: true
|
|
||||||
# The name of the service account to use.
|
|
||||||
# If not set and create is true, a name is generated using the fullname template
|
|
||||||
name:
|
|
||||||
|
|
||||||
podSecurityContext: {}
|
|
||||||
# fsGroup: 2000
|
|
||||||
|
|
||||||
securityContext: {}
|
|
||||||
# capabilities:
|
|
||||||
# drop:
|
|
||||||
# - ALL
|
|
||||||
# readOnlyRootFilesystem: true
|
|
||||||
# runAsNonRoot: true
|
|
||||||
# runAsUser: 1000
|
|
||||||
|
|
||||||
service:
|
|
||||||
type: ClusterIP
|
|
||||||
port: 8096
|
|
||||||
|
|
||||||
ingress:
|
|
||||||
external:
|
|
||||||
enabled: true
|
|
||||||
annotations:
|
|
||||||
kubernetes.io/ingress.class: nginx
|
|
||||||
nginx.ingress.kubernetes.io/backend-protocol: HTTP
|
|
||||||
hosts:
|
|
||||||
- host: emby.ervine.cloud
|
|
||||||
paths:
|
|
||||||
- path: /
|
|
||||||
tls:
|
|
||||||
- secretName: emby-ervine-cloud-tls
|
|
||||||
hosts:
|
|
||||||
- emby.ervine.cloud
|
|
||||||
internal:
|
|
||||||
enabled: false
|
|
||||||
annotations: {}
|
|
||||||
# kubernetes.io/ingress.class: nginx
|
|
||||||
# kubernetes.io/tls-acme: "true"
|
|
||||||
hosts:
|
|
||||||
- host: chart-example.local
|
|
||||||
paths: []
|
|
||||||
tls: []
|
|
||||||
# - secretName: chart-example-tls
|
|
||||||
# hosts:
|
|
||||||
# - chart-example.local
|
|
||||||
|
|
||||||
resources:
|
|
||||||
# We usually recommend not to specify default resources and to leave this as a conscious
|
|
||||||
# choice for the user. This also increases chances charts run on environments with little
|
|
||||||
# resources, such as Minikube. If you do want to specify resources, uncomment the following
|
|
||||||
# lines, adjust them as necessary, and remove the curly braces after 'resources:'.
|
|
||||||
# limits:
|
|
||||||
# cpu: 100m
|
|
||||||
# memory: 128Mi
|
|
||||||
requests:
|
|
||||||
cpu: 60m
|
|
||||||
memory: 800Mi
|
|
||||||
|
|
||||||
nodeSelector:
|
|
||||||
location: bedRoom
|
|
||||||
|
|
||||||
tolerations: []
|
|
||||||
|
|
||||||
affinity: {}
|
|
||||||
|
|
||||||
config:
|
|
||||||
configPvc: emby-config
|
|
||||||
mediaPvc: emby-icarus-media
|
|
||||||
@ -200,7 +200,10 @@ admissionController:
|
|||||||
# admissionController.certGen.env -- Additional environment variables to be added to the certgen container. Format is KEY: Value format
|
# admissionController.certGen.env -- Additional environment variables to be added to the certgen container. Format is KEY: Value format
|
||||||
env: {}
|
env: {}
|
||||||
# admissionController.certGen.resources -- The resources block for the certgen pod
|
# admissionController.certGen.resources -- The resources block for the certgen pod
|
||||||
resources: {}
|
resources:
|
||||||
|
requests:
|
||||||
|
memory: 50Mi
|
||||||
|
cpu: 10m
|
||||||
# admissionController.certGen.securityContext -- The securityContext block for the certgen pod
|
# admissionController.certGen.securityContext -- The securityContext block for the certgen pod
|
||||||
securityContext: {}
|
securityContext: {}
|
||||||
nodeSelector: {}
|
nodeSelector: {}
|
||||||
|
|||||||
@ -420,8 +420,8 @@ portal:
|
|||||||
revisionHistoryLimit: 10
|
revisionHistoryLimit: 10
|
||||||
resources:
|
resources:
|
||||||
requests:
|
requests:
|
||||||
memory: 256Mi
|
memory: 32Mi
|
||||||
cpu: 100m
|
cpu: 50m
|
||||||
extraEnvVars: []
|
extraEnvVars: []
|
||||||
nodeSelector:
|
nodeSelector:
|
||||||
location: bedRoom
|
location: bedRoom
|
||||||
|
|||||||
3
teleport-cluster-17.4.9/.lint/acme-off.yaml
Normal file
3
teleport-cluster-17.4.9/.lint/acme-off.yaml
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
clusterName: test-cluster-name
|
||||||
|
extraArgs:
|
||||||
|
- "--insecure"
|
||||||
3
teleport-cluster-17.4.9/.lint/acme-on.yaml
Normal file
3
teleport-cluster-17.4.9/.lint/acme-on.yaml
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
clusterName: test-acme-cluster
|
||||||
|
acme: true
|
||||||
|
acmeEmail: test@email.com
|
||||||
4
teleport-cluster-17.4.9/.lint/acme-uri-staging.yaml
Normal file
4
teleport-cluster-17.4.9/.lint/acme-uri-staging.yaml
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
clusterName: test-acme-cluster
|
||||||
|
acme: true
|
||||||
|
acmeEmail: test@email.com
|
||||||
|
acmeURI: https://acme-staging-v02.api.letsencrypt.org/directory
|
||||||
29
teleport-cluster-17.4.9/.lint/affinity.yaml
Normal file
29
teleport-cluster-17.4.9/.lint/affinity.yaml
Normal file
@ -0,0 +1,29 @@
|
|||||||
|
clusterName: test-gcp-cluster
|
||||||
|
chartMode: gcp
|
||||||
|
gcp:
|
||||||
|
projectId: gcpproj-123456
|
||||||
|
backendTable: test-teleport-firestore-storage-collection
|
||||||
|
auditLogTable: test-teleport-firestore-auditlog-collection
|
||||||
|
sessionRecordingBucket: test-gcp-session-storage-bucket
|
||||||
|
highAvailability:
|
||||||
|
replicaCount: 2
|
||||||
|
affinity:
|
||||||
|
nodeAffinity:
|
||||||
|
requiredDuringSchedulingIgnoredDuringExecution:
|
||||||
|
nodeSelectorTerms:
|
||||||
|
- matchExpressions:
|
||||||
|
- key: gravitational.io/dedicated
|
||||||
|
operator: In
|
||||||
|
values:
|
||||||
|
- teleport
|
||||||
|
podAntiAffinity:
|
||||||
|
preferredDuringSchedulingIgnoredDuringExecution:
|
||||||
|
- podAffinityTerm:
|
||||||
|
labelSelector:
|
||||||
|
matchExpressions:
|
||||||
|
- key: app
|
||||||
|
operator: In
|
||||||
|
values:
|
||||||
|
- teleport
|
||||||
|
topologyKey: kubernetes.io/hostname
|
||||||
|
weight: 1
|
||||||
17
teleport-cluster-17.4.9/.lint/annotations.yaml
Normal file
17
teleport-cluster-17.4.9/.lint/annotations.yaml
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
clusterName: helm-lint
|
||||||
|
annotations:
|
||||||
|
config:
|
||||||
|
kubernetes.io/config: "test-annotation"
|
||||||
|
kubernetes.io/config-different: 2
|
||||||
|
deployment:
|
||||||
|
kubernetes.io/deployment: "test-annotation"
|
||||||
|
kubernetes.io/deployment-different: 3
|
||||||
|
pod:
|
||||||
|
kubernetes.io/pod: "test-annotation"
|
||||||
|
kubernetes.io/pod-different: 4
|
||||||
|
service:
|
||||||
|
kubernetes.io/service: "test-annotation"
|
||||||
|
kubernetes.io/service-different: 5
|
||||||
|
serviceAccount:
|
||||||
|
kubernetes.io/serviceaccount: "test-annotation"
|
||||||
|
kubernetes.io/serviceaccount-different: 6
|
||||||
3
teleport-cluster-17.4.9/.lint/auth-connector-name.yaml
Normal file
3
teleport-cluster-17.4.9/.lint/auth-connector-name.yaml
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
clusterName: helm-lint
|
||||||
|
authentication:
|
||||||
|
connectorName: "okta"
|
||||||
5
teleport-cluster-17.4.9/.lint/auth-disable-local.yaml
Normal file
5
teleport-cluster-17.4.9/.lint/auth-disable-local.yaml
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
clusterName: helm-lint
|
||||||
|
authentication:
|
||||||
|
type: "github"
|
||||||
|
localAuth: false
|
||||||
|
secondFactor: "off"
|
||||||
@ -0,0 +1,5 @@
|
|||||||
|
clusterName: helm-lint
|
||||||
|
authentication:
|
||||||
|
type: "github"
|
||||||
|
passwordless: false
|
||||||
|
secondFactor: "off"
|
||||||
@ -0,0 +1,4 @@
|
|||||||
|
clusterName: helm-lint
|
||||||
|
enterprise: true
|
||||||
|
licenseSecretName: enterprise-license
|
||||||
|
|
||||||
3
teleport-cluster-17.4.9/.lint/auth-locking-mode.yaml
Normal file
3
teleport-cluster-17.4.9/.lint/auth-locking-mode.yaml
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
clusterName: helm-lint
|
||||||
|
authentication:
|
||||||
|
lockingMode: "strict"
|
||||||
4
teleport-cluster-17.4.9/.lint/auth-passwordless.yaml
Normal file
4
teleport-cluster-17.4.9/.lint/auth-passwordless.yaml
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
clusterName: helm-lint
|
||||||
|
authentication:
|
||||||
|
connectorName: passwordless
|
||||||
|
secondFactor: webauthn
|
||||||
@ -0,0 +1,4 @@
|
|||||||
|
clusterName: helm-lint
|
||||||
|
authentication:
|
||||||
|
secondFactors:
|
||||||
|
- sso
|
||||||
@ -0,0 +1,10 @@
|
|||||||
|
clusterName: helm-lint
|
||||||
|
authentication:
|
||||||
|
secondFactors:
|
||||||
|
- sso
|
||||||
|
- webauthn
|
||||||
|
webauthn:
|
||||||
|
attestationAllowedCas:
|
||||||
|
- "/etc/ssl/certs/ca-certificates.crt"
|
||||||
|
attestationDeniedCas:
|
||||||
|
- "/etc/ssl/certs/ca-certificates.crt"
|
||||||
4
teleport-cluster-17.4.9/.lint/auth-type-legacy.yaml
Normal file
4
teleport-cluster-17.4.9/.lint/auth-type-legacy.yaml
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
clusterName: helm-lint
|
||||||
|
authentication:
|
||||||
|
type: "this-should-be-ignored"
|
||||||
|
authenticationType: "github"
|
||||||
3
teleport-cluster-17.4.9/.lint/auth-type.yaml
Normal file
3
teleport-cluster-17.4.9/.lint/auth-type.yaml
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
clusterName: helm-lint
|
||||||
|
authentication:
|
||||||
|
type: "github"
|
||||||
10
teleport-cluster-17.4.9/.lint/auth-webauthn-legacy.yaml
Normal file
10
teleport-cluster-17.4.9/.lint/auth-webauthn-legacy.yaml
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
clusterName: helm-lint
|
||||||
|
authentication:
|
||||||
|
secondFactor: "off" # this should be overridden
|
||||||
|
authenticationSecondFactor:
|
||||||
|
secondFactor: "on"
|
||||||
|
webauthn:
|
||||||
|
attestationAllowedCas:
|
||||||
|
- "/etc/ssl/certs/ca-certificates.crt"
|
||||||
|
attestationDeniedCas:
|
||||||
|
- "/etc/ssl/certs/ca-certificates.crt"
|
||||||
8
teleport-cluster-17.4.9/.lint/auth-webauthn.yaml
Normal file
8
teleport-cluster-17.4.9/.lint/auth-webauthn.yaml
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
clusterName: helm-lint
|
||||||
|
authentication:
|
||||||
|
secondFactor: "on"
|
||||||
|
webauthn:
|
||||||
|
attestationAllowedCas:
|
||||||
|
- "/etc/ssl/certs/ca-certificates.crt"
|
||||||
|
attestationDeniedCas:
|
||||||
|
- "/etc/ssl/certs/ca-certificates.crt"
|
||||||
13
teleport-cluster-17.4.9/.lint/aws-access-monitoring.yaml
Normal file
13
teleport-cluster-17.4.9/.lint/aws-access-monitoring.yaml
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
clusterName: test-aws-cluster
|
||||||
|
chartMode: aws
|
||||||
|
aws:
|
||||||
|
region: us-west-2
|
||||||
|
backendTable: test-dynamodb-backend-table
|
||||||
|
sessionRecordingBucket: test-s3-session-storage-bucket
|
||||||
|
athenaURL: 'athena://db.table?topicArn=arn:aws:sns:region:account_id:topic_name'
|
||||||
|
|
||||||
|
accessMonitoring:
|
||||||
|
enabled: true
|
||||||
|
reportResults: "s3://example-athena-long-term/report_results"
|
||||||
|
roleARN: "arn:aws:iam::123456789012:role/example_AccessMonitoringRole"
|
||||||
|
workgroup: "example_access_monitoring_workgroup"
|
||||||
14
teleport-cluster-17.4.9/.lint/aws-dynamodb-autoscaling.yaml
Normal file
14
teleport-cluster-17.4.9/.lint/aws-dynamodb-autoscaling.yaml
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
clusterName: test-aws-cluster
|
||||||
|
chartMode: aws
|
||||||
|
aws:
|
||||||
|
region: us-west-2
|
||||||
|
backendTable: test-dynamodb-backend-table
|
||||||
|
auditLogTable: test-dynamodb-auditlog-table
|
||||||
|
sessionRecordingBucket: test-s3-session-storage-bucket
|
||||||
|
dynamoAutoScaling: true
|
||||||
|
readMinCapacity: 5
|
||||||
|
readMaxCapacity: 100
|
||||||
|
readTargetValue: 50.0
|
||||||
|
writeMinCapacity: 5
|
||||||
|
writeMaxCapacity: 100
|
||||||
|
writeTargetValue: 50.0
|
||||||
14
teleport-cluster-17.4.9/.lint/aws-ha-acme.yaml
Normal file
14
teleport-cluster-17.4.9/.lint/aws-ha-acme.yaml
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
clusterName: test-aws-cluster
|
||||||
|
chartMode: aws
|
||||||
|
aws:
|
||||||
|
region: us-west-2
|
||||||
|
backendTable: test-dynamodb-backend-table
|
||||||
|
auditLogTable: test-dynamodb-auditlog-table
|
||||||
|
sessionRecordingBucket: test-s3-session-storage-bucket
|
||||||
|
highAvailability:
|
||||||
|
replicaCount: 3
|
||||||
|
certManager:
|
||||||
|
enabled: true
|
||||||
|
issuerName: letsencrypt-production
|
||||||
|
labels:
|
||||||
|
env: aws
|
||||||
12
teleport-cluster-17.4.9/.lint/aws-ha-antiaffinity.yaml
Normal file
12
teleport-cluster-17.4.9/.lint/aws-ha-antiaffinity.yaml
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
clusterName: test-aws-cluster
|
||||||
|
chartMode: aws
|
||||||
|
aws:
|
||||||
|
region: us-west-2
|
||||||
|
backendTable: test-dynamodb-backend-table
|
||||||
|
auditLogTable: test-dynamodb-auditlog-table
|
||||||
|
sessionRecordingBucket: test-s3-session-storage-bucket
|
||||||
|
highAvailability:
|
||||||
|
replicaCount: 3
|
||||||
|
requireAntiAffinity: true
|
||||||
|
labels:
|
||||||
|
env: aws
|
||||||
17
teleport-cluster-17.4.9/.lint/aws-ha-log.yaml
Normal file
17
teleport-cluster-17.4.9/.lint/aws-ha-log.yaml
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
clusterName: test-aws-cluster
|
||||||
|
chartMode: aws
|
||||||
|
log:
|
||||||
|
level: DEBUG
|
||||||
|
aws:
|
||||||
|
region: us-west-2
|
||||||
|
backendTable: test-dynamodb-backend-table
|
||||||
|
auditLogTable: test-dynamodb-auditlog-table
|
||||||
|
auditLogMirrorOnStdout: true
|
||||||
|
sessionRecordingBucket: test-s3-session-storage-bucket
|
||||||
|
highAvailability:
|
||||||
|
replicaCount: 2
|
||||||
|
certManager:
|
||||||
|
enabled: true
|
||||||
|
issuerName: letsencrypt-production
|
||||||
|
labels:
|
||||||
|
env: aws
|
||||||
11
teleport-cluster-17.4.9/.lint/aws-ha.yaml
Normal file
11
teleport-cluster-17.4.9/.lint/aws-ha.yaml
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
clusterName: test-aws-cluster
|
||||||
|
chartMode: aws
|
||||||
|
aws:
|
||||||
|
region: us-west-2
|
||||||
|
backendTable: test-dynamodb-backend-table
|
||||||
|
auditLogTable: test-dynamodb-auditlog-table
|
||||||
|
sessionRecordingBucket: test-s3-session-storage-bucket
|
||||||
|
highAvailability:
|
||||||
|
replicaCount: 3
|
||||||
|
labels:
|
||||||
|
env: aws
|
||||||
11
teleport-cluster-17.4.9/.lint/aws.yaml
Normal file
11
teleport-cluster-17.4.9/.lint/aws.yaml
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
clusterName: test-aws-cluster
|
||||||
|
chartMode: aws
|
||||||
|
aws:
|
||||||
|
region: us-west-2
|
||||||
|
backendTable: test-dynamodb-backend-table
|
||||||
|
auditLogTable: test-dynamodb-auditlog-table
|
||||||
|
sessionRecordingBucket: test-s3-session-storage-bucket
|
||||||
|
acme: true
|
||||||
|
acmeEmail: test@email.com
|
||||||
|
labels:
|
||||||
|
env: aws
|
||||||
11
teleport-cluster-17.4.9/.lint/azure.yaml
Normal file
11
teleport-cluster-17.4.9/.lint/azure.yaml
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
clusterName: test-azure-cluster
|
||||||
|
chartMode: azure
|
||||||
|
azure:
|
||||||
|
databaseHost: "mypostgresinstance.postgres.database.azure.com"
|
||||||
|
databaseUser: "teleport"
|
||||||
|
backendDatabase: "teleport_backend"
|
||||||
|
auditLogDatabase: "teleport_audit"
|
||||||
|
auditLogMirrorOnStdout: true
|
||||||
|
sessionRecordingStorageAccount: "mystorageaccount.blob.core.windows.net"
|
||||||
|
clientID: "1234"
|
||||||
|
databasePoolMaxConnections: 100
|
||||||
15
teleport-cluster-17.4.9/.lint/cert-manager.yaml
Normal file
15
teleport-cluster-17.4.9/.lint/cert-manager.yaml
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
clusterName: test-cluster
|
||||||
|
chartMode: aws
|
||||||
|
aws:
|
||||||
|
region: us-west-2
|
||||||
|
backendTable: test-dynamodb-backend-table
|
||||||
|
auditLogTable: test-dynamodb-auditlog-table
|
||||||
|
sessionRecordingBucket: test-s3-session-storage-bucket
|
||||||
|
highAvailability:
|
||||||
|
replicaCount: 3
|
||||||
|
certManager:
|
||||||
|
addCommonName: true
|
||||||
|
enabled: true
|
||||||
|
issuerGroup: custom.cert-manager.io
|
||||||
|
issuerName: custom
|
||||||
|
issuerKind: CustomClusterIssuer
|
||||||
15
teleport-cluster-17.4.9/.lint/cert-secret.yaml
Normal file
15
teleport-cluster-17.4.9/.lint/cert-secret.yaml
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
clusterName: test-cluster
|
||||||
|
chartMode: aws
|
||||||
|
aws:
|
||||||
|
region: us-west-2
|
||||||
|
backendTable: test-dynamodb-backend-table
|
||||||
|
auditLogTable: test-dynamodb-auditlog-table
|
||||||
|
sessionRecordingBucket: test-s3-session-storage-bucket
|
||||||
|
annotations:
|
||||||
|
certSecret:
|
||||||
|
kubernetes.io/cert-secret: value
|
||||||
|
highAvailability:
|
||||||
|
replicaCount: 3
|
||||||
|
certManager:
|
||||||
|
enabled: true
|
||||||
|
issuerName: letsencrypt
|
||||||
@ -0,0 +1,7 @@
|
|||||||
|
# This setup is not safe for production because the proxy will self-sign its certificate.
|
||||||
|
# Use those values for testing only
|
||||||
|
|
||||||
|
# The chart should deploy and work only with a clusterName.
|
||||||
|
# This setup can also cause redirection issues if the proxy is contacted with a hostName instead of an IP address
|
||||||
|
# as it is not aware of its external hostname and will attempt to perform a redirection.
|
||||||
|
clusterName: helm-lint
|
||||||
@ -0,0 +1,4 @@
|
|||||||
|
clusterName: test-cluster-name
|
||||||
|
tls:
|
||||||
|
existingSecretName: helm-lint-existing-tls-secret
|
||||||
|
existingCASecretName: helm-lint-existing-tls-secret-ca
|
||||||
3
teleport-cluster-17.4.9/.lint/existing-tls-secret.yaml
Normal file
3
teleport-cluster-17.4.9/.lint/existing-tls-secret.yaml
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
clusterName: test-cluster-name
|
||||||
|
tls:
|
||||||
|
existingSecretName: helm-lint-existing-tls-secret
|
||||||
12
teleport-cluster-17.4.9/.lint/extra-containers.yaml
Normal file
12
teleport-cluster-17.4.9/.lint/extra-containers.yaml
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
clusterName: helm-lint.example.com
|
||||||
|
extraContainers:
|
||||||
|
- name: nscenter
|
||||||
|
command:
|
||||||
|
- /bin/bash
|
||||||
|
- -c
|
||||||
|
- sleep infinity & wait
|
||||||
|
image: praqma/network-multitool
|
||||||
|
imagePullPolicy: IfNotPresent
|
||||||
|
securityContext:
|
||||||
|
privileged: true
|
||||||
|
runAsNonRoot: false
|
||||||
4
teleport-cluster-17.4.9/.lint/extra-env.yaml
Normal file
4
teleport-cluster-17.4.9/.lint/extra-env.yaml
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
clusterName: helm-lint.example.com
|
||||||
|
extraEnv:
|
||||||
|
- name: SOME_ENVIRONMENT_VARIABLE
|
||||||
|
value: "some-value"
|
||||||
14
teleport-cluster-17.4.9/.lint/gcp-ha-acme.yaml
Normal file
14
teleport-cluster-17.4.9/.lint/gcp-ha-acme.yaml
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
clusterName: test-gcp-cluster
|
||||||
|
chartMode: gcp
|
||||||
|
gcp:
|
||||||
|
projectId: gcpproj-123456
|
||||||
|
backendTable: test-teleport-firestore-storage-collection
|
||||||
|
auditLogTable: test-teleport-firestore-auditlog-collection
|
||||||
|
sessionRecordingBucket: test-gcp-session-storage-bucket
|
||||||
|
highAvailability:
|
||||||
|
replicaCount: 3
|
||||||
|
certManager:
|
||||||
|
enabled: true
|
||||||
|
issuerName: letsencrypt-production
|
||||||
|
labels:
|
||||||
|
env: gcp
|
||||||
12
teleport-cluster-17.4.9/.lint/gcp-ha-antiaffinity.yaml
Normal file
12
teleport-cluster-17.4.9/.lint/gcp-ha-antiaffinity.yaml
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
clusterName: test-gcp-cluster
|
||||||
|
chartMode: gcp
|
||||||
|
gcp:
|
||||||
|
projectId: gcpproj-123456
|
||||||
|
backendTable: test-teleport-firestore-storage-collection
|
||||||
|
auditLogTable: test-teleport-firestore-auditlog-collection
|
||||||
|
sessionRecordingBucket: test-gcp-session-storage-bucket
|
||||||
|
highAvailability:
|
||||||
|
replicaCount: 3
|
||||||
|
requireAntiAffinity: true
|
||||||
|
labels:
|
||||||
|
env: gcp
|
||||||
17
teleport-cluster-17.4.9/.lint/gcp-ha-log.yaml
Normal file
17
teleport-cluster-17.4.9/.lint/gcp-ha-log.yaml
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
clusterName: test-gcp-cluster
|
||||||
|
chartMode: gcp
|
||||||
|
log:
|
||||||
|
level: DEBUG
|
||||||
|
gcp:
|
||||||
|
projectId: gcpproj-123456
|
||||||
|
backendTable: test-teleport-firestore-storage-collection
|
||||||
|
auditLogTable: test-teleport-firestore-auditlog-collection
|
||||||
|
auditLogMirrorOnStdout: true
|
||||||
|
sessionRecordingBucket: test-gcp-session-storage-bucket
|
||||||
|
highAvailability:
|
||||||
|
replicaCount: 3
|
||||||
|
certManager:
|
||||||
|
enabled: true
|
||||||
|
issuerName: letsencrypt-production
|
||||||
|
labels:
|
||||||
|
env: gcp
|
||||||
12
teleport-cluster-17.4.9/.lint/gcp-ha-workload.yaml
Normal file
12
teleport-cluster-17.4.9/.lint/gcp-ha-workload.yaml
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
clusterName: test-gcp-cluster
|
||||||
|
chartMode: gcp
|
||||||
|
gcp:
|
||||||
|
projectId: gcpproj-123456
|
||||||
|
backendTable: test-teleport-firestore-storage-collection
|
||||||
|
auditLogTable: test-teleport-firestore-auditlog-collection
|
||||||
|
sessionRecordingBucket: test-gcp-session-storage-bucket
|
||||||
|
credentialSecretName: ""
|
||||||
|
highAvailability:
|
||||||
|
replicaCount: 3
|
||||||
|
labels:
|
||||||
|
env: gcp
|
||||||
11
teleport-cluster-17.4.9/.lint/gcp-ha.yaml
Normal file
11
teleport-cluster-17.4.9/.lint/gcp-ha.yaml
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
clusterName: test-gcp-cluster
|
||||||
|
chartMode: gcp
|
||||||
|
gcp:
|
||||||
|
projectId: gcpproj-123456
|
||||||
|
backendTable: test-teleport-firestore-storage-collection
|
||||||
|
auditLogTable: test-teleport-firestore-auditlog-collection
|
||||||
|
sessionRecordingBucket: test-gcp-session-storage-bucket
|
||||||
|
highAvailability:
|
||||||
|
replicaCount: 3
|
||||||
|
labels:
|
||||||
|
env: gcp
|
||||||
11
teleport-cluster-17.4.9/.lint/gcp.yaml
Normal file
11
teleport-cluster-17.4.9/.lint/gcp.yaml
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
clusterName: test-gcp-cluster
|
||||||
|
chartMode: gcp
|
||||||
|
gcp:
|
||||||
|
projectId: gcpproj-123456
|
||||||
|
backendTable: test-teleport-firestore-storage-collection
|
||||||
|
auditLogTable: test-teleport-firestore-auditlog-collection
|
||||||
|
sessionRecordingBucket: test-gcp-session-storage-bucket
|
||||||
|
acme: true
|
||||||
|
acmeEmail: test@email.com
|
||||||
|
labels:
|
||||||
|
env: gcp
|
||||||
4
teleport-cluster-17.4.9/.lint/imagepullsecrets.yaml
Normal file
4
teleport-cluster-17.4.9/.lint/imagepullsecrets.yaml
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
clusterName: test-standalone-cluster
|
||||||
|
chartMode: standalone
|
||||||
|
imagePullSecrets:
|
||||||
|
- name: myRegistryKeySecretName
|
||||||
8
teleport-cluster-17.4.9/.lint/ingress-publicaddr.yaml
Normal file
8
teleport-cluster-17.4.9/.lint/ingress-publicaddr.yaml
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
clusterName: teleport.example.com
|
||||||
|
publicAddr: ["my-teleport-ingress.example.com:443"]
|
||||||
|
ingress:
|
||||||
|
enabled: true
|
||||||
|
suppressAutomaticWildcards: true
|
||||||
|
proxyListenerMode: multiplex
|
||||||
|
service:
|
||||||
|
type: ClusterIP
|
||||||
6
teleport-cluster-17.4.9/.lint/ingress.yaml
Normal file
6
teleport-cluster-17.4.9/.lint/ingress.yaml
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
clusterName: teleport.example.com
|
||||||
|
ingress:
|
||||||
|
enabled: true
|
||||||
|
proxyListenerMode: multiplex
|
||||||
|
service:
|
||||||
|
type: ClusterIP
|
||||||
8
teleport-cluster-17.4.9/.lint/initcontainers.yaml
Normal file
8
teleport-cluster-17.4.9/.lint/initcontainers.yaml
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
clusterName: helm-lint
|
||||||
|
initContainers:
|
||||||
|
- name: "teleport-init"
|
||||||
|
image: "alpine"
|
||||||
|
args: ["echo test"]
|
||||||
|
- name: "teleport-init2"
|
||||||
|
image: "alpine"
|
||||||
|
args: ["echo test2"]
|
||||||
2
teleport-cluster-17.4.9/.lint/kube-cluster-name.yaml
Normal file
2
teleport-cluster-17.4.9/.lint/kube-cluster-name.yaml
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
clusterName: test-aws-cluster
|
||||||
|
kubeClusterName: test-kube-cluster
|
||||||
4
teleport-cluster-17.4.9/.lint/log-basic.yaml
Normal file
4
teleport-cluster-17.4.9/.lint/log-basic.yaml
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
clusterName: test-log-cluster
|
||||||
|
log:
|
||||||
|
format: json
|
||||||
|
level: INFO
|
||||||
6
teleport-cluster-17.4.9/.lint/log-extra.yaml
Normal file
6
teleport-cluster-17.4.9/.lint/log-extra.yaml
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
clusterName: test-log-cluster
|
||||||
|
log:
|
||||||
|
format: json
|
||||||
|
level: DEBUG
|
||||||
|
output: /var/lib/teleport/test.log
|
||||||
|
extraFields: ["level", "timestamp", "component", "caller"]
|
||||||
2
teleport-cluster-17.4.9/.lint/log-legacy.yaml
Normal file
2
teleport-cluster-17.4.9/.lint/log-legacy.yaml
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
clusterName: test-log-cluster
|
||||||
|
logLevel: DEBUG
|
||||||
4
teleport-cluster-17.4.9/.lint/node-selector.yaml
Normal file
4
teleport-cluster-17.4.9/.lint/node-selector.yaml
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
clusterName: test-cluster-name
|
||||||
|
nodeSelector:
|
||||||
|
role: bastion
|
||||||
|
environment: security
|
||||||
4
teleport-cluster-17.4.9/.lint/operator.yaml
Normal file
4
teleport-cluster-17.4.9/.lint/operator.yaml
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
clusterName: test-cluster-name
|
||||||
|
operator:
|
||||||
|
enabled: true
|
||||||
|
installCRDs: true
|
||||||
12
teleport-cluster-17.4.9/.lint/pdb.yaml
Normal file
12
teleport-cluster-17.4.9/.lint/pdb.yaml
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
clusterName: helm-lint
|
||||||
|
chartMode: aws
|
||||||
|
aws:
|
||||||
|
region: us-west-2
|
||||||
|
backendTable: test-dynamodb-backend-table
|
||||||
|
auditLogTable: test-dynamodb-auditlog-table
|
||||||
|
sessionRecordingBucket: test-s3-session-storage-bucket
|
||||||
|
highAvailability:
|
||||||
|
replicaCount: 3
|
||||||
|
podDisruptionBudget:
|
||||||
|
enabled: true
|
||||||
|
minAvailable: 2
|
||||||
4
teleport-cluster-17.4.9/.lint/persistence-legacy.yaml
Normal file
4
teleport-cluster-17.4.9/.lint/persistence-legacy.yaml
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
clusterName: test-persistence-cluster
|
||||||
|
standalone:
|
||||||
|
existingClaimName: ""
|
||||||
|
volumeSize: 10Gi
|
||||||
@ -0,0 +1 @@
|
|||||||
|
clusterName: helm-lint
|
||||||
7
teleport-cluster-17.4.9/.lint/pod-security-context.yaml
Normal file
7
teleport-cluster-17.4.9/.lint/pod-security-context.yaml
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
clusterName: helm-lint
|
||||||
|
podSecurityContext:
|
||||||
|
fsGroup: 99
|
||||||
|
fsGroupChangePolicy: OnRootMismatch
|
||||||
|
runAsGroup: 99
|
||||||
|
runAsNonRoot: true
|
||||||
|
runAsUser: 99
|
||||||
6
teleport-cluster-17.4.9/.lint/podmonitor.yaml
Normal file
6
teleport-cluster-17.4.9/.lint/podmonitor.yaml
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
clusterName: test-kube-cluster-name
|
||||||
|
podMonitor:
|
||||||
|
enabled: true
|
||||||
|
additionalLabels:
|
||||||
|
prometheus: default
|
||||||
|
interval: 30s
|
||||||
4
teleport-cluster-17.4.9/.lint/priority-class-name.yaml
Normal file
4
teleport-cluster-17.4.9/.lint/priority-class-name.yaml
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
clusterName: helm-lint
|
||||||
|
# These are just sample values to test the chart.
|
||||||
|
# They are not intended to be guidelines or suggestions for running teleport.
|
||||||
|
priorityClassName: "system-cluster-critical"
|
||||||
4
teleport-cluster-17.4.9/.lint/probe-timeout-seconds.yaml
Normal file
4
teleport-cluster-17.4.9/.lint/probe-timeout-seconds.yaml
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
clusterName: helm-lint
|
||||||
|
# These are just sample values to test the chart.
|
||||||
|
# They are not intended to be guidelines or suggestions for running teleport.
|
||||||
|
probeTimeoutSeconds: 5
|
||||||
@ -0,0 +1,2 @@
|
|||||||
|
clusterName: test-proxy-listener-mode
|
||||||
|
proxyListenerMode: multiplex
|
||||||
@ -0,0 +1,2 @@
|
|||||||
|
clusterName: test-proxy-listener-mode
|
||||||
|
proxyListenerMode: separate
|
||||||
11
teleport-cluster-17.4.9/.lint/public-addresses.yaml
Normal file
11
teleport-cluster-17.4.9/.lint/public-addresses.yaml
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
clusterName: helm-lint
|
||||||
|
publicAddr: ["loadbalancer.example.com:443"]
|
||||||
|
sshPublicAddr: ["loadbalancer.example.com:3023"]
|
||||||
|
tunnelPublicAddr: ["loadbalancer.example.com:3024"]
|
||||||
|
postgresPublicAddr: ["loadbalancer.example.com:5432"]
|
||||||
|
mongoPublicAddr: ["loadbalancer.example.com:27017"]
|
||||||
|
mysqlPublicAddr: ["loadbalancer.example.com:3036"]
|
||||||
|
kubePublicAddr: ["loadbalancer.example.com:3026"]
|
||||||
|
|
||||||
|
separatePostgresListener: true
|
||||||
|
separateMongoListener: true
|
||||||
10
teleport-cluster-17.4.9/.lint/resources.yaml
Normal file
10
teleport-cluster-17.4.9/.lint/resources.yaml
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
clusterName: helm-lint
|
||||||
|
# These are just sample values to test the chart.
|
||||||
|
# They are not intended to be guidelines or suggestions for running teleport.
|
||||||
|
resources:
|
||||||
|
limits:
|
||||||
|
cpu: 2
|
||||||
|
memory: 4Gi
|
||||||
|
requests:
|
||||||
|
cpu: 1
|
||||||
|
memory: 2Gi
|
||||||
@ -0,0 +1 @@
|
|||||||
|
clusterName: helm-lint
|
||||||
8
teleport-cluster-17.4.9/.lint/security-context.yaml
Normal file
8
teleport-cluster-17.4.9/.lint/security-context.yaml
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
clusterName: helm-lint
|
||||||
|
securityContext:
|
||||||
|
allowPrivilegeEscalation: false
|
||||||
|
privileged: false
|
||||||
|
readOnlyRootFilesystem: false
|
||||||
|
runAsGroup: 99
|
||||||
|
runAsNonRoot: true
|
||||||
|
runAsUser: 99
|
||||||
@ -0,0 +1,2 @@
|
|||||||
|
clusterName: helm-lint
|
||||||
|
separateMongoListener: true
|
||||||
@ -0,0 +1,2 @@
|
|||||||
|
clusterName: helm-lint
|
||||||
|
separatePostgresListener: true
|
||||||
7
teleport-cluster-17.4.9/.lint/service-account.yaml
Normal file
7
teleport-cluster-17.4.9/.lint/service-account.yaml
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
clusterName: helm-lint
|
||||||
|
serviceAccount:
|
||||||
|
create: true
|
||||||
|
name: helm-lint
|
||||||
|
annotations:
|
||||||
|
serviceAccount:
|
||||||
|
kubernetes.io/serviceaccount: "test-annotation"
|
||||||
5
teleport-cluster-17.4.9/.lint/service.yaml
Normal file
5
teleport-cluster-17.4.9/.lint/service.yaml
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
clusterName: helm-lint
|
||||||
|
service:
|
||||||
|
type: LoadBalancer
|
||||||
|
spec:
|
||||||
|
loadBalancerIP: 1.2.3.4
|
||||||
2
teleport-cluster-17.4.9/.lint/session-recording-off.yaml
Normal file
2
teleport-cluster-17.4.9/.lint/session-recording-off.yaml
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
clusterName: helm-lint
|
||||||
|
sessionRecording: "off"
|
||||||
2
teleport-cluster-17.4.9/.lint/session-recording.yaml
Normal file
2
teleport-cluster-17.4.9/.lint/session-recording.yaml
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
clusterName: helm-lint
|
||||||
|
sessionRecording: "node-sync"
|
||||||
@ -0,0 +1,9 @@
|
|||||||
|
clusterName: test-standalone-cluster
|
||||||
|
chartMode: standalone
|
||||||
|
persistence:
|
||||||
|
enabled: true
|
||||||
|
storageClassName: ebs-ssd
|
||||||
|
acme: true
|
||||||
|
acmeEmail: test@email.com
|
||||||
|
labels:
|
||||||
|
env: standalone
|
||||||
9
teleport-cluster-17.4.9/.lint/standalone-customsize.yaml
Normal file
9
teleport-cluster-17.4.9/.lint/standalone-customsize.yaml
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
clusterName: test-standalone-cluster
|
||||||
|
chartMode: standalone
|
||||||
|
persistence:
|
||||||
|
enabled: true
|
||||||
|
volumeSize: 50Gi
|
||||||
|
acme: true
|
||||||
|
acmeEmail: test@email.com
|
||||||
|
labels:
|
||||||
|
env: standalone
|
||||||
@ -0,0 +1,9 @@
|
|||||||
|
clusterName: test-standalone-cluster
|
||||||
|
chartMode: standalone
|
||||||
|
persistence:
|
||||||
|
enabled: true
|
||||||
|
existingClaimName: teleport-storage
|
||||||
|
acme: true
|
||||||
|
acmeEmail: test@email.com
|
||||||
|
labels:
|
||||||
|
env: standalone
|
||||||
18
teleport-cluster-17.4.9/.lint/tolerations.yaml
Normal file
18
teleport-cluster-17.4.9/.lint/tolerations.yaml
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
clusterName: test-aws-cluster
|
||||||
|
chartMode: aws
|
||||||
|
aws:
|
||||||
|
region: us-west-2
|
||||||
|
backendTable: test-dynamodb-backend-table
|
||||||
|
auditLogTable: test-dynamodb-auditlog-table
|
||||||
|
sessionRecordingBucket: test-s3-session-storage-bucket
|
||||||
|
highAvailability:
|
||||||
|
replicaCount: 3
|
||||||
|
tolerations:
|
||||||
|
- key: "dedicated"
|
||||||
|
operator: "Equal"
|
||||||
|
value: "teleport"
|
||||||
|
effect: "NoExecute"
|
||||||
|
- key: "dedicated"
|
||||||
|
operator: "Equal"
|
||||||
|
value: "teleport"
|
||||||
|
effect: "NoSchedule"
|
||||||
5
teleport-cluster-17.4.9/.lint/version-override.yaml
Normal file
5
teleport-cluster-17.4.9/.lint/version-override.yaml
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
clusterName: test-cluster-name
|
||||||
|
teleportVersionOverride: 5.2.1
|
||||||
|
labels:
|
||||||
|
env: test
|
||||||
|
version: 5.2.1
|
||||||
8
teleport-cluster-17.4.9/.lint/volumes.yaml
Normal file
8
teleport-cluster-17.4.9/.lint/volumes.yaml
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
clusterName: helm-lint
|
||||||
|
extraVolumeMounts:
|
||||||
|
- name: "my-mount"
|
||||||
|
mountPath: "/path/to/mount"
|
||||||
|
extraVolumes:
|
||||||
|
- name: "my-mount"
|
||||||
|
secret:
|
||||||
|
secretName: "mySecret"
|
||||||
13
teleport-cluster-17.4.9/Chart.yaml
Normal file
13
teleport-cluster-17.4.9/Chart.yaml
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
apiVersion: v2
|
||||||
|
appVersion: 17.4.9
|
||||||
|
dependencies:
|
||||||
|
- alias: operator
|
||||||
|
name: teleport-operator
|
||||||
|
repository: ""
|
||||||
|
version: 17.4.9
|
||||||
|
description: Teleport is an access platform for your infrastructure
|
||||||
|
icon: https://goteleport.com/static/teleport-symbol-bimi.svg
|
||||||
|
keywords:
|
||||||
|
- Teleport
|
||||||
|
name: teleport-cluster
|
||||||
|
version: 17.4.9
|
||||||
68
teleport-cluster-17.4.9/README.md
Normal file
68
teleport-cluster-17.4.9/README.md
Normal file
@ -0,0 +1,68 @@
|
|||||||
|
# Teleport Cluster
|
||||||
|
|
||||||
|
This chart sets up a Teleport cluster composed of at least 1 Proxy instance
|
||||||
|
and 1 Auth instance. When applicable, the chart will default to 2 pods to
|
||||||
|
provide high-availability.
|
||||||
|
|
||||||
|
## Important Notices
|
||||||
|
|
||||||
|
- The chart version follows the Teleport version. e.g. chart v10.x can run Teleport v10.x and v11.x, but is not compatible with Teleport 9.x
|
||||||
|
- Teleport does mutual TLS to authenticate clients. Establishing mTLS through a L7
|
||||||
|
LoadBalancer, like a Kubernetes `Ingress` [requires ALPN support](https://goteleport.com/docs/architecture/tls-routing/#working-with-layer-7-load-balancers-or-reverse-proxies).
|
||||||
|
Exposing Teleport through a `Service` with type `LoadBalancer` is still recommended
|
||||||
|
because its the most flexible and least complex setup.
|
||||||
|
|
||||||
|
## Getting Started
|
||||||
|
|
||||||
|
### Single-node example
|
||||||
|
|
||||||
|
To install Teleport in a separate namespace and provision a web certificate using Let's Encrypt, run:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
$ helm install teleport/teleport-cluster \
|
||||||
|
--set acme=true \
|
||||||
|
--set acmeEmail=alice@example.com \
|
||||||
|
--set clusterName=teleport.example.com\
|
||||||
|
--create-namespace \
|
||||||
|
--namespace=teleport-cluster \
|
||||||
|
./teleport-cluster/
|
||||||
|
```
|
||||||
|
|
||||||
|
Finally, configure the DNS for `teleport.example.com` to point to the newly created LoadBalancer.
|
||||||
|
|
||||||
|
Note: this guide uses the built-in ACME client to get certificates.
|
||||||
|
In this setup, Teleport nodes cannot be replicated. If you want to run multiple
|
||||||
|
Teleport replicas, you must provide a certificate through `tls.existingSecretName`
|
||||||
|
or by installing [cert-manager](https://cert-manager.io/docs/) and setting the `highAvailability.certManager.*` values.
|
||||||
|
|
||||||
|
### Replicated setup guides
|
||||||
|
|
||||||
|
- [Running an HA Teleport cluster in Kubernetes using an AWS EKS Cluster](https://goteleport.com/docs/admin-guides/deploy-a-cluster/helm-deployments/aws/)
|
||||||
|
- [Running an HA Teleport cluster in Kubernetes using an Google Cloud GKE cluster](https://goteleport.com/docs/admin-guides/deploy-a-cluster/helm-deployments/gcp/)
|
||||||
|
- [Running an HA Teleport cluster in Kubernetes using an Azure AKS cluster](https://goteleport.com/docs/admin-guides/deploy-a-cluster/helm-deployments/azure/)
|
||||||
|
- [Running a Teleport cluster in Kubernetes with a custom Teleport config](https://goteleport.com/docs/admin-guides/deploy-a-cluster/helm-deployments/custom/)
|
||||||
|
|
||||||
|
### Creating first user
|
||||||
|
|
||||||
|
The first user can be created by executing a command in one of the auth pods.
|
||||||
|
|
||||||
|
```code
|
||||||
|
kubectl exec it -n teleport-cluster statefulset/teleport-cluster-auth -- tctl users add my-username --roles=editor,auditor,access
|
||||||
|
```
|
||||||
|
|
||||||
|
The command should output a registration link to finalize the user creation.
|
||||||
|
|
||||||
|
## Uninstalling
|
||||||
|
|
||||||
|
```bash
|
||||||
|
helm uninstall --namespace teleport-cluster teleport-cluster
|
||||||
|
```
|
||||||
|
|
||||||
|
## Documentation
|
||||||
|
|
||||||
|
See https://goteleport.com/docs/admin-guides/deploy-a-cluster/helm-deployments/ for guides on setting up HA Teleport clusters
|
||||||
|
in EKS or GKE, plus a comprehensive chart reference.
|
||||||
|
|
||||||
|
## Contributing to the chart
|
||||||
|
|
||||||
|
Please read [CONTRIBUTING.md](../CONTRIBUTING.md) before raising a pull request to this chart.
|
||||||
@ -0,0 +1,14 @@
|
|||||||
|
annotations:
|
||||||
|
deployment:
|
||||||
|
kubernetes.io/deployment: "test-annotation"
|
||||||
|
kubernetes.io/deployment-different: 3
|
||||||
|
pod:
|
||||||
|
kubernetes.io/pod: "test-annotation"
|
||||||
|
kubernetes.io/pod-different: 4
|
||||||
|
serviceAccount:
|
||||||
|
kubernetes.io/serviceaccount: "test-annotation"
|
||||||
|
kubernetes.io/serviceaccount-different: 6
|
||||||
|
|
||||||
|
teleportAddress: "example.teleport.sh:443"
|
||||||
|
token: "my-operator-bot"
|
||||||
|
teleportClusterName: "example.teleport.sh"
|
||||||
@ -0,0 +1,3 @@
|
|||||||
|
teleportAddress: "example.teleport.sh:443"
|
||||||
|
token: "my-operator-bot"
|
||||||
|
teleportClusterName: "example.teleport.sh"
|
||||||
@ -0,0 +1 @@
|
|||||||
|
enabled: false
|
||||||
@ -0,0 +1,6 @@
|
|||||||
|
tls:
|
||||||
|
existingCASecretName: helm-lint-existing-tls-secret-ca
|
||||||
|
|
||||||
|
teleportAddress: "teleport.example.com:3080"
|
||||||
|
token: "my-operator-bot"
|
||||||
|
teleportClusterName: "teleport.example.com"
|
||||||
@ -0,0 +1,10 @@
|
|||||||
|
labels:
|
||||||
|
deployment:
|
||||||
|
kubernetes.io/deployment: "test-label"
|
||||||
|
kubernetes.io/deployment-different: 3
|
||||||
|
pod:
|
||||||
|
kubernetes.io/pod: "test-label"
|
||||||
|
kubernetes.io/pod-different: 4
|
||||||
|
teleportAddress: "example.teleport.sh:443"
|
||||||
|
token: "my-operator-bot"
|
||||||
|
teleportClusterName: "example.teleport.sh"
|
||||||
@ -0,0 +1,3 @@
|
|||||||
|
teleportAddress: "example.teleport.sh:443"
|
||||||
|
token: "my-operator-bot"
|
||||||
|
joinMethod: "iam"
|
||||||
@ -0,0 +1,13 @@
|
|||||||
|
# These are just sample values to test the chart.
|
||||||
|
# They are not intended to be guidelines or suggestions for running teleport.
|
||||||
|
resources:
|
||||||
|
limits:
|
||||||
|
cpu: 2
|
||||||
|
memory: 4Gi
|
||||||
|
requests:
|
||||||
|
cpu: 1
|
||||||
|
memory: 2Gi
|
||||||
|
|
||||||
|
teleportAddress: "example.teleport.sh:443"
|
||||||
|
token: "my-operator-bot"
|
||||||
|
teleportClusterName: "example.teleport.sh"
|
||||||
@ -0,0 +1,8 @@
|
|||||||
|
apiVersion: v2
|
||||||
|
appVersion: 17.4.9
|
||||||
|
description: Teleport Operator provides management of select Teleport resources.
|
||||||
|
icon: https://goteleport.com/static/teleport-symbol-bimi.svg
|
||||||
|
keywords:
|
||||||
|
- Teleport
|
||||||
|
name: teleport-operator
|
||||||
|
version: 17.4.9
|
||||||
28
teleport-cluster-17.4.9/charts/teleport-operator/README.md
Normal file
28
teleport-cluster-17.4.9/charts/teleport-operator/README.md
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
# Teleport Operator
|
||||||
|
|
||||||
|
This chart deploys the Teleport Kubernetes Operator. The operator allows to manage
|
||||||
|
Teleport resources from inside Kubernetes.
|
||||||
|
|
||||||
|
## Important notice
|
||||||
|
|
||||||
|
The chart version follows the Teleport and Teleport Kube Operator version. e.g.
|
||||||
|
chart v15.0.1 runs the operator version 15.0.1 by default. To control which
|
||||||
|
operator version is deployed, use the `--version` Helm flag.
|
||||||
|
|
||||||
|
## Deployment
|
||||||
|
|
||||||
|
The chart can be deployed in two ways:
|
||||||
|
- in standalone mode by running
|
||||||
|
```code
|
||||||
|
helm install teleport/teleport-operator teleport-operator --set authAddr=teleport.example.com:443 --set token=my-operator-token
|
||||||
|
```
|
||||||
|
See [the standalone guide](https://goteleport.com/docs/management/dynamic-resources/teleport-operator-standalone/) for more details.
|
||||||
|
- as a dependency of the `teleport-cluster` Helm chart by adding `--set operator.enabled=true`. See
|
||||||
|
[the operator within teleport-cluster chart guide](https://goteleport.com/docs/management/dynamic-resources/teleport-operator-helm/).
|
||||||
|
|
||||||
|
## Values and reference
|
||||||
|
|
||||||
|
The `values.yaml` is documented through comment or via
|
||||||
|
[the reference docs](https://goteleport.com/docs/reference/helm-reference/teleport-operator/).
|
||||||
|
|
||||||
|
Please make sure you are looking at the correct version when looking at the values reference.
|
||||||
@ -0,0 +1,269 @@
|
|||||||
|
apiVersion: apiextensions.k8s.io/v1
|
||||||
|
kind: CustomResourceDefinition
|
||||||
|
metadata:
|
||||||
|
creationTimestamp: null
|
||||||
|
name: teleportaccesslists.resources.teleport.dev
|
||||||
|
spec:
|
||||||
|
group: resources.teleport.dev
|
||||||
|
names:
|
||||||
|
kind: TeleportAccessList
|
||||||
|
listKind: TeleportAccessListList
|
||||||
|
plural: teleportaccesslists
|
||||||
|
shortNames:
|
||||||
|
- accesslist
|
||||||
|
- accesslists
|
||||||
|
singular: teleportaccesslist
|
||||||
|
scope: Namespaced
|
||||||
|
versions:
|
||||||
|
- name: v1
|
||||||
|
schema:
|
||||||
|
openAPIV3Schema:
|
||||||
|
description: AccessList is the Schema for the accesslists API
|
||||||
|
properties:
|
||||||
|
apiVersion:
|
||||||
|
description: 'APIVersion defines the versioned schema of this representation
|
||||||
|
of an object. Servers should convert recognized schemas to the latest
|
||||||
|
internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
|
||||||
|
type: string
|
||||||
|
kind:
|
||||||
|
description: 'Kind is a string value representing the REST resource this
|
||||||
|
object represents. Servers may infer this from the endpoint the client
|
||||||
|
submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
|
||||||
|
type: string
|
||||||
|
metadata:
|
||||||
|
type: object
|
||||||
|
spec:
|
||||||
|
description: AccessList resource definition v1 from Teleport
|
||||||
|
properties:
|
||||||
|
audit:
|
||||||
|
description: audit describes the frequency that this Access List must
|
||||||
|
be audited.
|
||||||
|
nullable: true
|
||||||
|
properties:
|
||||||
|
next_audit_date:
|
||||||
|
description: next_audit_date is when the next audit date should
|
||||||
|
be done by.
|
||||||
|
format: date-time
|
||||||
|
type: string
|
||||||
|
notifications:
|
||||||
|
description: notifications is the configuration for notifying
|
||||||
|
users.
|
||||||
|
nullable: true
|
||||||
|
properties:
|
||||||
|
start:
|
||||||
|
description: start specifies when to start notifying users
|
||||||
|
that the next audit date is coming up.
|
||||||
|
format: duration
|
||||||
|
type: string
|
||||||
|
type: object
|
||||||
|
recurrence:
|
||||||
|
description: recurrence is the recurrence definition
|
||||||
|
nullable: true
|
||||||
|
properties:
|
||||||
|
day_of_month:
|
||||||
|
description: day_of_month is the day of month that reviews
|
||||||
|
will be scheduled on. Supported values are 0, 1, 15, and
|
||||||
|
31.
|
||||||
|
x-kubernetes-int-or-string: true
|
||||||
|
frequency:
|
||||||
|
description: frequency is the frequency of reviews. This represents
|
||||||
|
the period in months between two reviews. Supported values
|
||||||
|
are 0, 1, 3, 6, and 12.
|
||||||
|
x-kubernetes-int-or-string: true
|
||||||
|
type: object
|
||||||
|
type: object
|
||||||
|
description:
|
||||||
|
description: description is an optional plaintext description of the
|
||||||
|
Access List.
|
||||||
|
type: string
|
||||||
|
grants:
|
||||||
|
description: grants describes the access granted by membership to
|
||||||
|
this Access List.
|
||||||
|
nullable: true
|
||||||
|
properties:
|
||||||
|
roles:
|
||||||
|
description: roles are the roles that are granted to users who
|
||||||
|
are members of the Access List.
|
||||||
|
items:
|
||||||
|
type: string
|
||||||
|
nullable: true
|
||||||
|
type: array
|
||||||
|
traits:
|
||||||
|
additionalProperties:
|
||||||
|
items:
|
||||||
|
type: string
|
||||||
|
type: array
|
||||||
|
description: traits are the traits that are granted to users who
|
||||||
|
are members of the Access List.
|
||||||
|
type: object
|
||||||
|
type: object
|
||||||
|
membership_requires:
|
||||||
|
description: membership_requires describes the requirements for a
|
||||||
|
user to be a member of the Access List. For a membership to an Access
|
||||||
|
List to be effective, the user must meet the requirements of Membership_requires
|
||||||
|
and must be in the members list.
|
||||||
|
nullable: true
|
||||||
|
properties:
|
||||||
|
roles:
|
||||||
|
description: roles are the user roles that must be present for
|
||||||
|
the user to obtain access.
|
||||||
|
items:
|
||||||
|
type: string
|
||||||
|
nullable: true
|
||||||
|
type: array
|
||||||
|
traits:
|
||||||
|
additionalProperties:
|
||||||
|
items:
|
||||||
|
type: string
|
||||||
|
type: array
|
||||||
|
description: traits are the traits that must be present for the
|
||||||
|
user to obtain access.
|
||||||
|
type: object
|
||||||
|
type: object
|
||||||
|
owner_grants:
|
||||||
|
description: owner_grants describes the access granted by owners to
|
||||||
|
this Access List.
|
||||||
|
nullable: true
|
||||||
|
properties:
|
||||||
|
roles:
|
||||||
|
description: roles are the roles that are granted to users who
|
||||||
|
are members of the Access List.
|
||||||
|
items:
|
||||||
|
type: string
|
||||||
|
nullable: true
|
||||||
|
type: array
|
||||||
|
traits:
|
||||||
|
additionalProperties:
|
||||||
|
items:
|
||||||
|
type: string
|
||||||
|
type: array
|
||||||
|
description: traits are the traits that are granted to users who
|
||||||
|
are members of the Access List.
|
||||||
|
type: object
|
||||||
|
type: object
|
||||||
|
owners:
|
||||||
|
description: owners is a list of owners of the Access List.
|
||||||
|
items:
|
||||||
|
properties:
|
||||||
|
description:
|
||||||
|
description: description is the plaintext description of the
|
||||||
|
owner and why they are an owner.
|
||||||
|
type: string
|
||||||
|
ineligible_status:
|
||||||
|
description: ineligible_status describes if this owner is eligible
|
||||||
|
or not and if not, describes how they're lacking eligibility.
|
||||||
|
x-kubernetes-int-or-string: true
|
||||||
|
membership_kind:
|
||||||
|
description: membership_kind describes the type of membership,
|
||||||
|
either `MEMBERSHIP_KIND_USER` or `MEMBERSHIP_KIND_LIST`.
|
||||||
|
x-kubernetes-int-or-string: true
|
||||||
|
name:
|
||||||
|
description: name is the username of the owner.
|
||||||
|
type: string
|
||||||
|
type: object
|
||||||
|
nullable: true
|
||||||
|
type: array
|
||||||
|
ownership_requires:
|
||||||
|
description: ownership_requires describes the requirements for a user
|
||||||
|
to be an owner of the Access List. For ownership of an Access List
|
||||||
|
to be effective, the user must meet the requirements of ownership_requires
|
||||||
|
and must be in the owners list.
|
||||||
|
nullable: true
|
||||||
|
properties:
|
||||||
|
roles:
|
||||||
|
description: roles are the user roles that must be present for
|
||||||
|
the user to obtain access.
|
||||||
|
items:
|
||||||
|
type: string
|
||||||
|
nullable: true
|
||||||
|
type: array
|
||||||
|
traits:
|
||||||
|
additionalProperties:
|
||||||
|
items:
|
||||||
|
type: string
|
||||||
|
type: array
|
||||||
|
description: traits are the traits that must be present for the
|
||||||
|
user to obtain access.
|
||||||
|
type: object
|
||||||
|
type: object
|
||||||
|
title:
|
||||||
|
description: title is a plaintext short description of the Access
|
||||||
|
List.
|
||||||
|
type: string
|
||||||
|
type: object
|
||||||
|
status:
|
||||||
|
description: Status defines the observed state of the Teleport resource
|
||||||
|
properties:
|
||||||
|
conditions:
|
||||||
|
description: Conditions represent the latest available observations
|
||||||
|
of an object's state
|
||||||
|
items:
|
||||||
|
description: Condition contains details for one aspect of the current
|
||||||
|
state of this API Resource.
|
||||||
|
properties:
|
||||||
|
lastTransitionTime:
|
||||||
|
description: |-
|
||||||
|
lastTransitionTime is the last time the condition transitioned from one status to another.
|
||||||
|
This should be when the underlying condition changed. If that is not known, then using the time when the API field changed is acceptable.
|
||||||
|
format: date-time
|
||||||
|
type: string
|
||||||
|
message:
|
||||||
|
description: |-
|
||||||
|
message is a human readable message indicating details about the transition.
|
||||||
|
This may be an empty string.
|
||||||
|
maxLength: 32768
|
||||||
|
type: string
|
||||||
|
observedGeneration:
|
||||||
|
description: |-
|
||||||
|
observedGeneration represents the .metadata.generation that the condition was set based upon.
|
||||||
|
For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date
|
||||||
|
with respect to the current state of the instance.
|
||||||
|
format: int64
|
||||||
|
minimum: 0
|
||||||
|
type: integer
|
||||||
|
reason:
|
||||||
|
description: |-
|
||||||
|
reason contains a programmatic identifier indicating the reason for the condition's last transition.
|
||||||
|
Producers of specific condition types may define expected values and meanings for this field,
|
||||||
|
and whether the values are considered a guaranteed API.
|
||||||
|
The value should be a CamelCase string.
|
||||||
|
This field may not be empty.
|
||||||
|
maxLength: 1024
|
||||||
|
minLength: 1
|
||||||
|
pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$
|
||||||
|
type: string
|
||||||
|
status:
|
||||||
|
description: status of the condition, one of True, False, Unknown.
|
||||||
|
enum:
|
||||||
|
- "True"
|
||||||
|
- "False"
|
||||||
|
- Unknown
|
||||||
|
type: string
|
||||||
|
type:
|
||||||
|
description: type of condition in CamelCase or in foo.example.com/CamelCase.
|
||||||
|
maxLength: 316
|
||||||
|
pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$
|
||||||
|
type: string
|
||||||
|
required:
|
||||||
|
- lastTransitionTime
|
||||||
|
- message
|
||||||
|
- reason
|
||||||
|
- status
|
||||||
|
- type
|
||||||
|
type: object
|
||||||
|
type: array
|
||||||
|
teleportResourceID:
|
||||||
|
format: int64
|
||||||
|
type: integer
|
||||||
|
type: object
|
||||||
|
type: object
|
||||||
|
served: true
|
||||||
|
storage: true
|
||||||
|
subresources:
|
||||||
|
status: {}
|
||||||
|
status:
|
||||||
|
acceptedNames:
|
||||||
|
kind: ""
|
||||||
|
plural: ""
|
||||||
|
conditions: null
|
||||||
|
storedVersions: null
|
||||||
@ -0,0 +1,146 @@
|
|||||||
|
apiVersion: apiextensions.k8s.io/v1
|
||||||
|
kind: CustomResourceDefinition
|
||||||
|
metadata:
|
||||||
|
creationTimestamp: null
|
||||||
|
name: teleportbotsv1.resources.teleport.dev
|
||||||
|
spec:
|
||||||
|
group: resources.teleport.dev
|
||||||
|
names:
|
||||||
|
kind: TeleportBotV1
|
||||||
|
listKind: TeleportBotV1List
|
||||||
|
plural: teleportbotsv1
|
||||||
|
shortNames:
|
||||||
|
- botv1
|
||||||
|
- botsv1
|
||||||
|
singular: teleportbotv1
|
||||||
|
scope: Namespaced
|
||||||
|
versions:
|
||||||
|
- name: v1
|
||||||
|
schema:
|
||||||
|
openAPIV3Schema:
|
||||||
|
description: BotV1 is the Schema for the botsv1 API
|
||||||
|
properties:
|
||||||
|
apiVersion:
|
||||||
|
description: 'APIVersion defines the versioned schema of this representation
|
||||||
|
of an object. Servers should convert recognized schemas to the latest
|
||||||
|
internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
|
||||||
|
type: string
|
||||||
|
kind:
|
||||||
|
description: 'Kind is a string value representing the REST resource this
|
||||||
|
object represents. Servers may infer this from the endpoint the client
|
||||||
|
submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
|
||||||
|
type: string
|
||||||
|
metadata:
|
||||||
|
type: object
|
||||||
|
spec:
|
||||||
|
description: Bot resource definition v1 from Teleport
|
||||||
|
properties:
|
||||||
|
max_session_ttl:
|
||||||
|
description: The max session TTL value for the bot's internal role.
|
||||||
|
Unless specified, bots may not request a value beyond the default
|
||||||
|
maximum TTL of 12 hours. This value may not be larger than 7 days
|
||||||
|
(168 hours).
|
||||||
|
format: duration
|
||||||
|
type: string
|
||||||
|
roles:
|
||||||
|
description: The roles that the bot should be able to impersonate.
|
||||||
|
items:
|
||||||
|
type: string
|
||||||
|
nullable: true
|
||||||
|
type: array
|
||||||
|
traits:
|
||||||
|
description: The traits that will be associated with the bot for the
|
||||||
|
purposes of role templating. Where multiple specified with the
|
||||||
|
same name, these will be merged by the server.
|
||||||
|
items:
|
||||||
|
properties:
|
||||||
|
name:
|
||||||
|
description: The name of the trait. This is what allows the
|
||||||
|
trait to be queried in role templates.
|
||||||
|
type: string
|
||||||
|
values:
|
||||||
|
description: The values associated with the named trait.
|
||||||
|
items:
|
||||||
|
type: string
|
||||||
|
nullable: true
|
||||||
|
type: array
|
||||||
|
type: object
|
||||||
|
nullable: true
|
||||||
|
type: array
|
||||||
|
type: object
|
||||||
|
status:
|
||||||
|
description: Status defines the observed state of the Teleport resource
|
||||||
|
properties:
|
||||||
|
conditions:
|
||||||
|
description: Conditions represent the latest available observations
|
||||||
|
of an object's state
|
||||||
|
items:
|
||||||
|
description: Condition contains details for one aspect of the current
|
||||||
|
state of this API Resource.
|
||||||
|
properties:
|
||||||
|
lastTransitionTime:
|
||||||
|
description: |-
|
||||||
|
lastTransitionTime is the last time the condition transitioned from one status to another.
|
||||||
|
This should be when the underlying condition changed. If that is not known, then using the time when the API field changed is acceptable.
|
||||||
|
format: date-time
|
||||||
|
type: string
|
||||||
|
message:
|
||||||
|
description: |-
|
||||||
|
message is a human readable message indicating details about the transition.
|
||||||
|
This may be an empty string.
|
||||||
|
maxLength: 32768
|
||||||
|
type: string
|
||||||
|
observedGeneration:
|
||||||
|
description: |-
|
||||||
|
observedGeneration represents the .metadata.generation that the condition was set based upon.
|
||||||
|
For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date
|
||||||
|
with respect to the current state of the instance.
|
||||||
|
format: int64
|
||||||
|
minimum: 0
|
||||||
|
type: integer
|
||||||
|
reason:
|
||||||
|
description: |-
|
||||||
|
reason contains a programmatic identifier indicating the reason for the condition's last transition.
|
||||||
|
Producers of specific condition types may define expected values and meanings for this field,
|
||||||
|
and whether the values are considered a guaranteed API.
|
||||||
|
The value should be a CamelCase string.
|
||||||
|
This field may not be empty.
|
||||||
|
maxLength: 1024
|
||||||
|
minLength: 1
|
||||||
|
pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$
|
||||||
|
type: string
|
||||||
|
status:
|
||||||
|
description: status of the condition, one of True, False, Unknown.
|
||||||
|
enum:
|
||||||
|
- "True"
|
||||||
|
- "False"
|
||||||
|
- Unknown
|
||||||
|
type: string
|
||||||
|
type:
|
||||||
|
description: type of condition in CamelCase or in foo.example.com/CamelCase.
|
||||||
|
maxLength: 316
|
||||||
|
pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$
|
||||||
|
type: string
|
||||||
|
required:
|
||||||
|
- lastTransitionTime
|
||||||
|
- message
|
||||||
|
- reason
|
||||||
|
- status
|
||||||
|
- type
|
||||||
|
type: object
|
||||||
|
type: array
|
||||||
|
teleportResourceID:
|
||||||
|
format: int64
|
||||||
|
type: integer
|
||||||
|
type: object
|
||||||
|
type: object
|
||||||
|
served: true
|
||||||
|
storage: true
|
||||||
|
subresources:
|
||||||
|
status: {}
|
||||||
|
status:
|
||||||
|
acceptedNames:
|
||||||
|
kind: ""
|
||||||
|
plural: ""
|
||||||
|
conditions: null
|
||||||
|
storedVersions: null
|
||||||
@ -0,0 +1,178 @@
|
|||||||
|
apiVersion: apiextensions.k8s.io/v1
|
||||||
|
kind: CustomResourceDefinition
|
||||||
|
metadata:
|
||||||
|
creationTimestamp: null
|
||||||
|
name: teleportgithubconnectors.resources.teleport.dev
|
||||||
|
spec:
|
||||||
|
group: resources.teleport.dev
|
||||||
|
names:
|
||||||
|
kind: TeleportGithubConnector
|
||||||
|
listKind: TeleportGithubConnectorList
|
||||||
|
plural: teleportgithubconnectors
|
||||||
|
shortNames:
|
||||||
|
- githubconnector
|
||||||
|
- githubconnectors
|
||||||
|
singular: teleportgithubconnector
|
||||||
|
scope: Namespaced
|
||||||
|
versions:
|
||||||
|
- name: v3
|
||||||
|
schema:
|
||||||
|
openAPIV3Schema:
|
||||||
|
description: GithubConnector is the Schema for the githubconnectors API
|
||||||
|
properties:
|
||||||
|
apiVersion:
|
||||||
|
description: 'APIVersion defines the versioned schema of this representation
|
||||||
|
of an object. Servers should convert recognized schemas to the latest
|
||||||
|
internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
|
||||||
|
type: string
|
||||||
|
kind:
|
||||||
|
description: 'Kind is a string value representing the REST resource this
|
||||||
|
object represents. Servers may infer this from the endpoint the client
|
||||||
|
submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
|
||||||
|
type: string
|
||||||
|
metadata:
|
||||||
|
type: object
|
||||||
|
spec:
|
||||||
|
description: GithubConnector resource definition v3 from Teleport
|
||||||
|
properties:
|
||||||
|
api_endpoint_url:
|
||||||
|
description: APIEndpointURL is the URL of the API endpoint of the
|
||||||
|
Github instance this connector is for.
|
||||||
|
type: string
|
||||||
|
client_id:
|
||||||
|
description: ClientID is the Github OAuth app client ID.
|
||||||
|
type: string
|
||||||
|
client_redirect_settings:
|
||||||
|
description: ClientRedirectSettings defines which client redirect
|
||||||
|
URLs are allowed for non-browser SSO logins other than the standard
|
||||||
|
localhost ones.
|
||||||
|
nullable: true
|
||||||
|
properties:
|
||||||
|
allowed_https_hostnames:
|
||||||
|
description: a list of hostnames allowed for https client redirect
|
||||||
|
URLs
|
||||||
|
items:
|
||||||
|
type: string
|
||||||
|
nullable: true
|
||||||
|
type: array
|
||||||
|
insecure_allowed_cidr_ranges:
|
||||||
|
description: a list of CIDRs allowed for HTTP or HTTPS client
|
||||||
|
redirect URLs
|
||||||
|
items:
|
||||||
|
type: string
|
||||||
|
nullable: true
|
||||||
|
type: array
|
||||||
|
type: object
|
||||||
|
client_secret:
|
||||||
|
description: ClientSecret is the Github OAuth app client secret. This
|
||||||
|
field supports secret lookup. See the operator documentation for
|
||||||
|
more details.
|
||||||
|
type: string
|
||||||
|
display:
|
||||||
|
description: Display is the connector display name.
|
||||||
|
type: string
|
||||||
|
endpoint_url:
|
||||||
|
description: EndpointURL is the URL of the GitHub instance this connector
|
||||||
|
is for.
|
||||||
|
type: string
|
||||||
|
redirect_url:
|
||||||
|
description: RedirectURL is the authorization callback URL.
|
||||||
|
type: string
|
||||||
|
teams_to_roles:
|
||||||
|
description: TeamsToRoles maps Github team memberships onto allowed
|
||||||
|
roles.
|
||||||
|
items:
|
||||||
|
properties:
|
||||||
|
organization:
|
||||||
|
description: Organization is a Github organization a user belongs
|
||||||
|
to.
|
||||||
|
type: string
|
||||||
|
roles:
|
||||||
|
description: Roles is a list of allowed logins for this org/team.
|
||||||
|
items:
|
||||||
|
type: string
|
||||||
|
nullable: true
|
||||||
|
type: array
|
||||||
|
team:
|
||||||
|
description: Team is a team within the organization a user belongs
|
||||||
|
to.
|
||||||
|
type: string
|
||||||
|
type: object
|
||||||
|
type: array
|
||||||
|
type: object
|
||||||
|
status:
|
||||||
|
description: Status defines the observed state of the Teleport resource
|
||||||
|
properties:
|
||||||
|
conditions:
|
||||||
|
description: Conditions represent the latest available observations
|
||||||
|
of an object's state
|
||||||
|
items:
|
||||||
|
description: Condition contains details for one aspect of the current
|
||||||
|
state of this API Resource.
|
||||||
|
properties:
|
||||||
|
lastTransitionTime:
|
||||||
|
description: |-
|
||||||
|
lastTransitionTime is the last time the condition transitioned from one status to another.
|
||||||
|
This should be when the underlying condition changed. If that is not known, then using the time when the API field changed is acceptable.
|
||||||
|
format: date-time
|
||||||
|
type: string
|
||||||
|
message:
|
||||||
|
description: |-
|
||||||
|
message is a human readable message indicating details about the transition.
|
||||||
|
This may be an empty string.
|
||||||
|
maxLength: 32768
|
||||||
|
type: string
|
||||||
|
observedGeneration:
|
||||||
|
description: |-
|
||||||
|
observedGeneration represents the .metadata.generation that the condition was set based upon.
|
||||||
|
For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date
|
||||||
|
with respect to the current state of the instance.
|
||||||
|
format: int64
|
||||||
|
minimum: 0
|
||||||
|
type: integer
|
||||||
|
reason:
|
||||||
|
description: |-
|
||||||
|
reason contains a programmatic identifier indicating the reason for the condition's last transition.
|
||||||
|
Producers of specific condition types may define expected values and meanings for this field,
|
||||||
|
and whether the values are considered a guaranteed API.
|
||||||
|
The value should be a CamelCase string.
|
||||||
|
This field may not be empty.
|
||||||
|
maxLength: 1024
|
||||||
|
minLength: 1
|
||||||
|
pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$
|
||||||
|
type: string
|
||||||
|
status:
|
||||||
|
description: status of the condition, one of True, False, Unknown.
|
||||||
|
enum:
|
||||||
|
- "True"
|
||||||
|
- "False"
|
||||||
|
- Unknown
|
||||||
|
type: string
|
||||||
|
type:
|
||||||
|
description: type of condition in CamelCase or in foo.example.com/CamelCase.
|
||||||
|
maxLength: 316
|
||||||
|
pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$
|
||||||
|
type: string
|
||||||
|
required:
|
||||||
|
- lastTransitionTime
|
||||||
|
- message
|
||||||
|
- reason
|
||||||
|
- status
|
||||||
|
- type
|
||||||
|
type: object
|
||||||
|
type: array
|
||||||
|
teleportResourceID:
|
||||||
|
format: int64
|
||||||
|
type: integer
|
||||||
|
type: object
|
||||||
|
type: object
|
||||||
|
served: true
|
||||||
|
storage: true
|
||||||
|
subresources:
|
||||||
|
status: {}
|
||||||
|
status:
|
||||||
|
acceptedNames:
|
||||||
|
kind: ""
|
||||||
|
plural: ""
|
||||||
|
conditions: null
|
||||||
|
storedVersions: null
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user