Showing preview only (5,241K chars total). Download the full file or copy to clipboard to get everything.
Repository: kstone-io/kstone
Branch: master
Commit: 0175be48f20f
Files: 680
Total size: 4.8 MB
Directory structure:
gitextract__utsxwcs/
├── .commitlintrc.yml
├── .dockerignore
├── .github/
│ └── workflows/
│ ├── build.yml
│ ├── commitlint.yml
│ ├── e2e.yml
│ └── golangci-lint.yml
├── .gitignore
├── .golangci.yml
├── CHANGELOG/
│ └── CHANGELOG.md
├── LICENSE
├── Makefile
├── README.md
├── README_CN.md
├── build/
│ ├── docker/
│ │ ├── kstone-api/
│ │ │ └── Dockerfile
│ │ ├── kstone-controller/
│ │ │ └── Dockerfile
│ │ └── tools/
│ │ └── code-generator/
│ │ ├── Dockerfile
│ │ ├── Makefile
│ │ ├── boilerplate.go.txt
│ │ ├── code.sh
│ │ └── openapi.sh
│ ├── lib/
│ │ ├── common.mk
│ │ ├── create-manifest.sh
│ │ ├── docker-buildx.mk
│ │ ├── gen.mk
│ │ ├── golang.mk
│ │ └── image.mk
│ └── script/
│ └── openapi.sh
├── charts/
│ ├── .gitignore
│ ├── .helmignore
│ ├── Chart.yaml
│ ├── README.md
│ ├── README_CN.md
│ ├── charts/
│ │ ├── backup-operator/
│ │ │ ├── .helmignore
│ │ │ ├── Chart.yaml
│ │ │ ├── templates/
│ │ │ │ ├── _helpers.tpl
│ │ │ │ └── deployment.yaml
│ │ │ └── values.yaml
│ │ ├── dashboard/
│ │ │ ├── .helmignore
│ │ │ ├── Chart.yaml
│ │ │ ├── templates/
│ │ │ │ ├── _helpers.tpl
│ │ │ │ ├── deployment.yaml
│ │ │ │ └── service.yaml
│ │ │ └── values.yaml
│ │ ├── dashboard-api/
│ │ │ ├── .helmignore
│ │ │ ├── Chart.yaml
│ │ │ ├── templates/
│ │ │ │ ├── _helpers.tpl
│ │ │ │ ├── configmap.yaml
│ │ │ │ ├── deployment.yaml
│ │ │ │ ├── secret.yaml
│ │ │ │ └── service.yaml
│ │ │ └── values.yaml
│ │ ├── etcd-controller/
│ │ │ ├── .helmignore
│ │ │ ├── Chart.yaml
│ │ │ ├── templates/
│ │ │ │ ├── _helpers.tpl
│ │ │ │ └── deployment.yaml
│ │ │ └── values.yaml
│ │ ├── etcd-operator/
│ │ │ ├── .helmignore
│ │ │ ├── Chart.yaml
│ │ │ ├── templates/
│ │ │ │ ├── _helpers.tpl
│ │ │ │ ├── configmap.yaml
│ │ │ │ ├── crd.yaml
│ │ │ │ ├── deployment.yaml
│ │ │ │ ├── service.yaml
│ │ │ │ └── webhook.yaml
│ │ │ └── values.yaml
│ │ ├── grafana/
│ │ │ ├── .helmignore
│ │ │ ├── Chart.yaml
│ │ │ ├── dashboards/
│ │ │ │ └── 0.json
│ │ │ ├── templates/
│ │ │ │ ├── _helpers.tpl
│ │ │ │ ├── configmap.yaml
│ │ │ │ ├── deployment.yaml
│ │ │ │ ├── secret.yaml
│ │ │ │ └── service.yaml
│ │ │ └── values.yaml
│ │ ├── inspection-controller/
│ │ │ ├── .helmignore
│ │ │ ├── Chart.yaml
│ │ │ ├── templates/
│ │ │ │ ├── _helpers.tpl
│ │ │ │ ├── deployment.yaml
│ │ │ │ ├── service.yaml
│ │ │ │ └── servicemonitor.yaml
│ │ │ └── values.yaml
│ │ ├── kube-prometheus-stack/
│ │ │ ├── .helmignore
│ │ │ ├── CONTRIBUTING.md
│ │ │ ├── Chart.yaml
│ │ │ ├── README.md
│ │ │ ├── ci/
│ │ │ │ ├── 01-provision-crds-values.yaml
│ │ │ │ └── 02-test-without-crds-values.yaml
│ │ │ ├── crds/
│ │ │ │ ├── crd-alertmanagerconfigs.yaml
│ │ │ │ ├── crd-alertmanagers.yaml
│ │ │ │ ├── crd-podmonitors.yaml
│ │ │ │ ├── crd-probes.yaml
│ │ │ │ ├── crd-prometheuses.yaml
│ │ │ │ ├── crd-prometheusrules.yaml
│ │ │ │ ├── crd-servicemonitors.yaml
│ │ │ │ └── crd-thanosrulers.yaml
│ │ │ ├── hack/
│ │ │ │ ├── README.md
│ │ │ │ ├── minikube/
│ │ │ │ │ ├── README.md
│ │ │ │ │ ├── cmd.sh
│ │ │ │ │ └── values.yaml
│ │ │ │ ├── requirements.txt
│ │ │ │ ├── sync_grafana_dashboards.py
│ │ │ │ ├── sync_prometheus_rules.py
│ │ │ │ └── update_crds.sh
│ │ │ ├── templates/
│ │ │ │ ├── NOTES.txt
│ │ │ │ ├── _helpers.tpl
│ │ │ │ ├── alertmanager/
│ │ │ │ │ ├── alertmanager.yaml
│ │ │ │ │ ├── ingress.yaml
│ │ │ │ │ ├── ingressperreplica.yaml
│ │ │ │ │ ├── podDisruptionBudget.yaml
│ │ │ │ │ ├── psp-role.yaml
│ │ │ │ │ ├── psp-rolebinding.yaml
│ │ │ │ │ ├── psp.yaml
│ │ │ │ │ ├── secret.yaml
│ │ │ │ │ ├── service.yaml
│ │ │ │ │ ├── serviceaccount.yaml
│ │ │ │ │ ├── servicemonitor.yaml
│ │ │ │ │ └── serviceperreplica.yaml
│ │ │ │ ├── exporters/
│ │ │ │ │ ├── core-dns/
│ │ │ │ │ │ ├── service.yaml
│ │ │ │ │ │ └── servicemonitor.yaml
│ │ │ │ │ ├── kube-api-server/
│ │ │ │ │ │ └── servicemonitor.yaml
│ │ │ │ │ ├── kube-controller-manager/
│ │ │ │ │ │ ├── endpoints.yaml
│ │ │ │ │ │ ├── service.yaml
│ │ │ │ │ │ └── servicemonitor.yaml
│ │ │ │ │ ├── kube-dns/
│ │ │ │ │ │ ├── service.yaml
│ │ │ │ │ │ └── servicemonitor.yaml
│ │ │ │ │ ├── kube-etcd/
│ │ │ │ │ │ ├── endpoints.yaml
│ │ │ │ │ │ ├── service.yaml
│ │ │ │ │ │ └── servicemonitor.yaml
│ │ │ │ │ ├── kube-proxy/
│ │ │ │ │ │ ├── endpoints.yaml
│ │ │ │ │ │ ├── service.yaml
│ │ │ │ │ │ └── servicemonitor.yaml
│ │ │ │ │ ├── kube-scheduler/
│ │ │ │ │ │ ├── endpoints.yaml
│ │ │ │ │ │ ├── service.yaml
│ │ │ │ │ │ └── servicemonitor.yaml
│ │ │ │ │ ├── kube-state-metrics/
│ │ │ │ │ │ └── serviceMonitor.yaml
│ │ │ │ │ ├── kubelet/
│ │ │ │ │ │ └── servicemonitor.yaml
│ │ │ │ │ └── node-exporter/
│ │ │ │ │ └── servicemonitor.yaml
│ │ │ │ ├── grafana/
│ │ │ │ │ ├── configmap-dashboards.yaml
│ │ │ │ │ ├── configmaps-datasources.yaml
│ │ │ │ │ ├── dashboards-1.14/
│ │ │ │ │ │ ├── alertmanager-overview.yaml
│ │ │ │ │ │ ├── apiserver.yaml
│ │ │ │ │ │ ├── cluster-total.yaml
│ │ │ │ │ │ ├── controller-manager.yaml
│ │ │ │ │ │ ├── etcd.yaml
│ │ │ │ │ │ ├── k8s-coredns.yaml
│ │ │ │ │ │ ├── k8s-resources-cluster.yaml
│ │ │ │ │ │ ├── k8s-resources-namespace.yaml
│ │ │ │ │ │ ├── k8s-resources-node.yaml
│ │ │ │ │ │ ├── k8s-resources-pod.yaml
│ │ │ │ │ │ ├── k8s-resources-workload.yaml
│ │ │ │ │ │ ├── k8s-resources-workloads-namespace.yaml
│ │ │ │ │ │ ├── kubelet.yaml
│ │ │ │ │ │ ├── namespace-by-pod.yaml
│ │ │ │ │ │ ├── namespace-by-workload.yaml
│ │ │ │ │ │ ├── node-cluster-rsrc-use.yaml
│ │ │ │ │ │ ├── node-rsrc-use.yaml
│ │ │ │ │ │ ├── nodes.yaml
│ │ │ │ │ │ ├── persistentvolumesusage.yaml
│ │ │ │ │ │ ├── pod-total.yaml
│ │ │ │ │ │ ├── prometheus-remote-write.yaml
│ │ │ │ │ │ ├── prometheus.yaml
│ │ │ │ │ │ ├── proxy.yaml
│ │ │ │ │ │ ├── scheduler.yaml
│ │ │ │ │ │ ├── statefulset.yaml
│ │ │ │ │ │ └── workload-total.yaml
│ │ │ │ │ └── servicemonitor.yaml
│ │ │ │ ├── prometheus/
│ │ │ │ │ ├── _rules.tpl
│ │ │ │ │ ├── additionalAlertRelabelConfigs.yaml
│ │ │ │ │ ├── additionalAlertmanagerConfigs.yaml
│ │ │ │ │ ├── additionalPrometheusRules.yaml
│ │ │ │ │ ├── additionalScrapeConfigs.yaml
│ │ │ │ │ ├── clusterrole.yaml
│ │ │ │ │ ├── clusterrolebinding.yaml
│ │ │ │ │ ├── ingress.yaml
│ │ │ │ │ ├── ingressThanosSidecar.yaml
│ │ │ │ │ ├── ingressperreplica.yaml
│ │ │ │ │ ├── podDisruptionBudget.yaml
│ │ │ │ │ ├── podmonitors.yaml
│ │ │ │ │ ├── prometheus.yaml
│ │ │ │ │ ├── psp-clusterrole.yaml
│ │ │ │ │ ├── psp-clusterrolebinding.yaml
│ │ │ │ │ ├── psp.yaml
│ │ │ │ │ ├── rules-1.14/
│ │ │ │ │ │ ├── alertmanager.rules.yaml
│ │ │ │ │ │ ├── etcd.yaml
│ │ │ │ │ │ ├── general.rules.yaml
│ │ │ │ │ │ ├── k8s.rules.yaml
│ │ │ │ │ │ ├── kube-apiserver-availability.rules.yaml
│ │ │ │ │ │ ├── kube-apiserver-burnrate.rules.yaml
│ │ │ │ │ │ ├── kube-apiserver-histogram.rules.yaml
│ │ │ │ │ │ ├── kube-apiserver-slos.yaml
│ │ │ │ │ │ ├── kube-apiserver.rules.yaml
│ │ │ │ │ │ ├── kube-prometheus-general.rules.yaml
│ │ │ │ │ │ ├── kube-prometheus-node-recording.rules.yaml
│ │ │ │ │ │ ├── kube-scheduler.rules.yaml
│ │ │ │ │ │ ├── kube-state-metrics.yaml
│ │ │ │ │ │ ├── kubelet.rules.yaml
│ │ │ │ │ │ ├── kubernetes-apps.yaml
│ │ │ │ │ │ ├── kubernetes-resources.yaml
│ │ │ │ │ │ ├── kubernetes-storage.yaml
│ │ │ │ │ │ ├── kubernetes-system-apiserver.yaml
│ │ │ │ │ │ ├── kubernetes-system-controller-manager.yaml
│ │ │ │ │ │ ├── kubernetes-system-kubelet.yaml
│ │ │ │ │ │ ├── kubernetes-system-scheduler.yaml
│ │ │ │ │ │ ├── kubernetes-system.yaml
│ │ │ │ │ │ ├── node-exporter.rules.yaml
│ │ │ │ │ │ ├── node-exporter.yaml
│ │ │ │ │ │ ├── node-network.yaml
│ │ │ │ │ │ ├── node.rules.yaml
│ │ │ │ │ │ ├── prometheus-operator.yaml
│ │ │ │ │ │ └── prometheus.yaml
│ │ │ │ │ ├── service.yaml
│ │ │ │ │ ├── serviceThanosSidecar.yaml
│ │ │ │ │ ├── serviceThanosSidecarExternal.yaml
│ │ │ │ │ ├── serviceaccount.yaml
│ │ │ │ │ ├── servicemonitor.yaml
│ │ │ │ │ ├── servicemonitors.yaml
│ │ │ │ │ └── serviceperreplica.yaml
│ │ │ │ └── prometheus-operator/
│ │ │ │ ├── admission-webhooks/
│ │ │ │ │ ├── job-patch/
│ │ │ │ │ │ ├── clusterrole.yaml
│ │ │ │ │ │ ├── clusterrolebinding.yaml
│ │ │ │ │ │ ├── job-createSecret.yaml
│ │ │ │ │ │ ├── job-patchWebhook.yaml
│ │ │ │ │ │ ├── psp.yaml
│ │ │ │ │ │ ├── role.yaml
│ │ │ │ │ │ ├── rolebinding.yaml
│ │ │ │ │ │ └── serviceaccount.yaml
│ │ │ │ │ ├── mutatingWebhookConfiguration.yaml
│ │ │ │ │ └── validatingWebhookConfiguration.yaml
│ │ │ │ ├── certmanager.yaml
│ │ │ │ ├── clusterrole.yaml
│ │ │ │ ├── clusterrolebinding.yaml
│ │ │ │ ├── deployment.yaml
│ │ │ │ ├── psp-clusterrole.yaml
│ │ │ │ ├── psp-clusterrolebinding.yaml
│ │ │ │ ├── psp.yaml
│ │ │ │ ├── service.yaml
│ │ │ │ ├── serviceaccount.yaml
│ │ │ │ └── servicemonitor.yaml
│ │ │ └── values.yaml
│ │ └── tapp/
│ │ ├── .helmignore
│ │ ├── Chart.yaml
│ │ ├── templates/
│ │ │ ├── _helpers.tpl
│ │ │ ├── configmap.yaml
│ │ │ ├── deployment.yaml
│ │ │ ├── hpa.yaml
│ │ │ ├── service.yaml
│ │ │ ├── serviceaccount.yaml
│ │ │ └── tests/
│ │ │ └── test-connection.yaml
│ │ └── values.yaml
│ ├── templates/
│ │ ├── _helpers.tpl
│ │ ├── crd.yaml
│ │ ├── ingress.yaml
│ │ └── serviceaccount.yaml
│ ├── values.test.yaml
│ └── values.yaml
├── cmd/
│ ├── kstone-api/
│ │ ├── apiserver.go
│ │ ├── app/
│ │ │ └── server.go
│ │ └── config/
│ │ └── config.go
│ └── kstone-controller/
│ ├── etcdcluster-controller/
│ │ └── controller.go
│ ├── etcdinspection-controller/
│ │ └── controller.go
│ └── main.go
├── deploy/
│ ├── crds/
│ │ ├── kstone.tkestack.io_etcdclusters.yaml
│ │ └── kstone.tkestack.io_etcdinspections.yaml
│ ├── etcd-backup-operator.yaml
│ └── kstone-controller.yaml
├── docs/
│ ├── README.md
│ ├── README_CN.md
│ ├── backup/
│ │ └── cos/
│ │ ├── cos_en.md
│ │ └── cos_zh.md
│ ├── installation/
│ │ ├── kubeadm_en.md
│ │ ├── minikube-amd64.md
│ │ ├── minikube-macos.md
│ │ └── tke.md
│ ├── migration/
│ │ └── README.md
│ └── proposal/
│ └── authentication-support/
│ ├── README.md
│ └── proposal.yaml
├── go.mod
├── go.sum
├── hack/
│ ├── boilerplate.go.txt
│ ├── custom-boilerplate.go.txt
│ ├── migratev1.sh
│ ├── tools.go
│ ├── update-codegen.sh
│ └── verify-codegen.sh
├── pkg/
│ ├── apis/
│ │ └── kstone/
│ │ ├── register.go
│ │ ├── v1alpha1/
│ │ │ ├── doc.go
│ │ │ ├── register.go
│ │ │ ├── types.go
│ │ │ ├── zz_generated.deepcopy.go
│ │ │ └── zz_generated.defaults.go
│ │ └── v1alpha2/
│ │ ├── doc.go
│ │ ├── register.go
│ │ ├── types.go
│ │ ├── zz_generated.deepcopy.go
│ │ └── zz_generated.defaults.go
│ ├── authentication/
│ │ ├── authenticator/
│ │ │ ├── authenticator.go
│ │ │ └── bearertoken/
│ │ │ └── bearertoken.go
│ │ ├── helper.go
│ │ ├── interfaces.go
│ │ ├── plugins.go
│ │ ├── providers/
│ │ │ └── providers.go
│ │ ├── request/
│ │ │ └── request.go
│ │ ├── store.go
│ │ └── token/
│ │ └── jwt/
│ │ ├── generator.go
│ │ └── jwt.go
│ ├── backup/
│ │ ├── backup.go
│ │ ├── plugins.go
│ │ ├── providers/
│ │ │ ├── cos/
│ │ │ │ └── cos.go
│ │ │ ├── providers.go
│ │ │ └── s3/
│ │ │ ├── clientwrapper.go
│ │ │ └── s3.go
│ │ ├── storage.go
│ │ └── util.go
│ ├── clusterprovider/
│ │ ├── etcdcluster.go
│ │ ├── helper.go
│ │ ├── plugins.go
│ │ └── providers/
│ │ ├── imported/
│ │ │ └── cluster.go
│ │ ├── kstone/
│ │ │ └── kstone.go
│ │ └── providers.go
│ ├── controllers/
│ │ ├── etcdcluster/
│ │ │ └── etcdclusters_controller.go
│ │ ├── etcdinspection/
│ │ │ └── etcdinspection_controller.go
│ │ └── util/
│ │ └── util.go
│ ├── etcd/
│ │ ├── client/
│ │ │ ├── cleint.go
│ │ │ ├── version.go
│ │ │ └── versions/
│ │ │ ├── providers.go
│ │ │ ├── v2/
│ │ │ │ └── client.go
│ │ │ └── v3/
│ │ │ └── client.go
│ │ ├── client.go
│ │ ├── encoding.go
│ │ ├── health.go
│ │ ├── helper.go
│ │ └── stats.go
│ ├── featureprovider/
│ │ ├── feature.go
│ │ ├── plugins.go
│ │ ├── providers/
│ │ │ ├── alarm/
│ │ │ │ └── alarm.go
│ │ │ ├── backup/
│ │ │ │ └── backup.go
│ │ │ ├── backupcheck/
│ │ │ │ └── backupcheck.go
│ │ │ ├── consistency/
│ │ │ │ └── consistency.go
│ │ │ ├── healthy/
│ │ │ │ └── healthy.go
│ │ │ ├── monitor/
│ │ │ │ └── monitor.go
│ │ │ ├── providers.go
│ │ │ └── request/
│ │ │ └── request.go
│ │ └── util/
│ │ └── util.go
│ ├── generated/
│ │ ├── clientset/
│ │ │ └── versioned/
│ │ │ ├── clientset.go
│ │ │ ├── doc.go
│ │ │ ├── fake/
│ │ │ │ ├── clientset_generated.go
│ │ │ │ ├── doc.go
│ │ │ │ └── register.go
│ │ │ ├── scheme/
│ │ │ │ ├── doc.go
│ │ │ │ └── register.go
│ │ │ └── typed/
│ │ │ └── kstone/
│ │ │ ├── v1alpha1/
│ │ │ │ ├── doc.go
│ │ │ │ ├── etcdcluster.go
│ │ │ │ ├── etcdinspection.go
│ │ │ │ ├── fake/
│ │ │ │ │ ├── doc.go
│ │ │ │ │ ├── fake_etcdcluster.go
│ │ │ │ │ ├── fake_etcdinspection.go
│ │ │ │ │ └── fake_kstone_client.go
│ │ │ │ ├── generated_expansion.go
│ │ │ │ └── kstone_client.go
│ │ │ └── v1alpha2/
│ │ │ ├── doc.go
│ │ │ ├── etcdcluster.go
│ │ │ ├── etcdinspection.go
│ │ │ ├── fake/
│ │ │ │ ├── doc.go
│ │ │ │ ├── fake_etcdcluster.go
│ │ │ │ ├── fake_etcdinspection.go
│ │ │ │ └── fake_kstone_client.go
│ │ │ ├── generated_expansion.go
│ │ │ └── kstone_client.go
│ │ ├── informers/
│ │ │ └── externalversions/
│ │ │ ├── factory.go
│ │ │ ├── generic.go
│ │ │ ├── internalinterfaces/
│ │ │ │ └── factory_interfaces.go
│ │ │ └── kstone/
│ │ │ ├── interface.go
│ │ │ ├── v1alpha1/
│ │ │ │ ├── etcdcluster.go
│ │ │ │ ├── etcdinspection.go
│ │ │ │ └── interface.go
│ │ │ └── v1alpha2/
│ │ │ ├── etcdcluster.go
│ │ │ ├── etcdinspection.go
│ │ │ └── interface.go
│ │ └── listers/
│ │ └── kstone/
│ │ ├── v1alpha1/
│ │ │ ├── etcdcluster.go
│ │ │ ├── etcdinspection.go
│ │ │ └── expansion_generated.go
│ │ └── v1alpha2/
│ │ ├── etcdcluster.go
│ │ ├── etcdinspection.go
│ │ └── expansion_generated.go
│ ├── inspection/
│ │ ├── alarm.go
│ │ ├── backupcheck.go
│ │ ├── consistency.go
│ │ ├── healthy.go
│ │ ├── inspection.go
│ │ ├── metrics/
│ │ │ └── metrics.go
│ │ └── request.go
│ ├── k8s/
│ │ └── client.go
│ ├── middlewares/
│ │ ├── auth.go
│ │ └── cors.go
│ ├── monitor/
│ │ └── prometheus.go
│ ├── router/
│ │ └── router.go
│ └── signals/
│ ├── signal.go
│ ├── signal_posix.go
│ └── signal_windows.go
├── test/
│ ├── e2e/
│ │ ├── e2e_test.go
│ │ └── etcdcluster_test.go
│ ├── fixtures/
│ │ ├── fixtures.go
│ │ └── manifests/
│ │ ├── etcd_service.yaml
│ │ ├── etcd_statefulset.yaml
│ │ └── etcdcluster_imported.yaml
│ ├── scripts/
│ │ ├── kstone.sh
│ │ ├── minikube.sh
│ │ └── pre.sh
│ └── testfiles/
│ └── testfiles.go
└── third_party/
└── etcd-operator/
├── .github/
│ └── PULL_REQUEST_TEMPLATE.md
├── .gitignore
├── CHANGELOG.md
├── CONTRIBUTING.md
├── DCO
├── Dockerfile
├── Gopkg.toml
├── LICENSE
├── MAINTAINERS
├── Makefile
├── NOTICE
├── README.md
├── ROADMAP.md
├── cmd/
│ ├── backup-operator/
│ │ ├── doc.go
│ │ └── main.go
│ ├── operator/
│ │ └── main.go
│ └── restore-operator/
│ ├── doc.go
│ ├── main.go
│ └── service.go
├── code-of-conduct.md
├── codecov.yaml
├── doc/
│ ├── alpha-features.md
│ ├── best_practices.md
│ ├── design/
│ │ ├── abs_backup.md
│ │ ├── backup_operator.md
│ │ ├── cluster_creation.md
│ │ ├── cluster_lifecycle.md
│ │ ├── cluster_restore.md
│ │ ├── cluster_status.md
│ │ ├── cluster_tls.md
│ │ ├── cluster_upgrade.md
│ │ ├── disaster_recovery.md
│ │ ├── dynamic_tls.md
│ │ ├── gcs_backup.md
│ │ ├── operator_recovery.md
│ │ ├── oss_backup.md
│ │ ├── persistent_volumes_etcd_data.md
│ │ ├── reconciliation.md
│ │ ├── resource_ownership_and_GC.md
│ │ ├── restore_operator.md
│ │ └── s3_backup.md
│ ├── dev/
│ │ ├── debug_e2e_flake.md
│ │ ├── developer_guide.md
│ │ └── release.md
│ └── user/
│ ├── abs_backup.md
│ ├── backup_cronjob/
│ │ ├── README.md
│ │ ├── configmap.yaml
│ │ └── cronjob.yaml
│ ├── client_service.md
│ ├── cluster_tls.md
│ ├── clusterwide.md
│ ├── conditions_and_events.md
│ ├── gcs_backup.md
│ ├── install_guide.md
│ ├── oss_backup.md
│ ├── rbac.md
│ ├── resource_labels.md
│ ├── spec_examples.md
│ ├── upgrade/
│ │ ├── migrate_cr_070.md
│ │ └── upgrade_guide.md
│ └── walkthrough/
│ ├── backup-operator.md
│ └── restore-operator.md
├── example/
│ ├── deployment.yaml
│ ├── deployment_psp.yaml
│ ├── etcd-backup-operator/
│ │ ├── backu_cr_qcloud.yaml
│ │ ├── backup.sh
│ │ ├── backup_cr.yaml
│ │ ├── deployment.yaml
│ │ ├── deployment_qcloud.yaml
│ │ ├── periodic_backup_cr.yaml
│ │ └── secrets.yaml
│ ├── etcd-restore-operator/
│ │ ├── deployment.yaml
│ │ ├── deployment_qcloud.yaml
│ │ ├── restore_cr.yaml
│ │ └── restore_cr_qcloud.yaml
│ ├── example-etcd-cluster-nodeport-service.json
│ ├── example-etcd-cluster.yaml
│ ├── rbac/
│ │ ├── cluster-role-binding-template.yaml
│ │ ├── cluster-role-template.yaml
│ │ ├── create_role.sh
│ │ ├── role-binding-template.yaml
│ │ └── role-template.yaml
│ └── tls/
│ ├── certs/
│ │ ├── ca-config.json
│ │ ├── ca-csr.json
│ │ ├── etcd-client-ca.crt
│ │ ├── etcd-client.crt
│ │ ├── etcd-client.json
│ │ ├── etcd-client.key
│ │ ├── gen-cert.sh
│ │ ├── peer-ca.crt
│ │ ├── peer.crt
│ │ ├── peer.json
│ │ ├── peer.key
│ │ ├── server-ca.crt
│ │ ├── server.crt
│ │ ├── server.json
│ │ └── server.key
│ └── example-tls-cluster.yaml
├── go.mod
├── go.sum
├── hack/
│ ├── build/
│ │ ├── Dockerfile
│ │ ├── backup-operator/
│ │ │ └── build
│ │ ├── build
│ │ ├── docker_push
│ │ ├── e2e/
│ │ │ ├── builder/
│ │ │ │ ├── Dockerfile
│ │ │ │ └── build
│ │ │ └── docker_push
│ │ ├── logcollector/
│ │ │ └── Dockerfile
│ │ ├── operator/
│ │ │ └── build
│ │ └── restore-operator/
│ │ └── build
│ ├── ci/
│ │ ├── get_dep
│ │ ├── get_kube.sh
│ │ ├── rbac_utils.sh
│ │ ├── run_e2e
│ │ └── run_unit
│ ├── fmt_pass
│ ├── k8s/
│ │ └── codegen/
│ │ ├── README.md
│ │ ├── boilerplate.go.txt
│ │ ├── update-generated.sh
│ │ └── verify-generated.sh
│ ├── lib/
│ │ ├── build.sh
│ │ └── test_lib.sh
│ ├── release/
│ │ └── bump_version.sh
│ ├── test
│ ├── unit_test
│ └── update_vendor.sh
├── pkg/
│ ├── apis/
│ │ └── etcd/
│ │ └── v1beta2/
│ │ ├── backup_types.go
│ │ ├── cluster.go
│ │ ├── cluster_tls.go
│ │ ├── doc.go
│ │ ├── register.go
│ │ ├── restore_types.go
│ │ ├── status.go
│ │ └── zz_generated.deepcopy.go
│ ├── backup/
│ │ ├── backup_manager.go
│ │ ├── backupapi/
│ │ │ └── http.go
│ │ ├── reader/
│ │ │ ├── abs_reader.go
│ │ │ ├── cos_reader.go
│ │ │ ├── gcs_reader.go
│ │ │ ├── hostPath_reader.go
│ │ │ ├── oss_reader.go
│ │ │ ├── reader.go
│ │ │ └── s3_reader.go
│ │ ├── util/
│ │ │ ├── constants.go
│ │ │ └── util.go
│ │ └── writer/
│ │ ├── abs_writer.go
│ │ ├── cos_writer.go
│ │ ├── gcs_writer.go
│ │ ├── hostPath_writer.go
│ │ ├── oss_writer.go
│ │ ├── s3_writer.go
│ │ └── writer.go
│ ├── chaos/
│ │ └── chaos.go
│ ├── client/
│ │ └── client.go
│ ├── cluster/
│ │ ├── cluster.go
│ │ ├── cluster_test.go
│ │ ├── error.go
│ │ ├── error_test.go
│ │ ├── member.go
│ │ ├── metrics.go
│ │ ├── reconcile.go
│ │ └── upgrade.go
│ ├── controller/
│ │ ├── backup-operator/
│ │ │ ├── abs_backup.go
│ │ │ ├── controller.go
│ │ │ ├── cos_backup.go
│ │ │ ├── gcs_backup.go
│ │ │ ├── hostPath_backup.go
│ │ │ ├── operator.go
│ │ │ ├── oss_backup.go
│ │ │ ├── s3_backup.go
│ │ │ ├── sync.go
│ │ │ ├── sync_test.go
│ │ │ └── util.go
│ │ ├── controller.go
│ │ ├── controller_test.go
│ │ ├── informer.go
│ │ ├── metrics.go
│ │ ├── restore-operator/
│ │ │ ├── controller.go
│ │ │ ├── http.go
│ │ │ ├── operator.go
│ │ │ └── sync.go
│ │ └── util.go
│ ├── generated/
│ │ ├── clientset/
│ │ │ └── versioned/
│ │ │ ├── clientset.go
│ │ │ ├── doc.go
│ │ │ ├── fake/
│ │ │ │ ├── clientset_generated.go
│ │ │ │ ├── doc.go
│ │ │ │ └── register.go
│ │ │ ├── scheme/
│ │ │ │ ├── doc.go
│ │ │ │ └── register.go
│ │ │ └── typed/
│ │ │ └── etcd/
│ │ │ └── v1beta2/
│ │ │ ├── doc.go
│ │ │ ├── etcd_client.go
│ │ │ ├── etcdbackup.go
│ │ │ ├── etcdcluster.go
│ │ │ ├── etcdrestore.go
│ │ │ ├── fake/
│ │ │ │ ├── doc.go
│ │ │ │ ├── fake_etcd_client.go
│ │ │ │ ├── fake_etcdbackup.go
│ │ │ │ ├── fake_etcdcluster.go
│ │ │ │ └── fake_etcdrestore.go
│ │ │ └── generated_expansion.go
│ │ ├── informers/
│ │ │ └── externalversions/
│ │ │ ├── etcd/
│ │ │ │ ├── interface.go
│ │ │ │ └── v1beta2/
│ │ │ │ ├── etcdbackup.go
│ │ │ │ ├── etcdcluster.go
│ │ │ │ ├── etcdrestore.go
│ │ │ │ └── interface.go
│ │ │ ├── factory.go
│ │ │ ├── generic.go
│ │ │ └── internalinterfaces/
│ │ │ └── factory_interfaces.go
│ │ └── listers/
│ │ └── etcd/
│ │ └── v1beta2/
│ │ ├── etcdbackup.go
│ │ ├── etcdcluster.go
│ │ ├── etcdrestore.go
│ │ └── expansion_generated.go
│ └── util/
│ ├── alibabacloudutil/
│ │ └── ossfactory/
│ │ └── client.go
│ ├── awsutil/
│ │ └── s3factory/
│ │ ├── client.go
│ │ └── client_test.go
│ ├── azureutil/
│ │ └── absfactory/
│ │ └── client.go
│ ├── constants/
│ │ └── constants.go
│ ├── etcdutil/
│ │ ├── etcdutil.go
│ │ ├── etcdutil_test.go
│ │ ├── member.go
│ │ ├── member_test.go
│ │ └── tls.go
│ ├── gcputil/
│ │ └── gcsfactory/
│ │ └── client.go
│ ├── k8sutil/
│ │ ├── crd.go
│ │ ├── events_util.go
│ │ ├── k8sutil.go
│ │ ├── k8sutils_test.go
│ │ ├── node_util.go
│ │ ├── pod_util.go
│ │ └── tls.go
│ ├── probe/
│ │ └── readyz.go
│ ├── retryutil/
│ │ └── retry_util.go
│ ├── tencentcloudutil/
│ │ ├── cosfactory/
│ │ │ └── client.go
│ │ └── metadata/
│ │ └── credential/
│ │ └── secret.go
│ └── util.go
├── test/
│ ├── container/
│ │ ├── Dockerfile
│ │ ├── docker_push
│ │ └── run
│ ├── e2e/
│ │ ├── README.md
│ │ ├── basic_test.go
│ │ ├── cluster_status_test.go
│ │ ├── e2eslow/
│ │ │ ├── backup_restore_test.go
│ │ │ ├── disruptive_test.go
│ │ │ └── main_test.go
│ │ ├── e2eutil/
│ │ │ ├── crd_util.go
│ │ │ ├── etcd_util.go
│ │ │ ├── spec_util.go
│ │ │ ├── tls.go
│ │ │ ├── util.go
│ │ │ └── wait_util.go
│ │ ├── framework/
│ │ │ ├── framework.go
│ │ │ └── main_entry.go
│ │ ├── main_test.go
│ │ ├── pv_test.go
│ │ ├── recovery_test.go
│ │ ├── resize_test.go
│ │ ├── tls_test.go
│ │ ├── upgradetest/
│ │ │ ├── README.md
│ │ │ ├── framework/
│ │ │ │ └── framework.go
│ │ │ ├── main_test.go
│ │ │ └── upgrade_test.go
│ │ └── util.go
│ ├── logcollector/
│ │ └── main.go
│ └── pod/
│ ├── Dockerfile
│ ├── README.md
│ ├── docker_push
│ ├── run-test-pod
│ ├── simple/
│ │ ├── Dockerfile
│ │ ├── run-e2e
│ │ └── simple-pod-templ.yaml
│ └── test-pod-templ.yaml
└── version/
└── version.go
================================================
FILE CONTENTS
================================================
================================================
FILE: .commitlintrc.yml
================================================
---
extends:
- '@commitlint/config-angular'
================================================
FILE: .dockerignore
================================================
# More info: https://docs.docker.com/engine/reference/builder/#dockerignore-file
# Ignore all files which are not go type
!**/*.go
!**/*.mod
!**/*.sum
================================================
FILE: .github/workflows/build.yml
================================================
name: Go
on:
push:
branches: [ master ]
pull_request:
branches: [ master ]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Set up Go
uses: actions/setup-go@v2
with:
go-version: 1.16.5
- name: Build
run: make build
================================================
FILE: .github/workflows/commitlint.yml
================================================
name: Commitlint
on: [pull_request]
jobs:
lint:
runs-on: ubuntu-latest
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
steps:
- uses: actions/checkout@v2
with:
fetch-depth: 0
- uses: wagoid/commitlint-github-action@v1
with:
configFile: './.commitlintrc.yml'
================================================
FILE: .github/workflows/e2e.yml
================================================
name: e2e
on:
push:
branches: [ master ]
pull_request:
branches: [ master ]
env:
VERSION: ${{ github.sha }}
SCRIPTS_DIR: test/scripts
E2E_KUBECONFIG_PATH: test/fixtures/config
FIXTURES_DIR: test/fixtures/manifests
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Set up Go
uses: actions/setup-go@v2
with:
go-version: 1.16.5
- name: Build Image
run: make image
- name: Prepare envrionment
run: bash ${SCRIPTS_DIR}/pre.sh
- name: Install Minikube
run: bash ${SCRIPTS_DIR}/minikube.sh start
- name: Install kstone
run: bash ${SCRIPTS_DIR}/kstone.sh
- name: e2e test
run: make e2e
================================================
FILE: .github/workflows/golangci-lint.yml
================================================
name: golangci-lint
on:
push:
tags:
- v*
branches:
- master
- main
pull_request:
permissions:
contents: read
# Optional: allow read access to pull request. Use with `only-new-issues` option.
# pull-requests: read
jobs:
golangci:
name: lint
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/setup-go@v3
with:
go-version: '1.17.8'
- name: golangci-lint
uses: golangci/golangci-lint-action@v3
with:
# Optional: version of golangci-lint to use in form of v1.2 or v1.2.3 or `latest` to use the latest version
version: v1.38.0
# Optional: working directory, useful for monorepos
# working-directory: somedir
# Optional: golangci-lint command line arguments.
# args: --issues-exit-code=0
# Optional: show only new issues if it's a pull request. The default value is `false`.
# only-new-issues: true
# Optional: if set to true then the action will use pre-installed Go.
# skip-go-installation: true
# Optional: if set to true then the action don't cache or restore ~/go/pkg.
# skip-pkg-cache: true
# Optional: if set to true then the act
================================================
FILE: .gitignore
================================================
# OSX leaves these everywhere on SMB shares
._*
# OSX trash
.DS_Store
# Eclipse files
.classpath
.project
.settings/**
# Files generated by JetBrains IDEs, e.g. IntelliJ IDEA
.idea/
*.iml
# Vscode files
.vscode
# This is where the result of the go build goes
/output*/
/_output*/
/_output
# Emacs save files
*~
\#*\#
.\#*
# Vim-related files
[._]*.s[a-w][a-z]
[._]s[a-w][a-z]
*.un~
Session.vim
.netrwhist
# cscope-related files
cscope.*
# Go test binaries
*.test
/hack/.test-cmd-auth
# JUnit test output from ginkgo e2e tests
/junit*.xml
# Mercurial files
**/.hg
**/.hg*
# Vagrant
.vagrant
network_closure.sh
# Local cluster env variables
/cluster/env.sh
# Compiled binaries in third_party
/third_party/pkg
# Also ignore etcd installed by hack/install-etcd.sh
/default.etcd
# User cluster configs
.kubeconfig
.tags*
# Version file for dockerized build
.dockerized-kube-version-defs
# Web UI
/www/master/node_modules/
/www/master/npm-debug.log
/www/master/shared/config/development.json
# Karma output
/www/test_out
# precommit temporary directories created by ./hack/verify-generated-docs.sh and ./hack/lib/util.sh
/_tmp/
/doc_tmp/
# Test artifacts produced by Jenkins jobs
/_artifacts/
# Go dependencies installed on Jenkins
/_gopath/
# Config directories created by gcloud and gsutil on Jenkins
/.config/gcloud*/
/.gsutil/
# CoreOS stuff
/cluster/libvirt-coreos/coreos_*.img
# Downloaded kstone binary release
/kstone/
*.exe
*.exe~
*.dll
*.so
*.dylib
bin
testbin/*
# Output of the go coverage tool, specifically when used with LiteIDE
*.out
# direnv .envrc files
.envrc
# Downloaded kstone binary release tar ball
kstone.tar.gz
# generated files in any directory
# TODO(thockin): uncomment this when we stop committing the generated files.
#zz_generated.*
zz_generated.openapi.go
zz_generated_*_test.go
# make-related metadata
/.make/
# Just in time generated data in the source, should never be committed
/test/e2e/generated/bindata.go
# This file used by some vendor repos (e.g. github.com/go-openapi/...) to store secret variables and should not be ignored
!\.drone\.sec
/bazel-*
*.pyc
# generated by verify-vendor.sh
vendor
vendordiff.patch
/bin
/127.0.0.1.etcd
/docker/build
================================================
FILE: .golangci.yml
================================================
run:
# timeout for analysis, e.g. 30s, 5m
deadline: 10m
# include test files or not
tests: true
# disallowed from the implicit automatic updating of go.mod described above
modules-download-mode: readonly
# which dirs to skip: they won't be analyzed;
skip-dirs:
- third_party
- api
- web
- pkg/gateway/apis/config
- pkg/gateway/apis/config/v1
- pkg/registry/apis/config
- pkg/registry/apis/config/v1
- pkg/registry/harbor/client
- pkg/registry/harbor/helmClient
- pkg/monitor/apis/config
- pkg/monitor/apis/config/v1
linters:
disable-all: true
enable:
- unused
- gofmt
- ineffassign
- govet
- deadcode
- structcheck
- varcheck
- typecheck
- golint
- unconvert
- staticcheck
- gosimple
issues:
exclude-rules:
- linters:
- staticcheck
text: "SA1019:"
service:
golangci-lint-version: 1.20.x
================================================
FILE: CHANGELOG/CHANGELOG.md
================================================
## v0.2.0-beta.2 (2022-06-08)
<hr>
### Features
<hr>
support import etcd v2 cluster. (@engow, @seanyan )
add compaction,lease metrics. (@tangcong )
add hostPath type for etcd backup operator. (@GeorgeGuo2018 )
### Bug Fix
failed to add/remove member if affinity and toleration is nil. (@engow )
fixed the issue that the editing page could not display cpu and memory resources. (@engow )
fixed the issue that some paths data could not be viewed visually. (@engow )
fixed the issue of backup management page 504 error.(@engow)
## v0.2.0-beta.1 (2022-04-18)
<hr>
### Breaking Changes
<hr>
add new API v1alpha2, refer to [migration document](../docs/migration/README.md) to migrate imported clusters API from v1alpha1 to v1alpha2. (@maudL1n, @lianghao208 )
### Features
<hr>
support kstone-api and kstone-dashboard authentication, default username: ***admin***, default password: ***adm1n@kstone.io***. (@engow, @lianghao208 )
support multiple namespaces. (@engow )
support auth and tolerations, affinity. (@engow )
support etcd cluster password authentication. (@lianghao208 )
add s3 backup and backup check. (@jianhaiqing )
### Test
<hr>
add e2e test for https kstone-etcd-operator cluster. (@maudL1n )
================================================
FILE: LICENSE
================================================
Apache License
Version 2.0, January 2004
http://www.apache.org/licenses/
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
1. Definitions.
"License" shall mean the terms and conditions for use, reproduction,
and distribution as defined by Sections 1 through 9 of this document.
"Licensor" shall mean the copyright owner or entity authorized by
the copyright owner that is granting the License.
"Legal Entity" shall mean the union of the acting entity and all
other entities that control, are controlled by, or are under common
control with that entity. For the purposes of this definition,
"control" means (i) the power, direct or indirect, to cause the
direction or management of such entity, whether by contract or
otherwise, or (ii) ownership of fifty percent (50%) or more of the
outstanding shares, or (iii) beneficial ownership of such entity.
"You" (or "Your") shall mean an individual or Legal Entity
exercising permissions granted by this License.
"Source" form shall mean the preferred form for making modifications,
including but not limited to software source code, documentation
source, and configuration files.
"Object" form shall mean any form resulting from mechanical
transformation or translation of a Source form, including but
not limited to compiled object code, generated documentation,
and conversions to other media types.
"Work" shall mean the work of authorship, whether in Source or
Object form, made available under the License, as indicated by a
copyright notice that is included in or attached to the work
(an example is provided in the Appendix below).
"Derivative Works" shall mean any work, whether in Source or Object
form, that is based on (or derived from) the Work and for which the
editorial revisions, annotations, elaborations, or other modifications
represent, as a whole, an original work of authorship. For the purposes
of this License, Derivative Works shall not include works that remain
separable from, or merely link (or bind by name) to the interfaces of,
the Work and Derivative Works thereof.
"Contribution" shall mean any work of authorship, including
the original version of the Work and any modifications or additions
to that Work or Derivative Works thereof, that is intentionally
submitted to Licensor for inclusion in the Work by the copyright owner
or by an individual or Legal Entity authorized to submit on behalf of
the copyright owner. For the purposes of this definition, "submitted"
means any form of electronic, verbal, or written communication sent
to the Licensor or its representatives, including but not limited to
communication on electronic mailing lists, source code control systems,
and issue tracking systems that are managed by, or on behalf of, the
Licensor for the purpose of discussing and improving the Work, but
excluding communication that is conspicuously marked or otherwise
designated in writing by the copyright owner as "Not a Contribution."
"Contributor" shall mean Licensor and any individual or Legal Entity
on behalf of whom a Contribution has been received by Licensor and
subsequently incorporated within the Work.
2. Grant of Copyright License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
copyright license to reproduce, prepare Derivative Works of,
publicly display, publicly perform, sublicense, and distribute the
Work and such Derivative Works in Source or Object form.
3. Grant of Patent License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
(except as stated in this section) patent license to make, have made,
use, offer to sell, sell, import, and otherwise transfer the Work,
where such license applies only to those patent claims licensable
by such Contributor that are necessarily infringed by their
Contribution(s) alone or by combination of their Contribution(s)
with the Work to which such Contribution(s) was submitted. If You
institute patent litigation against any entity (including a
cross-claim or counterclaim in a lawsuit) alleging that the Work
or a Contribution incorporated within the Work constitutes direct
or contributory patent infringement, then any patent licenses
granted to You under this License for that Work shall terminate
as of the date such litigation is filed.
4. Redistribution. You may reproduce and distribute copies of the
Work or Derivative Works thereof in any medium, with or without
modifications, and in Source or Object form, provided that You
meet the following conditions:
(a) You must give any other recipients of the Work or
Derivative Works a copy of this License; and
(b) You must cause any modified files to carry prominent notices
stating that You changed the files; and
(c) You must retain, in the Source form of any Derivative Works
that You distribute, all copyright, patent, trademark, and
attribution notices from the Source form of the Work,
excluding those notices that do not pertain to any part of
the Derivative Works; and
(d) If the Work includes a "NOTICE" text file as part of its
distribution, then any Derivative Works that You distribute must
include a readable copy of the attribution notices contained
within such NOTICE file, excluding those notices that do not
pertain to any part of the Derivative Works, in at least one
of the following places: within a NOTICE text file distributed
as part of the Derivative Works; within the Source form or
documentation, if provided along with the Derivative Works; or,
within a display generated by the Derivative Works, if and
wherever such third-party notices normally appear. The contents
of the NOTICE file are for informational purposes only and
do not modify the License. You may add Your own attribution
notices within Derivative Works that You distribute, alongside
or as an addendum to the NOTICE text from the Work, provided
that such additional attribution notices cannot be construed
as modifying the License.
You may add Your own copyright statement to Your modifications and
may provide additional or different license terms and conditions
for use, reproduction, or distribution of Your modifications, or
for any such Derivative Works as a whole, provided Your use,
reproduction, and distribution of the Work otherwise complies with
the conditions stated in this License.
5. Submission of Contributions. Unless You explicitly state otherwise,
any Contribution intentionally submitted for inclusion in the Work
by You to the Licensor shall be under the terms and conditions of
this License, without any additional terms or conditions.
Notwithstanding the above, nothing herein shall supersede or modify
the terms of any separate license agreement you may have executed
with Licensor regarding such Contributions.
6. Trademarks. This License does not grant permission to use the trade
names, trademarks, service marks, or product names of the Licensor,
except as required for reasonable and customary use in describing the
origin of the Work and reproducing the content of the NOTICE file.
7. Disclaimer of Warranty. Unless required by applicable law or
agreed to in writing, Licensor provides the Work (and each
Contributor provides its Contributions) on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
implied, including, without limitation, any warranties or conditions
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
PARTICULAR PURPOSE. You are solely responsible for determining the
appropriateness of using or redistributing the Work and assume any
risks associated with Your exercise of permissions under this License.
8. Limitation of Liability. In no event and under no legal theory,
whether in tort (including negligence), contract, or otherwise,
unless required by applicable law (such as deliberate and grossly
negligent acts) or agreed to in writing, shall any Contributor be
liable to You for damages, including any direct, indirect, special,
incidental, or consequential damages of any character arising as a
result of this License or out of the use or inability to use the
Work (including but not limited to damages for loss of goodwill,
work stoppage, computer failure or malfunction, or any and all
other commercial damages or losses), even if such Contributor
has been advised of the possibility of such damages.
9. Accepting Warranty or Additional Liability. While redistributing
the Work or Derivative Works thereof, You may choose to offer,
and charge a fee for, acceptance of support, warranty, indemnity,
or other liability obligations and/or rights consistent with this
License. However, in accepting such obligations, You may act only
on Your own behalf and on Your sole responsibility, not on behalf
of any other Contributor, and only if You agree to indemnify,
defend, and hold each Contributor harmless for any liability
incurred by, or claims asserted against, such Contributor by reason
of your accepting any such warranty or additional liability.
END OF TERMS AND CONDITIONS
APPENDIX: How to apply the Apache License to your work.
To apply the Apache License to your work, attach the following
boilerplate notice, with the fields enclosed by brackets "[]"
replaced with your own identifying information. (Don't include
the brackets!) The text should be enclosed in the appropriate
comment syntax for the file format. We also recommend that a
file or class name and description of purpose be included on the
same "printed page" as the copyright notice for easier
identification within third-party archives.
Copyright [yyyy] [name of copyright owner]
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
================================================
FILE: Makefile
================================================
.PHONY: all
all: lint build
# ==============================================================================
# Build options
ROOT_PACKAGE=tkestack.io/kstone
VERSION_PACKAGE=tkestack.io/kstone/pkg/app/version
# ==============================================================================
# Includes
include build/lib/common.mk
include build/lib/golang.mk
include build/lib/image.mk
include build/lib/gen.mk
# ==============================================================================
# Usage
define USAGE_OPTIONS
Options:
DEBUG Whether to generate debug symbols. Default is 0.
BINS The binaries to build. Default is all of cmd.
This option is available when using: make build/build.multiarch
Example: make build BINS="kstone-api kstone-controller"
IMAGES Backend images to make. Default is all of cmd starting with kstone-.
This option is available when using: make image/image.multiarch/push/push.multiarch
Example: make image.multiarch IMAGES="kstone-api kstone-controller"
PLATFORMS The multiple platforms to build. Default is linux_amd64 and linux_arm64.
This option is available when using: make build.multiarch/image.multiarch/push.multiarch
Example: make image.multiarch IMAGES="kstone-api kstone-controller" PLATFORMS="linux_amd64 linux_arm64"
VERSION The version information compiled into binaries.
The default is obtained from git.
V Set to 1 enable verbose build. Default is 0.
endef
export USAGE_OPTIONS
# ==============================================================================
# Targets
## gen: Generate codes for API definitions.
.PHONY: gen
gen:
@$(MAKE) gen.run
## build: Build source code for host platform.
.PHONY: build
build:
@$(MAKE) go.build
## build.multiarch: Build source code for multiple platforms. See option PLATFORMS.
.PHONY: build.multiarch
build.multiarch:
@$(MAKE) go.build.multiarch
## image: Build docker images for host arch.
.PHONY: image
image:
@$(MAKE) image.build
## image.multiarch: Build docker images for multiple platforms. See option PLATFORMS.
.PHONY: image.multiarch
image.multiarch:
@$(MAKE) image.build.multiarch
## push: Build docker images for host arch and push images to registry.
.PHONY: push
push:
@$(MAKE) image.push
## push.multiarch: Build docker images for multiple platforms and push images to registry.
.PHONY: push.multiarch
push.multiarch:
@$(MAKE) image.push.multiarch
## manifest: Build docker images for host arch and push manifest list to registry.
.PHONY: manifest
manifest:
@$(MAKE) image.manifest.push
## manifest.multiarch: Build docker images for multiple platforms and push manifest lists to registry.
.PHONY: manifest.multiarch
manifest.multiarch:
@$(MAKE) image.manifest.push.multiarch
## clean: Remove all files that are created by building.
.PHONY: clean
clean:
@$(MAKE) go.clean
## lint: Check syntax and styling of go sources.
.PHONY: lint
lint:
@$(MAKE) go.lint
## test: Run unit test.
.PHONY: test
test:
@$(MAKE) go.test
## e2e: Run e2e test.
.PHONY: e2e
e2e:
@$(MAKE) go.e2e
## release-test: test release
.PHONY: release-test
release-test:
@go test -v -timeout=1200m tkestack.io/kstone/test/e2e
## help: Show this help info.
.PHONY: help
help: Makefile
@echo -e "\nUsage: make <TARGETS> <OPTIONS> ...\n\nTargets:"
@sed -n 's/^##//p' $< | column -t -s ':' | sed -e 's/^/ /'
@echo "$$USAGE_OPTIONS"
================================================
FILE: README.md
================================================
# Kstone
<div align=center><img width=800 hight=300 src="docs/images/icon.png" /></div>
------
[中文](README_CN.md)
Kstone is an [etcd](https://github.com/etcd-io/etcd) management platform, providing cluster management, monitoring, backup, inspection, data migration, visual viewing of etcd data, and intelligent diagnosis.
Kstone will help you efficiently manage etcd clusters, significantly reduce operation and maintenance costs, discover potential hazards in time, and improve the stability and user experience of k8s etcd storage.
------
## Features
* Supports registration of existing clusters and creation of new etcd clusters.
* Support prometheus monitoring, built-in rich etcd grafana panel diagram.
* Support multiple data backup methods (minute-level backup to object storage, real-time backup by deploying learner).
* Support multiple inspection strategies (data consistency, health, hot write requests, number of resource objects, etc.).
* Built-in web console and visual view etcd data.
* Lightweight, easy to install.
* Support data migration(to do list).
* Support intelligent diagnosis(to do list).
## Architecture
Kstone consists of 5 components: kstone-etcdcluster-controller,kstone-etcd-operator,kstone-etcdinspection-controller,kstone-api, kstone-dashboard.

## Components
### [kstone](https://github.com/tkestack/kstone)
kstone consists of kstone-etcdcluster-controller,kstone-etcdinspection-controller,kstone-api.
### [kstone-etcd-operator](https://github.com/tkestack/kstone-etcd-operator)
kstone-etcd-operator provides rich etcd cluster management capabilities.
please refer to [kstone-etcd-operator](https://github.com/tkestack/kstone-etcd-operator/blob/main/README.md) document page for more information.
### [kstone-dashboard](https://github.com/tkestack/kstone-dashboard)
The web management system provided by kstone is as follows:

## Installation
Please read [the detailed installation document](charts),
You can quickly install kstone through helm.
## Documentation
Please refer to [document page](docs) for more information.
## Developing
### Build
``` shell
mkdir -p ~/tkestack
cd ~/tkestack
git clone https://github.com/tkestack/kstone
cd kstone
make
```
## Contact
For any question or support, feel free to contact us via:
- Join [#Kstone Slack channel](https://join.slack.com/t/w1639233173-qqx590963/shared_invite/zt-109muo6i9-0kTUQphSVFlwOSW7CgtrGw)
- Join WeChat Group Discussion (Join the group by adding kstone assistant WeChat and reply "kstone")
<div align="center">
<img src="docs/images/kstone_assistant.jpg" width=20% title="Kstone_assistant WeChat">
</div>
## Community
* You are encouraged to communicate most things via GitHub [issues](https://github.com/tkestack/kstone/issues/new/choose) or [pull requests](https://github.com/tkestack/kstone/pulls).
## Licensing
Kstone is licensed under the Apache License, Version 2.0. See [LICENSE](LICENSE) for the full license text.
================================================
FILE: README_CN.md
================================================
# Kstone
<div align=center><img width=800 hight=300 src="docs/images/icon.png" /></div>
------
[English](README.md)
Kstone 是一个针对 [etcd](https://github.com/etcd-io/etcd) 的全方位运维解决方案,提供集群管理(关联已有集群、创建新集群等)、监控、备份、巡检、数据迁移、数据可视化、智能诊断等一系列特性。
Kstone 将帮助你高效管理etcd集群,显著降低运维成本、及时发现潜在隐患、提升k8s etcd存储的稳定性和用户体验。
------
## 特性
Kstone 是一个 [etcd](https://github.com/etcd-io/etcd) 的治理平台,它有以下特点:
* 轻量,安装方便
* 支持导入已有集群、创建新etcd集群
* 支持Prometheus监控,内置丰富的etcd Grafana面板图
* 支持多种数据备份方式(分钟级备份到对象存储、部署Learner实时备份)
* 支持多种巡检策略(数据一致性、健康度、写请求、资源对象数等)
* 支持可视化查看etcd数据(特别支持Kubernetes资源对象数据的可视化查看)
* 极大简化运维成本,在集群导入、创建完成时,即可自动开启监控、备份、巡检等特性
## 核心架构
Kstone 由5个组件组成:
- kstone-etcdcluster-controller
- kstone-etcdinspection-controller
- kstone-etcd-operator
- kstone-api
- kstone-dashboard

## 组件
### kstone-etcdcluster-controller
* 关联已有集群,如已有的kubernetes集群etcd
* 根据EtcdCluster资源所描述的集群元信息,调用ClusterProvider创建、更新、删除etcd集群
* 根据EtcdCluster资源所描述的特性开关,开启或关闭监控、备份、巡检等特性(创建EtcdInspection资源)
### kstone-etcdinspection-controller
* 实时监听EtcdInspection资源,调用后端FeatureProvider执行巡检
### [kstone-etcd-operator](https://github.com/tkestack/kstone-etcd-operator)
kstone-etcd-operator提供丰富的etcd集群管理能力。
更多信息请参考[kstone-etcd-operator](https://github.com/tkestack/kstone-etcd-operator/blob/main/README.md) 文档页面。
### kstone-api
* 提供了一系列etcd集群管理的api给web前端使用
### [kstone-dashboard](https://github.com/tkestack/kstone-dashboard)
Kstone 提供的WEB管理系统如下:

## 安装
请阅读[部署文档](charts/README_CN.md),
你可通过Helm快速安装Kstone。
## 文档
更多文档信息,请阅读[文档](docs)
## 开发
### 构建
```
mkdir -p ~/tkestack
cd ~/tkestack
git clone https://github.com/tkestack/kstone
cd kstone
make
```
## 联系方式
如果您有任何疑问或需要支持,请随时与我们联系:
- [Slack](https://join.slack.com/t/w1639233173-qqx590963/shared_invite/zt-109muo6i9-0kTUQphSVFlwOSW7CgtrGw)
- 微信群(添加kstone小助手微信,回复“kstone”入群)
<div align="center">
<img src="docs/images/kstone_assistant.jpg" width=20% title="kstone_assistant WeChat">
</div>
## 社区
欢迎大家提交issue和pull request来一起完善、提升Kstone。
## License
Kstone is licensed under the Apache License, Version 2.0. See [LICENSE](LICENSE) for the full license text.
================================================
FILE: build/docker/kstone-api/Dockerfile
================================================
# Tencent is pleased to support the open source community by making TKEStack
# available.
#
# Copyright (C) 2012-2023 Tencent. All Rights Reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may not use
# this file except in compliance with the License. You may obtain a copy of the
# License at
#
# https://opensource.org/licenses/Apache-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OF ANY KIND, either express or implied. See the License for the
# specific language governing permissions and limitations under the License.
FROM BASE_IMAGE
RUN echo "hosts: files dns" >> /etc/nsswitch.conf
WORKDIR /app
ADD kstone-api /app/bin/
ENTRYPOINT ["/app/bin/kstone-api"]
================================================
FILE: build/docker/kstone-controller/Dockerfile
================================================
# Tencent is pleased to support the open source community by making TKEStack
# available.
#
# Copyright (C) 2012-2023 Tencent. All Rights Reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may not use
# this file except in compliance with the License. You may obtain a copy of the
# License at
#
# https://opensource.org/licenses/Apache-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OF ANY KIND, either express or implied. See the License for the
# specific language governing permissions and limitations under the License.
FROM BASE_IMAGE
RUN echo "hosts: files dns" >> /etc/nsswitch.conf
WORKDIR /app
ADD kstone-controller /app/bin/
ENTRYPOINT ["/app/bin/kstone-controller"]
================================================
FILE: build/docker/tools/code-generator/Dockerfile
================================================
# Tencent is pleased to support the open source community by making TKEStack
# available.
#
# Copyright (C) 2012-2023 Tencent. All Rights Reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may not use
# this file except in compliance with the License. You may obtain a copy of the
# License at
#
# https://opensource.org/licenses/Apache-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OF ANY KIND, either express or implied. See the License for the
# specific language governing permissions and limitations under the License.
FROM golang:1.16-alpine
RUN apk add --update --no-cache autoconf automake libtool zlib-dev build-base curl git
# Install the protobuf
ENV PROTOBUF_VERSION 3.17.3
ENV PROTOBUF_URL=https://github.com/protocolbuffers/protobuf/archive/v${PROTOBUF_VERSION}.tar.gz
RUN curl -L ${PROTOBUF_URL} -o - | tar -xz -C /tmp
RUN cd /tmp/protobuf-* && \
./autogen.sh && \
./configure --disable-shared --enable-static && \
make --silent -j `nproc` install-strip
RUN cd /tmp && rm -rf protobuf-$PROTOBUF_VERSION \
&& protoc --version
ENV GOPATH=/go
ENV GO111MODULE=off
# Clone the kubernetes
ENV KUBERNETES_VERSION 1.21.3
RUN mkdir -p $GOPATH/src/k8s.io \
&& git clone -b v$KUBERNETES_VERSION --single-branch https://github.com/kubernetes/kubernetes.git $GOPATH/src/k8s.io/kubernetes
RUN apk add --update --no-cache rsync file patch
RUN cd $GOPATH/src/k8s.io/kubernetes \
&& make WHAT="cmd/genswaggertypedocs vendor/k8s.io/code-generator/cmd/defaulter-gen vendor/k8s.io/code-generator/cmd/client-gen vendor/k8s.io/code-generator/cmd/lister-gen vendor/k8s.io/code-generator/cmd/informer-gen vendor/k8s.io/code-generator/cmd/deepcopy-gen vendor/k8s.io/code-generator/cmd/conversion-gen vendor/k8s.io/code-generator/cmd/go-to-protobuf vendor/k8s.io/code-generator/cmd/go-to-protobuf/protoc-gen-gogo"
RUN ln -s $GOPATH/src/k8s.io/kubernetes/vendor/k8s.io/apimachinery $GOPATH/src/k8s.io/apimachinery \
&& ln -s $GOPATH/src/k8s.io/kubernetes/vendor/k8s.io/api $GOPATH/src/k8s.io/api
# work around 64MB tmpfs size in Docker 1.6
ENV TMPDIR /tmp.k8s
RUN mkdir $TMPDIR \
&& chmod a+rwx $TMPDIR \
&& chmod o+t $TMPDIR
# Get the code coverage tool and goimports
RUN go get golang.org/x/tools/cmd/cover \
golang.org/x/tools/cmd/goimports \
&& go clean -cache
WORKDIR "$GOPATH/src/k8s.io/kubernetes"
ADD code.sh /root/
ADD openapi.sh /root/
ADD boilerplate.go.txt /root/
RUN chmod +x /root/code.sh
RUN chmod +x /root/openapi.sh
================================================
FILE: build/docker/tools/code-generator/Makefile
================================================
# Tencent is pleased to support the open source community by making TKEStack
# available.
#
# Copyright (C) 2012-2023 Tencent. All Rights Reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may not use
# this file except in compliance with the License. You may obtain a copy of the
# License at
#
# https://opensource.org/licenses/Apache-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OF ANY KIND, either express or implied. See the License for the
# specific language governing permissions and limitations under the License.
VERSION = v1.21.3
REGISTRY_PREFIX ?= tkestack
IMAGE_NAME ?= code-generator
.PHONY: all
all: build push
.PHONY: build
build:
@echo "===========> Building $(IMAGE_NAME) $(VERSION) docker image"
docker build --pull -t $(REGISTRY_PREFIX)/$(IMAGE_NAME):$(VERSION) -f ./Dockerfile .
.PHONY: push
push:
@echo "===========> Pushing $(IMAGE_NAME) $(VERSION) image to $(REGISTRY_PREFIX)"
docker push $(REGISTRY_PREFIX)/$(IMAGE_NAME):$(VERSION)
================================================
FILE: build/docker/tools/code-generator/boilerplate.go.txt
================================================
/*
* Tencent is pleased to support the open source community by making TKEStack
* available.
*
* Copyright (C) 2012-2023 Tencent. All Rights Reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use
* this file except in compliance with the License. You may obtain a copy of the
* License at
*
* https://opensource.org/licenses/Apache-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OF ANY KIND, either express or implied. See the License for the
* specific language governing permissions and limitations under the License.
*/
================================================
FILE: build/docker/tools/code-generator/code.sh
================================================
#!/usr/bin/env bash
#
# Tencent is pleased to support the open source community by making TKEStack
# available.
#
# Copyright (C) 2012-2023 Tencent. All Rights Reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may not use
# this file except in compliance with the License. You may obtain a copy of the
# License at
#
# https://opensource.org/licenses/Apache-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OF ANY KIND, either express or implied. See the License for the
# specific language governing permissions and limitations under the License.
#
set -o errexit
set -o nounset
set -o pipefail
# generate-groups generates everything for a project with external types only, e.g. a project based
# on CustomResourceDefinitions.
if [[ "$#" -lt 4 ]] || [[ "${1}" == "--help" ]]; then
cat <<EOF
Usage: $(basename "$0") <generators> <output-package> <internal-apis-package> <extensiona-apis-package> <groups-versions> ...
<generators> the generators comma separated to run (e.g. deepcopy-external,defaulter-external,client-external,
lister-external,informer-external,deepcopy-internal,defaulter-internal,client-internal,
lister-internal,informer-internal or all-external,all-internal,all).
<output-package> the output package name (e.g. github.com/example/project/pkg/generated).
<int-apis-package> the internal types dir (e.g. github.com/example/project/pkg/apis).
<ext-apis-package> the external types dir (e.g. github.com/example/project/pkg/apis or githubcom/example/apis).
<groups-versions> the groups and their versions in the format "groupA:v1,v2 groupB:v1 groupC:v2", relative
to <api-package>.
... arbitrary flags passed to all generator binaries.
Examples:
$(basename "$0") all-external github.com/example/project/pkg/client github.com/example/project/pkg/apis github.com/example/project/apis "foo:v1 bar:v1alpha1,v1beta1"
$(basename "$0") deepcopy-external,client-external github.com/example/project/pkg/client github.com/example/project/pkg/apis github.com/example/project/apis "foo:v1 bar:v1alpha1,v1beta1"
$(basename "$0") all-internal github.com/example/project/pkg/client github.com/example/project/pkg/apis github.com/example/project/apis "foo:v1 bar:v1alpha1,v1beta1"
$(basename "$0") deepcopy-internal,defaulter-internal,conversion-internal github.com/example/project/pkg/client github.com/example/project/pkg/apis github.com/example/project/apis "foo:v1 bar:v1alpha1,v1beta1"
EOF
exit 0
fi
GENS="$1"
OUTPUT_PKG="$2"
INT_APIS_PKG="$3"
EXT_APIS_PKG="$4"
GROUPS_WITH_VERSIONS="$5"
shift 5
GOPATH=${GOPATH:-/go}
K8S_ROOT=${K8S_ROOT:-/go/src/k8s.io/kubernetes}
K8S_BIN=${K8S_ROOT}/_output/bin
PATH=${K8S_BIN}:${PATH}
function codegen_join() { local IFS="$1"; shift; echo "$*"; }
# enumerate group versions
ALL_FQ_APIS=(${ALL_FQ_APIS:-}) # e.g. k8s.io/kubernetes/pkg/apis/apps k8s.io/api/apps/v1
INT_FQ_APIS=(${INT_FQ_APIS:-}) # e.g. k8s.io/kubernetes/pkg/apis/apps
EXT_FQ_APIS=(${EXT_FQ_APIS:-}) # e.g. k8s.io/api/apps/v1
EXT_PB_APIS=(${EXT_PB_APIS:-}) # e.g. k8s.io/api/apps/v1
for GVs in ${GROUPS_WITH_VERSIONS}; do
IFS=: read -r G Vs <<<"${GVs}"
if [[ -n "${INT_APIS_PKG}" ]]; then
ALL_FQ_APIS+=("${INT_APIS_PKG}/${G}")
INT_FQ_APIS+=("${INT_APIS_PKG}/${G}")
fi
# enumerate versions
for V in ${Vs//,/ }; do
ALL_FQ_APIS+=("${EXT_APIS_PKG}/${G}/${V}")
EXT_FQ_APIS+=("${EXT_APIS_PKG}/${G}/${V}")
done
done
if [[ "${GENS}" = "all" ]] || [[ "${GENS}" = "all-external" ]] || grep -qw "deepcopy-external" <<<"${GENS}"; then
echo "===========> Generating external deepcopy funcs"
"${K8S_BIN}"/deepcopy-gen \
--go-header-file /root/boilerplate.go.txt \
--input-dirs "$(codegen_join , "${EXT_FQ_APIS[@]}")" \
-O zz_generated.deepcopy \
--bounding-dirs "${EXT_APIS_PKG}" \
"$@"
fi
if [[ "${GENS}" = "all" ]] || [[ "${GENS}" = "all-external" ]] || grep -qw "client-external" <<<"${GENS}"; then
echo "===========> Generating external clientset for ${GROUPS_WITH_VERSIONS} at ${OUTPUT_PKG}/clientset"
"${K8S_BIN}"/client-gen \
--go-header-file /root/boilerplate.go.txt \
--clientset-name versioned \
--input-base "" \
--input "$(codegen_join , "${EXT_FQ_APIS[@]}")" \
--output-package "${OUTPUT_PKG}"/clientset \
"$@"
fi
if [[ "${GENS}" = "all" ]] || [[ "${GENS}" = "all-external" ]] || grep -qw "lister-external" <<<"${GENS}"; then
echo "===========> Generating external listers for ${GROUPS_WITH_VERSIONS} at ${OUTPUT_PKG}/listers"
"${K8S_BIN}"/lister-gen \
--go-header-file /root/boilerplate.go.txt \
--input-dirs "$(codegen_join , "${EXT_FQ_APIS[@]}")" \
--output-package "${OUTPUT_PKG}"/listers \
"$@"
fi
if [[ "${GENS}" = "all" ]] || [[ "${GENS}" = "all-external" ]] || grep -qw "informer-external" <<<"${GENS}"; then
echo "===========> Generating external informers for ${GROUPS_WITH_VERSIONS} at ${OUTPUT_PKG}/informers"
"${K8S_BIN}"/informer-gen \
--go-header-file /root/boilerplate.go.txt \
--input-dirs "$(codegen_join , "${EXT_FQ_APIS[@]}")" \
--versioned-clientset-package "${OUTPUT_PKG}"/clientset/versioned \
--listers-package "${OUTPUT_PKG}"/listers \
--output-package "${OUTPUT_PKG}"/informers \
"$@"
fi
if [[ "${GENS}" = "all" ]] || [[ "${GENS}" = "all-external" ]] || grep -qw "defaulter-external" <<<"${GENS}"; then
echo "===========> Generating external defaulters"
"${K8S_BIN}"/defaulter-gen \
--go-header-file /root/boilerplate.go.txt \
--input-dirs "$(codegen_join , "${EXT_FQ_APIS[@]}")" \
-O zz_generated.defaults \
"$@"
fi
if [[ "${GENS}" = "all" ]] || [[ "${GENS}" = "all-external" ]] || grep -qw "conversion-external" <<<"${GENS}"; then
echo "===========> Generating external conversions"
"${K8S_BIN}"/conversion-gen \
--go-header-file /root/boilerplate.go.txt \
--input-dirs "$(codegen_join , "${ALL_FQ_APIS[@]}")" \
-O zz_generated.conversion \
"$@"
fi
================================================
FILE: build/docker/tools/code-generator/openapi.sh
================================================
#!/usr/bin/env bash
#
# Tencent is pleased to support the open source community by making TKEStack
# available.
#
# Copyright (C) 2012-2023 Tencent. All Rights Reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may not use
# this file except in compliance with the License. You may obtain a copy of the
# License at
#
# https://opensource.org/licenses/Apache-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OF ANY KIND, either express or implied. See the License for the
# specific language governing permissions and limitations under the License.
#
set -o errexit
set -o nounset
set -o pipefail
# generate-groups generates openapi for a project with external types only.
if [[ "$#" -lt 2 ]]; then
cat <<EOF
Usage: $(basename "$0") <output-package> <apis-package>
<output-package> the output package name (e.g. github.com/example/project/pkg/openapi).
<apis-package> the types dir (e.g. github.com/example/project/pkg/apis).
Examples:
$(basename "$0") openapi github.com/example/project/pkg github.com/example/project/pkg/apis
EOF
exit 0
fi
OUTPUT_PKG="$1"
APIS_PKG="$2"
GOPATH=${GOPATH:-/go}
K8S_ROOT=${K8S_ROOT:-/go/src/k8s.io/kubernetes}
K8S_BIN=${K8S_ROOT}/_output/bin
PATH=${K8S_BIN}:${PATH}
echo "===========> Generating external openapi codes"
"${K8S_BIN}"/openapi-gen \
-O zz_generated.openapi \
--go-header-file "/root/boilerplate.go.txt" \
--input-dirs "${APIS_PKG}" \
--output-package "${OUTPUT_PKG}"
================================================
FILE: build/lib/common.mk
================================================
# Tencent is pleased to support the open source community by making TKEStack
# available.
#
# Copyright (C) 2012-2023 Tencent. All Rights Reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may not use
# this file except in compliance with the License. You may obtain a copy of the
# License at
#
# https://opensource.org/licenses/Apache-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OF ANY KIND, either express or implied. See the License for the
# specific language governing permissions and limitations under the License.
SHELL := /bin/bash
# include the common make file
COMMON_SELF_DIR := $(dir $(lastword $(MAKEFILE_LIST)))
ifeq ($(origin ROOT_DIR),undefined)
ROOT_DIR := $(abspath $(shell cd $(COMMON_SELF_DIR)/../.. && pwd -P))
endif
ifeq ($(origin OUTPUT_DIR),undefined)
OUTPUT_DIR := $(ROOT_DIR)/_output
$(shell mkdir -p $(OUTPUT_DIR))
endif
ifeq ($(origin TOOLS_DIR),undefined)
TOOLS_DIR := $(OUTPUT_DIR)/tools
$(shell mkdir -p $(TOOLS_DIR))
endif
ifeq ($(origin TMP_DIR),undefined)
TMP_DIR := $(OUTPUT_DIR)/tmp
$(shell mkdir -p $(TMP_DIR))
endif
# set the version number. you should not need to do this
# for the majority of scenarios.
ifeq ($(origin VERSION), undefined)
VERSION := $(shell git describe --dirty --always --tags | sed 's/-/./g')
endif
# Check if the tree is dirty. default to dirty
GIT_TREE_STATE:="dirty"
ifeq (, $(shell git status --porcelain 2>/dev/null))
GIT_TREE_STATE="clean"
endif
GIT_COMMIT:=$(shell git rev-parse HEAD)
# The OS must be linux when building docker images
PLATFORMS ?= linux_amd64 linux_arm64
# The OS can be linux/windows/darwin when building binaries
# PLATFORMS ?= darwin_amd64 windows_amd64 linux_amd64 linux_arm64
# Set a specific PLATFORM
ifeq ($(origin PLATFORM), undefined)
ifeq ($(origin GOOS), undefined)
GOOS := $(shell go env GOOS)
endif
ifeq ($(origin GOARCH), undefined)
GOARCH := $(shell go env GOARCH)
endif
PLATFORM := $(GOOS)_$(GOARCH)
# Use linux as the default OS when building images
IMAGE_PLAT := linux_$(GOARCH)
else
GOOS := $(word 1, $(subst _, ,$(PLATFORM)))
GOARCH := $(word 2, $(subst _, ,$(PLATFORM)))
IMAGE_PLAT := $(PLATFORM)
endif
COMMA := ,
SPACE :=
SPACE +=
================================================
FILE: build/lib/create-manifest.sh
================================================
#!/usr/bin/env bash
#
# Tencent is pleased to support the open source community by making TKEStack
# available.
#
# Copyright (C) 2012-2023 Tencent. All Rights Reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may not use
# this file except in compliance with the License. You may obtain a copy of the
# License at
#
# https://opensource.org/licenses/Apache-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OF ANY KIND, either express or implied. See the License for the
# specific language governing permissions and limitations under the License.
#
set -o errexit
set -o nounset
set -o pipefail
REGISTRY_PREFIX=${REGISTRY_PREFIX:-"tkestack"}
PLATFORMS=${PLATFORMS:-"linux_amd64 linux_arm64"}
if [ -z ${IMAGE} ]; then
echo "Please provide IMAGE."
exit 1
fi
if [ -z ${VERSION} ]; then
echo "Please provide VERSION."
exit 1
fi
rm -rf ${HOME}/.docker/manifests/docker.io_${REGISTRY_PREFIX}_${IMAGE}-${VERSION}
DES_REGISTRY=${REGISTRY_PREFIX}/${IMAGE}
for platform in ${PLATFORMS}; do
os=${platform%_*}
arch=${platform#*_}
variant=""
if [ ${arch} == "arm64" ]; then
variant="--variant v8"
fi
docker manifest create --amend ${DES_REGISTRY}:${VERSION} \
${DES_REGISTRY}-${arch}:${VERSION}
docker manifest annotate ${DES_REGISTRY}:${VERSION} \
${DES_REGISTRY}-${arch}:${VERSION} \
--os ${os} --arch ${arch} ${variant}
done
docker manifest push --purge ${DES_REGISTRY}:${VERSION}
================================================
FILE: build/lib/docker-buildx.mk
================================================
# Tencent is pleased to support the open source community by making TKEStack
# available.
#
# Copyright (C) 2012-2023 Tencent. All Rights Reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may not use
# this file except in compliance with the License. You may obtain a copy of the
# License at
#
# https://opensource.org/licenses/Apache-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OF ANY KIND, either express or implied. See the License for the
# specific language governing permissions and limitations under the License.
# ==============================================================================
################################################
## Makefile helper functions for docker buildx
## Please set VERSION and WORK_DIR before use
## Example: VERSION=$(VERSION) WORK_DIR=$(Dockerfile_DIR) make docker.buildx.linux_amd64.keepalived
################################################
DOCKER := docker
DOCKER_SUPPORTED_API_VERSION ?= 1.40
DOCKER_VERSION ?= 19.03
REGISTRY_PREFIX ?= tkestack
EXTRA_ARGS ?=
_DOCKER_BUILD_EXTRA_ARGS :=
ifdef HTTP_PROXY
_DOCKER_BUILD_EXTRA_ARGS += --build-arg HTTP_PROXY=${HTTP_PROXY}
endif
ifneq ($(EXTRA_ARGS), )
_DOCKER_BUILD_EXTRA_ARGS += $(EXTRA_ARGS)
endif
.PHONY: docker.verify
docker.verify:
$(eval API_VERSION := $(shell $(DOCKER) version | grep -E 'API version: {6}[0-9]' | awk '{print $$3} END { if (NR==0) print 0}' ))
$(eval PASS := $(shell echo "$(API_VERSION) >= $(DOCKER_SUPPORTED_API_VERSION)" | bc))
@if [ $(PASS) -ne 1 ]; then \
$(DOCKER) -v ;\
echo "Unsupported docker version. Docker API version should be greater than $(DOCKER_SUPPORTED_API_VERSION) (Or docker version: $(DOCKER_VERSION))"; \
exit 1; \
fi
.PHONY: docker.buildx.%
docker.buildx.%: docker.verify
$(eval IMAGE := $(word 2,$(subst ., ,$*)))
$(eval PLATFORM := $(word 1,$(subst ., ,$*)))
$(eval OS := $(word 1,$(subst _, ,$(PLATFORM))))
$(eval ARCH := $(word 2,$(subst _, ,$(PLATFORM))))
$(eval IMAGE_PLAT := $(subst _,/,$(PLATFORM)))
$(eval IMAGE_NAME := $(REGISTRY_PREFIX)/$(IMAGE)-$(ARCH):$(VERSION))
@echo "===========> Building docker image $(IMAGE) $(VERSION) for $(IMAGE_PLAT)"
DOCKER_CLI_EXPERIMENTAL=enabled $(DOCKER) buildx build --pull --platform $(IMAGE_PLAT) --load \
-t $(IMAGE_NAME) $(_DOCKER_BUILD_EXTRA_ARGS) $(WORK_DIR)
.PHONY: docker.build.%
docker.build.%: docker.verify
$(eval IMAGE := $(word 2,$(subst ., ,$*)))
$(eval PLATFORM := $(word 1,$(subst ., ,$*)))
$(eval OS := $(word 1,$(subst _, ,$(PLATFORM))))
$(eval ARCH := $(word 2,$(subst _, ,$(PLATFORM))))
$(eval IMAGE_PLAT := $(subst _,/,$(PLATFORM)))
$(eval IMAGE_NAME := $(REGISTRY_PREFIX)/$(IMAGE)-$(ARCH):$(VERSION))
@echo "===========> Building docker image $(IMAGE) $(VERSION) for $(IMAGE_PLAT)"
$(eval BUILD_SUFFIX := $(_DOCKER_BUILD_EXTRA_ARGS) --pull -t $(REGISTRY_PREFIX)/$(IMAGE)-$(ARCH):$(VERSION) $(WORK_DIR))
$(DOCKER) build --platform $(IMAGE_PLAT) $(BUILD_SUFFIX)
.PHONY: docker.push.%
docker.push.%: docker.build.%
@echo "===========> Pushing image $(IMAGE_NAME)"
$(DOCKER) push $(IMAGE_NAME)
.PHONY: docker.manifest.%
docker.manifest.%: export DOCKER_CLI_EXPERIMENTAL := enabled
docker.manifest.%: docker.push.% docker.manifest.remove.%
$(eval MANIFEST_NAME := $(REGISTRY_PREFIX)/$(IMAGE):$(VERSION))
@echo "===========> Pushing manifest $(MANIFEST_NAME) and then remove the local manifest list"
@$(DOCKER) manifest create $(MANIFEST_NAME) \
$(IMAGE_NAME)
@$(DOCKER) manifest annotate $(MANIFEST_NAME) \
$(IMAGE_NAME) \
--os $(OS) --arch ${ARCH}
@$(DOCKER) manifest push --purge $(MANIFEST_NAME)
# Docker cli has a bug: https://github.com/docker/cli/issues/954
# If you find your manifests were not updated,
# Please manually delete them in $HOME/.docker/manifests/
# and re-run.
.PHONY: docker.manifest.remove.%
docker.manifest.remove.%:
@rm -rf ${HOME}/.docker/manifests/docker.io_$(REGISTRY_PREFIX)_$(IMAGE)-$(VERSION)
================================================
FILE: build/lib/gen.mk
================================================
# Tencent is pleased to support the open source community by making TKEStack
# available.
#
# Copyright (C) 2012-2023 Tencent. All Rights Reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may not use
# this file except in compliance with the License. You may obtain a copy of the
# License at
#
# https://opensource.org/licenses/Apache-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OF ANY KIND, either express or implied. See the License for the
# specific language governing permissions and limitations under the License.
# set the kubernetes apimachinery package dir
K8S_APIMACHINERY_DIR = $(shell go list -f '{{ .Dir }}' -m k8s.io/apimachinery)
# set the kubernetes api package dir
K8S_API_DIR = $(shell go list -f '{{ .Dir }}' -m k8s.io/api)
# set the gogo protobuf package dir
GOGO_PROTOBUF_DIR = $(shell go list -f '{{ .Dir }}' -m github.com/gogo/protobuf)
EXT_PB_APIS = "k8s.io/api/core/v1 k8s.io/api/apps/v1"
# set the code generator image version
CODE_GENERATOR_VERSION := v1.21.3
CONTROLLER_GEN_VERSION := v0.6.2
.PHONY: gen.run
gen.run: gen.api gen.crd
# ==============================================================================
# Generator
.PHONY: gen.api
gen.api:
@$(DOCKER) run -it --rm \
-v $(ROOT_DIR):/go/src/$(ROOT_PACKAGE) \
-e EXT_PB_APIS=$(EXT_PB_APIS)\
$(REGISTRY_PREFIX)/code-generator:$(CODE_GENERATOR_VERSION) \
/root/code.sh \
all \
$(ROOT_PACKAGE)/pkg/generated \
$(ROOT_PACKAGE)/pkg/apis \
$(ROOT_PACKAGE)/pkg/apis \
"kstone:v1alpha1 kstone:v1alpha2"
gen.crd:
@$(DOCKER) run -it --rm \
-v $(ROOT_DIR):/go/src/$(ROOT_PACKAGE) \
-w /go/src/$(ROOT_PACKAGE) \
$(REGISTRY_PREFIX)/controller-gen:$(CONTROLLER_GEN_VERSION) \
controller-gen \
crd paths=/go/src/$(ROOT_PACKAGE)/pkg/apis/kstone/v1alpha2/... output:crd:dir=/go/src/$(ROOT_PACKAGE)/deploy/crds output:stdout
================================================
FILE: build/lib/golang.mk
================================================
# Tencent is pleased to support the open source community by making TKEStack
# available.
#
# Copyright (C) 2012-2023 Tencent. All Rights Reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may not use
# this file except in compliance with the License. You may obtain a copy of the
# License at
#
# https://opensource.org/licenses/Apache-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OF ANY KIND, either express or implied. See the License for the
# specific language governing permissions and limitations under the License.
# ==============================================================================
# Makefile helper functions for golang
#
GO := go
GO_SUPPORTED_VERSIONS ?= 1.13|1.14|1.15|1.16|1.17|1.18
GO_LDFLAGS += -X $(VERSION_PACKAGE).GitVersion=$(VERSION) \
-X $(VERSION_PACKAGE).GitCommit=$(GIT_COMMIT) \
-X $(VERSION_PACKAGE).GitTreeState=$(GIT_TREE_STATE) \
-X $(VERSION_PACKAGE).BuildDate=$(shell date -u +'%Y-%m-%dT%H:%M:%SZ') \
ifeq ($(GOOS),windows)
GO_OUT_EXT := .exe
endif
ifeq ($(ROOT_PACKAGE),)
$(error the variable ROOT_PACKAGE must be set prior to including golang.mk)
endif
GOPATH := $(shell go env GOPATH)
ifeq ($(origin GOBIN), undefined)
GOBIN := $(GOPATH)/bin
endif
COMMANDS ?= $(filter-out %.md, $(wildcard ${ROOT_DIR}/cmd/*))
BINS ?= $(foreach cmd,${COMMANDS},$(notdir ${cmd}))
ifeq (${COMMANDS},)
$(error Could not determine COMMANDS, set ROOT_DIR or run in source dir)
endif
ifeq (${BINS},)
$(error Could not determine BINS, set ROOT_DIR or run in source dir)
endif
.PHONY: go.build.verify
go.build.verify:
ifneq ($(shell $(GO) version | grep -q -E '\bgo($(GO_SUPPORTED_VERSIONS))\b' && echo 0 || echo 1), 0)
$(error unsupported go version. Please make install one of the following supported version: '$(GO_SUPPORTED_VERSIONS)')
endif
.PHONY: go.build.%
go.build.%:
$(eval COMMAND := $(word 2,$(subst ., ,$*)))
$(eval PLATFORM := $(word 1,$(subst ., ,$*)))
$(eval OS := $(word 1,$(subst _, ,$(PLATFORM))))
$(eval ARCH := $(word 2,$(subst _, ,$(PLATFORM))))
@echo "===========> Building binary $(COMMAND) $(VERSION) for $(OS) $(ARCH)"
@mkdir -p $(OUTPUT_DIR)/$(OS)/$(ARCH)
@CGO_ENABLED=0 GOOS=$(OS) GOARCH=$(ARCH) $(GO) build -o $(OUTPUT_DIR)/$(OS)/$(ARCH)/$(COMMAND)$(GO_OUT_EXT) -ldflags "$(GO_LDFLAGS)" $(ROOT_PACKAGE)/cmd/$(COMMAND)
.PHONY: go.build
go.build: go.build.verify $(addprefix go.build., $(addprefix $(PLATFORM)., $(BINS)))
.PHONY: go.build.multiarch
go.build.multiarch: go.build.verify $(foreach p,$(PLATFORMS),$(addprefix go.build., $(addprefix $(p)., $(BINS))))
.PHONY: go.clean
go.clean:
@echo "===========> Cleaning all build output"
@rm -rf $(OUTPUT_DIR)
.PHONY: go.lint.verify
go.lint.verify: go.build.verify
ifeq (,$(shell which golangci-lint))
@echo "===========> Installing golangci lint"
@GO111MODULE=off $(GO) get -u github.com/golangci/golangci-lint/cmd/golangci-lint
endif
.PHONY: go.lint
go.lint: go.lint.verify
@echo "===========> Run golangci to lint source codes"
@golangci-lint run $(ROOT_DIR)/...
.PHONY: go.test.verify
go.test.verify: go.build.verify
ifeq ($(shell which go-junit-report), )
@echo "===========> Installing go-junit-report"
@GO111MODULE=off $(GO) get -u github.com/jstemmer/go-junit-report
endif
.PHONY: go.test
go.test: go.test.verify
@echo "===========> Run unit test"
$(GO) test -count=1 -timeout=10m -short -v `go list ./...|grep -v tkestack.io/kstone/test` 2>&1 | tee >(go-junit-report --set-exit-code >$(OUTPUT_DIR)/report.xml)
.PHONY: go.e2e
go.e2e:
@echo "===========> Run e2e test"
$(GO) test -v tkestack.io/kstone/test/e2e/...
================================================
FILE: build/lib/image.mk
================================================
# Tencent is pleased to support the open source community by making TKEStack
# available.
#
# Copyright (C) 2012-2023 Tencent. All Rights Reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may not use
# this file except in compliance with the License. You may obtain a copy of the
# License at
#
# https://opensource.org/licenses/Apache-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OF ANY KIND, either express or implied. See the License for the
# specific language governing permissions and limitations under the License.
# ==============================================================================
# Makefile helper functions for docker image
#
DOCKER := docker
DOCKER_SUPPORTED_API_VERSION ?= 1.32
REGISTRY_PREFIX ?= tkestack
BASE_IMAGE = alpine:3.14
EXTRA_ARGS ?=
_DOCKER_BUILD_EXTRA_ARGS :=
ifdef HTTP_PROXY
_DOCKER_BUILD_EXTRA_ARGS += --build-arg HTTP_PROXY=${HTTP_PROXY}
endif
ifneq ($(EXTRA_ARGS), )
_DOCKER_BUILD_EXTRA_ARGS += $(EXTRA_ARGS)
endif
# Determine image files by looking into build/docker/*/Dockerfile
IMAGES_DIR ?= $(wildcard ${ROOT_DIR}/build/docker/*)
# Determine images names by stripping out the dir names
IMAGES ?= $(filter-out tools,$(foreach image,${IMAGES_DIR},$(notdir ${image})))
ifeq (${IMAGES},)
$(error Could not determine IMAGES, set ROOT_DIR or run in source dir)
endif
.PHONY: image.verify
image.verify:
$(eval API_VERSION := $(shell $(DOCKER) version | grep -E 'API version: {1,6}[0-9]' | head -n1 | awk '{print $$3} END { if (NR==0) print 0}' ))
$(eval PASS := $(shell echo "$(API_VERSION) > $(DOCKER_SUPPORTED_API_VERSION)" | bc))
@if [ $(PASS) -ne 1 ]; then \
$(DOCKER) -v ;\
echo "Unsupported docker version. Docker API version should be greater than $(DOCKER_SUPPORTED_API_VERSION)"; \
exit 1; \
fi
.PHONY: image.daemon.verify
image.daemon.verify:
$(eval PASS := $(shell $(DOCKER) version | grep -q -E 'Experimental: {1,5}true' && echo 1 || echo 0))
@if [ $(PASS) -ne 1 ]; then \
echo "Experimental features of Docker daemon is not enabled. Please add \"experimental\": true in '/etc/docker/daemon.json' and then restart Docker daemon."; \
exit 1; \
fi
.PHONY: image.build
image.build: image.verify go.build.verify $(addprefix image.build., $(addprefix $(IMAGE_PLAT)., $(IMAGES)))
.PHONY: image.build.multiarch
image.build.multiarch: image.verify go.build.verify $(foreach p,$(PLATFORMS),$(addprefix image.build., $(addprefix $(p)., $(IMAGES))))
.PHONY: image.build.%
image.build.%: go.build.%
$(eval IMAGE := $(COMMAND))
$(eval IMAGE_PLAT := $(subst _,/,$(PLATFORM)))
@echo "===========> Building docker image $(IMAGE) $(VERSION) for $(IMAGE_PLAT)"
@mkdir -p $(TMP_DIR)/$(IMAGE)
@cat $(ROOT_DIR)/build/docker/$(IMAGE)/Dockerfile\
| sed "s#BASE_IMAGE#$(BASE_IMAGE)#g" >$(TMP_DIR)/$(IMAGE)/Dockerfile
@cp $(OUTPUT_DIR)/$(IMAGE_PLAT)/$(IMAGE) $(TMP_DIR)/$(IMAGE)/
@DST_DIR=$(TMP_DIR)/$(IMAGE) $(ROOT_DIR)/build/docker/$(IMAGE)/build.sh 2>/dev/null || true
$(eval BUILD_SUFFIX := $(_DOCKER_BUILD_EXTRA_ARGS) --pull -t $(REGISTRY_PREFIX)/$(IMAGE)-$(ARCH):$(VERSION) $(TMP_DIR)/$(IMAGE))
#$(MAKE) image.daemon.verify
$(DOCKER) build --platform $(IMAGE_PLAT) $(BUILD_SUFFIX)
@rm -rf $(TMP_DIR)/$(IMAGE)
.PHONY: image.push
image.push: image.verify go.build.verify $(addprefix image.push., $(addprefix $(IMAGE_PLAT)., $(IMAGES)))
.PHONY: image.push.multiarch
image.push.multiarch: image.verify go.build.verify $(foreach p,$(PLATFORMS),$(addprefix image.push., $(addprefix $(p)., $(IMAGES))))
.PHONY: image.push.%
image.push.%: image.build.%
@echo "===========> Pushing image $(IMAGE) $(VERSION) to $(REGISTRY_PREFIX)"
$(DOCKER) push $(REGISTRY_PREFIX)/$(IMAGE)-$(ARCH):$(VERSION)
.PHONY: image.manifest.push
image.manifest.push: export DOCKER_CLI_EXPERIMENTAL := enabled
image.manifest.push: image.verify go.build.verify \
$(addprefix image.manifest.push., $(addprefix $(IMAGE_PLAT)., $(IMAGES)))
.PHONY: image.manifest.push.%
image.manifest.push.%: image.push.% image.manifest.remove.%
@echo "===========> Pushing manifest $(IMAGE) $(VERSION) to $(REGISTRY_PREFIX) and then remove the local manifest list"
@$(DOCKER) manifest create $(REGISTRY_PREFIX)/$(IMAGE):$(VERSION) \
$(REGISTRY_PREFIX)/$(IMAGE)-$(ARCH):$(VERSION)
@$(DOCKER) manifest annotate $(REGISTRY_PREFIX)/$(IMAGE):$(VERSION) \
$(REGISTRY_PREFIX)/$(IMAGE)-$(ARCH):$(VERSION) \
--os $(OS) --arch ${ARCH}
@$(DOCKER) manifest push --purge $(REGISTRY_PREFIX)/$(IMAGE):$(VERSION)
# Docker cli has a bug: https://github.com/docker/cli/issues/954
# If you find your manifests were not updated,
# Please manually delete them in $HOME/.docker/manifests/
# and re-run.
.PHONY: image.manifest.remove.%
image.manifest.remove.%:
@rm -rf ${HOME}/.docker/manifests/docker.io_$(REGISTRY_PREFIX)_$(IMAGE)-$(VERSION)
.PHONY: image.manifest.push.multiarch
image.manifest.push.multiarch: image.push.multiarch $(addprefix image.manifest.push.multiarch., $(IMAGES))
.PHONY: image.manifest.push.multiarch.%
image.manifest.push.multiarch.%:
@echo "===========> Pushing manifest $* $(VERSION) to $(REGISTRY_PREFIX) and then remove the local manifest list"
REGISTRY_PREFIX=$(REGISTRY_PREFIX) PLATFROMS="$(PLATFORMS)" IMAGE=$* VERSION=$(VERSION) DOCKER_CLI_EXPERIMENTAL=enabled \
$(ROOT_DIR)/build/lib/create-manifest.sh
================================================
FILE: build/script/openapi.sh
================================================
#!/usr/bin/env bash
#
# Tencent is pleased to support the open source community by making TKEStack
# available.
#
# Copyright (C) 2012-2023 Tencent. All Rights Reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may not use
# this file except in compliance with the License. You may obtain a copy of the
# License at
#
# https://opensource.org/licenses/Apache-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OF ANY KIND, either express or implied. See the License for the
# specific language governing permissions and limitations under the License.
#
set -o errexit
set -o nounset
set -o pipefail
API_PACKAGE="tkestack.io/kstone/pkg/apis"
API_MACHINERY_DIR=$(go list -f '{{ .Dir }}' -m k8s.io/apimachinery)
API_DIR=$(go list -f '{{ .Dir }}' -m k8s.io/api)
# kubernetes api machinery
api_machinery=$(
grep --color=never -rl '+k8s:openapi-gen=' "${API_MACHINERY_DIR}" | \
xargs -n1 dirname | \
sed "s,^${API_MACHINERY_DIR}/,k8s.io/apimachinery/," | \
sort -u
)
# kubernetes api
api=$(
grep --color=never --exclude-dir=origin -rl '+k8s:openapi-gen=' "${API_DIR}" | \
xargs -n1 dirname | \
sed "s,^${API_DIR}/,k8s.io/api/," | \
sort -u
)
input_dirs=(
${api_machinery}
${api}
"${API_PACKAGE}"/kstone/v1alpha2
)
echo "$(IFS=,; echo "${input_dirs[*]}")"
================================================
FILE: charts/.gitignore
================================================
# File created using '.gitignore Generator' for Visual Studio Code: https://bit.ly/vscode-gig
# Created by https://www.toptal.com/developers/gitignore/api/visualstudiocode,macos,intellij+all
# Edit at https://www.toptal.com/developers/gitignore?templates=visualstudiocode,macos,intellij+all
### Intellij+all ###
# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio, WebStorm and Rider
# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839
# User-specific stuff
.idea/**/workspace.xml
.idea/**/tasks.xml
.idea/**/usage.statistics.xml
.idea/**/dictionaries
.idea/**/shelf
# Generated files
.idea/**/contentModel.xml
# Sensitive or high-churn files
.idea/**/dataSources/
.idea/**/dataSources.ids
.idea/**/dataSources.local.xml
.idea/**/sqlDataSources.xml
.idea/**/dynamic.xml
.idea/**/uiDesigner.xml
.idea/**/dbnavigator.xml
# Gradle
.idea/**/gradle.xml
.idea/**/libraries
# Gradle and Maven with auto-import
# When using Gradle or Maven with auto-import, you should exclude module files,
# since they will be recreated, and may cause churn. Uncomment if using
# auto-import.
# .idea/artifacts
# .idea/compiler.xml
# .idea/jarRepositories.xml
# .idea/modules.xml
# .idea/*.iml
# .idea/modules
# *.iml
# *.ipr
# CMake
cmake-build-*/
# Mongo Explorer plugin
.idea/**/mongoSettings.xml
# File-based project format
*.iws
# IntelliJ
out/
# mpeltonen/sbt-idea plugin
.idea_modules/
# JIRA plugin
atlassian-ide-plugin.xml
# Cursive Clojure plugin
.idea/replstate.xml
# Crashlytics plugin (for Android Studio and IntelliJ)
com_crashlytics_export_strings.xml
crashlytics.properties
crashlytics-build.properties
fabric.properties
# Editor-based Rest Client
.idea/httpRequests
# Android studio 3.1+ serialized cache file
.idea/caches/build_file_checksums.ser
### Intellij+all Patch ###
# Ignores the whole .idea folder and all .iml files
# See https://github.com/joeblau/gitignore.io/issues/186 and https://github.com/joeblau/gitignore.io/issues/360
.idea/
# Reason: https://github.com/joeblau/gitignore.io/issues/186#issuecomment-249601023
*.iml
modules.xml
.idea/misc.xml
*.ipr
# Sonarlint plugin
.idea/sonarlint
### macOS ###
# General
.DS_Store
.AppleDouble
.LSOverride
# Icon must end with two \r
Icon
# Thumbnails
._*
# Files that might appear in the root of a volume
.DocumentRevisions-V100
.fseventsd
.Spotlight-V100
.TemporaryItems
.Trashes
.VolumeIcon.icns
.com.apple.timemachine.donotpresent
# Directories potentially created on remote AFP share
.AppleDB
.AppleDesktop
Network Trash Folder
Temporary Items
.apdisk
### VisualStudioCode ###
.vscode/*
!.vscode/settings.json
!.vscode/tasks.json
!.vscode/launch.json
!.vscode/extensions.json
*.code-workspace
### VisualStudioCode Patch ###
# Ignore all local history of files
.history
.ionide
# End of https://www.toptal.com/developers/gitignore/api/visualstudiocode,macos,intellij+all
# Custom rules (everything added below won't be overriden by 'Generate .gitignore File' if you use 'Update' option)
helmfile/config
================================================
FILE: charts/.helmignore
================================================
# 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
*.orig
*~
# Various IDEs
.project
.idea/
*.tmproj
.vscode/
================================================
FILE: charts/Chart.yaml
================================================
apiVersion: v2
name: kstone
description: A Helm chart for Kubernetes
# A chart can be either an 'application' or a 'library' chart.
#
# Application charts are a collection of templates that can be packaged into versioned archives
# to be deployed.
#
# Library charts provide useful utilities or functions for the chart developer. They're included as
# a dependency of application charts to inject those utilities and functions into the rendering
# pipeline. Library charts do not define any templates and therefore cannot be deployed.
type: application
# This is the chart version. This version number should be incremented each time you make changes
# to the chart and its templates, including the app version.
# Versions are expected to follow Semantic Versioning (https://semver.org/)
version: 0.1.0
# This is the version number of the application being deployed. This version number should be
# incremented each time you make changes to the application. Versions are not expected to
# follow Semantic Versioning. They should reflect the version the application is using.
# It is recommended to use it with quotes.
appVersion: "1.16.0"
================================================
FILE: charts/README.md
================================================
# Kstone Installation
[中文](README_CN.md)
## 1 Preparation
- Prerequisites
- Kubernetes version is between 1.14 and 1.20.
- The version of Prometheus Operator is v0.49.0.
- Apply for a cluster from [TKE](https://cloud.tencent.com/product/tke) or install [Minikube](https://minikube.sigs.k8s.io/docs/start/).
- Kstone supports deploy in various cloud vendors and bare k8s cluster environments
- In the environments mentioned above, only the corresponding ingress rules need to be configured.
- Requirements:
- For production environment (recommended): Worker >= 4 vCPU 8 GB of Memory.
- For test environment (minimum): Worker >= 2 vCPU 2 GB of Memory.
- Can access the managed etcd.
## 2 Install on TKE
[Kstone installation on TKE](../docs/installation/tke.md)
## 3 Install on Minikube
[Kstone installation on Minikube(Mac OS X)](../docs/installation/minikube-macos.md)
[Kstone installation on Minikube(Linux amd64)](../docs/installation/minikube-amd64.md)
## 4 Install on the cluster created by kubeadm
[Kstone installation on the cluster created by kubeadm](../docs/installation/kubeadm_en.md)
================================================
FILE: charts/README_CN.md
================================================
# 安装Kstone
[英文](./)
## 1 资源准备
- 前置条件
- Kubernetes集群版本在1.14和1.20之间。
- Prometheus-Operator版本为v0.49.0。
- 申请 [TKE](https://cloud.tencent.com/product/tke) 集群或搭建 [minikube](https://minikube.sigs.k8s.io/docs/start/) 集群。
- Kstone 支持部署在多云或原生 K8s 集群中
- 只需要安装并配置相对应的 Ingress 转发规则即可
- 环境要求:
- 生产环境配置要求(推荐):Worker 4C8G以上配置。
- 体验环境配置要求(最低):Worker 2C2G以上配置。
- 可访问待管理的目标etcd。
## 2 在 TKE 集群安装 Kstone
[Kstone installation on TKE](../docs/installation/tke.md)
## 3 在 Minikube 集群安装 Kstone
[Kstone installation on Minikube(Mac OS X)](../docs/installation/minikube-macos.md)
[Kstone installation on Minikube(Linux amd64)](../docs/installation/minikube-amd64.md)
## 4 在 kubeadm 集群安装 Kstone
[Kstone installation on the cluster created by kubeadm](../docs/installation/kubeadm_en.md)
================================================
FILE: charts/charts/backup-operator/.helmignore
================================================
# 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
*.orig
*~
# Various IDEs
.project
.idea/
*.tmproj
.vscode/
================================================
FILE: charts/charts/backup-operator/Chart.yaml
================================================
apiVersion: v2
name: backup-operator
description: A Helm chart for etcd backup operator of kstone
# A chart can be either an 'application' or a 'library' chart.
#
# Application charts are a collection of templates that can be packaged into versioned archives
# to be deployed.
#
# Library charts provide useful utilities or functions for the chart developer. They're included as
# a dependency of application charts to inject those utilities and functions into the rendering
# pipeline. Library charts do not define any templates and therefore cannot be deployed.
type: application
# This is the chart version. This version number should be incremented each time you make changes
# to the chart and its templates, including the app version.
# Versions are expected to follow Semantic Versioning (https://semver.org/)
version: 1.0.4
# This is the version number of the application being deployed. This version number should be
# incremented each time you make changes to the application. Versions are not expected to
# follow Semantic Versioning. They should reflect the version the application is using.
# It is recommended to use it with quotes.
appVersion: "v1.0.4"
================================================
FILE: charts/charts/backup-operator/templates/_helpers.tpl
================================================
{{/*
Expand the name of the chart.
*/}}
{{- define "backup-operator.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 "backup-operator.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 "backup-operator.chart" -}}
{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" }}
{{- end }}
{{/*
Common labels
*/}}
{{- define "backup-operator.labels" -}}
helm.sh/chart: {{ include "backup-operator.chart" . }}
{{ include "backup-operator.selectorLabels" . }}
{{- if .Chart.AppVersion }}
app.kubernetes.io/version: {{ .Chart.AppVersion | quote }}
{{- end }}
app.kubernetes.io/managed-by: {{ .Release.Service }}
{{- end }}
{{/*
Selector labels
*/}}
{{- define "backup-operator.selectorLabels" -}}
app.kubernetes.io/name: {{ include "backup-operator.name" . }}
app.kubernetes.io/instance: {{ .Release.Name }}
{{- end }}
================================================
FILE: charts/charts/backup-operator/templates/deployment.yaml
================================================
apiVersion: apps/v1
kind: Deployment
metadata:
name: {{ include "backup-operator.fullname" . }}
labels:
{{- include "backup-operator.labels" . | nindent 4 }}
spec:
replicas: {{ .Values.replicaCount }}
selector:
matchLabels:
{{- include "backup-operator.selectorLabels" . | nindent 6 }}
template:
metadata:
{{- with .Values.podAnnotations }}
annotations:
{{- toYaml . | nindent 8 }}
{{- end }}
labels:
{{- include "backup-operator.selectorLabels" . | nindent 8 }}
spec:
{{- with .Values.imagePullSecrets }}
imagePullSecrets:
{{- toYaml . | nindent 8 }}
{{- end }}
serviceAccountName: {{ .Values.serviceAccountName }}
securityContext:
{{- toYaml .Values.podSecurityContext | nindent 8 }}
containers:
- name: {{ .Chart.Name }}
securityContext:
{{- toYaml .Values.securityContext | nindent 12 }}
image: "{{ .Values.image.repository }}:{{ .Values.image.tag | default .Chart.AppVersion }}"
imagePullPolicy: {{ .Values.image.pullPolicy }}
command:
- etcd-backup-operator
args:
- --etcd-client-cert-file=client.pem
- --etcd-client-key-file=client-key.pem
- --etcd-client-ca-file=ca.pem
env:
- name: MY_POD_NAMESPACE
valueFrom:
fieldRef:
apiVersion: v1
fieldPath: metadata.namespace
- name: MY_POD_NAME
valueFrom:
fieldRef:
apiVersion: v1
fieldPath: metadata.name
resources:
{{- if eq .Values.global.env "production" }}
{{- toYaml .Values.prodResources | nindent 12 }}
{{- else }}
{{- toYaml .Values.testResources | nindent 12 }}
{{- end }}
{{- with .Values.nodeSelector }}
nodeSelector:
{{- toYaml . | nindent 8 }}
{{- end }}
{{- with .Values.affinity }}
affinity:
{{- toYaml . | nindent 8 }}
{{- end }}
{{- with .Values.tolerations }}
tolerations:
{{- toYaml . | nindent 8 }}
{{- end }}
================================================
FILE: charts/charts/backup-operator/values.yaml
================================================
# Default values for backup-operator.
# This is a YAML-formatted file.
# Declare variables to be passed into your templates.
replicaCount: 1
image:
repository: tkestack/etcd-backup-operator
pullPolicy: IfNotPresent
# Overrides the image tag whose default is the chart appVersion.
tag: "v1.0.6-infra.2"
imagePullSecrets: []
nameOverride: ""
fullnameOverride: ""
podAnnotations: {}
podSecurityContext: {}
# fsGroup: 2000
securityContext: {}
# capabilities:
# drop:
# - ALL
# readOnlyRootFilesystem: true
# runAsNonRoot: true
# runAsUser: 1000
prodResources:
limits:
cpu: 2
memory: 4G
requests:
cpu: 500m
memory: 512Mi
testResources:
limits:
cpu: 1
memory: 2G
requests:
cpu: 100m
memory: 50Mi
nodeSelector: {}
tolerations: []
affinity: {}
serviceAccountName: kstone
================================================
FILE: charts/charts/dashboard/.helmignore
================================================
# 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
*.orig
*~
# Various IDEs
.project
.idea/
*.tmproj
.vscode/
================================================
FILE: charts/charts/dashboard/Chart.yaml
================================================
apiVersion: v2
name: dashboard
description: A Helm chart for Kubernetes
# A chart can be either an 'application' or a 'library' chart.
#
# Application charts are a collection of templates that can be packaged into versioned archives
# to be deployed.
#
# Library charts provide useful utilities or functions for the chart developer. They're included as
# a dependency of application charts to inject those utilities and functions into the rendering
# pipeline. Library charts do not define any templates and therefore cannot be deployed.
type: application
# This is the chart version. This version number should be incremented each time you make changes
# to the chart and its templates, including the app version.
# Versions are expected to follow Semantic Versioning (https://semver.org/)
version: 0.1.0
# This is the version number of the application being deployed. This version number should be
# incremented each time you make changes to the application. Versions are not expected to
# follow Semantic Versioning. They should reflect the version the application is using.
# It is recommended to use it with quotes.
appVersion: "1.16.0"
================================================
FILE: charts/charts/dashboard/templates/_helpers.tpl
================================================
{{/*
Expand the name of the chart.
*/}}
{{- define "dashboard.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 "dashboard.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 "dashboard.chart" -}}
{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" }}
{{- end }}
{{/*
Common labels
*/}}
{{- define "dashboard.labels" -}}
helm.sh/chart: {{ include "dashboard.chart" . }}
{{ include "dashboard.selectorLabels" . }}
{{- if .Chart.AppVersion }}
app.kubernetes.io/version: {{ .Chart.AppVersion | quote }}
{{- end }}
app.kubernetes.io/managed-by: {{ .Release.Service }}
{{- end }}
{{/*
Selector labels
*/}}
{{- define "dashboard.selectorLabels" -}}
app.kubernetes.io/name: {{ include "dashboard.name" . }}
app.kubernetes.io/instance: {{ .Release.Name }}
{{- end }}
================================================
FILE: charts/charts/dashboard/templates/deployment.yaml
================================================
apiVersion: apps/v1
kind: Deployment
metadata:
name: {{ include "dashboard.fullname" . }}
labels:
{{- include "dashboard.labels" . | nindent 4 }}
spec:
replicas: {{ .Values.replicaCount }}
selector:
matchLabels:
{{- include "dashboard.selectorLabels" . | nindent 6 }}
template:
metadata:
{{- with .Values.podAnnotations }}
annotations:
{{- toYaml . | nindent 8 }}
{{- end }}
labels:
{{- include "dashboard.selectorLabels" . | nindent 8 }}
spec:
{{- with .Values.imagePullSecrets }}
imagePullSecrets:
{{- toYaml . | nindent 8 }}
{{- end }}
securityContext:
{{- toYaml .Values.podSecurityContext | nindent 8 }}
containers:
- name: {{ .Chart.Name }}
securityContext:
{{- toYaml .Values.securityContext | nindent 12 }}
image: "{{ .Values.image.repository }}:{{ .Values.image.tag | default .Chart.AppVersion }}"
imagePullPolicy: {{ .Values.image.pullPolicy }}
ports:
- name: http
containerPort: 80
protocol: TCP
resources:
{{- if eq .Values.global.env "production" }}
{{- toYaml .Values.prodResources | nindent 12 }}
{{- else }}
{{- toYaml .Values.testResources | nindent 12 }}
{{- end }}
{{- with .Values.nodeSelector }}
nodeSelector:
{{- toYaml . | nindent 8 }}
{{- end }}
{{- with .Values.affinity }}
affinity:
{{- toYaml . | nindent 8 }}
{{- end }}
{{- with .Values.tolerations }}
tolerations:
{{- toYaml . | nindent 8 }}
{{- end }}
================================================
FILE: charts/charts/dashboard/templates/service.yaml
================================================
apiVersion: v1
kind: Service
metadata:
name: {{ include "dashboard.fullname" . }}
labels:
{{- include "dashboard.labels" . | nindent 4 }}
spec:
type: {{ .Values.service.type }}
ports:
- port: {{ .Values.service.port }}
targetPort: http
protocol: TCP
name: http
selector:
{{- include "dashboard.selectorLabels" . | nindent 4 }}
================================================
FILE: charts/charts/dashboard/values.yaml
================================================
# Default values for dashboard.
# This is a YAML-formatted file.
# Declare variables to be passed into your templates.
replicaCount: 1
image:
repository: tkestack/kstone-dashboard
pullPolicy: IfNotPresent
# Overrides the image tag whose default is the chart appVersion.
tag: "v0.2.0-beta.1"
imagePullSecrets: []
nameOverride: ""
fullnameOverride: ""
podAnnotations: {}
podSecurityContext: {}
# fsGroup: 2000
securityContext: {}
# capabilities:
# drop:
# - ALL
# readOnlyRootFilesystem: true
# runAsNonRoot: true
# runAsUser: 1000
service:
type: NodePort
port: 80
prodResources:
limits:
cpu: 2
memory: 4G
requests:
cpu: 500m
memory: 512Mi
testResources:
limits:
cpu: 1
memory: 2G
requests:
cpu: 100m
memory: 50Mi
nodeSelector: {}
tolerations: []
affinity: {}
================================================
FILE: charts/charts/dashboard-api/.helmignore
================================================
# 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
*.orig
*~
# Various IDEs
.project
.idea/
*.tmproj
.vscode/
================================================
FILE: charts/charts/dashboard-api/Chart.yaml
================================================
apiVersion: v2
name: dashboard-api
description: A Helm chart for Kubernetes
# A chart can be either an 'application' or a 'library' chart.
#
# Application charts are a collection of templates that can be packaged into versioned archives
# to be deployed.
#
# Library charts provide useful utilities or functions for the chart developer. They're included as
# a dependency of application charts to inject those utilities and functions into the rendering
# pipeline. Library charts do not define any templates and therefore cannot be deployed.
type: application
# This is the chart version. This version number should be incremented each time you make changes
# to the chart and its templates, including the app version.
# Versions are expected to follow Semantic Versioning (https://semver.org/)
version: 0.1.0
# This is the version number of the application being deployed. This version number should be
# incremented each time you make changes to the application. Versions are not expected to
# follow Semantic Versioning. They should reflect the version the application is using.
# It is recommended to use it with quotes.
appVersion: "1.16.0"
================================================
FILE: charts/charts/dashboard-api/templates/_helpers.tpl
================================================
{{/*
Expand the name of the chart.
*/}}
{{- define "dashboard-api.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 "dashboard-api.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 "dashboard-api.chart" -}}
{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" }}
{{- end }}
{{/*
Common labels
*/}}
{{- define "dashboard-api.labels" -}}
helm.sh/chart: {{ include "dashboard-api.chart" . }}
{{ include "dashboard-api.selectorLabels" . }}
{{- if .Chart.AppVersion }}
app.kubernetes.io/version: {{ .Chart.AppVersion | quote }}
{{- end }}
app.kubernetes.io/managed-by: {{ .Release.Service }}
{{- end }}
{{/*
Selector labels
*/}}
{{- define "dashboard-api.selectorLabels" -}}
app.kubernetes.io/name: {{ include "dashboard-api.name" . }}
app.kubernetes.io/instance: {{ .Release.Name }}
{{- end }}
================================================
FILE: charts/charts/dashboard-api/templates/configmap.yaml
================================================
apiVersion: v1
data:
admin: $2y$10$dgolimSP5PywT3yMaRqppeA5GflVmyf/cWaL6bfmXVk6Rsjlmp0ui
kind: ConfigMap
metadata:
name: kstone-api-user
================================================
FILE: charts/charts/dashboard-api/templates/deployment.yaml
================================================
apiVersion: apps/v1
kind: Deployment
metadata:
name: {{ include "dashboard-api.fullname" . }}
labels:
{{- include "dashboard-api.labels" . | nindent 4 }}
spec:
replicas: {{ .Values.replicaCount }}
selector:
matchLabels:
{{- include "dashboard-api.selectorLabels" . | nindent 6 }}
template:
metadata:
{{- with .Values.podAnnotations }}
annotations:
{{- toYaml . | nindent 8 }}
{{- end }}
labels:
{{- include "dashboard-api.selectorLabels" . | nindent 8 }}
spec:
{{- with .Values.imagePullSecrets }}
imagePullSecrets:
{{- toYaml . | nindent 8 }}
{{- end }}
serviceAccountName: {{ .Values.serviceAccountName }}
securityContext:
{{- toYaml .Values.podSecurityContext | nindent 8 }}
containers:
- env:
- name: KUBE_TARGET
value: {{ .Values.kube.target }}
- name: KUBE_TOKEN
value: {{ .Values.kube.token }}
name: {{ .Chart.Name }}
securityContext:
{{- toYaml .Values.securityContext | nindent 12 }}
{{- if .Values.global.kstone.tag }}
image: "{{ .Values.image.repository }}:{{ .Values.global.kstone.tag }}"
{{- else }}
image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}"
{{- end }}
imagePullPolicy: {{ .Values.image.pullPolicy }}
ports:
- name: http
containerPort: 8080
protocol: TCP
resources:
{{- if eq .Values.global.env "production" }}
{{- toYaml .Values.prodResources | nindent 12 }}
{{- else }}
{{- toYaml .Values.testResources | nindent 12 }}
{{- end }}
volumeMounts:
- mountPath: /app/certs/
name: certs
readOnly: true
{{- with .Values.nodeSelector }}
nodeSelector:
{{- toYaml . | nindent 8 }}
{{- end }}
{{- with .Values.affinity }}
affinity:
{{- toYaml . | nindent 8 }}
{{- end }}
{{- with .Values.tolerations }}
tolerations:
{{- toYaml . | nindent 8 }}
{{- end }}
volumes:
- name: certs
secret:
defaultMode: 420
secretName: {{ include "dashboard-api.fullname" . }}-key
================================================
FILE: charts/charts/dashboard-api/templates/secret.yaml
================================================
apiVersion: v1
data:
private.key: LS0tLS1CRUdJTiBSU0EgUFJJVkFURSBLRVktLS0tLQpNSUlFcFFJQkFBS0NBUUVBeURuTHlyS0t4d1lhQVF1VDhSRVZ0bWR1VDYyV0xYTGIvUEs4bStJZG8yd3U1L1oxCmpCTVBIcWFzMjdabGlaeXF5bFVWZ3FsSUxNZUxPYlFtY0JvTUdGNkxuemVreHdEYVdmNTBRYW5JeTNSdFR4UVYKaEdIMnc0ZS8yQnI2NXlucUh6N0NZSy9VUHhWSWRTYWZaZ08vM0VGTWZVZVZRV0RWRWJCaTZWSW5hZzdsQjlRUQo2Q2tPTFM2ZFl5YXJnWWcrWWJZUkliVkVCNmNRTzNvcXJVTzR4OTlpZ3l3Z0Q3dlRReHdOMXB5eHVNbmlRYW5HCkREakludndTdUMxYTlUREdWc0ZXMzU5OUVoeGFuc3FUaUhvMm04YjJwNzdsWFFGYy9Qc1UwNTB6dDgxN1czTVEKbGlQRU5ycUhQTUpTNXhFQkhjdEdzb3Rtc3J6NmNIUklrclFLblFJREFRQUJBb0lCQVFDSDg0NW5aRkdNajUwSwpocVQrTXo2TjZxN2hGUmw2Wkpud3A1VGZOMm91YzU5cHkxUEhONDIxbnpDUndzZ3c1eHFrWlo5RVo5TGs3TnlnCjRxeVN3MnpoQXhsRWs1Q2p1dldIMDVsMm1HVUptRlU4TTRQa3JtdlNHaE51RmV1MUdDV3E3MzhtRFYxTk5CTk4KMEZxODl1RElHZUpvMGprSytrZlNTZlR2UGVRYlF5d3BPdVg3Wmp1RCtLOE9qRzlhWnpNOTYyUERoREJ2VlBCZQpKeXNqV0VqU0d5YWc3NjMza3Y0dWtPeDhycVBRLzJUdStIcElyQTljVXBnVDh6V0UycThxcHdVZzBHY0NuZ21mCnFsZjU1a1lzL1RhMW9iUjNxYVg2bWpKL2dFNlZyUzFpSTc1em5lbkh3Tmp6WExpaE5JL3ZkMXh1QnREV2JLTVUKK0M3bnpPZlZBb0dCQU9vaTNZM2luOGgrTjczYVdyWnIxQ29FNzBFWHg2dFZwdnBTUHJyMmZhUG5UVDBOR1RpUgpsTFJlOEp3WU9nNlgzQjU4SEwxVUtnZ05pT285TS9FSUlMblU0RzdHbDZSTG52NUNBODVtYWJ4Q3JkMTJXeWlpCmVnMy80ODRselFpdDliQ0lFV3VaekcySnBYb2Jzc3FjT0szNjNKKzBtUk1JUDhLTWVVbFlwYVo3QW9HQkFOcnMKU1R6aXhwWm0yYUYrUzNYV0l0TmRjakhMRW1BU1orcVZ6TXRRcHFLUjRlSXlodDNtczRGWmdCSFpxTVMzWTlDLwppdUFQNWJMMTA4NGdtWWJmMjhpRjNyakdhbGdHUkRpaDh6REgyR2pMVitrbE1PUm1GaFRPeDF5SHhTVWVaOEpjCmZ3aG42Y3RxcVRQaE5mQmw0SUV1eklEalZueDdUL09IMkhybDFaUEhBb0dCQU5aeW5LNnFGV05UaDhhU1NtZXYKRjZKczVwNmVJem1ndDlHcXB0NGppaXduWEsxQVpBdFYrL2ZBeFd5VEhBbmx1YTBLVEdCMHlCS2NJdjA0bFd4OAozMHlWMkFKZVR1SWlpVHVrUjB3eXJVSExhT2ZnMGRuRUJ6cnZWejJuamNZWFgyTVRIYkdLS3AxaFoza1NDWTVkCnkrUStVdmpNTnpBaGJCVExDUVBPOTlvbEFvR0FQanhrQ2FvU2VKbGVqemwvTEUybTh0Mmk1Q0x0NDEvNEtNbFQKUWcxNGdjamxKVS9sNVZsN2VHOUFLRkx2VnBVb0RDVVh6dURXRlEwcm5ITEtFbnk3VjRNdk1Pby9PeXowNGdDdwpTUkxYSTl1QzcyWENRM3YrRlFZL3lMOVVQVndxZFNla2VYaEpENm9QMWc3VkxiVllvSUQwWkVPOHg0Q3Exdm1zCmdpdXFqdXNDZ1lFQXI0WVhUWWZQUk9YQXRmN01ETUs5bmVRcHZNUytiMit5RGNhdFM0YitNT0kxY3ViNFFsdDEKMDdWV2RnWnNybTc2bkZ2TDF4SWptREhPZnJPbU1Zd2Y3VGRhYWVIbG1Qa1BvOHc2ZG1lbkdGaHV2Q1lZa3YyagpsS3o2VWhtYzlCNkc4VVlQNzdvWTR5RkhoQU9mVXpTQVF4bEpEV0hzeVA0SmRtZTlYZnNURUU0PQotLS0tLUVORCBSU0EgUFJJVkFURSBLRVktLS0tLQo=
kind: Secret
metadata:
name: {{ include "dashboard-api.fullname" . }}-key
type: Opaque
================================================
FILE: charts/charts/dashboard-api/templates/service.yaml
================================================
apiVersion: v1
kind: Service
metadata:
name: {{ include "dashboard-api.fullname" . }}
labels:
{{- include "dashboard-api.labels" . | nindent 4 }}
spec:
type: {{ .Values.service.type }}
ports:
- port: {{ .Values.service.port }}
targetPort: http
protocol: TCP
name: http
selector:
{{- include "dashboard-api.selectorLabels" . | nindent 4 }}
================================================
FILE: charts/charts/dashboard-api/values.yaml
================================================
# Default values for dashboard-api.
# This is a YAML-formatted file.
# Declare variables to be passed into your templates.
replicaCount: 1
image:
repository: tkestack/kstone-api-amd64
pullPolicy: IfNotPresent
imagePullSecrets: []
nameOverride: ""
fullnameOverride: ""
podAnnotations: {}
podSecurityContext: {}
# fsGroup: 2000
securityContext: {}
# capabilities:
# drop:
# - ALL
# readOnlyRootFilesystem: true
# runAsNonRoot: true
# runAsUser: 1000
service:
type: NodePort
port: 80
prodResources:
limits:
cpu: 2
memory: 4G
requests:
cpu: 500m
memory: 512Mi
testResources:
limits:
cpu: 1
memory: 2G
requests:
cpu: 100m
memory: 50Mi
nodeSelector: {}
tolerations: []
affinity: {}
kube:
# need to fill
token: ${token}
target: kubernetes.default.svc.cluster.local:443
serviceAccountName: kstone
================================================
FILE: charts/charts/etcd-controller/.helmignore
================================================
# 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
*.orig
*~
# Various IDEs
.project
.idea/
*.tmproj
.vscode/
================================================
FILE: charts/charts/etcd-controller/Chart.yaml
================================================
apiVersion: v2
name: etcd-controller
description: A Helm chart for Kubernetes
# A chart can be either an 'application' or a 'library' chart.
#
# Application charts are a collection of templates that can be packaged into versioned archives
# to be deployed.
#
# Library charts provide useful utilities or functions for the chart developer. They're included as
# a dependency of application charts to inject those utilities and functions into the rendering
# pipeline. Library charts do not define any templates and therefore cannot be deployed.
type: application
# This is the chart version. This version number should be incremented each time you make changes
# to the chart and its templates, including the app version.
# Versions are expected to follow Semantic Versioning (https://semver.org/)
version: 0.1.0
# This is the version number of the application being deployed. This version number should be
# incremented each time you make changes to the application. Versions are not expected to
# follow Semantic Versioning. They should reflect the version the application is using.
# It is recommended to use it with quotes.
appVersion: "1.16.0"
================================================
FILE: charts/charts/etcd-controller/templates/_helpers.tpl
================================================
{{/*
Expand the name of the chart.
*/}}
{{- define "etcd-controller.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 "etcd-controller.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 "etcd-controller.chart" -}}
{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" }}
{{- end }}
{{/*
Common labels
*/}}
{{- define "etcd-controller.labels" -}}
helm.sh/chart: {{ include "etcd-controller.chart" . }}
{{ include "etcd-controller.selectorLabels" . }}
{{- if .Chart.AppVersion }}
app.kubernetes.io/version: {{ .Chart.AppVersion | quote }}
{{- end }}
app.kubernetes.io/managed-by: {{ .Release.Service }}
{{- end }}
{{/*
Selector labels
*/}}
{{- define "etcd-controller.selectorLabels" -}}
app.kubernetes.io/name: {{ include "etcd-controller.name" . }}
app.kubernetes.io/instance: {{ .Release.Name }}
{{- end }}
================================================
FILE: charts/charts/etcd-controller/templates/deployment.yaml
================================================
apiVersion: apps/v1
kind: Deployment
metadata:
name: {{ include "etcd-controller.fullname" . }}
labels:
{{- include "etcd-controller.labels" . | nindent 4 }}
spec:
replicas: {{ .Values.replicaCount }}
selector:
matchLabels:
{{- include "etcd-controller.selectorLabels" . | nindent 6 }}
template:
metadata:
{{- with .Values.podAnnotations }}
annotations:
{{- toYaml . | nindent 8 }}
{{- end }}
labels:
{{- include "etcd-controller.selectorLabels" . | nindent 8 }}
spec:
{{- with .Values.imagePullSecrets }}
imagePullSecrets:
{{- toYaml . | nindent 8 }}
{{- end }}
serviceAccountName: {{ .Values.serviceAccountName }}
securityContext:
{{- toYaml .Values.podSecurityContext | nindent 8 }}
containers:
- args:
- etcdcluster
command:
- /app/bin/kstone-controller
env:
- name: PROM_NAMESPACE
value: {{ .Values.promNamespace }}
name: {{ .Chart.Name }}
securityContext:
{{- toYaml .Values.securityContext | nindent 12 }}
{{- if .Values.global.kstone.tag }}
image: "{{ .Values.image.repository }}:{{ .Values.global.kstone.tag }}"
{{- else }}
image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}"
{{- end }}
imagePullPolicy: {{ .Values.image.pullPolicy }}
resources:
{{- if eq .Values.global.env "production" }}
{{- toYaml .Values.prodResources | nindent 12 }}
{{- else }}
{{- toYaml .Values.testResources | nindent 12 }}
{{- end }}
{{- with .Values.nodeSelector }}
nodeSelector:
{{- toYaml . | nindent 8 }}
{{- end }}
{{- with .Values.affinity }}
affinity:
{{- toYaml . | nindent 8 }}
{{- end }}
{{- with .Values.tolerations }}
tolerations:
{{- toYaml . | nindent 8 }}
{{- end }}
================================================
FILE: charts/charts/etcd-controller/values.yaml
================================================
# Default values for etcd-controller.
# This is a YAML-formatted file.
# Declare variables to be passed into your templates.
replicaCount: 1
image:
repository: tkestack/kstone-controller-amd64
pullPolicy: IfNotPresent
imagePullSecrets: []
nameOverride: ""
fullnameOverride: ""
podAnnotations: {}
podSecurityContext: {}
# fsGroup: 2000
securityContext: {}
# capabilities:
# drop:
# - ALL
# readOnlyRootFilesystem: true
# runAsNonRoot: true
# runAsUser: 1000
prodResources:
limits:
cpu: 2
memory: 4G
requests:
cpu: 500m
memory: 512Mi
testResources:
limits:
cpu: 1
memory: 2G
requests:
cpu: 100m
memory: 50Mi
nodeSelector: {}
tolerations: []
affinity: {}
serviceAccountName: kstone
promNamespace: kstone
================================================
FILE: charts/charts/etcd-operator/.helmignore
================================================
# 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
*.orig
*~
# Various IDEs
.project
.idea/
*.tmproj
.vscode/
================================================
FILE: charts/charts/etcd-operator/Chart.yaml
================================================
apiVersion: v2
name: etcd-operator
description: A Helm chart for etcd backup operator of kstone
# A chart can be either an 'application' or a 'library' chart.
#
# Application charts are a collection of templates that can be packaged into versioned archives
# to be deployed.
#
# Library charts provide useful utilities or functions for the chart developer. They're included as
# a dependency of application charts to inject those utilities and functions into the rendering
# pipeline. Library charts do not define any templates and therefore cannot be deployed.
type: application
# This is the chart version. This version number should be incremented each time you make changes
# to the chart and its templates, including the app version.
# Versions are expected to follow Semantic Versioning (https://semver.org/)
version: 1.0.4
# This is the version number of the application being deployed. This version number should be
# incremented each time you make changes to the application. Versions are not expected to
# follow Semantic Versioning. They should reflect the version the application is using.
# It is recommended to use it with quotes.
appVersion: "v1.0.4"
================================================
FILE: charts/charts/etcd-operator/templates/_helpers.tpl
================================================
{{/*
Expand the name of the chart.
*/}}
{{- define "etcd-operator.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 "etcd-operator.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 "etcd-operator.chart" -}}
{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" }}
{{- end }}
{{/*
Common labels
*/}}
{{- define "etcd-operator.labels" -}}
helm.sh/chart: {{ include "etcd-operator.chart" . }}
{{ include "etcd-operator.selectorLabels" . }}
{{- if .Chart.AppVersion }}
app.kubernetes.io/version: {{ .Chart.AppVersion | quote }}
{{- end }}
app.kubernetes.io/managed-by: {{ .Release.Service }}
{{- end }}
{{/*
Selector labels
*/}}
{{- define "etcd-operator.selectorLabels" -}}
app.kubernetes.io/name: {{ include "etcd-operator.name" . }}
app.kubernetes.io/instance: {{ .Release.Name }}
{{- end }}
================================================
FILE: charts/charts/etcd-operator/templates/configmap.yaml
================================================
apiVersion: v1
data:
3.4.9: |
image: ccr.ccs.tencentyun.com/ccs-dev/etcd:v3.4.9
3.4.13: |
image: ccr.ccs.tencentyun.com/ccs-dev/etcd:v3.4.13
kind: ConfigMap
metadata:
labels:
cloud.tencent.com/kstone-config-name: etcd-version-global-config
cloud.tencent.com/kstone-config-version: 0.0.1
name: etcd-version-global-config
namespace: {{ .Release.Namespace }}
---
apiVersion: v1
data:
tls.crt: |
-----BEGIN CERTIFICATE-----
MIIDSTCCAjGgAwIBAgIUQxapCztxSiDvusPIrujEiA+k4q0wDQYJKoZIhvcNAQEL
BQAwUTELMAkGA1UEBhMCQ04xCzAJBgNVBAgMAkdEMQswCQYDVQQHDAJTWjEPMA0G
A1UECgwGS3N0b25lMRcwFQYDVQQDDA5Lc3RvbmUgUm9vdCBDQTAeFw0yMjA0MTUx
MDIwMjBaFw0zMjA0MTIxMDIwMjBaME8xCzAJBgNVBAYTAkNOMQswCQYDVQQIDAJH
RDELMAkGA1UEBwwCU1oxDzANBgNVBAoMBktzdG9uZTEVMBMGA1UEAwwMKi5rc3Rv
bmUuc3ZjMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA2zOVN79sFHPh
Uu9E1g4h212pujyAcVEKsJ59mUSsj54CTrCZJBgP4U2w9DxAYPwB8sE4SY7mCNJ4
MLwGJwUW9rmHovLDQHIqhD1uhT7HEwY64l5AuLgOtGtiwB2ybaOsPtJyPbYLz4kY
UG1CAvwziPfn+TntcFzbRsJ2YE3BooHIzjSB3tnbZGyCPHjfw9YpnFV0jdnapY2M
yhhIfHtqiM9XjvE8A+bkJ1mukBtPbQUGPqz5k3/pZkIFjeGJaGp1Hj+Gun8A8ubt
vi4ZDjXrjVSZKRkQL/M9n2WyF8IJ5aqvXgcy5xAyFL5BXxF4lpvNJZ00pyblb5/d
m3t61G8KYQIDAQABoxswGTAXBgNVHREEEDAOggwqLmtzdG9uZS5zdmMwDQYJKoZI
hvcNAQELBQADggEBAE1KRq6fSEHoYUvbuL0UffGEdi00l5+f6auYB+57YImAnibS
/J2I+Kjg5yzjpDXrNivXHiKv8ei83Me0dOcsrfR8k3VeQCMd9ucqa0Z88lDTnrGe
srjClYS0eGfsQslFEyESVolgLpf6RQJhMk9PIp+60KqUhiC9RjsHyWRwMMGHmGuC
Z/hJ/ljI+G2Kr8Z+OrE3gJxXqXyjRoaqhW+dZESiqiuzx0Yzqze88zX4ftelqTH5
uJNVmhWC2kFr/FKjfP6GCfEeI/lnbTCOMfueiISZbRK2J2tWWOhgc37uPcX8N+XB
eWJO40lJb/TDtIqsOWW04hqJx4m5tLQK+YRnf0k=
-----END CERTIFICATE-----
tls.key: |
-----BEGIN PRIVATE KEY-----
MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDbM5U3v2wUc+FS
70TWDiHbXam6PIBxUQqwnn2ZRKyPngJOsJkkGA/hTbD0PEBg/AHywThJjuYI0ngw
vAYnBRb2uYei8sNAciqEPW6FPscTBjriXkC4uA60a2LAHbJto6w+0nI9tgvPiRhQ
bUIC/DOI9+f5Oe1wXNtGwnZgTcGigcjONIHe2dtkbII8eN/D1imcVXSN2dqljYzK
GEh8e2qIz1eO8TwD5uQnWa6QG09tBQY+rPmTf+lmQgWN4YloanUeP4a6fwDy5u2+
LhkONeuNVJkpGRAv8z2fZbIXwgnlqq9eBzLnEDIUvkFfEXiWm80lnTSnJuVvn92b
e3rUbwphAgMBAAECggEBAL/MYsRkui0rN/1ZXuHte7J2Qgyy47BDORdRlpSFgngn
yd0QqO7sHvkFAdCy56H037+JUbcLUjxl7MS3wKpjybQYopXx1OaO/qS3G/168LW0
vdFUp0z5v+QeEkoHshg9HnnZqhxVLgBp9NxqvVffVTiDsnZgOWIX3cYMYYfigYuu
ZUuN6VdtnIB+zZC84qy8zHBgre5DokFbUmzV4l/qyZYaURinkiBr6FSBvVPoieSl
fKIEFyVqpY6GaG7zQQ+hdnc+sfBStdLaF03WDvDnEgBU/z8/6vI36EPF5gSMd+Dv
m0tcKeIqw7xPVHfrh/AJTkBGY/Vq+zZL2LdOj3fJAAECgYEA8+Ke3Gp5XVwLjPNq
HEODJu1yiurYD/jZ2etpMPzz8Xyz1jMAXRgSa7fC1xbsVauo4ISIZndf8Gb48PU4
m7tqbUvfnRoCB/OLPlTeNXedL6ygPgzb6TLrd3LMg+snkUSuJQxKWYmIdcAf2Jfo
ww5AyQLlcM1kRL+fduSTWH4uDP0CgYEA5hcR+0mz+YqK5TdL9nVTnMRmNLaAAPAk
Low34YsvSZ1gL/0d0pmNkwFmwxdM17JKkfq2CKOLo1A7aBKJSRdq3EhsTNh3qNRu
EYTS50V/k/zQ7eCHP+hNp+hkbCCp6m0YjqCiCjrd2if2VZpNR/sivPMydd6M+2Vm
DGoo9gXb4jUCgYBnXST3Rikp6Fj85C2UzQhI91oUhnQMUOwD8EIlARBiyPdvUS5W
Rl2ISdnKT2za4mYwwfsNcoq22O2pMkVLu6Lfr8iWTO+PbykUweNrxcZY7lD7+3c4
3tvtRDpprsCWUQV9rjfUuvWa8lKM+dUs1l2e1BtqM6LLgGuVeEr6tn/OAQKBgFGj
O+ESHIZczr1Xal9u75S+5pirbC1pBx1w6N7guI2BBkDgqTUxAFd5dtGfsccSXnz/
HJliFciDTiC1+vnxEhxIogx9/a7seIVEwGQId6S1XhgYw0Q8k1kRDpiC2mbwAHeS
rQu+KTsfVLq4vdTdWUz7aRsDNLh6GMQs4o2wNH1FAoGALN8PNIR/Sl+XoCEyGFmj
vhZONbogmL8e4V66bJhs6gRb4df/Fb64HWJnrr+TLoMIFyueR+OcUzD0bcIhaHem
5fztFZw2tHDASXvvFBX8q8plRD8pm+0BQfw3Rb088xdounD0TpkRFX8dIWLjpFVx
YHRIG5x6bCuy2MPLoeASJzc=
-----END PRIVATE KEY-----
kind: ConfigMap
metadata:
name: kstone-etcd-operator-cert
namespace: {{ .Release.Namespace }}
================================================
FILE: charts/charts/etcd-operator/templates/crd.yaml
================================================
---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
annotations:
controller-gen.kubebuilder.io/version: v0.6.2
creationTimestamp: null
name: etcdclusters.etcd.tkestack.io
spec:
group: etcd.tkestack.io
names:
kind: EtcdCluster
listKind: EtcdClusterList
plural: etcdclusters
shortNames:
- etcd
singular: etcdcluster
scope: Namespaced
versions:
- additionalPrinterColumns:
- jsonPath: .spec.size
name: SIZE
type: string
- jsonPath: .status.phase
name: STATUS
type: string
- jsonPath: .metadata.creationTimestamp
name: AGE
type: date
name: v1alpha1
schema:
openAPIV3Schema:
description: EtcdCluster is a specification for a EtcdCluster resource
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: Specification of the desired behavior of the EtcdCluster.
properties:
clientPort:
description: ClientPort is the client port which using to access an
etcd cluster
format: int32
type: integer
learners:
description: Learners contains the sequence number of the etcd node
which will be created as a learner node. You can remove the corresponding
sequence number when you want to promote learner to member
items:
type: string
type: array
provider:
description: You can choose different Provider as the carrier for
etcd to run
type: string
repository:
description: Repository is the name of the repository that hosts etcd
container images. By default, it is `quay.io/coreos/etcd`.
type: string
secure:
description: Secure contains the etcd cluster's tls and authentication
configuration
properties:
auth:
description: etcd authorization configuration
properties:
credentialSecret:
description: CredentialSecretRef is a secret reference which
contains username and password
properties:
name:
description: Name is unique within a namespace to reference
a secret resource.
type: string
namespace:
description: Namespace defines the space within which
the secret name must be unique.
type: string
type: object
type: object
tls:
description: TLS represents the etcd whether to use https protocol
to serve
properties:
autoTLSCert:
description: AutoTLSCert contains the cert generating option
of etcd operator
properties:
autoGenerateClientCert:
type: boolean
autoGeneratePeerCert:
type: boolean
autoGenerateServerCert:
type: boolean
externalCASecret:
description: you can use ExternalCASecret to signing the
cert which etcd use, if empty, etcd operator will generate
a self-signed certificate
type: string
extraServerCertSANs:
description: ExtraServerCertSANs sets extra Subject Alternative
Names for the etcd server signing cert.
items:
type: string
type: array
type: object
externalCerts:
description: ExternalCerts means using an extra cert
properties:
clientSecret:
description: ClientSecret contains the certificate and
key which etcd use, including ca.pem, client.crt, client.key
type: string
peerSecret:
description: PeerSecret contains the certificate and key
which etcd use, including ca.pem, peer.crt, peer.key
type: string
serverSecret:
description: ServerSecret contains the certificate and
key which etcd use, including ca.pem, server.crt, server.key
type: string
required:
- clientSecret
- peerSecret
- serverSecret
type: object
type: object
type: object
size:
description: Size is the etcd cluster's node count, contains voter
member and learner
format: int32
type: integer
template:
description: Template is the etcd cluster's deployment template
properties:
affinity:
description: If specified, the etcd node scheduling constraints
properties:
nodeAffinity:
description: Describes node affinity scheduling rules for
the pod.
properties:
preferredDuringSchedulingIgnoredDuringExecution:
description: The scheduler will prefer to schedule pods
to nodes that satisfy the affinity expressions specified
by this field, but it may choose a node that violates
one or more of the expressions. The node that is most
preferred is the one with the greatest sum of weights,
i.e. for each node that meets all of the scheduling
requirements (resource request, requiredDuringScheduling
affinity expressions, etc.), compute a sum by iterating
through the elements of this field and adding "weight"
to the sum if the node matches the corresponding matchExpressions;
the node(s) with the highest sum are the most preferred.
items:
description: An empty preferred scheduling term matches
all objects with implicit weight 0 (i.e. it's a no-op).
A null preferred scheduling term matches no objects
(i.e. is also a no-op).
properties:
preference:
description: A node selector term, associated with
the corresponding weight.
properties:
matchExpressions:
description: A list of node selector requirements
by node's labels.
items:
description: A node selector requirement is
a selector that contains values, a key,
and an operator that relates the key and
values.
properties:
key:
description: The label key that the selector
applies to.
type: string
operator:
description: Represents a key's relationship
to a set of values. Valid operators
are In, NotIn, Exists, DoesNotExist.
Gt, and Lt.
type: string
values:
description: An array of string values.
If the operator is In or NotIn, the
values array must be non-empty. If the
operator is Exists or DoesNotExist,
the values array must be empty. If the
operator is Gt or Lt, the values array
must have a single element, which will
be interpreted as an integer. This array
is replaced during a strategic merge
patch.
items:
type: string
type: array
required:
- key
- operator
type: object
type: array
matchFields:
description: A list of node selector requirements
by node's fields.
items:
description: A node selector requirement is
a selector that contains values, a key,
and an operator that relates the key and
values.
properties:
key:
description: The label key that the selector
applies to.
type: string
operator:
description: Represents a key's relationship
to a set of values. Valid operators
are In, NotIn, Exists, DoesNotExist.
Gt, and Lt.
type: string
values:
description: An array of string values.
If the operator is In or NotIn, the
values array must be non-empty. If the
operator is Exists or DoesNotExist,
the values array must be empty. If the
operator is Gt or Lt, the values array
must have a single element, which will
be interpreted as an integer. This array
is replaced during a strategic merge
patch.
items:
type: string
type: array
required:
- key
- operator
type: object
type: array
type: object
weight:
description: Weight associated with matching the
corresponding nodeSelectorTerm, in the range 1-100.
format: int32
type: integer
required:
- preference
- weight
type: object
type: array
requiredDuringSchedulingIgnoredDuringExecution:
description: If the affinity requirements specified by
this field are not met at scheduling time, the pod will
not be scheduled onto the node. If the affinity requirements
specified by this field cease to be met at some point
during pod execution (e.g. due to an update), the system
may or may not try to eventually evict the pod from
its node.
properties:
nodeSelectorTerms:
description: Required. A list of node selector terms.
The terms are ORed.
items:
description: A null or empty node selector term
matches no objects. The requirements of them are
ANDed. The TopologySelectorTerm type implements
a subset of the NodeSelectorTerm.
properties:
matchExpressions:
description: A list of node selector requirements
by node's labels.
items:
description: A node selector requirement is
a selector that contains values, a key,
and an operator that relates the key and
values.
properties:
key:
description: The label key that the selector
applies to.
type: string
operator:
description: Represents a key's relationship
to a set of values. Valid operators
are In, NotIn, Exists, DoesNotExist.
Gt, and Lt.
type: string
values:
description: An array of string values.
If the operator is In or NotIn, the
values array must be non-empty. If the
operator is Exists or DoesNotExist,
the values array must be empty. If the
operator is Gt or Lt, the values array
must have a single element, which will
be interpreted as an integer. This array
is replaced during a strategic merge
patch.
items:
type: string
type: array
required:
- key
- operator
type: object
type: array
matchFields:
description: A list of node selector requirements
by node's fields.
items:
description: A node selector requirement is
a selector that contains values, a key,
and an operator that relates the key and
values.
properties:
key:
description: The label key that the selector
applies to.
type: string
operator:
description: Represents a key's relationship
to a set of values. Valid operators
are In, NotIn, Exists, DoesNotExist.
Gt, and Lt.
type: string
values:
description: An array of string values.
If the operator is In or NotIn, the
values array must be non-empty. If the
operator is Exists or DoesNotExist,
the values array must be empty. If the
operator is Gt or Lt, the values array
must have a single element, which will
be interpreted as an integer. This array
is replaced during a strategic merge
patch.
items:
type: string
type: array
required:
- key
- operator
type: object
type: array
type: object
type: array
required:
- nodeSelectorTerms
type: object
type: object
podAffinity:
description: Describes pod affinity scheduling rules (e.g.
co-locate this pod in the same node, zone, etc. as some
other pod(s)).
properties:
preferredDuringSchedulingIgnoredDuringExecution:
description: The scheduler will prefer to schedule pods
to nodes that satisfy the affinity expressions specified
by this field, but it may choose a node that violates
one or more of the expressions. The node that is most
preferred is the one with the greatest sum of weights,
i.e. for each node that meets all of the scheduling
requirements (resource request, requiredDuringScheduling
affinity expressions, etc.), compute a sum by iterating
through the elements of this field and adding "weight"
to the sum if the node has pods which matches the corresponding
podAffinityTerm; the node(s) with the highest sum are
the most preferred.
items:
description: The weights of all of the matched WeightedPodAffinityTerm
fields are added per-node to find the most preferred
node(s)
properties:
podAffinityTerm:
description: Required. A pod affinity term, associated
with the corresponding weight.
properties:
labelSelector:
description: A label query over a set of resources,
in this case pods.
properties:
matchExpressions:
description: matchExpressions is a list
of label selector requirements. The requirements
are ANDed.
items:
description: A label selector requirement
is a selector that contains values,
a key, and an operator that relates
the key and values.
properties:
key:
description: key is the label key
that the selector applies to.
type: string
operator:
description: operator represents a
key's relationship to a set of values.
Valid operators are In, NotIn, Exists
and DoesNotExist.
type: string
values:
description: values is an array of
string values. If the operator is
In or NotIn, the values array must
be non-empty. If the operator is
Exists or DoesNotExist, the values
array must be empty. This array
is replaced during a strategic merge
patch.
items:
type: string
type: array
required:
- key
- operator
type: object
type: array
matchLabels:
additionalProperties:
type: string
description: matchLabels is a map of {key,value}
pairs. A single {key,value} in the matchLabels
map is equivalent to an element of matchExpressions,
whose key field is "key", the operator
is "In", and the values array contains
only "value". The requirements are ANDed.
type: object
type: object
namespaceSelector:
description: A label query over the set of namespaces
that the term applies to. The term is applied
to the union of the namespaces selected by
this field and the ones listed in the namespaces
field. null selector and null or empty namespaces
list means "this pod's namespace". An empty
selector ({}) matches all namespaces. This
field is alpha-level and is only honored when
PodAffinityNamespaceSelector feature is enabled.
properties:
matchExpressions:
description: matchExpressions is a list
of label selector requirements. The requirements
are ANDed.
items:
description: A label selector requirement
is a selector that contains values,
a key, and an operator that relates
the key and values.
properties:
key:
description: key is the label key
that the selector applies to.
type: string
operator:
description: operator represents a
key's relationship to a set of values.
Valid operators are In, NotIn, Exists
and DoesNotExist.
type: string
values:
description: values is an array of
string values. If the operator is
In or NotIn, the values array must
be non-empty. If the operator is
Exists or DoesNotExist, the values
array must be empty. This array
is replaced during a strategic merge
patch.
items:
type: string
type: array
required:
- key
- operator
type: object
type: array
matchLabels:
additionalProperties:
type: string
description: matchLabels is a map of {key,value}
pairs. A single {key,value} in the matchLabels
map is equivalent to an element of matchExpressions,
whose key field is "key", the operator
is "In", and the values array contains
only "value". The requirements are ANDed.
type: object
type: object
namespaces:
description: namespaces specifies a static list
of namespace names that the term applies to.
The term is applied to the union of the namespaces
listed in this field and the ones selected
by namespaceSelector. null or empty namespaces
list and null namespaceSelector means "this
pod's namespace"
items:
type: string
type: array
topologyKey:
description: This pod should be co-located (affinity)
or not co-located (anti-affinity) with the
pods matching the labelSelector in the specified
namespaces, where co-located is defined as
running on a node whose value of the label
with key topologyKey matches that of any node
on which any of the selected pods is running.
Empty topologyKey is not allowed.
type: string
required:
- topologyKey
type: object
weight:
description: weight associated with matching the
corresponding podAffinityTerm, in the range 1-100.
format: int32
type: integer
required:
- podAffinityTerm
- weight
type: object
type: array
requiredDuringSchedulingIgnoredDuringExecution:
description: If the affinity requirements specified by
this field are not met at scheduling time, the pod will
not be scheduled onto the node. If the affinity requirements
specified by this field cease to be met at some point
during pod execution (e.g. due to a pod label update),
the system may or may not try to eventually evict the
pod from its node. When there are multiple elements,
the lists of nodes corresponding to each podAffinityTerm
are intersected, i.e. all terms must be satisfied.
items:
description: Defines a set of pods (namely those matching
the labelSelector relative to the given namespace(s))
that this pod should be co-located (affinity) or not
co-located (anti-affinity) with, where co-located
is defined as running on a node whose value of the
label with key <topologyKey> matches that of any node
on which a pod of the set of pods is running
properties:
labelSelector:
description: A label query over a set of resources,
in this case pods.
properties:
matchExpressions:
description: matchExpressions is a list of label
selector requirements. The requirements are
ANDed.
items:
description: A label selector requirement
is a selector that contains values, a key,
and an operator that relates the key and
values.
properties:
key:
description: key is the label key that
the selector applies to.
type: string
operator:
description: operator represents a key's
relationship to a set of values. Valid
operators are In, NotIn, Exists and
DoesNotExist.
type: string
values:
description: values is an array of string
values. If the operator is In or NotIn,
the values array must be non-empty.
If the operator is Exists or DoesNotExist,
the values array must be empty. This
array is replaced during a strategic
merge patch.
items:
type: string
type: array
required:
- key
- operator
type: object
type: array
matchLabels:
additionalProperties:
type: string
description: matchLabels is a map of {key,value}
pairs. A single {key,value} in the matchLabels
map is equivalent to an element of matchExpressions,
whose key field is "key", the operator is
"In", and the values array contains only "value".
The requirements are ANDed.
type: object
type: object
namespaceSelector:
description: A label query over the set of namespaces
that the term applies to. The term is applied
to the union of the namespaces selected by this
field and the ones listed in the namespaces field.
null selector and null or empty namespaces list
means "this pod's namespace". An empty selector
({}) matches all namespaces. This field is alpha-level
and is only honored when PodAffinityNamespaceSelector
feature is enabled.
properties:
matchExpressions:
description: matchExpressions is a list of label
selector requirements. The requirements are
ANDed.
items:
description: A label selector requirement
is a selector that contains values, a key,
and an operator that relates the key and
values.
properties:
key:
description: key is the label key that
the selector applies to.
type: string
operator:
description: operator represents a key's
relationship to a set of values. Valid
operators are In, NotIn, Exists and
DoesNotExist.
type: string
values:
description: values is an array of string
values. If the operator is In or NotIn,
the values array must be non-empty.
If the operator is Exists or DoesNotExist,
the values array must be empty. This
array is replaced during a strategic
merge patch.
items:
type: string
type: array
required:
- key
- operator
type: object
type: array
matchLabels:
additionalProperties:
type: string
description: matchLabels is a map of {key,value}
pairs. A single {key,value} in the matchLabels
map is equivalent to an element of matchExpressions,
whose key field is "key", the operator is
"In", and the values array contains only "value".
The requirements are ANDed.
type: object
type: object
namespaces:
description: namespaces specifies a static list
of namespace names that the term applies to. The
term is applied to the union of the namespaces
listed in this field and the ones selected by
namespaceSelector. null or empty namespaces list
and null namespaceSelector means "this pod's namespace"
items:
type: string
type: array
topologyKey:
description: This pod should be co-located (affinity)
or not co-located (anti-affinity) with the pods
matching the labelSelector in the specified namespaces,
where co-located is defined as running on a node
whose value of the label with key topologyKey
matches that of any node on which any of the selected
pods is running. Empty topologyKey is not allowed.
type: string
required:
- topologyKey
type: object
type: array
type: object
podAntiAffinity:
description: Describes pod anti-affinity scheduling rules
(e.g. avoid putting this pod in the same node, zone, etc.
as some other pod(s)).
properties:
preferredDuringSchedulingIgnoredDuringExecution:
description: The scheduler will prefer to schedule pods
to nodes that satisfy the anti-affinity expressions
specified by this field, but it may choose a node that
violates one or more of the expressions. The node that
is most preferred is the one with the greatest sum of
weights, i.e. for each node that meets all of the scheduling
requirements (resource request, requiredDuringScheduling
anti-affinity expressions, etc.), compute a sum by iterating
through the elements of this field and adding "weight"
to the sum if the node has pods which matches the corresponding
podAffinityTerm; the node(s) with the highest sum are
the most preferred.
items:
description: The weights of all of the matched WeightedPodAffinityTerm
fields are added per-node to find the most preferred
node(s)
properties:
podAffinityTerm:
description: Required. A pod affinity term, associated
with the corresponding weight.
properties:
labelSelector:
description: A label query over a set of resources,
in this case pods.
properties:
matchExpressions:
description: matchExpressions is a list
of label selector requirements. The requirements
are ANDed.
items:
description: A label selector requirement
is a selector that contains values,
a key, and an operator that relates
the key and values.
properties:
key:
description: key is the label key
that the selector applies to.
type: string
operator:
description: operator represents a
key's relationship to a set of values.
Valid operators are In, NotIn, Exists
and DoesNotExist.
type: string
values:
description: values is an array of
string values. If the operator is
In or NotIn, the values array must
be non-empty. If the operator is
Exists or DoesNotExist, the values
array must be empty. This array
is replaced during a strategic merge
patch.
items:
type: string
type: array
required:
- key
- operator
type: object
type: array
matchLabels:
additionalProperties:
type: string
description: matchLabels is a map of {key,value}
pairs. A single {key,value} in the matchLabels
map is equivalent to an element of matchExpressions,
whose key field is "key", the operator
is "In", and the values array contains
only "value". The requirements are ANDed.
type: object
type: object
namespaceSelector:
description: A label query over the set of namespaces
that the term applies to. The term is applied
to the union of the namespaces selected by
this field and the ones listed in the namespaces
field. null selector and null or empty namespaces
list means "this pod's namespace". An empty
selector ({}) matches all namespaces. This
field is alpha-level and is only honored when
PodAffinityNamespaceSelector feature is enabled.
properties:
matchExpressions:
description: matchExpressions is a list
of label selector requirements. The requirements
are ANDed.
items:
description: A label selector requirement
is a selector that contains values,
a key, and an operator that relates
the key and values.
properties:
key:
description: key is the label key
that the selector applies to.
type: string
operator:
description: operator represents a
key's relationship to a set of values.
Valid operators are In, NotIn, Exists
and DoesNotExist.
type: string
values:
description: values is an array of
string values. If the operator is
In or NotIn, the values array must
be non-empty. If the operator is
Exists or DoesNotExist, the values
array must be empty. This array
is replaced during a strategic merge
patch.
items:
type: string
type: array
required:
- key
- operator
type: object
type: array
matchLabels:
additionalProperties:
type: string
description: matchLabels is a map of {key,value}
pairs. A single {key,value} in the matchLabels
map is equivalent to an element of matchExpressions,
whose key field is "key", the operator
is "In", and the values array contains
only "value". The requirements are ANDed.
type: object
type: object
namespaces:
description: namespaces specifies a static list
of namespace names that the term applies to.
The term is applied to the union of the namespaces
listed in this field and the ones selected
by namespaceSelector. null or empty namespaces
list and null namespaceSelector means "this
pod's namespace"
items:
type: string
type: array
topologyKey:
description: This pod should be co-located (affinity)
or not co-located (anti-affinity) with the
pods matching the labelSelector in the specified
namespaces, where co-located is defined as
running on a node whose value of the label
with key topologyKey matches that of any node
on which any of the selected pods is running.
Empty topologyKey is not allowed.
type: string
required:
- topologyKey
type: object
weight:
description: weight associated with matching the
corresponding podAffinityTerm, in the range 1-100.
format: int32
type: integer
required:
- podAffinityTerm
- weight
type: object
type: array
requiredDuringSchedulingIgnoredDuringExecution:
description: If the anti-affinity requirements specified
by this field are not met at scheduling time, the pod
will not be scheduled onto the node. If the anti-affinity
requirements specified by this field cease to be met
at some point during pod execution (e.g. due to a pod
label update), the system may or may not try to eventually
evict the pod from its node. When there are multiple
elements, the lists of nodes corresponding to each podAffinityTerm
are intersected, i.e. all terms must be satisfied.
items:
description: Defines a set of pods (namely those matching
the labelSelector relative to the given namespace(s))
that this pod should be co-located (affinity) or not
co-located (anti-affinity) with, where co-located
is defined as running on a node whose value of the
label with key <topologyKey> matches that of any node
on which a pod of the set of pods is running
properties:
labelSelector:
description: A label query over a set of resources,
in this case pods.
properties:
matchExpressions:
description: matchExpressions is a list of label
selector requirements. The requirements are
ANDed.
items:
description: A label selector requirement
is a selector that contains values, a key,
and an operator that relates the key and
values.
properties:
key:
description: key is the label key that
the selector applies to.
type: string
operator:
description: operator represents a key's
relationship to a set of values. Valid
operators are In, NotIn, Exists and
DoesNotExist.
type: string
values:
description: values is an array of string
values. If the operator is In or NotIn,
the values array must be non-empty.
If the operator is Exists or DoesNotExist,
the values array must be empty. This
array is replaced during a strategic
merge patch.
items:
type: string
type: array
required:
- key
- operator
type: object
type: array
matchLabels:
additionalProperties:
type: string
description: matchLabels is a map of {key,value}
pairs. A single {key,value} in the matchLabels
map is equivalent to an element of matchExpressions,
whose key field is "key", the operator is
"In", and the values array contains only "value".
The requirements are ANDed.
type: object
type: object
namespaceSelector:
description: A label query over the set of namespaces
that the term applies to. The term is applied
to the union of the namespaces selected by this
field and the ones listed in the namespaces field.
null selector and null or empty namespaces list
means "this pod's namespace". An empty selector
({}) matches all namespaces. This field is alpha-level
and is only honored when PodAffinityNamespaceSelector
feature is enabled.
properties:
matchExpressions:
description: matchExpressions is a list of label
selector requirements. The requirements are
ANDed.
items:
description: A label selector requirement
is a selector that contains values, a key,
and an operator that relates the key and
values.
properties:
key:
description: key is the label key that
the selector applies to.
type: string
operator:
description: operator represents a key's
relationship to a set of values. Valid
operators are In, NotIn, Exists and
DoesNotExist.
type: string
values:
description: values is an array of string
values. If the operator is In or NotIn,
the values array must be non-empty.
If the operator is Exists or DoesNotExist,
the values array must be empty. This
array is replaced during a strategic
merge patch.
items:
type: string
type: array
required:
- key
- operator
type: object
type: array
matchLabels:
additionalProperties:
type: string
description: matchLabels is a map of {key,value}
pairs. A single {key,value} in the matchLabels
map is equivalent to an element of matchExpressions,
whose key field is "key", the operator is
"In", and the values array contains only "value".
The requirements are ANDed.
type: object
type: object
namespaces:
description: namespaces specifies a static list
of namespace names that the term applies to. The
term is applied to the union of the namespaces
listed in this field and the ones selected by
namespaceSelector. null or empty namespaces list
and null namespaceSelector means "this pod's namespace"
items:
type: string
type: array
topologyKey:
description: This pod should be co-located (affinity)
or not co-located (anti-affinity) with the pods
matching the labelSelector in the specified namespaces,
where co-located is defined as running on a node
whose value of the label with key topologyKey
matches that of any node on which any of the selected
pods is running. Empty topologyKey is not allowed.
type: string
required:
- topologyKey
type: object
type: array
type: object
type: object
annotations:
additionalProperties:
type: string
description: 'Annotations is an unstructured key value map stored
with a resource that may be set by external tools to store and
retrieve arbitrary metadata. They are not queryable and should
be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations'
type: object
env:
description: List of environment variables to set in the container.
Cannot be updated.
items:
description: EnvVar represents an environment variable present
in a Container.
properties:
name:
description: Name of the environment variable. Must be a
C_IDENTIFIER.
type: string
value:
description: 'Variable references $(VAR_NAME) are expanded
using the previous defined environment variables in the
container and any service environment variables. If a
variable cannot be resolved, the reference in the input
string will be unchanged. The $(VAR_NAME) syntax can be
escaped with a double $$, ie: $$(VAR_NAME). Escaped references
will never be expanded, regardless of whether the variable
exists or not. Defaults to "".'
type: string
valueFrom:
description: Source for the environment variable's value.
Cannot be used if value is not empty.
properties:
configMapKeyRef:
description: Selects a key of a ConfigMap.
properties:
key:
description: The key to select.
type: string
name:
description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
TODO: Add other useful fields. apiVersion, kind,
uid?'
type: string
optional:
description: Specify whether the ConfigMap or its
key must be defined
type: boolean
required:
- key
type: object
fieldRef:
description: 'Selects a field of the pod: supports metadata.name,
metadata.namespace, `metadata.labels[''<KEY>'']`,
`metadata.annotations[''<KEY>'']`, spec.nodeName,
spec.serviceAccountName, status.hostIP, status.podIP,
status.podIPs.'
properties:
apiVersion:
description: Version of the schema the FieldPath
is written in terms of, defaults to "v1".
type: string
fieldPath:
description: Path of the field to select in the
specified API version.
type: string
required:
- fieldPath
type: object
resourceFieldRef:
description: 'Selects a resource of the container: only
resources limits and requests (limits.cpu, limits.memory,
limits.ephemeral-storage, requests.cpu, requests.memory
and requests.ephemeral-storage) are currently supported.'
properties:
containerName:
description: 'Container name: required for volumes,
optional for env vars'
type: string
divisor:
anyOf:
- type: integer
- type: string
description: Specifies the output format of the
exposed resources, defaults to "1"
pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
x-kubernetes-int-or-string: true
resource:
description: 'Required: resource to select'
type: string
required:
- resource
type: object
secretKeyRef:
description: Selects a key of a secret in the pod's
namespace
properties:
key:
description: The key of the secret to select from. Must
be a valid secret key.
type: string
name:
description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
TODO: Add other useful fields. apiVersion, kind,
uid?'
type: string
optional:
description: Specify whether the Secret or its key
must be defined
type: boolean
required:
- key
type: object
type: object
required:
- name
type: object
type: array
extraArgs:
description: ExtraArgs will be directly used as extra parameters
to start etcd
items:
type: string
type: array
labels:
additionalProperties:
type: string
description: 'Map of string keys and values that can be used to
organize and categorize (scope and select) objects. May match
selectors of replication controllers and services. More info:
http://kubernetes.io/docs/user-guide/labels'
type: object
persistentVolumeClaimSpec:
description: PersistentVolumeClaimSpec is a list of claims that
pods are allowed to reference.
properties:
accessModes:
description: 'AccessModes contains the desired access modes
the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1'
items:
type: string
type: array
dataSource:
description: 'This field can be used to specify either: *
An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot)
* An existing PVC (PersistentVolumeClaim) * An existing
custom resource that implements data population (Alpha)
In order to use custom resource types that implement data
population, the AnyVolumeDataSource feature gate must be
enabled. If the provisioner or an external controller can
support the specified data source, it will create a new
volume based on the contents of the specified data source.'
properties:
apiGroup:
description: APIGroup is the group for the resource being
referenced. If APIGroup is not specified, the specified
Kind must be in the core API group. For any other third-party
types, APIGroup is required.
type: string
kind:
description: Kind is the type of resource being referenced
type: string
name:
description: Name is the name of resource being referenced
type: string
required:
- kind
- name
type: object
resources:
description: 'Resources represents the minimum resources the
volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources'
properties:
limits:
additionalProperties:
anyOf:
- type: integer
- type: string
pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
x-kubernetes-int-or-string: true
description: 'Limits describes the maximum amount of compute
resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'
type: object
requests:
additionalProperties:
anyOf:
- type: integer
- type: string
pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
x-kubernetes-int-or-string: true
description: 'Requests describes the minimum amount of
compute resources required. If Requests is omitted for
a container, it defaults to Limits if that is explicitly
specified, otherwise to an implementation-defined value.
More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'
type: object
type: object
selector:
description: A label query over volumes to consider for binding.
properties:
matchExpressions:
description: matchExpressions is a list of label selector
requirements. The requirements are ANDed.
items:
description: A label selector requirement is a selector
that contains values, a key, and an operator that
relates the key and values.
properties:
key:
description: key is the label key that the selector
applies to.
type: string
operator:
description: operator represents a key's relationship
to a set of values. Valid operators are In, NotIn,
Exists and DoesNotExist.
type: string
values:
description: values is an array of string values.
If the operator is In or NotIn, the values array
must be non-empty. If the operator is Exists or
DoesNotExist, the values array must be empty.
This array is replaced during a strategic merge
patch.
items:
type: string
type: array
required:
- key
- operator
type: object
type: array
matchLabels:
additionalProperties:
type: string
description: matchLabels is a map of {key,value} pairs.
A single {key,value} in the matchLabels map is equivalent
to an element of matchExpressions, whose key field is
"key", the operator is "In", and the values array contains
only "value". The requirements are ANDed.
type: object
type: object
storageClassName:
description: 'Name of the StorageClass required by the claim.
More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1'
type: string
volumeMode:
description: volumeMode defines what type of volume is required
by the claim. Value of Filesystem is implied when not included
in claim spec.
type: string
volumeName:
description: VolumeName is the binding reference to the PersistentVolume
backing this claim.
type: string
type: object
resources:
description: Compute Resources required by each etcd node.
properties:
limits:
additionalProperties:
anyOf:
- type: integer
- type: string
pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
x-kubernetes-int-or-string: true
description: 'Limits describes the maximum amount of compute
resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'
type: object
requests:
additionalProperties:
anyOf:
- type: integer
- type: string
pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
x-kubernetes-int-or-string: true
description: 'Requests describes the minimum amount of compute
resources required. If Requests is omitted for a container,
it defaults to Limits if that is explicitly specified, otherwise
to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'
type: object
type: object
tolerations:
description: If specified, the pod's tolerations.
items:
description: The pod this Toleration is attached to tolerates
any taint that matches the triple <key,value,effect> using
the matching operator <operator>.
properties:
effect:
description: Effect indicates the taint effect to match.
Empty means match all taint effects. When specified, allowed
values are NoSchedule, PreferNoSchedule and NoExecute.
type: string
key:
description: Key is the taint key that the toleration applies
to. Empty means match all taint keys. If the key is empty,
operator must be Exists; this combination means to match
all values and all keys.
type: string
operator:
description: Operator represents a key's relationship to
the value. Valid operators are Exists and Equal. Defaults
to Equal. Exists is equivalent to wildcard for value,
so that a pod can tolerate all taints of a particular
category.
type: string
tolerationSeconds:
description: TolerationSeconds represents the period of
time the toleration (which must be of effect NoExecute,
otherwise this field is ignored) tolerates the taint.
By default, it is not set, which means tolerate the taint
forever (do not evict). Zero and negative values will
be treated as 0 (evict immediately) by the system.
format: int64
type: integer
value:
description: Value is the taint value the toleration matches
to. If the operator is Exists, the value should be empty,
otherwise just a regular string.
type: string
type: object
type: array
topologySpreadConstraints:
description: TopologySpreadConstraints describes how a group of
pods ought to spread across topology domains. Scheduler will
schedule pods in a way which abides by the constraints. This
field is only honored by clusters that enable the EvenPodsSpread
feature. All topologySpreadConstraints are ANDed.
items:
description: TopologySpreadConstraint specifies how to spread
matching pods among the given topology.
properties:
labelSelector:
description: LabelSelector is used to find matching pods.
Pods that match this label selector are counted to determine
the number of pods in their corresponding topology domain.
properties:
matchExpressions:
description: matchExpressions is a list of label selector
requirements. The requirements are ANDed.
items:
description: A label selector requirement is a selector
that contains values, a key, and an operator that
relates the key and values.
gitextract__utsxwcs/
├── .commitlintrc.yml
├── .dockerignore
├── .github/
│ └── workflows/
│ ├── build.yml
│ ├── commitlint.yml
│ ├── e2e.yml
│ └── golangci-lint.yml
├── .gitignore
├── .golangci.yml
├── CHANGELOG/
│ └── CHANGELOG.md
├── LICENSE
├── Makefile
├── README.md
├── README_CN.md
├── build/
│ ├── docker/
│ │ ├── kstone-api/
│ │ │ └── Dockerfile
│ │ ├── kstone-controller/
│ │ │ └── Dockerfile
│ │ └── tools/
│ │ └── code-generator/
│ │ ├── Dockerfile
│ │ ├── Makefile
│ │ ├── boilerplate.go.txt
│ │ ├── code.sh
│ │ └── openapi.sh
│ ├── lib/
│ │ ├── common.mk
│ │ ├── create-manifest.sh
│ │ ├── docker-buildx.mk
│ │ ├── gen.mk
│ │ ├── golang.mk
│ │ └── image.mk
│ └── script/
│ └── openapi.sh
├── charts/
│ ├── .gitignore
│ ├── .helmignore
│ ├── Chart.yaml
│ ├── README.md
│ ├── README_CN.md
│ ├── charts/
│ │ ├── backup-operator/
│ │ │ ├── .helmignore
│ │ │ ├── Chart.yaml
│ │ │ ├── templates/
│ │ │ │ ├── _helpers.tpl
│ │ │ │ └── deployment.yaml
│ │ │ └── values.yaml
│ │ ├── dashboard/
│ │ │ ├── .helmignore
│ │ │ ├── Chart.yaml
│ │ │ ├── templates/
│ │ │ │ ├── _helpers.tpl
│ │ │ │ ├── deployment.yaml
│ │ │ │ └── service.yaml
│ │ │ └── values.yaml
│ │ ├── dashboard-api/
│ │ │ ├── .helmignore
│ │ │ ├── Chart.yaml
│ │ │ ├── templates/
│ │ │ │ ├── _helpers.tpl
│ │ │ │ ├── configmap.yaml
│ │ │ │ ├── deployment.yaml
│ │ │ │ ├── secret.yaml
│ │ │ │ └── service.yaml
│ │ │ └── values.yaml
│ │ ├── etcd-controller/
│ │ │ ├── .helmignore
│ │ │ ├── Chart.yaml
│ │ │ ├── templates/
│ │ │ │ ├── _helpers.tpl
│ │ │ │ └── deployment.yaml
│ │ │ └── values.yaml
│ │ ├── etcd-operator/
│ │ │ ├── .helmignore
│ │ │ ├── Chart.yaml
│ │ │ ├── templates/
│ │ │ │ ├── _helpers.tpl
│ │ │ │ ├── configmap.yaml
│ │ │ │ ├── crd.yaml
│ │ │ │ ├── deployment.yaml
│ │ │ │ ├── service.yaml
│ │ │ │ └── webhook.yaml
│ │ │ └── values.yaml
│ │ ├── grafana/
│ │ │ ├── .helmignore
│ │ │ ├── Chart.yaml
│ │ │ ├── dashboards/
│ │ │ │ └── 0.json
│ │ │ ├── templates/
│ │ │ │ ├── _helpers.tpl
│ │ │ │ ├── configmap.yaml
│ │ │ │ ├── deployment.yaml
│ │ │ │ ├── secret.yaml
│ │ │ │ └── service.yaml
│ │ │ └── values.yaml
│ │ ├── inspection-controller/
│ │ │ ├── .helmignore
│ │ │ ├── Chart.yaml
│ │ │ ├── templates/
│ │ │ │ ├── _helpers.tpl
│ │ │ │ ├── deployment.yaml
│ │ │ │ ├── service.yaml
│ │ │ │ └── servicemonitor.yaml
│ │ │ └── values.yaml
│ │ ├── kube-prometheus-stack/
│ │ │ ├── .helmignore
│ │ │ ├── CONTRIBUTING.md
│ │ │ ├── Chart.yaml
│ │ │ ├── README.md
│ │ │ ├── ci/
│ │ │ │ ├── 01-provision-crds-values.yaml
│ │ │ │ └── 02-test-without-crds-values.yaml
│ │ │ ├── crds/
│ │ │ │ ├── crd-alertmanagerconfigs.yaml
│ │ │ │ ├── crd-alertmanagers.yaml
│ │ │ │ ├── crd-podmonitors.yaml
│ │ │ │ ├── crd-probes.yaml
│ │ │ │ ├── crd-prometheuses.yaml
│ │ │ │ ├── crd-prometheusrules.yaml
│ │ │ │ ├── crd-servicemonitors.yaml
│ │ │ │ └── crd-thanosrulers.yaml
│ │ │ ├── hack/
│ │ │ │ ├── README.md
│ │ │ │ ├── minikube/
│ │ │ │ │ ├── README.md
│ │ │ │ │ ├── cmd.sh
│ │ │ │ │ └── values.yaml
│ │ │ │ ├── requirements.txt
│ │ │ │ ├── sync_grafana_dashboards.py
│ │ │ │ ├── sync_prometheus_rules.py
│ │ │ │ └── update_crds.sh
│ │ │ ├── templates/
│ │ │ │ ├── NOTES.txt
│ │ │ │ ├── _helpers.tpl
│ │ │ │ ├── alertmanager/
│ │ │ │ │ ├── alertmanager.yaml
│ │ │ │ │ ├── ingress.yaml
│ │ │ │ │ ├── ingressperreplica.yaml
│ │ │ │ │ ├── podDisruptionBudget.yaml
│ │ │ │ │ ├── psp-role.yaml
│ │ │ │ │ ├── psp-rolebinding.yaml
│ │ │ │ │ ├── psp.yaml
│ │ │ │ │ ├── secret.yaml
│ │ │ │ │ ├── service.yaml
│ │ │ │ │ ├── serviceaccount.yaml
│ │ │ │ │ ├── servicemonitor.yaml
│ │ │ │ │ └── serviceperreplica.yaml
│ │ │ │ ├── exporters/
│ │ │ │ │ ├── core-dns/
│ │ │ │ │ │ ├── service.yaml
│ │ │ │ │ │ └── servicemonitor.yaml
│ │ │ │ │ ├── kube-api-server/
│ │ │ │ │ │ └── servicemonitor.yaml
│ │ │ │ │ ├── kube-controller-manager/
│ │ │ │ │ │ ├── endpoints.yaml
│ │ │ │ │ │ ├── service.yaml
│ │ │ │ │ │ └── servicemonitor.yaml
│ │ │ │ │ ├── kube-dns/
│ │ │ │ │ │ ├── service.yaml
│ │ │ │ │ │ └── servicemonitor.yaml
│ │ │ │ │ ├── kube-etcd/
│ │ │ │ │ │ ├── endpoints.yaml
│ │ │ │ │ │ ├── service.yaml
│ │ │ │ │ │ └── servicemonitor.yaml
│ │ │ │ │ ├── kube-proxy/
│ │ │ │ │ │ ├── endpoints.yaml
│ │ │ │ │ │ ├── service.yaml
│ │ │ │ │ │ └── servicemonitor.yaml
│ │ │ │ │ ├── kube-scheduler/
│ │ │ │ │ │ ├── endpoints.yaml
│ │ │ │ │ │ ├── service.yaml
│ │ │ │ │ │ └── servicemonitor.yaml
│ │ │ │ │ ├── kube-state-metrics/
│ │ │ │ │ │ └── serviceMonitor.yaml
│ │ │ │ │ ├── kubelet/
│ │ │ │ │ │ └── servicemonitor.yaml
│ │ │ │ │ └── node-exporter/
│ │ │ │ │ └── servicemonitor.yaml
│ │ │ │ ├── grafana/
│ │ │ │ │ ├── configmap-dashboards.yaml
│ │ │ │ │ ├── configmaps-datasources.yaml
│ │ │ │ │ ├── dashboards-1.14/
│ │ │ │ │ │ ├── alertmanager-overview.yaml
│ │ │ │ │ │ ├── apiserver.yaml
│ │ │ │ │ │ ├── cluster-total.yaml
│ │ │ │ │ │ ├── controller-manager.yaml
│ │ │ │ │ │ ├── etcd.yaml
│ │ │ │ │ │ ├── k8s-coredns.yaml
│ │ │ │ │ │ ├── k8s-resources-cluster.yaml
│ │ │ │ │ │ ├── k8s-resources-namespace.yaml
│ │ │ │ │ │ ├── k8s-resources-node.yaml
│ │ │ │ │ │ ├── k8s-resources-pod.yaml
│ │ │ │ │ │ ├── k8s-resources-workload.yaml
│ │ │ │ │ │ ├── k8s-resources-workloads-namespace.yaml
│ │ │ │ │ │ ├── kubelet.yaml
│ │ │ │ │ │ ├── namespace-by-pod.yaml
│ │ │ │ │ │ ├── namespace-by-workload.yaml
│ │ │ │ │ │ ├── node-cluster-rsrc-use.yaml
│ │ │ │ │ │ ├── node-rsrc-use.yaml
│ │ │ │ │ │ ├── nodes.yaml
│ │ │ │ │ │ ├── persistentvolumesusage.yaml
│ │ │ │ │ │ ├── pod-total.yaml
│ │ │ │ │ │ ├── prometheus-remote-write.yaml
│ │ │ │ │ │ ├── prometheus.yaml
│ │ │ │ │ │ ├── proxy.yaml
│ │ │ │ │ │ ├── scheduler.yaml
│ │ │ │ │ │ ├── statefulset.yaml
│ │ │ │ │ │ └── workload-total.yaml
│ │ │ │ │ └── servicemonitor.yaml
│ │ │ │ ├── prometheus/
│ │ │ │ │ ├── _rules.tpl
│ │ │ │ │ ├── additionalAlertRelabelConfigs.yaml
│ │ │ │ │ ├── additionalAlertmanagerConfigs.yaml
│ │ │ │ │ ├── additionalPrometheusRules.yaml
│ │ │ │ │ ├── additionalScrapeConfigs.yaml
│ │ │ │ │ ├── clusterrole.yaml
│ │ │ │ │ ├── clusterrolebinding.yaml
│ │ │ │ │ ├── ingress.yaml
│ │ │ │ │ ├── ingressThanosSidecar.yaml
│ │ │ │ │ ├── ingressperreplica.yaml
│ │ │ │ │ ├── podDisruptionBudget.yaml
│ │ │ │ │ ├── podmonitors.yaml
│ │ │ │ │ ├── prometheus.yaml
│ │ │ │ │ ├── psp-clusterrole.yaml
│ │ │ │ │ ├── psp-clusterrolebinding.yaml
│ │ │ │ │ ├── psp.yaml
│ │ │ │ │ ├── rules-1.14/
│ │ │ │ │ │ ├── alertmanager.rules.yaml
│ │ │ │ │ │ ├── etcd.yaml
│ │ │ │ │ │ ├── general.rules.yaml
│ │ │ │ │ │ ├── k8s.rules.yaml
│ │ │ │ │ │ ├── kube-apiserver-availability.rules.yaml
│ │ │ │ │ │ ├── kube-apiserver-burnrate.rules.yaml
│ │ │ │ │ │ ├── kube-apiserver-histogram.rules.yaml
│ │ │ │ │ │ ├── kube-apiserver-slos.yaml
│ │ │ │ │ │ ├── kube-apiserver.rules.yaml
│ │ │ │ │ │ ├── kube-prometheus-general.rules.yaml
│ │ │ │ │ │ ├── kube-prometheus-node-recording.rules.yaml
│ │ │ │ │ │ ├── kube-scheduler.rules.yaml
│ │ │ │ │ │ ├── kube-state-metrics.yaml
│ │ │ │ │ │ ├── kubelet.rules.yaml
│ │ │ │ │ │ ├── kubernetes-apps.yaml
│ │ │ │ │ │ ├── kubernetes-resources.yaml
│ │ │ │ │ │ ├── kubernetes-storage.yaml
│ │ │ │ │ │ ├── kubernetes-system-apiserver.yaml
│ │ │ │ │ │ ├── kubernetes-system-controller-manager.yaml
│ │ │ │ │ │ ├── kubernetes-system-kubelet.yaml
│ │ │ │ │ │ ├── kubernetes-system-scheduler.yaml
│ │ │ │ │ │ ├── kubernetes-system.yaml
│ │ │ │ │ │ ├── node-exporter.rules.yaml
│ │ │ │ │ │ ├── node-exporter.yaml
│ │ │ │ │ │ ├── node-network.yaml
│ │ │ │ │ │ ├── node.rules.yaml
│ │ │ │ │ │ ├── prometheus-operator.yaml
│ │ │ │ │ │ └── prometheus.yaml
│ │ │ │ │ ├── service.yaml
│ │ │ │ │ ├── serviceThanosSidecar.yaml
│ │ │ │ │ ├── serviceThanosSidecarExternal.yaml
│ │ │ │ │ ├── serviceaccount.yaml
│ │ │ │ │ ├── servicemonitor.yaml
│ │ │ │ │ ├── servicemonitors.yaml
│ │ │ │ │ └── serviceperreplica.yaml
│ │ │ │ └── prometheus-operator/
│ │ │ │ ├── admission-webhooks/
│ │ │ │ │ ├── job-patch/
│ │ │ │ │ │ ├── clusterrole.yaml
│ │ │ │ │ │ ├── clusterrolebinding.yaml
│ │ │ │ │ │ ├── job-createSecret.yaml
│ │ │ │ │ │ ├── job-patchWebhook.yaml
│ │ │ │ │ │ ├── psp.yaml
│ │ │ │ │ │ ├── role.yaml
│ │ │ │ │ │ ├── rolebinding.yaml
│ │ │ │ │ │ └── serviceaccount.yaml
│ │ │ │ │ ├── mutatingWebhookConfiguration.yaml
│ │ │ │ │ └── validatingWebhookConfiguration.yaml
│ │ │ │ ├── certmanager.yaml
│ │ │ │ ├── clusterrole.yaml
│ │ │ │ ├── clusterrolebinding.yaml
│ │ │ │ ├── deployment.yaml
│ │ │ │ ├── psp-clusterrole.yaml
│ │ │ │ ├── psp-clusterrolebinding.yaml
│ │ │ │ ├── psp.yaml
│ │ │ │ ├── service.yaml
│ │ │ │ ├── serviceaccount.yaml
│ │ │ │ └── servicemonitor.yaml
│ │ │ └── values.yaml
│ │ └── tapp/
│ │ ├── .helmignore
│ │ ├── Chart.yaml
│ │ ├── templates/
│ │ │ ├── _helpers.tpl
│ │ │ ├── configmap.yaml
│ │ │ ├── deployment.yaml
│ │ │ ├── hpa.yaml
│ │ │ ├── service.yaml
│ │ │ ├── serviceaccount.yaml
│ │ │ └── tests/
│ │ │ └── test-connection.yaml
│ │ └── values.yaml
│ ├── templates/
│ │ ├── _helpers.tpl
│ │ ├── crd.yaml
│ │ ├── ingress.yaml
│ │ └── serviceaccount.yaml
│ ├── values.test.yaml
│ └── values.yaml
├── cmd/
│ ├── kstone-api/
│ │ ├── apiserver.go
│ │ ├── app/
│ │ │ └── server.go
│ │ └── config/
│ │ └── config.go
│ └── kstone-controller/
│ ├── etcdcluster-controller/
│ │ └── controller.go
│ ├── etcdinspection-controller/
│ │ └── controller.go
│ └── main.go
├── deploy/
│ ├── crds/
│ │ ├── kstone.tkestack.io_etcdclusters.yaml
│ │ └── kstone.tkestack.io_etcdinspections.yaml
│ ├── etcd-backup-operator.yaml
│ └── kstone-controller.yaml
├── docs/
│ ├── README.md
│ ├── README_CN.md
│ ├── backup/
│ │ └── cos/
│ │ ├── cos_en.md
│ │ └── cos_zh.md
│ ├── installation/
│ │ ├── kubeadm_en.md
│ │ ├── minikube-amd64.md
│ │ ├── minikube-macos.md
│ │ └── tke.md
│ ├── migration/
│ │ └── README.md
│ └── proposal/
│ └── authentication-support/
│ ├── README.md
│ └── proposal.yaml
├── go.mod
├── go.sum
├── hack/
│ ├── boilerplate.go.txt
│ ├── custom-boilerplate.go.txt
│ ├── migratev1.sh
│ ├── tools.go
│ ├── update-codegen.sh
│ └── verify-codegen.sh
├── pkg/
│ ├── apis/
│ │ └── kstone/
│ │ ├── register.go
│ │ ├── v1alpha1/
│ │ │ ├── doc.go
│ │ │ ├── register.go
│ │ │ ├── types.go
│ │ │ ├── zz_generated.deepcopy.go
│ │ │ └── zz_generated.defaults.go
│ │ └── v1alpha2/
│ │ ├── doc.go
│ │ ├── register.go
│ │ ├── types.go
│ │ ├── zz_generated.deepcopy.go
│ │ └── zz_generated.defaults.go
│ ├── authentication/
│ │ ├── authenticator/
│ │ │ ├── authenticator.go
│ │ │ └── bearertoken/
│ │ │ └── bearertoken.go
│ │ ├── helper.go
│ │ ├── interfaces.go
│ │ ├── plugins.go
│ │ ├── providers/
│ │ │ └── providers.go
│ │ ├── request/
│ │ │ └── request.go
│ │ ├── store.go
│ │ └── token/
│ │ └── jwt/
│ │ ├── generator.go
│ │ └── jwt.go
│ ├── backup/
│ │ ├── backup.go
│ │ ├── plugins.go
│ │ ├── providers/
│ │ │ ├── cos/
│ │ │ │ └── cos.go
│ │ │ ├── providers.go
│ │ │ └── s3/
│ │ │ ├── clientwrapper.go
│ │ │ └── s3.go
│ │ ├── storage.go
│ │ └── util.go
│ ├── clusterprovider/
│ │ ├── etcdcluster.go
│ │ ├── helper.go
│ │ ├── plugins.go
│ │ └── providers/
│ │ ├── imported/
│ │ │ └── cluster.go
│ │ ├── kstone/
│ │ │ └── kstone.go
│ │ └── providers.go
│ ├── controllers/
│ │ ├── etcdcluster/
│ │ │ └── etcdclusters_controller.go
│ │ ├── etcdinspection/
│ │ │ └── etcdinspection_controller.go
│ │ └── util/
│ │ └── util.go
│ ├── etcd/
│ │ ├── client/
│ │ │ ├── cleint.go
│ │ │ ├── version.go
│ │ │ └── versions/
│ │ │ ├── providers.go
│ │ │ ├── v2/
│ │ │ │ └── client.go
│ │ │ └── v3/
│ │ │ └── client.go
│ │ ├── client.go
│ │ ├── encoding.go
│ │ ├── health.go
│ │ ├── helper.go
│ │ └── stats.go
│ ├── featureprovider/
│ │ ├── feature.go
│ │ ├── plugins.go
│ │ ├── providers/
│ │ │ ├── alarm/
│ │ │ │ └── alarm.go
│ │ │ ├── backup/
│ │ │ │ └── backup.go
│ │ │ ├── backupcheck/
│ │ │ │ └── backupcheck.go
│ │ │ ├── consistency/
│ │ │ │ └── consistency.go
│ │ │ ├── healthy/
│ │ │ │ └── healthy.go
│ │ │ ├── monitor/
│ │ │ │ └── monitor.go
│ │ │ ├── providers.go
│ │ │ └── request/
│ │ │ └── request.go
│ │ └── util/
│ │ └── util.go
│ ├── generated/
│ │ ├── clientset/
│ │ │ └── versioned/
│ │ │ ├── clientset.go
│ │ │ ├── doc.go
│ │ │ ├── fake/
│ │ │ │ ├── clientset_generated.go
│ │ │ │ ├── doc.go
│ │ │ │ └── register.go
│ │ │ ├── scheme/
│ │ │ │ ├── doc.go
│ │ │ │ └── register.go
│ │ │ └── typed/
│ │ │ └── kstone/
│ │ │ ├── v1alpha1/
│ │ │ │ ├── doc.go
│ │ │ │ ├── etcdcluster.go
│ │ │ │ ├── etcdinspection.go
│ │ │ │ ├── fake/
│ │ │ │ │ ├── doc.go
│ │ │ │ │ ├── fake_etcdcluster.go
│ │ │ │ │ ├── fake_etcdinspection.go
│ │ │ │ │ └── fake_kstone_client.go
│ │ │ │ ├── generated_expansion.go
│ │ │ │ └── kstone_client.go
│ │ │ └── v1alpha2/
│ │ │ ├── doc.go
│ │ │ ├── etcdcluster.go
│ │ │ ├── etcdinspection.go
│ │ │ ├── fake/
│ │ │ │ ├── doc.go
│ │ │ │ ├── fake_etcdcluster.go
│ │ │ │ ├── fake_etcdinspection.go
│ │ │ │ └── fake_kstone_client.go
│ │ │ ├── generated_expansion.go
│ │ │ └── kstone_client.go
│ │ ├── informers/
│ │ │ └── externalversions/
│ │ │ ├── factory.go
│ │ │ ├── generic.go
│ │ │ ├── internalinterfaces/
│ │ │ │ └── factory_interfaces.go
│ │ │ └── kstone/
│ │ │ ├── interface.go
│ │ │ ├── v1alpha1/
│ │ │ │ ├── etcdcluster.go
│ │ │ │ ├── etcdinspection.go
│ │ │ │ └── interface.go
│ │ │ └── v1alpha2/
│ │ │ ├── etcdcluster.go
│ │ │ ├── etcdinspection.go
│ │ │ └── interface.go
│ │ └── listers/
│ │ └── kstone/
│ │ ├── v1alpha1/
│ │ │ ├── etcdcluster.go
│ │ │ ├── etcdinspection.go
│ │ │ └── expansion_generated.go
│ │ └── v1alpha2/
│ │ ├── etcdcluster.go
│ │ ├── etcdinspection.go
│ │ └── expansion_generated.go
│ ├── inspection/
│ │ ├── alarm.go
│ │ ├── backupcheck.go
│ │ ├── consistency.go
│ │ ├── healthy.go
│ │ ├── inspection.go
│ │ ├── metrics/
│ │ │ └── metrics.go
│ │ └── request.go
│ ├── k8s/
│ │ └── client.go
│ ├── middlewares/
│ │ ├── auth.go
│ │ └── cors.go
│ ├── monitor/
│ │ └── prometheus.go
│ ├── router/
│ │ └── router.go
│ └── signals/
│ ├── signal.go
│ ├── signal_posix.go
│ └── signal_windows.go
├── test/
│ ├── e2e/
│ │ ├── e2e_test.go
│ │ └── etcdcluster_test.go
│ ├── fixtures/
│ │ ├── fixtures.go
│ │ └── manifests/
│ │ ├── etcd_service.yaml
│ │ ├── etcd_statefulset.yaml
│ │ └── etcdcluster_imported.yaml
│ ├── scripts/
│ │ ├── kstone.sh
│ │ ├── minikube.sh
│ │ └── pre.sh
│ └── testfiles/
│ └── testfiles.go
└── third_party/
└── etcd-operator/
├── .github/
│ └── PULL_REQUEST_TEMPLATE.md
├── .gitignore
├── CHANGELOG.md
├── CONTRIBUTING.md
├── DCO
├── Dockerfile
├── Gopkg.toml
├── LICENSE
├── MAINTAINERS
├── Makefile
├── NOTICE
├── README.md
├── ROADMAP.md
├── cmd/
│ ├── backup-operator/
│ │ ├── doc.go
│ │ └── main.go
│ ├── operator/
│ │ └── main.go
│ └── restore-operator/
│ ├── doc.go
│ ├── main.go
│ └── service.go
├── code-of-conduct.md
├── codecov.yaml
├── doc/
│ ├── alpha-features.md
│ ├── best_practices.md
│ ├── design/
│ │ ├── abs_backup.md
│ │ ├── backup_operator.md
│ │ ├── cluster_creation.md
│ │ ├── cluster_lifecycle.md
│ │ ├── cluster_restore.md
│ │ ├── cluster_status.md
│ │ ├── cluster_tls.md
│ │ ├── cluster_upgrade.md
│ │ ├── disaster_recovery.md
│ │ ├── dynamic_tls.md
│ │ ├── gcs_backup.md
│ │ ├── operator_recovery.md
│ │ ├── oss_backup.md
│ │ ├── persistent_volumes_etcd_data.md
│ │ ├── reconciliation.md
│ │ ├── resource_ownership_and_GC.md
│ │ ├── restore_operator.md
│ │ └── s3_backup.md
│ ├── dev/
│ │ ├── debug_e2e_flake.md
│ │ ├── developer_guide.md
│ │ └── release.md
│ └── user/
│ ├── abs_backup.md
│ ├── backup_cronjob/
│ │ ├── README.md
│ │ ├── configmap.yaml
│ │ └── cronjob.yaml
│ ├── client_service.md
│ ├── cluster_tls.md
│ ├── clusterwide.md
│ ├── conditions_and_events.md
│ ├── gcs_backup.md
│ ├── install_guide.md
│ ├── oss_backup.md
│ ├── rbac.md
│ ├── resource_labels.md
│ ├── spec_examples.md
│ ├── upgrade/
│ │ ├── migrate_cr_070.md
│ │ └── upgrade_guide.md
│ └── walkthrough/
│ ├── backup-operator.md
│ └── restore-operator.md
├── example/
│ ├── deployment.yaml
│ ├── deployment_psp.yaml
│ ├── etcd-backup-operator/
│ │ ├── backu_cr_qcloud.yaml
│ │ ├── backup.sh
│ │ ├── backup_cr.yaml
│ │ ├── deployment.yaml
│ │ ├── deployment_qcloud.yaml
│ │ ├── periodic_backup_cr.yaml
│ │ └── secrets.yaml
│ ├── etcd-restore-operator/
│ │ ├── deployment.yaml
│ │ ├── deployment_qcloud.yaml
│ │ ├── restore_cr.yaml
│ │ └── restore_cr_qcloud.yaml
│ ├── example-etcd-cluster-nodeport-service.json
│ ├── example-etcd-cluster.yaml
│ ├── rbac/
│ │ ├── cluster-role-binding-template.yaml
│ │ ├── cluster-role-template.yaml
│ │ ├── create_role.sh
│ │ ├── role-binding-template.yaml
│ │ └── role-template.yaml
│ └── tls/
│ ├── certs/
│ │ ├── ca-config.json
│ │ ├── ca-csr.json
│ │ ├── etcd-client-ca.crt
│ │ ├── etcd-client.crt
│ │ ├── etcd-client.json
│ │ ├── etcd-client.key
│ │ ├── gen-cert.sh
│ │ ├── peer-ca.crt
│ │ ├── peer.crt
│ │ ├── peer.json
│ │ ├── peer.key
│ │ ├── server-ca.crt
│ │ ├── server.crt
│ │ ├── server.json
│ │ └── server.key
│ └── example-tls-cluster.yaml
├── go.mod
├── go.sum
├── hack/
│ ├── build/
│ │ ├── Dockerfile
│ │ ├── backup-operator/
│ │ │ └── build
│ │ ├── build
│ │ ├── docker_push
│ │ ├── e2e/
│ │ │ ├── builder/
│ │ │ │ ├── Dockerfile
│ │ │ │ └── build
│ │ │ └── docker_push
│ │ ├── logcollector/
│ │ │ └── Dockerfile
│ │ ├── operator/
│ │ │ └── build
│ │ └── restore-operator/
│ │ └── build
│ ├── ci/
│ │ ├── get_dep
│ │ ├── get_kube.sh
│ │ ├── rbac_utils.sh
│ │ ├── run_e2e
│ │ └── run_unit
│ ├── fmt_pass
│ ├── k8s/
│ │ └── codegen/
│ │ ├── README.md
│ │ ├── boilerplate.go.txt
│ │ ├── update-generated.sh
│ │ └── verify-generated.sh
│ ├── lib/
│ │ ├── build.sh
│ │ └── test_lib.sh
│ ├── release/
│ │ └── bump_version.sh
│ ├── test
│ ├── unit_test
│ └── update_vendor.sh
├── pkg/
│ ├── apis/
│ │ └── etcd/
│ │ └── v1beta2/
│ │ ├── backup_types.go
│ │ ├── cluster.go
│ │ ├── cluster_tls.go
│ │ ├── doc.go
│ │ ├── register.go
│ │ ├── restore_types.go
│ │ ├── status.go
│ │ └── zz_generated.deepcopy.go
│ ├── backup/
│ │ ├── backup_manager.go
│ │ ├── backupapi/
│ │ │ └── http.go
│ │ ├── reader/
│ │ │ ├── abs_reader.go
│ │ │ ├── cos_reader.go
│ │ │ ├── gcs_reader.go
│ │ │ ├── hostPath_reader.go
│ │ │ ├── oss_reader.go
│ │ │ ├── reader.go
│ │ │ └── s3_reader.go
│ │ ├── util/
│ │ │ ├── constants.go
│ │ │ └── util.go
│ │ └── writer/
│ │ ├── abs_writer.go
│ │ ├── cos_writer.go
│ │ ├── gcs_writer.go
│ │ ├── hostPath_writer.go
│ │ ├── oss_writer.go
│ │ ├── s3_writer.go
│ │ └── writer.go
│ ├── chaos/
│ │ └── chaos.go
│ ├── client/
│ │ └── client.go
│ ├── cluster/
│ │ ├── cluster.go
│ │ ├── cluster_test.go
│ │ ├── error.go
│ │ ├── error_test.go
│ │ ├── member.go
│ │ ├── metrics.go
│ │ ├── reconcile.go
│ │ └── upgrade.go
│ ├── controller/
│ │ ├── backup-operator/
│ │ │ ├── abs_backup.go
│ │ │ ├── controller.go
│ │ │ ├── cos_backup.go
│ │ │ ├── gcs_backup.go
│ │ │ ├── hostPath_backup.go
│ │ │ ├── operator.go
│ │ │ ├── oss_backup.go
│ │ │ ├── s3_backup.go
│ │ │ ├── sync.go
│ │ │ ├── sync_test.go
│ │ │ └── util.go
│ │ ├── controller.go
│ │ ├── controller_test.go
│ │ ├── informer.go
│ │ ├── metrics.go
│ │ ├── restore-operator/
│ │ │ ├── controller.go
│ │ │ ├── http.go
│ │ │ ├── operator.go
│ │ │ └── sync.go
│ │ └── util.go
│ ├── generated/
│ │ ├── clientset/
│ │ │ └── versioned/
│ │ │ ├── clientset.go
│ │ │ ├── doc.go
│ │ │ ├── fake/
│ │ │ │ ├── clientset_generated.go
│ │ │ │ ├── doc.go
│ │ │ │ └── register.go
│ │ │ ├── scheme/
│ │ │ │ ├── doc.go
│ │ │ │ └── register.go
│ │ │ └── typed/
│ │ │ └── etcd/
│ │ │ └── v1beta2/
│ │ │ ├── doc.go
│ │ │ ├── etcd_client.go
│ │ │ ├── etcdbackup.go
│ │ │ ├── etcdcluster.go
│ │ │ ├── etcdrestore.go
│ │ │ ├── fake/
│ │ │ │ ├── doc.go
│ │ │ │ ├── fake_etcd_client.go
│ │ │ │ ├── fake_etcdbackup.go
│ │ │ │ ├── fake_etcdcluster.go
│ │ │ │ └── fake_etcdrestore.go
│ │ │ └── generated_expansion.go
│ │ ├── informers/
│ │ │ └── externalversions/
│ │ │ ├── etcd/
│ │ │ │ ├── interface.go
│ │ │ │ └── v1beta2/
│ │ │ │ ├── etcdbackup.go
│ │ │ │ ├── etcdcluster.go
│ │ │ │ ├── etcdrestore.go
│ │ │ │ └── interface.go
│ │ │ ├── factory.go
│ │ │ ├── generic.go
│ │ │ └── internalinterfaces/
│ │ │ └── factory_interfaces.go
│ │ └── listers/
│ │ └── etcd/
│ │ └── v1beta2/
│ │ ├── etcdbackup.go
│ │ ├── etcdcluster.go
│ │ ├── etcdrestore.go
│ │ └── expansion_generated.go
│ └── util/
│ ├── alibabacloudutil/
│ │ └── ossfactory/
│ │ └── client.go
│ ├── awsutil/
│ │ └── s3factory/
│ │ ├── client.go
│ │ └── client_test.go
│ ├── azureutil/
│ │ └── absfactory/
│ │ └── client.go
│ ├── constants/
│ │ └── constants.go
│ ├── etcdutil/
│ │ ├── etcdutil.go
│ │ ├── etcdutil_test.go
│ │ ├── member.go
│ │ ├── member_test.go
│ │ └── tls.go
│ ├── gcputil/
│ │ └── gcsfactory/
│ │ └── client.go
│ ├── k8sutil/
│ │ ├── crd.go
│ │ ├── events_util.go
│ │ ├── k8sutil.go
│ │ ├── k8sutils_test.go
│ │ ├── node_util.go
│ │ ├── pod_util.go
│ │ └── tls.go
│ ├── probe/
│ │ └── readyz.go
│ ├── retryutil/
│ │ └── retry_util.go
│ ├── tencentcloudutil/
│ │ ├── cosfactory/
│ │ │ └── client.go
│ │ └── metadata/
│ │ └── credential/
│ │ └── secret.go
│ └── util.go
├── test/
│ ├── container/
│ │ ├── Dockerfile
│ │ ├── docker_push
│ │ └── run
│ ├── e2e/
│ │ ├── README.md
│ │ ├── basic_test.go
│ │ ├── cluster_status_test.go
│ │ ├── e2eslow/
│ │ │ ├── backup_restore_test.go
│ │ │ ├── disruptive_test.go
│ │ │ └── main_test.go
│ │ ├── e2eutil/
│ │ │ ├── crd_util.go
│ │ │ ├── etcd_util.go
│ │ │ ├── spec_util.go
│ │ │ ├── tls.go
│ │ │ ├── util.go
│ │ │ └── wait_util.go
│ │ ├── framework/
│ │ │ ├── framework.go
│ │ │ └── main_entry.go
│ │ ├── main_test.go
│ │ ├── pv_test.go
│ │ ├── recovery_test.go
│ │ ├── resize_test.go
│ │ ├── tls_test.go
│ │ ├── upgradetest/
│ │ │ ├── README.md
│ │ │ ├── framework/
│ │ │ │ └── framework.go
│ │ │ ├── main_test.go
│ │ │ └── upgrade_test.go
│ │ └── util.go
│ ├── logcollector/
│ │ └── main.go
│ └── pod/
│ ├── Dockerfile
│ ├── README.md
│ ├── docker_push
│ ├── run-test-pod
│ ├── simple/
│ │ ├── Dockerfile
│ │ ├── run-e2e
│ │ └── simple-pod-templ.yaml
│ └── test-pod-templ.yaml
└── version/
└── version.go
SYMBOL INDEX (1787 symbols across 241 files)
FILE: charts/charts/kube-prometheus-stack/hack/sync_grafana_dashboards.py
class LiteralStr (line 13) | class LiteralStr(str):
function change_style (line 17) | def change_style(style, representer):
function init_yaml_styles (line 81) | def init_yaml_styles():
function escape (line 86) | def escape(s):
function unescape (line 90) | def unescape(s):
function yaml_str_repr (line 94) | def yaml_str_repr(struct, indent=2):
function patch_json_for_multicluster_configuration (line 107) | def patch_json_for_multicluster_configuration(content):
function write_group_to_file (line 148) | def write_group_to_file(resource_name, content, url, destination, min_ku...
function main (line 180) | def main():
FILE: charts/charts/kube-prometheus-stack/hack/sync_prometheus_rules.py
class LiteralStr (line 12) | class LiteralStr(str):
function change_style (line 16) | def change_style(style, representer):
function init_yaml_styles (line 177) | def init_yaml_styles():
function escape (line 182) | def escape(s):
function fix_expr (line 186) | def fix_expr(rules):
function yaml_str_repr (line 196) | def yaml_str_repr(struct, indent=4):
function add_rules_conditions (line 208) | def add_rules_conditions(rules, indent=4):
function add_custom_labels (line 242) | def add_custom_labels(rules, indent=4):
function write_group_to_file (line 263) | def write_group_to_file(group, url, destination, min_kubernetes, max_kub...
function write_rules_names_template (line 307) | def write_rules_names_template():
function main (line 319) | def main():
FILE: cmd/kstone-api/apiserver.go
function main (line 31) | func main() {
FILE: cmd/kstone-api/app/server.go
type APIServerCommand (line 32) | type APIServerCommand struct
method Run (line 68) | func (c *APIServerCommand) Run() error {
method AddFlags (line 83) | func (c *APIServerCommand) AddFlags(fs *pflag.FlagSet) {
function NewAPIServerCommand (line 41) | func NewAPIServerCommand() *cobra.Command {
FILE: cmd/kstone-api/config/config.go
type Config (line 23) | type Config struct
function CreateConfigFromFlags (line 31) | func CreateConfigFromFlags(token, authenticator string, enableProfiling ...
FILE: cmd/kstone-controller/etcdcluster-controller/controller.go
type EtcdClusterCommand (line 47) | type EtcdClusterCommand struct
method Run (line 82) | func (c *EtcdClusterCommand) Run() error {
method AddFlags (line 140) | func (c *EtcdClusterCommand) AddFlags(fs *pflag.FlagSet) {
method makeLeaderElectionConfig (line 177) | func (c *EtcdClusterCommand) makeLeaderElectionConfig(kubeClient *kube...
function NewEtcdClusterControllerCommand (line 58) | func NewEtcdClusterControllerCommand(out io.Writer) *cobra.Command {
FILE: cmd/kstone-controller/etcdinspection-controller/controller.go
type EtcdInspectionCommand (line 47) | type EtcdInspectionCommand struct
method Run (line 82) | func (c *EtcdInspectionCommand) Run() error {
method AddFlags (line 139) | func (c *EtcdInspectionCommand) AddFlags(fs *pflag.FlagSet) {
method makeLeaderElectionConfig (line 176) | func (c *EtcdInspectionCommand) makeLeaderElectionConfig(kubeClient *k...
function NewEtcdInspectionControllerCommand (line 58) | func NewEtcdInspectionControllerCommand(out io.Writer) *cobra.Command {
FILE: cmd/kstone-controller/main.go
function main (line 35) | func main() {
FILE: pkg/apis/kstone/register.go
constant GroupName (line 23) | GroupName = "kstone.tkestack.io"
FILE: pkg/apis/kstone/v1alpha1/register.go
function Kind (line 33) | func Kind(kind string) schema.GroupKind {
function Resource (line 38) | func Resource(resource string) schema.GroupResource {
function addKnownTypes (line 50) | func addKnownTypes(scheme *runtime.Scheme) error {
FILE: pkg/apis/kstone/v1alpha1/types.go
type EtcdCluster (line 30) | type EtcdCluster struct
type EtcdClusterPhase (line 38) | type EtcdClusterPhase
constant EtcdClusterInit (line 41) | EtcdClusterInit EtcdClusterPhase = "Initing"
constant EtcdCluterCreating (line 42) | EtcdCluterCreating EtcdClusterPhase = "Creating"
constant EtcdClusterRunning (line 43) | EtcdClusterRunning EtcdClusterPhase = "Running"
constant EtcdClusterUpdating (line 44) | EtcdClusterUpdating EtcdClusterPhase = "Updating"
constant EtcdClusterDeleteing (line 45) | EtcdClusterDeleteing EtcdClusterPhase = "Deleting"
constant EtcdClusterDeleted (line 46) | EtcdClusterDeleted EtcdClusterPhase = "Deleted"
constant EtcdClusterUnknown (line 47) | EtcdClusterUnknown EtcdClusterPhase = "Unknown"
constant EtcdClusterUnhealthy (line 48) | EtcdClusterUnhealthy EtcdClusterPhase = "UnHealthy"
type EtcdClusterConditionType (line 51) | type EtcdClusterConditionType
constant EtcdClusterConditionCreate (line 54) | EtcdClusterConditionCreate EtcdClusterConditionType = "Create"
constant EtcdClusterConditionImport (line 55) | EtcdClusterConditionImport EtcdClusterConditionType = "Import"
constant EtcdClusterConditionUpdate (line 56) | EtcdClusterConditionUpdate EtcdClusterConditionType = "Update"
constant EtcdClusterConditionDelete (line 57) | EtcdClusterConditionDelete EtcdClusterConditionType = "Delete"
type EtcdClusterCondition (line 61) | type EtcdClusterCondition struct
type EtcdClusterType (line 80) | type EtcdClusterType
constant EtcdClusterKstone (line 83) | EtcdClusterKstone EtcdClusterType = "kstone-etcd-operator"
constant EtcdClusterImported (line 84) | EtcdClusterImported EtcdClusterType = "imported"
type EtcdClusterSpec (line 88) | type EtcdClusterSpec struct
type AuthConfig (line 110) | type AuthConfig struct
type KStoneFeature (line 116) | type KStoneFeature
constant KStoneFeatureAnno (line 119) | KStoneFeatureAnno = "featureGates"
constant KStoneFeatureMonitor (line 120) | KStoneFeatureMonitor KStoneFeature = "monitor"
constant KStoneFeatureBackup (line 121) | KStoneFeatureBackup KStoneFeature = "backup"
constant KStoneFeatureHealthy (line 122) | KStoneFeatureHealthy KStoneFeature = "healthy"
constant KStoneFeatureConsistency (line 123) | KStoneFeatureConsistency KStoneFeature = "consistency"
constant KStoneFeatureRequest (line 124) | KStoneFeatureRequest KStoneFeature = "request"
constant KStoneFeatureAlarm (line 125) | KStoneFeatureAlarm KStoneFeature = "alarm"
constant KStoneFeatureBackupCheck (line 126) | KStoneFeatureBackupCheck KStoneFeature = "backupcheck"
type EtcdClusterStatus (line 130) | type EtcdClusterStatus struct
type MemberPhase (line 138) | type MemberPhase
constant MemberPhaseUnStarted (line 141) | MemberPhaseUnStarted MemberPhase = "UnStarted"
constant MemberPhaseUnKnown (line 142) | MemberPhaseUnKnown MemberPhase = "UnKnown"
constant MemberPhaseRunning (line 143) | MemberPhaseRunning MemberPhase = "Running"
constant MemberPhaseUnHealthy (line 144) | MemberPhaseUnHealthy MemberPhase = "UnHealthy"
type EtcdMemberRole (line 147) | type EtcdMemberRole
constant EtcdMemberLearner (line 150) | EtcdMemberLearner EtcdMemberRole = "Learner"
constant EtcdMemberUnKnown (line 152) | EtcdMemberUnKnown EtcdMemberRole = "UnKnown"
constant EtcdMemberFollower (line 153) | EtcdMemberFollower EtcdMemberRole = "Follower"
constant EtcdMemberLeader (line 154) | EtcdMemberLeader EtcdMemberRole = "Leader"
type MemberStatus (line 157) | type MemberStatus struct
type EtcdClusterList (line 173) | type EtcdClusterList struct
type EtcdInspection (line 184) | type EtcdInspection struct
type EtcdInspectionSpec (line 193) | type EtcdInspectionSpec struct
type EtcdInspectionRecord (line 201) | type EtcdInspectionRecord struct
type EtcdInspectionStatus (line 217) | type EtcdInspectionStatus struct
type EtcdInspectionList (line 227) | type EtcdInspectionList struct
FILE: pkg/apis/kstone/v1alpha1/zz_generated.deepcopy.go
method DeepCopyInto (line 31) | func (in *AuthConfig) DeepCopyInto(out *AuthConfig) {
method DeepCopy (line 42) | func (in *AuthConfig) DeepCopy() *AuthConfig {
method DeepCopyInto (line 52) | func (in *EtcdCluster) DeepCopyInto(out *EtcdCluster) {
method DeepCopy (line 62) | func (in *EtcdCluster) DeepCopy() *EtcdCluster {
method DeepCopyObject (line 72) | func (in *EtcdCluster) DeepCopyObject() runtime.Object {
method DeepCopyInto (line 80) | func (in *EtcdClusterCondition) DeepCopyInto(out *EtcdClusterCondition) {
method DeepCopy (line 88) | func (in *EtcdClusterCondition) DeepCopy() *EtcdClusterCondition {
method DeepCopyInto (line 98) | func (in *EtcdClusterList) DeepCopyInto(out *EtcdClusterList) {
method DeepCopy (line 113) | func (in *EtcdClusterList) DeepCopy() *EtcdClusterList {
method DeepCopyObject (line 123) | func (in *EtcdClusterList) DeepCopyObject() runtime.Object {
method DeepCopyInto (line 131) | func (in *EtcdClusterSpec) DeepCopyInto(out *EtcdClusterSpec) {
method DeepCopy (line 151) | func (in *EtcdClusterSpec) DeepCopy() *EtcdClusterSpec {
method DeepCopyInto (line 161) | func (in *EtcdClusterStatus) DeepCopyInto(out *EtcdClusterStatus) {
method DeepCopy (line 188) | func (in *EtcdClusterStatus) DeepCopy() *EtcdClusterStatus {
method DeepCopyInto (line 198) | func (in *EtcdInspection) DeepCopyInto(out *EtcdInspection) {
method DeepCopy (line 208) | func (in *EtcdInspection) DeepCopy() *EtcdInspection {
method DeepCopyObject (line 218) | func (in *EtcdInspection) DeepCopyObject() runtime.Object {
method DeepCopyInto (line 226) | func (in *EtcdInspectionList) DeepCopyInto(out *EtcdInspectionList) {
method DeepCopy (line 241) | func (in *EtcdInspectionList) DeepCopy() *EtcdInspectionList {
method DeepCopyObject (line 251) | func (in *EtcdInspectionList) DeepCopyObject() runtime.Object {
method DeepCopyInto (line 259) | func (in *EtcdInspectionRecord) DeepCopyInto(out *EtcdInspectionRecord) {
method DeepCopy (line 267) | func (in *EtcdInspectionRecord) DeepCopy() *EtcdInspectionRecord {
method DeepCopyInto (line 277) | func (in *EtcdInspectionSpec) DeepCopyInto(out *EtcdInspectionSpec) {
method DeepCopy (line 283) | func (in *EtcdInspectionSpec) DeepCopy() *EtcdInspectionSpec {
method DeepCopyInto (line 293) | func (in *EtcdInspectionStatus) DeepCopyInto(out *EtcdInspectionStatus) {
method DeepCopy (line 307) | func (in *EtcdInspectionStatus) DeepCopy() *EtcdInspectionStatus {
method DeepCopyInto (line 317) | func (in *MemberStatus) DeepCopyInto(out *MemberStatus) {
method DeepCopy (line 328) | func (in *MemberStatus) DeepCopy() *MemberStatus {
FILE: pkg/apis/kstone/v1alpha1/zz_generated.defaults.go
function RegisterDefaults (line 32) | func RegisterDefaults(scheme *runtime.Scheme) error {
FILE: pkg/apis/kstone/v1alpha2/register.go
function Kind (line 33) | func Kind(kind string) schema.GroupKind {
function Resource (line 38) | func Resource(resource string) schema.GroupResource {
function addKnownTypes (line 50) | func addKnownTypes(scheme *runtime.Scheme) error {
FILE: pkg/apis/kstone/v1alpha2/types.go
type EtcdCluster (line 30) | type EtcdCluster struct
type EtcdClusterPhase (line 38) | type EtcdClusterPhase
constant EtcdClusterInit (line 41) | EtcdClusterInit EtcdClusterPhase = "Initing"
constant EtcdCluterCreating (line 42) | EtcdCluterCreating EtcdClusterPhase = "Creating"
constant EtcdClusterRunning (line 43) | EtcdClusterRunning EtcdClusterPhase = "Running"
constant EtcdClusterUpdating (line 44) | EtcdClusterUpdating EtcdClusterPhase = "Updating"
constant EtcdClusterDeleteing (line 45) | EtcdClusterDeleteing EtcdClusterPhase = "Deleting"
constant EtcdClusterDeleted (line 46) | EtcdClusterDeleted EtcdClusterPhase = "Deleted"
constant EtcdClusterUnknown (line 47) | EtcdClusterUnknown EtcdClusterPhase = "Unknown"
constant EtcdClusterUnhealthy (line 48) | EtcdClusterUnhealthy EtcdClusterPhase = "UnHealthy"
type EtcdClusterConditionType (line 51) | type EtcdClusterConditionType
constant EtcdClusterConditionCreate (line 54) | EtcdClusterConditionCreate EtcdClusterConditionType = "Create"
constant EtcdClusterConditionImport (line 55) | EtcdClusterConditionImport EtcdClusterConditionType = "Import"
constant EtcdClusterConditionUpdate (line 56) | EtcdClusterConditionUpdate EtcdClusterConditionType = "Update"
constant EtcdClusterConditionDelete (line 57) | EtcdClusterConditionDelete EtcdClusterConditionType = "Delete"
type EtcdClusterCondition (line 61) | type EtcdClusterCondition struct
type EtcdClusterType (line 80) | type EtcdClusterType
constant EtcdClusterKstone (line 83) | EtcdClusterKstone EtcdClusterType = "kstone-etcd-operator"
constant EtcdClusterImported (line 84) | EtcdClusterImported EtcdClusterType = "imported"
type EtcdStorageBackend (line 87) | type EtcdStorageBackend
constant EtcdStorageV2 (line 90) | EtcdStorageV2 EtcdStorageBackend = "v2"
constant EtcdStorageV3 (line 91) | EtcdStorageV3 EtcdStorageBackend = "v3"
type EtcdClusterSpec (line 95) | type EtcdClusterSpec struct
type AuthConfig (line 121) | type AuthConfig struct
type KStoneFeature (line 127) | type KStoneFeature
constant KStoneFeatureAnno (line 130) | KStoneFeatureAnno = "featureGates"
constant KStoneFeatureMonitor (line 131) | KStoneFeatureMonitor KStoneFeature = "monitor"
constant KStoneFeatureBackup (line 132) | KStoneFeatureBackup KStoneFeature = "backup"
constant KStoneFeatureHealthy (line 133) | KStoneFeatureHealthy KStoneFeature = "healthy"
constant KStoneFeatureConsistency (line 134) | KStoneFeatureConsistency KStoneFeature = "consistency"
constant KStoneFeatureRequest (line 135) | KStoneFeatureRequest KStoneFeature = "request"
constant KStoneFeatureAlarm (line 136) | KStoneFeatureAlarm KStoneFeature = "alarm"
constant KStoneFeatureBackupCheck (line 137) | KStoneFeatureBackupCheck KStoneFeature = "backupcheck"
type EtcdClusterStatus (line 141) | type EtcdClusterStatus struct
type MemberPhase (line 149) | type MemberPhase
constant MemberPhaseUnStarted (line 152) | MemberPhaseUnStarted MemberPhase = "UnStarted"
constant MemberPhaseUnKnown (line 153) | MemberPhaseUnKnown MemberPhase = "UnKnown"
constant MemberPhaseRunning (line 154) | MemberPhaseRunning MemberPhase = "Running"
constant MemberPhaseUnHealthy (line 155) | MemberPhaseUnHealthy MemberPhase = "UnHealthy"
type EtcdMemberRole (line 158) | type EtcdMemberRole
constant EtcdMemberLearner (line 161) | EtcdMemberLearner EtcdMemberRole = "Learner"
constant EtcdMemberUnKnown (line 163) | EtcdMemberUnKnown EtcdMemberRole = "UnKnown"
constant EtcdMemberFollower (line 164) | EtcdMemberFollower EtcdMemberRole = "Follower"
constant EtcdMemberLeader (line 165) | EtcdMemberLeader EtcdMemberRole = "Leader"
type MemberStatus (line 168) | type MemberStatus struct
type EtcdClusterList (line 184) | type EtcdClusterList struct
type EtcdInspection (line 195) | type EtcdInspection struct
type EtcdInspectionSpec (line 204) | type EtcdInspectionSpec struct
type EtcdInspectionRecord (line 212) | type EtcdInspectionRecord struct
type EtcdInspectionStatus (line 228) | type EtcdInspectionStatus struct
type EtcdInspectionList (line 238) | type EtcdInspectionList struct
FILE: pkg/apis/kstone/v1alpha2/zz_generated.deepcopy.go
method DeepCopyInto (line 31) | func (in *AuthConfig) DeepCopyInto(out *AuthConfig) {
method DeepCopy (line 42) | func (in *AuthConfig) DeepCopy() *AuthConfig {
method DeepCopyInto (line 52) | func (in *EtcdCluster) DeepCopyInto(out *EtcdCluster) {
method DeepCopy (line 62) | func (in *EtcdCluster) DeepCopy() *EtcdCluster {
method DeepCopyObject (line 72) | func (in *EtcdCluster) DeepCopyObject() runtime.Object {
method DeepCopyInto (line 80) | func (in *EtcdClusterCondition) DeepCopyInto(out *EtcdClusterCondition) {
method DeepCopy (line 88) | func (in *EtcdClusterCondition) DeepCopy() *EtcdClusterCondition {
method DeepCopyInto (line 98) | func (in *EtcdClusterList) DeepCopyInto(out *EtcdClusterList) {
method DeepCopy (line 113) | func (in *EtcdClusterList) DeepCopy() *EtcdClusterList {
method DeepCopyObject (line 123) | func (in *EtcdClusterList) DeepCopyObject() runtime.Object {
method DeepCopyInto (line 131) | func (in *EtcdClusterSpec) DeepCopyInto(out *EtcdClusterSpec) {
method DeepCopy (line 159) | func (in *EtcdClusterSpec) DeepCopy() *EtcdClusterSpec {
method DeepCopyInto (line 169) | func (in *EtcdClusterStatus) DeepCopyInto(out *EtcdClusterStatus) {
method DeepCopy (line 196) | func (in *EtcdClusterStatus) DeepCopy() *EtcdClusterStatus {
method DeepCopyInto (line 206) | func (in *EtcdInspection) DeepCopyInto(out *EtcdInspection) {
method DeepCopy (line 216) | func (in *EtcdInspection) DeepCopy() *EtcdInspection {
method DeepCopyObject (line 226) | func (in *EtcdInspection) DeepCopyObject() runtime.Object {
method DeepCopyInto (line 234) | func (in *EtcdInspectionList) DeepCopyInto(out *EtcdInspectionList) {
method DeepCopy (line 249) | func (in *EtcdInspectionList) DeepCopy() *EtcdInspectionList {
method DeepCopyObject (line 259) | func (in *EtcdInspectionList) DeepCopyObject() runtime.Object {
method DeepCopyInto (line 267) | func (in *EtcdInspectionRecord) DeepCopyInto(out *EtcdInspectionRecord) {
method DeepCopy (line 275) | func (in *EtcdInspectionRecord) DeepCopy() *EtcdInspectionRecord {
method DeepCopyInto (line 285) | func (in *EtcdInspectionSpec) DeepCopyInto(out *EtcdInspectionSpec) {
method DeepCopy (line 291) | func (in *EtcdInspectionSpec) DeepCopy() *EtcdInspectionSpec {
method DeepCopyInto (line 301) | func (in *EtcdInspectionStatus) DeepCopyInto(out *EtcdInspectionStatus) {
method DeepCopy (line 315) | func (in *EtcdInspectionStatus) DeepCopy() *EtcdInspectionStatus {
method DeepCopyInto (line 325) | func (in *MemberStatus) DeepCopyInto(out *MemberStatus) {
method DeepCopy (line 336) | func (in *MemberStatus) DeepCopy() *MemberStatus {
FILE: pkg/apis/kstone/v1alpha2/zz_generated.defaults.go
function RegisterDefaults (line 32) | func RegisterDefaults(scheme *runtime.Scheme) error {
FILE: pkg/authentication/authenticator/authenticator.go
constant ProviderName (line 31) | ProviderName = "generic"
type Authenticator (line 39) | type Authenticator struct
method AuthenticateRequest (line 57) | func (a *Authenticator) AuthenticateRequest(ctx *gin.Context) (*authen...
function init (line 41) | func init() {
function initAuthenticatorInstance (line 49) | func initAuthenticatorInstance(ctx *authentication.AuthenticatorContext)...
FILE: pkg/authentication/authenticator/bearertoken/bearertoken.go
constant ProviderName (line 33) | ProviderName = "bearertoken"
type Authenticator (line 41) | type Authenticator struct
method AuthenticateRequest (line 59) | func (a *Authenticator) AuthenticateRequest(ctx *gin.Context) (*authen...
function init (line 43) | func init() {
function initAuthenticatorInstance (line 51) | func initAuthenticatorInstance(ctx *authentication.AuthenticatorContext)...
FILE: pkg/authentication/helper.go
constant JWTTokenKey (line 28) | JWTTokenKey = "kstone-api-jwt"
constant SignMethodRS256 (line 30) | SignMethodRS256 = "RS256"
constant DataSuccess (line 32) | DataSuccess = "success"
constant DataUnauthorized (line 33) | DataUnauthorized = "failed to authenticate user"
constant UserUnknown (line 34) | UserUnknown = "unknown"
constant DefaultKeyPath (line 36) | DefaultKeyPath = "/app/certs/private.key"
constant DefaultKstoneNamespace (line 37) | DefaultKstoneNamespace = "kstone"
constant DefaultUsername (line 38) | DefaultUsername = "admin"
constant DefaultPassword (line 39) | DefaultPassword = "adm1n@kstone.io"
type Response (line 43) | type Response struct
function SetAuthConfigMapName (line 52) | func SetAuthConfigMapName(name string) {
function SuccessResponse (line 56) | func SuccessResponse(username string, message string) *Response {
function SuccessTokenResponse (line 63) | func SuccessTokenResponse(username string, token string) *Response {
function SuccessResetPasswordResponse (line 70) | func SuccessResetPasswordResponse(username string, token string) *Respon...
function UnauthenticatedResponse (line 78) | func UnauthenticatedResponse() *Response {
function InternalServerErrorResponse (line 85) | func InternalServerErrorResponse(username string, message string) *Respo...
function GetPrivateKey (line 92) | func GetPrivateKey() (string, error) {
function GeneratePasswordHash (line 100) | func GeneratePasswordHash(password string) (string, error) {
function IsDefaultUser (line 108) | func IsDefaultUser(username, password string) bool {
function CheckPassword (line 112) | func CheckPassword(hashedPassword, password string) error {
FILE: pkg/authentication/interfaces.go
type Token (line 29) | type Token interface
type TokenGenerator (line 34) | type TokenGenerator interface
type Request (line 40) | type Request interface
type TokenContext (line 44) | type TokenContext struct
type AuthenticatorContext (line 50) | type AuthenticatorContext struct
FILE: pkg/authentication/plugins.go
type TokenFactory (line 34) | type TokenFactory
type AuthenticatorFactory (line 35) | type AuthenticatorFactory
function RegisterTokenFactory (line 38) | func RegisterTokenFactory(name string, factory TokenFactory) {
function RegisterAuthenticatorFactory (line 51) | func RegisterAuthenticatorFactory(name string, factory AuthenticatorFact...
function GetTokenProvider (line 64) | func GetTokenProvider(name string, ctx *TokenContext) (Token, error) {
function GetAuthenticatorProvider (line 77) | func GetAuthenticatorProvider(name string, ctx *AuthenticatorContext) (R...
FILE: pkg/authentication/request/request.go
function LoginRequest (line 35) | func LoginRequest(ctx *gin.Context) (*authentication.Response, bool, err...
function MiddlewareRequest (line 67) | func MiddlewareRequest(ctx *gin.Context) (*authentication.Response, bool...
function UserListRequest (line 76) | func UserListRequest(ctx *gin.Context) (*authentication.Response, error) {
function UserUpdateRequest (line 91) | func UserUpdateRequest(ctx *gin.Context) (*authentication.Response, erro...
function UserAddRequest (line 109) | func UserAddRequest(ctx *gin.Context) (*authentication.Response, error) {
function UserDeleteRequest (line 127) | func UserDeleteRequest(ctx *gin.Context) (*authentication.Response, erro...
function getUser (line 140) | func getUser(ctx *gin.Context) (username string, password string, err er...
FILE: pkg/authentication/store.go
type Store (line 38) | type Store interface
type User (line 51) | type User struct
type DefaultStore (line 57) | type DefaultStore struct
method UserGet (line 70) | func (s *DefaultStore) UserGet(username string) (*User, error) {
method UserAdd (line 85) | func (s *DefaultStore) UserAdd(user User) error {
method UserDelete (line 101) | func (s *DefaultStore) UserDelete(username string) error {
method UserList (line 120) | func (s *DefaultStore) UserList() ([]*User, error) {
method UserChangePassword (line 135) | func (s *DefaultStore) UserChangePassword(username, password string) e...
function GetDefaultStoreInstance (line 61) | func GetDefaultStoreInstance() *DefaultStore {
FILE: pkg/authentication/token/jwt/generator.go
type TokenGenerator (line 36) | type TokenGenerator struct
method GenerateToken (line 67) | func (t *TokenGenerator) GenerateToken(ctx context.Context, username s...
function NewTokenGenerator (line 42) | func NewTokenGenerator(ttl, privateKey, signMethod string) (*TokenGenera...
FILE: pkg/authentication/token/jwt/jwt.go
constant ProviderName (line 36) | ProviderName = "jwt"
type TokenAuthenticator (line 46) | type TokenAuthenticator struct
method AuthenticateToken (line 90) | func (a *TokenAuthenticator) AuthenticateToken(ctx context.Context, to...
method info (line 109) | func (a *TokenAuthenticator) info(token string) (*authInfo, error) {
type authInfo (line 52) | type authInfo struct
function init (line 57) | func init() {
function initTokenInstance (line 65) | func initTokenInstance(ctx *authentication.TokenContext) (*TokenAuthenti...
function GenerateToken (line 138) | func GenerateToken(username, hashedPassword string) (string, error) {
FILE: pkg/backup/backup.go
type Config (line 47) | type Config struct
type Server (line 53) | type Server struct
method encodeBackupObj (line 94) | func (bak *Server) encodeBackupObj(obj *unstructured.Unstructured) (*b...
method decodeBackupObj (line 107) | func (bak *Server) decodeBackupObj(backup *backupapiv2.EtcdBackup) (*u...
method CreateEtcdBackupByYaml (line 125) | func (bak *Server) CreateEtcdBackupByYaml(backup *backupapiv2.EtcdBack...
method GetEtcdBackup (line 140) | func (bak *Server) GetEtcdBackup(name, namespace string) (*backupapiv2...
method DeleteEtcdBackup (line 149) | func (bak *Server) DeleteEtcdBackup(name, namespace string) error {
method UpdateEtcdBackup (line 158) | func (bak *Server) UpdateEtcdBackup(backup *backupapiv2.EtcdBackup) (*...
method parseBackupConfig (line 182) | func (bak *Server) parseBackupConfig(cluster *kstonev1alpha2.EtcdClust...
method initEtcdBackup (line 227) | func (bak *Server) initEtcdBackup(cluster *kstonev1alpha2.EtcdCluster)...
method Equal (line 274) | func (bak *Server) Equal(cluster *kstonev1alpha2.EtcdCluster) bool {
method CheckEqualIfDisabled (line 292) | func (bak *Server) CheckEqualIfDisabled(cluster *kstonev1alpha2.EtcdCl...
method CheckEqualIfEnabled (line 300) | func (bak *Server) CheckEqualIfEnabled(cluster *kstonev1alpha2.EtcdClu...
method CleanBackup (line 317) | func (bak *Server) CleanBackup(cluster *kstonev1alpha2.EtcdCluster) er...
method SyncBackup (line 326) | func (bak *Server) SyncBackup(cluster *kstonev1alpha2.EtcdCluster) err...
constant AnnoBackupConfig (line 59) | AnnoBackupConfig = "backup"
constant BackupGroup (line 60) | BackupGroup = "etcd.database.coreos.com"
constant BackupVersion (line 61) | BackupVersion = "v1beta2"
constant BackupResource (line 62) | BackupResource = "etcdbackups"
constant BackupKind (line 63) | BackupKind = "EtcdBackup"
function NewBackupServer (line 80) | func NewBackupServer(clientBuilder util.ClientBuilder) (*Server, error) {
FILE: pkg/backup/plugins.go
type Factory (line 33) | type Factory
function RegisterBackupStorageFactory (line 36) | func RegisterBackupStorageFactory(name string, factory Factory) {
function GetBackupStorageProvider (line 49) | func GetBackupStorageProvider(name string, config *StorageConfig) (Stora...
FILE: pkg/backup/providers/cos/cos.go
constant ProviderName (line 42) | ProviderName = string(v1beta2.BackupStorageTypeCOS)
type StorageCOS (line 45) | type StorageCOS struct
method List (line 61) | func (c *StorageCOS) List(cluster *v1alpha2.EtcdCluster) (interface{},...
method Stat (line 107) | func (c *StorageCOS) Stat(objects interface{}) (int, error) {
function init (line 49) | func init() {
function NewCOSBackupProvider (line 55) | func NewCOSBackupProvider(config *backup.StorageConfig) backup.Storage {
FILE: pkg/backup/providers/s3/clientwrapper.go
constant tmpdir (line 17) | tmpdir = "/tmp"
type ClientS3Wrapper (line 21) | type ClientS3Wrapper struct
method Close (line 51) | func (w *ClientS3Wrapper) Close() {
function NewClientFromSecret (line 27) | func NewClientFromSecret(kubecli kubernetes.Interface, namespace, endpoi...
function setupAWSConfig (line 56) | func setupAWSConfig(kubecli kubernetes.Interface, ns, secret, endpoint, ...
FILE: pkg/backup/providers/s3/s3.go
constant ProviderName (line 40) | ProviderName = string(v1beta2.BackupStorageTypeS3)
type StorageS3 (line 43) | type StorageS3 struct
method List (line 59) | func (c *StorageS3) List(cluster *v1alpha2.EtcdCluster) (interface{}, ...
method Stat (line 108) | func (c *StorageS3) Stat(objects interface{}) (int, error) {
function init (line 47) | func init() {
function NewS3BackupProvider (line 53) | func NewS3BackupProvider(config *backup.StorageConfig) backup.Storage {
FILE: pkg/backup/storage.go
type Storage (line 10) | type Storage interface
type StorageConfig (line 18) | type StorageConfig struct
FILE: pkg/backup/util.go
function GetBackupConfig (line 11) | func GetBackupConfig(cluster *kstonev1alpha2.EtcdCluster) (*Config, erro...
FILE: pkg/clusterprovider/etcdcluster.go
type Cluster (line 30) | type Cluster interface
type ClusterContext (line 60) | type ClusterContext struct
FILE: pkg/clusterprovider/helper.go
type EtcdAlarm (line 33) | type EtcdAlarm struct
function GetStorageMemberEndpoints (line 39) | func GetStorageMemberEndpoints(cluster *kstonev1alpha2.EtcdCluster) []st...
function populateExtensionCientURLMap (line 53) | func populateExtensionCientURLMap(extensionClientURLs string) (map[strin...
function GetRuntimeEtcdMembers (line 71) | func GetRuntimeEtcdMembers(
function GetEtcdClusterMemberStatus (line 161) | func GetEtcdClusterMemberStatus(
function GetEtcdAlarms (line 189) | func GetEtcdAlarms(
FILE: pkg/clusterprovider/plugins.go
type EtcdFactory (line 30) | type EtcdFactory
function RegisterEtcdClusterFactory (line 38) | func RegisterEtcdClusterFactory(name kstonev1alpha2.EtcdClusterType, fac...
function GetEtcdClusterProvider (line 51) | func GetEtcdClusterProvider(
FILE: pkg/clusterprovider/providers/imported/cluster.go
constant AnnoImportedURI (line 31) | AnnoImportedURI = "importedAddr"
type EtcdClusterImported (line 40) | type EtcdClusterImported struct
method BeforeCreate (line 68) | func (c *EtcdClusterImported) BeforeCreate(cluster *kstonev1alpha2.Etc...
method Create (line 72) | func (c *EtcdClusterImported) Create(cluster *kstonev1alpha2.EtcdClust...
method AfterCreate (line 76) | func (c *EtcdClusterImported) AfterCreate(cluster *kstonev1alpha2.Etcd...
method BeforeUpdate (line 80) | func (c *EtcdClusterImported) BeforeUpdate(cluster *kstonev1alpha2.Etc...
method Update (line 84) | func (c *EtcdClusterImported) Update(cluster *kstonev1alpha2.EtcdClust...
method AfterUpdate (line 88) | func (c *EtcdClusterImported) AfterUpdate(cluster *kstonev1alpha2.Etcd...
method BeforeDelete (line 92) | func (c *EtcdClusterImported) BeforeDelete(cluster *kstonev1alpha2.Etc...
method Delete (line 96) | func (c *EtcdClusterImported) Delete(cluster *kstonev1alpha2.EtcdClust...
method AfterDelete (line 100) | func (c *EtcdClusterImported) AfterDelete(cluster *kstonev1alpha2.Etcd...
method Equal (line 104) | func (c *EtcdClusterImported) Equal(cluster *kstonev1alpha2.EtcdCluste...
method Status (line 109) | func (c *EtcdClusterImported) Status(config *etcd.ClientConfig, cluste...
function init (line 46) | func init() {
function initEtcdClusterImportedInstance (line 55) | func initEtcdClusterImportedInstance(ctx *clusterprovider.ClusterContext...
FILE: pkg/clusterprovider/providers/kstone/kstone.go
constant providerName (line 46) | providerName = kstonev1alpha2.EtcdClusterKstone
constant AnnoImportedURI (line 47) | AnnoImportedURI = "importedAddr"
constant defaultEmptyResourceValue (line 48) | defaultEmptyResourceValue = "0"
type EtcdClusterKstone (line 57) | type EtcdClusterKstone struct
method BeforeCreate (line 85) | func (c *EtcdClusterKstone) BeforeCreate(cluster *kstonev1alpha2.EtcdC...
method Create (line 90) | func (c *EtcdClusterKstone) Create(cluster *kstonev1alpha2.EtcdCluster...
method AfterCreate (line 123) | func (c *EtcdClusterKstone) AfterCreate(cluster *kstonev1alpha2.EtcdCl...
method BeforeUpdate (line 156) | func (c *EtcdClusterKstone) BeforeUpdate(cluster *kstonev1alpha2.EtcdC...
method Update (line 161) | func (c *EtcdClusterKstone) Update(cluster *kstonev1alpha2.EtcdCluster...
method Equal (line 187) | func (c *EtcdClusterKstone) Equal(cluster *kstonev1alpha2.EtcdCluster)...
method AfterUpdate (line 248) | func (c *EtcdClusterKstone) AfterUpdate(cluster *kstonev1alpha2.EtcdCl...
method BeforeDelete (line 253) | func (c *EtcdClusterKstone) BeforeDelete(cluster *kstonev1alpha2.EtcdC...
method Delete (line 258) | func (c *EtcdClusterKstone) Delete(cluster *kstonev1alpha2.EtcdCluster...
method AfterDelete (line 263) | func (c *EtcdClusterKstone) AfterDelete(cluster *kstonev1alpha2.EtcdCl...
method Status (line 268) | func (c *EtcdClusterKstone) Status(config *etcd.ClientConfig, cluster ...
method updateEtcdSpec (line 312) | func (c *EtcdClusterKstone) updateEtcdSpec(etcd *unstructured.Unstruct...
method generateEtcdSpec (line 329) | func (c *EtcdClusterKstone) generateEtcdSpec(cluster *kstonev1alpha2.E...
method resourceEqual (line 448) | func (c *EtcdClusterKstone) resourceEqual(cluster *kstonev1alpha2.Etcd...
method getOldResource (line 464) | func (c *EtcdClusterKstone) getOldResource(etcd *unstructured.Unstruct...
method getDesiredResource (line 472) | func (c *EtcdClusterKstone) getDesiredResource(cluster *kstonev1alpha2...
function init (line 63) | func init() {
function initEtcdClusterKstoneInstance (line 72) | func initEtcdClusterKstoneInstance(ctx *clusterprovider.ClusterContext) ...
FILE: pkg/controllers/etcdcluster/etcdclusters_controller.go
type ClusterController (line 60) | type ClusterController struct
method Run (line 142) | func (c *ClusterController) Run(threadiness int, stopCh <-chan struct{...
method runWorker (line 171) | func (c *ClusterController) runWorker() {
method processNextWorkItem (line 178) | func (c *ClusterController) processNextWorkItem() bool {
method syncEtcdCluster (line 198) | func (c *ClusterController) syncEtcdCluster(key string) error {
method updateEtcdClusterStatus (line 222) | func (c *ClusterController) updateEtcdClusterStatus(cluster *kstonev1a...
method enqueueEtcdcluster (line 245) | func (c *ClusterController) enqueueEtcdcluster(obj interface{}) {
method handleClusterManagement (line 255) | func (c *ClusterController) handleClusterManagement(cluster *kstonev1a...
method enabledFeatureGate (line 294) | func (c *ClusterController) enabledFeatureGate(annotations map[string]...
method handleClusterLabels (line 299) | func (c *ClusterController) handleClusterLabels(
method handleClusterFeature (line 323) | func (c *ClusterController) handleClusterFeature(cluster *kstonev1alph...
method reconcileEtcdCluster (line 366) | func (c *ClusterController) reconcileEtcdCluster(cluster *kstonev1alph...
method GetFeatureProvider (line 397) | func (c *ClusterController) GetFeatureProvider(name string) (featurepr...
method GetEtcdClusterProvider (line 409) | func (c *ClusterController) GetEtcdClusterProvider(name kstonev1alpha2...
method getDesiredAction (line 420) | func (c *ClusterController) getDesiredAction(
method generateConditions (line 455) | func (c *ClusterController) generateConditions(
method handleClusterCreate (line 481) | func (c *ClusterController) handleClusterCreate(
method handleClusterUpdate (line 521) | func (c *ClusterController) handleClusterUpdate(
method handleClusterStatus (line 562) | func (c *ClusterController) handleClusterStatus(
function NewEtcdclusterController (line 91) | func NewEtcdclusterController(
FILE: pkg/controllers/etcdinspection/etcdinspection_controller.go
type InspectionController (line 57) | type InspectionController struct
method Run (line 152) | func (c *InspectionController) Run(threadiness int, stopCh <-chan stru...
method runWorker (line 188) | func (c *InspectionController) runWorker() {
method processNextWorkItem (line 195) | func (c *InspectionController) processNextWorkItem() bool {
method doClusterInspection (line 212) | func (c *InspectionController) doClusterInspection(key string) error {
method enqueueEtcdInspection (line 238) | func (c *InspectionController) enqueueEtcdInspection(obj interface{}) {
method GetInspectionFeatureProvider (line 248) | func (c *InspectionController) GetInspectionFeatureProvider(name strin...
method doInspectionTask (line 260) | func (c *InspectionController) doInspectionTask(etcdinspection *kstone...
function NewInspectionControllerMetric (line 86) | func NewInspectionControllerMetric() http.Handler {
function NewEtcdInspectionController (line 99) | func NewEtcdInspectionController(
FILE: pkg/controllers/util/util.go
constant ComponentEtcdClusterController (line 41) | ComponentEtcdClusterController = "etcdcluster-controller"
constant ComponentEtcdInspectionController (line 42) | ComponentEtcdInspectionController = "etcdinspection-controller"
type EtcdClusterPhase (line 45) | type EtcdClusterPhase
constant EtcdClusterCreating (line 48) | EtcdClusterCreating EtcdClusterPhase = "EtcdClusterCreating"
constant EtcdClusterUpdating (line 49) | EtcdClusterUpdating EtcdClusterPhase = "EtcdClusterUpdating"
constant EtcdClusterUpdateStatus (line 50) | EtcdClusterUpdateStatus EtcdClusterPhase = "EtcdClusterUpdateStatus"
constant ClusterTLSSecretName (line 54) | ClusterTLSSecretName = "certName"
constant ClusterExtensionClientURL (line 55) | ClusterExtensionClientURL = "extClientURL"
type ClientBuilder (line 58) | type ClientBuilder interface
function NewSimpleClientBuilder (line 64) | func NewSimpleClientBuilder(kubeconfig string) ClientBuilder {
type simpleClientBuilder (line 71) | type simpleClientBuilder struct
method ConfigOrDie (line 75) | func (s simpleClientBuilder) ConfigOrDie() *restclient.Config {
method ClientOrDie (line 83) | func (s simpleClientBuilder) ClientOrDie() clientset.Interface {
method DynamicClientOrDie (line 92) | func (s simpleClientBuilder) DynamicClientOrDie() dynamic.Interface {
function NewFakeClientBuilder (line 101) | func NewFakeClientBuilder() ClientBuilder {
type fakeClientBuilder (line 108) | type fakeClientBuilder struct
method ConfigOrDie (line 112) | func (f fakeClientBuilder) ConfigOrDie() *restclient.Config {
method ClientOrDie (line 117) | func (f fakeClientBuilder) ClientOrDie() clientset.Interface {
method DynamicClientOrDie (line 121) | func (f fakeClientBuilder) DynamicClientOrDie() dynamic.Interface {
function CheckAction (line 128) | func CheckAction(expected, actual core.Action, t *testing.T) {
function ProcessWorkQueue (line 175) | func ProcessWorkQueue(
function FilterInformerActions (line 200) | func FilterInformerActions(actions []core.Action, resourceName string) [...
function CompareActions (line 214) | func CompareActions(t *testing.T, actions []core.Action, filteredActions...
FILE: pkg/etcd/client.go
type ClientConfigGetter (line 36) | type ClientConfigGetter interface
type ClientConfigSecret (line 40) | type ClientConfigSecret struct
method New (line 96) | func (t *ClientConfigSecret) New(path string, sc string) (*ClientConfi...
type ClientConfig (line 46) | type ClientConfig struct
type SecureConfig (line 65) | type SecureConfig struct
function NewClientConfigSecretGetter (line 82) | func NewClientConfigSecretGetter(clientBuilder util.ClientBuilder) *Clie...
function NewClientConfigSecretCacheGetter (line 89) | func NewClientConfigSecretCacheGetter(secretLister listerscorev1.SecretL...
function SecretCache (line 142) | func SecretCache(t *ClientConfigSecret, namespace, secretName string) (*...
function Secret (line 146) | func Secret(t *ClientConfigSecret, namespace, secretName string) (*v1.Se...
FILE: pkg/etcd/client/cleint.go
type Member (line 26) | type Member struct
type VersionClient (line 36) | type VersionClient interface
type VersionContext (line 42) | type VersionContext struct
FILE: pkg/etcd/client/version.go
type Factory (line 29) | type Factory
function RegisterEtcdClientFactory (line 37) | func RegisterEtcdClientFactory(name kstonev1alpha2.EtcdStorageBackend, f...
function GetEtcdClientProvider (line 50) | func GetEtcdClientProvider(
FILE: pkg/etcd/client/versions/v2/client.go
type V2 (line 36) | type V2 struct
method MemberList (line 41) | func (c *V2) MemberList() ([]client.Member, error) {
method Status (line 61) | func (c *V2) Status(endpoint string) (*client.Member, error) {
method Close (line 94) | func (c *V2) Close() {}
function init (line 96) | func init() {
function newClientCfg (line 103) | func newClientCfg(ctx *client.VersionContext) (*clientv2.Config, error) {
function initClient (line 146) | func initClient(ctx *client.VersionContext) (client.VersionClient, error) {
FILE: pkg/etcd/client/versions/v3/client.go
type V3 (line 32) | type V3 struct
method MemberList (line 37) | func (c *V3) MemberList() ([]client.Member, error) {
method Status (line 56) | func (c *V3) Status(endpoint string) (*client.Member, error) {
method Close (line 68) | func (c *V3) Close() {
function init (line 72) | func init() {
function initClient (line 79) | func initClient(ctx *client.VersionContext) (client.VersionClient, error) {
FILE: pkg/etcd/encoding.go
constant StorageBinaryMediaType (line 31) | StorageBinaryMediaType = "application/vnd.kubernetes.storagebinary"
constant ProtobufMediaType (line 32) | ProtobufMediaType = "application/vnd.kubernetes.protobuf"
constant YamlMediaType (line 33) | YamlMediaType = "application/yaml"
constant JSONMediaType (line 34) | JSONMediaType = "application/json"
constant ProtobufShortname (line 36) | ProtobufShortname = "proto"
constant YamlShortname (line 37) | YamlShortname = "yaml"
constant JSONShortname (line 38) | JSONShortname = "json"
function ConvertToData (line 60) | func ConvertToData(inMediaType string, in []byte) (map[string]string, er...
function DetectAndExtract (line 110) | func DetectAndExtract(in []byte) (string, []byte, error) {
function tryFindProto (line 125) | func tryFindProto(in []byte) ([]byte, bool) {
constant jsonStartChars (line 133) | jsonStartChars = "{["
function tryFindJSON (line 136) | func tryFindJSON(in []byte) (*json.RawMessage, bool) {
function DecodeRawToString (line 157) | func DecodeRawToString(in []byte) string {
function DecodeUnknown (line 167) | func DecodeUnknown(in []byte) (*runtime.Unknown, error) {
function newCodec (line 184) | func newCodec(typeMeta *runtime.TypeMeta, mediaType string) (runtime.Cod...
function decodeTypeMeta (line 209) | func decodeTypeMeta(inMediaType string, in []byte) (*runtime.TypeMeta, e...
function typeMetaFromJSON (line 223) | func typeMetaFromJSON(in []byte) (*runtime.TypeMeta, error) {
function typeMetaFromBinaryStorage (line 233) | func typeMetaFromBinaryStorage(in []byte) (*runtime.TypeMeta, error) {
function typeMetaFromYaml (line 242) | func typeMetaFromYaml(in []byte) (*runtime.TypeMeta, error) {
function ConvertToJSON (line 252) | func ConvertToJSON(kv *mvccpb.KeyValue) string {
FILE: pkg/etcd/health.go
type Health (line 34) | type Health interface
type HealthCheckMethod (line 52) | type HealthCheckMethod
constant HealthCheckHTTP (line 55) | HealthCheckHTTP HealthCheckMethod = "http"
constant HealthCheckEtcdctl (line 56) | HealthCheckEtcdctl HealthCheckMethod = "etcdctl"
type HealthCheckHTTPClient (line 60) | type HealthCheckHTTPClient struct
method Init (line 75) | func (c *HealthCheckHTTPClient) Init(ca, cert, key, endpoint string) e...
method etcdHealthCheck (line 111) | func (c *HealthCheckHTTPClient) etcdHealthCheck(data []byte) error {
method IsHealthy (line 124) | func (c *HealthCheckHTTPClient) IsHealthy() error {
method GetByAPI (line 136) | func (c *HealthCheckHTTPClient) GetByAPI(path string) ([]byte, error) {
method Version (line 151) | func (c *HealthCheckHTTPClient) Version() (string, error) {
method Stats (line 172) | func (c *HealthCheckHTTPClient) Stats() (*Stats, error) {
method Close (line 186) | func (c *HealthCheckHTTPClient) Close() error {
function NewEtcdHealthCheckBackend (line 67) | func NewEtcdHealthCheckBackend(method HealthCheckMethod) (Health, error) {
type etcdHealth (line 105) | type etcdHealth struct
type Version (line 147) | type Version struct
type Stats (line 164) | type Stats struct
FILE: pkg/etcd/helper.go
constant DefaultDialTimeout (line 39) | DefaultDialTimeout = 3 * time.Second
constant DefaultCommandTimeOut (line 40) | DefaultCommandTimeOut = 10 * time.Second
constant DefaultKeepAliveTime (line 41) | DefaultKeepAliveTime = 10 * time.Second
constant DefaultKeepAliveTimeOut (line 42) | DefaultKeepAliveTimeOut = 30 * time.Second
constant CliCertFile (line 44) | CliCertFile = "client.pem"
constant CliKeyFile (line 45) | CliKeyFile = "client-key.pem"
constant CliCAFile (line 46) | CliCAFile = "ca.pem"
constant CliUsername (line 47) | CliUsername = "username"
constant CliPassword (line 48) | CliPassword = "password"
function NewClientv3 (line 52) | func NewClientv3(config *ClientConfig) (*clientv3.Client, error) {
function setDefaultConfig (line 69) | func setDefaultConfig(config *ClientConfig) {
function newClientv3Config (line 82) | func newClientv3Config(config *ClientConfig) (*clientv3.Config, error) {
function MemberList (line 123) | func MemberList(cli *clientv3.Client) (*clientv3.MemberListResponse, err...
function Status (line 137) | func Status(endpoint string, cli *clientv3.Client) (*clientv3.StatusResp...
function writeFile (line 145) | func writeFile(dir, file string, data []byte) (string, error) {
function GetTLSConfigPath (line 150) | func GetTLSConfigPath(clusterName string, certData, keyData, caData []by...
function AddMemberWithCmd (line 176) | func AddMemberWithCmd(isLearner bool, endpoints, peerURL, ca, cert, key ...
function MemberHealthy (line 208) | func MemberHealthy(endpoint string, cli *ClientConfig) (bool, error) {
function NewShortConnectionClientv2 (line 228) | func NewShortConnectionClientv2(config *ClientConfig) (*clientv2.Client,...
function newClientv2Config (line 246) | func newClientv2Config(config *ClientConfig) (*clientv2.Config, error) {
function getTransport (line 261) | func getTransport(dialTimeout, totalTimeout time.Duration, scfg SecureCo...
function AlarmList (line 297) | func AlarmList(cli *clientv3.Client) (*clientv3.AlarmResponse, error) {
FILE: pkg/etcd/stats.go
constant EtcdV2Backend (line 33) | EtcdV2Backend = "v2"
constant EtcdV3Backend (line 34) | EtcdV3Backend = "v3"
type Stat (line 37) | type Stat interface
type StatV3 (line 52) | type StatV3 struct
method Init (line 72) | func (c *StatV3) Init(config *ClientConfig) error {
method GetTotalKeyNum (line 81) | func (c *StatV3) GetTotalKeyNum(ctx context.Context, keyPrefix string)...
method GetIndex (line 92) | func (c *StatV3) GetIndex(ctx context.Context, endpoint string) (map[f...
method Close (line 105) | func (c *StatV3) Close() error {
type StatV2 (line 57) | type StatV2 struct
method Init (line 109) | func (c *StatV2) Init(config *ClientConfig) error {
method GetTotalKeyNum (line 118) | func (c *StatV2) GetTotalKeyNum(ctx context.Context, keyPrefix string)...
method GetIndex (line 131) | func (c *StatV2) GetIndex(ctx context.Context, endpoint string) (map[f...
method Close (line 146) | func (c *StatV2) Close() error {
function NewEtcdStatBackend (line 62) | func NewEtcdStatBackend(storageBackend string) (Stat, error) {
FILE: pkg/featureprovider/feature.go
type Feature (line 28) | type Feature interface
type FeatureContext (line 38) | type FeatureContext struct
FILE: pkg/featureprovider/plugins.go
type FeatureFactory (line 33) | type FeatureFactory
function RegisterFeatureFactory (line 36) | func RegisterFeatureFactory(name string, factory FeatureFactory) {
function GetFeatureProvider (line 49) | func GetFeatureProvider(name string, ctx *FeatureContext) (Feature, erro...
function ListFeatureProvider (line 62) | func ListFeatureProvider() []string {
FILE: pkg/featureprovider/providers/alarm/alarm.go
constant ProviderName (line 30) | ProviderName = string(kstonev1alpha2.KStoneFeatureAlarm)
type FeatureAlarm (line 38) | type FeatureAlarm struct
method Equal (line 65) | func (c *FeatureAlarm) Equal(cluster *kstonev1alpha2.EtcdCluster) bool {
method Sync (line 69) | func (c *FeatureAlarm) Sync(cluster *kstonev1alpha2.EtcdCluster) error {
method Do (line 73) | func (c *FeatureAlarm) Do(inspection *kstonev1alpha2.EtcdInspection) e...
function init (line 44) | func init() {
function initFeatureAlarmInstance (line 53) | func initFeatureAlarmInstance(ctx *featureprovider.FeatureContext) (feat...
FILE: pkg/featureprovider/providers/backup/backup.go
constant ProviderName (line 31) | ProviderName = string(kstonev1alpha2.KStoneFeatureBackup)
type FeatureBackup (line 39) | type FeatureBackup struct
method Equal (line 66) | func (bak *FeatureBackup) Equal(cluster *kstonev1alpha2.EtcdCluster) b...
method Sync (line 76) | func (bak *FeatureBackup) Sync(cluster *kstonev1alpha2.EtcdCluster) er...
method Do (line 83) | func (bak *FeatureBackup) Do(inspection *kstonev1alpha2.EtcdInspection...
function init (line 45) | func init() {
function initFeatureBackupInstance (line 54) | func initFeatureBackupInstance(ctx *featureprovider.FeatureContext) (fea...
FILE: pkg/featureprovider/providers/backupcheck/backupcheck.go
type FeatureBackupCheck (line 34) | type FeatureBackupCheck struct
method Equal (line 65) | func (c *FeatureBackupCheck) Equal(cluster *kstonev1alpha2.EtcdCluster...
method Sync (line 69) | func (c *FeatureBackupCheck) Sync(cluster *kstonev1alpha2.EtcdCluster)...
method Do (line 73) | func (c *FeatureBackupCheck) Do(inspection *kstonev1alpha2.EtcdInspect...
constant ProviderName (line 41) | ProviderName = string(kstonev1alpha2.KStoneFeatureBackupCheck)
function init (line 44) | func init() {
function initFeatureBackupCheckInstance (line 53) | func initFeatureBackupCheckInstance(ctx *featureprovider.FeatureContext)...
FILE: pkg/featureprovider/providers/consistency/consistency.go
constant ProviderName (line 30) | ProviderName = string(kstonev1alpha2.KStoneFeatureConsistency)
type FeatureConsistency (line 38) | type FeatureConsistency struct
method Equal (line 65) | func (c *FeatureConsistency) Equal(cluster *kstonev1alpha2.EtcdCluster...
method Sync (line 69) | func (c *FeatureConsistency) Sync(cluster *kstonev1alpha2.EtcdCluster)...
method Do (line 73) | func (c *FeatureConsistency) Do(inspection *kstonev1alpha2.EtcdInspect...
function init (line 44) | func init() {
function initFeatureConsistencyInstance (line 53) | func initFeatureConsistencyInstance(ctx *featureprovider.FeatureContext)...
FILE: pkg/featureprovider/providers/healthy/healthy.go
type FeatureHealthy (line 34) | type FeatureHealthy struct
method Equal (line 65) | func (c *FeatureHealthy) Equal(cluster *kstonev1alpha2.EtcdCluster) bo...
method Sync (line 69) | func (c *FeatureHealthy) Sync(cluster *kstonev1alpha2.EtcdCluster) err...
method Do (line 73) | func (c *FeatureHealthy) Do(inspection *kstonev1alpha2.EtcdInspection)...
constant ProviderName (line 41) | ProviderName = string(kstonev1alpha2.KStoneFeatureHealthy)
function init (line 44) | func init() {
function initFeatureHealthyInstance (line 53) | func initFeatureHealthyInstance(ctx *featureprovider.FeatureContext) (fe...
FILE: pkg/featureprovider/providers/monitor/monitor.go
type FeaturePrometheus (line 35) | type FeaturePrometheus struct
method Equal (line 66) | func (p *FeaturePrometheus) Equal(cluster *kstonev1alpha2.EtcdCluster)...
method Sync (line 76) | func (p *FeaturePrometheus) Sync(cluster *kstonev1alpha2.EtcdCluster) ...
method Do (line 83) | func (p *FeaturePrometheus) Do(inspection *kstonev1alpha2.EtcdInspecti...
constant ProviderName (line 42) | ProviderName = string(kstonev1alpha2.KStoneFeatureMonitor)
function init (line 45) | func init() {
function initFeaturePrometheusInstance (line 54) | func initFeaturePrometheusInstance(ctx *featureprovider.FeatureContext) ...
FILE: pkg/featureprovider/providers/request/request.go
constant ProviderName (line 30) | ProviderName = string(kstonev1alpha2.KStoneFeatureRequest)
type FeatureRequest (line 38) | type FeatureRequest struct
method Equal (line 65) | func (c *FeatureRequest) Equal(cluster *kstonev1alpha2.EtcdCluster) bo...
method Sync (line 69) | func (c *FeatureRequest) Sync(cluster *kstonev1alpha2.EtcdCluster) err...
method Do (line 73) | func (c *FeatureRequest) Do(inspection *kstonev1alpha2.EtcdInspection)...
function init (line 44) | func init() {
function initFeatureRequestInstance (line 53) | func initFeatureRequestInstance(ctx *featureprovider.FeatureContext) (fe...
FILE: pkg/featureprovider/util/util.go
constant FeatureStatusEnabled (line 30) | FeatureStatusEnabled = "enabled"
constant FeatureStatusDisabled (line 31) | FeatureStatusDisabled = "disabled"
type ConsistencyType (line 34) | type ConsistencyType
constant ConsistencyKeyTotal (line 37) | ConsistencyKeyTotal ConsistencyType = "keyTotal"
constant ConsistencyRevision (line 38) | ConsistencyRevision ConsistencyType = "revision"
constant ConsistencyIndex (line 39) | ConsistencyIndex ConsistencyType = "index"
constant ConsistencyRaftRaftAppliedIndex (line 40) | ConsistencyRaftRaftAppliedIndex ConsistencyType = "raftAppliedIndex"
constant ConsistencyRaftIndex (line 41) | ConsistencyRaftIndex ConsistencyType = "raftIndex"
constant OneDaySeconds (line 45) | OneDaySeconds = 24 * 60 * 60
function IsFeatureGateEnabled (line 48) | func IsFeatureGateEnabled(annotations map[string]string, name kstonev1al...
function IncrFailedInspectionCounter (line 66) | func IncrFailedInspectionCounter(clusterName string, featureName kstonev...
FILE: pkg/generated/clientset/versioned/clientset.go
type Interface (line 33) | type Interface interface
type Clientset (line 41) | type Clientset struct
method KstoneV1alpha1 (line 48) | func (c *Clientset) KstoneV1alpha1() kstonev1alpha1.KstoneV1alpha1Inte...
method KstoneV1alpha2 (line 53) | func (c *Clientset) KstoneV1alpha2() kstonev1alpha2.KstoneV1alpha2Inte...
method Discovery (line 58) | func (c *Clientset) Discovery() discovery.DiscoveryInterface {
function NewForConfig (line 68) | func NewForConfig(c *rest.Config) (*Clientset, error) {
function NewForConfigOrDie (line 96) | func NewForConfigOrDie(c *rest.Config) *Clientset {
function New (line 106) | func New(c rest.Interface) *Clientset {
FILE: pkg/generated/clientset/versioned/fake/clientset_generated.go
function NewSimpleClientset (line 40) | func NewSimpleClientset(objects ...runtime.Object) *Clientset {
type Clientset (line 67) | type Clientset struct
method Discovery (line 73) | func (c *Clientset) Discovery() discovery.DiscoveryInterface {
method Tracker (line 77) | func (c *Clientset) Tracker() testing.ObjectTracker {
method KstoneV1alpha1 (line 84) | func (c *Clientset) KstoneV1alpha1() kstonev1alpha1.KstoneV1alpha1Inte...
method KstoneV1alpha2 (line 89) | func (c *Clientset) KstoneV1alpha2() kstonev1alpha2.KstoneV1alpha2Inte...
FILE: pkg/generated/clientset/versioned/fake/register.go
function init (line 57) | func init() {
FILE: pkg/generated/clientset/versioned/scheme/register.go
function init (line 57) | func init() {
FILE: pkg/generated/clientset/versioned/typed/kstone/v1alpha1/etcdcluster.go
type EtcdClustersGetter (line 37) | type EtcdClustersGetter interface
type EtcdClusterInterface (line 42) | type EtcdClusterInterface interface
type etcdClusters (line 56) | type etcdClusters struct
method Get (line 70) | func (c *etcdClusters) Get(ctx context.Context, name string, options v...
method List (line 83) | func (c *etcdClusters) List(ctx context.Context, opts v1.ListOptions) ...
method Watch (line 100) | func (c *etcdClusters) Watch(ctx context.Context, opts v1.ListOptions)...
method Create (line 115) | func (c *etcdClusters) Create(ctx context.Context, etcdCluster *v1alph...
method Update (line 128) | func (c *etcdClusters) Update(ctx context.Context, etcdCluster *v1alph...
method UpdateStatus (line 143) | func (c *etcdClusters) UpdateStatus(ctx context.Context, etcdCluster *...
method Delete (line 158) | func (c *etcdClusters) Delete(ctx context.Context, name string, opts v...
method DeleteCollection (line 169) | func (c *etcdClusters) DeleteCollection(ctx context.Context, opts v1.D...
method Patch (line 185) | func (c *etcdClusters) Patch(ctx context.Context, name string, pt type...
function newEtcdClusters (line 62) | func newEtcdClusters(c *KstoneV1alpha1Client, namespace string) *etcdClu...
FILE: pkg/generated/clientset/versioned/typed/kstone/v1alpha1/etcdinspection.go
type EtcdInspectionsGetter (line 37) | type EtcdInspectionsGetter interface
type EtcdInspectionInterface (line 42) | type EtcdInspectionInterface interface
type etcdInspections (line 56) | type etcdInspections struct
method Get (line 70) | func (c *etcdInspections) Get(ctx context.Context, name string, option...
method List (line 83) | func (c *etcdInspections) List(ctx context.Context, opts v1.ListOption...
method Watch (line 100) | func (c *etcdInspections) Watch(ctx context.Context, opts v1.ListOptio...
method Create (line 115) | func (c *etcdInspections) Create(ctx context.Context, etcdInspection *...
method Update (line 128) | func (c *etcdInspections) Update(ctx context.Context, etcdInspection *...
method UpdateStatus (line 143) | func (c *etcdInspections) UpdateStatus(ctx context.Context, etcdInspec...
method Delete (line 158) | func (c *etcdInspections) Delete(ctx context.Context, name string, opt...
method DeleteCollection (line 169) | func (c *etcdInspections) DeleteCollection(ctx context.Context, opts v...
method Patch (line 185) | func (c *etcdInspections) Patch(ctx context.Context, name string, pt t...
function newEtcdInspections (line 62) | func newEtcdInspections(c *KstoneV1alpha1Client, namespace string) *etcd...
FILE: pkg/generated/clientset/versioned/typed/kstone/v1alpha1/fake/fake_etcdcluster.go
type FakeEtcdClusters (line 36) | type FakeEtcdClusters struct
method Get (line 46) | func (c *FakeEtcdClusters) Get(ctx context.Context, name string, optio...
method List (line 57) | func (c *FakeEtcdClusters) List(ctx context.Context, opts v1.ListOptio...
method Watch (line 79) | func (c *FakeEtcdClusters) Watch(ctx context.Context, opts v1.ListOpti...
method Create (line 86) | func (c *FakeEtcdClusters) Create(ctx context.Context, etcdCluster *v1...
method Update (line 97) | func (c *FakeEtcdClusters) Update(ctx context.Context, etcdCluster *v1...
method UpdateStatus (line 109) | func (c *FakeEtcdClusters) UpdateStatus(ctx context.Context, etcdClust...
method Delete (line 120) | func (c *FakeEtcdClusters) Delete(ctx context.Context, name string, op...
method DeleteCollection (line 128) | func (c *FakeEtcdClusters) DeleteCollection(ctx context.Context, opts ...
method Patch (line 136) | func (c *FakeEtcdClusters) Patch(ctx context.Context, name string, pt ...
FILE: pkg/generated/clientset/versioned/typed/kstone/v1alpha1/fake/fake_etcdinspection.go
type FakeEtcdInspections (line 36) | type FakeEtcdInspections struct
method Get (line 46) | func (c *FakeEtcdInspections) Get(ctx context.Context, name string, op...
method List (line 57) | func (c *FakeEtcdInspections) List(ctx context.Context, opts v1.ListOp...
method Watch (line 79) | func (c *FakeEtcdInspections) Watch(ctx context.Context, opts v1.ListO...
method Create (line 86) | func (c *FakeEtcdInspections) Create(ctx context.Context, etcdInspecti...
method Update (line 97) | func (c *FakeEtcdInspections) Update(ctx context.Context, etcdInspecti...
method UpdateStatus (line 109) | func (c *FakeEtcdInspections) UpdateStatus(ctx context.Context, etcdIn...
method Delete (line 120) | func (c *FakeEtcdInspections) Delete(ctx context.Context, name string,...
method DeleteCollection (line 128) | func (c *FakeEtcdInspections) DeleteCollection(ctx context.Context, op...
method Patch (line 136) | func (c *FakeEtcdInspections) Patch(ctx context.Context, name string, ...
FILE: pkg/generated/clientset/versioned/typed/kstone/v1alpha1/fake/fake_kstone_client.go
type FakeKstoneV1alpha1 (line 29) | type FakeKstoneV1alpha1 struct
method EtcdClusters (line 33) | func (c *FakeKstoneV1alpha1) EtcdClusters(namespace string) v1alpha1.E...
method EtcdInspections (line 37) | func (c *FakeKstoneV1alpha1) EtcdInspections(namespace string) v1alpha...
method RESTClient (line 43) | func (c *FakeKstoneV1alpha1) RESTClient() rest.Interface {
FILE: pkg/generated/clientset/versioned/typed/kstone/v1alpha1/generated_expansion.go
type EtcdClusterExpansion (line 23) | type EtcdClusterExpansion interface
type EtcdInspectionExpansion (line 25) | type EtcdInspectionExpansion interface
FILE: pkg/generated/clientset/versioned/typed/kstone/v1alpha1/kstone_client.go
type KstoneV1alpha1Interface (line 29) | type KstoneV1alpha1Interface interface
type KstoneV1alpha1Client (line 36) | type KstoneV1alpha1Client struct
method EtcdClusters (line 40) | func (c *KstoneV1alpha1Client) EtcdClusters(namespace string) EtcdClus...
method EtcdInspections (line 44) | func (c *KstoneV1alpha1Client) EtcdInspections(namespace string) EtcdI...
method RESTClient (line 91) | func (c *KstoneV1alpha1Client) RESTClient() rest.Interface {
function NewForConfig (line 49) | func NewForConfig(c *rest.Config) (*KstoneV1alpha1Client, error) {
function NewForConfigOrDie (line 63) | func NewForConfigOrDie(c *rest.Config) *KstoneV1alpha1Client {
function New (line 72) | func New(c rest.Interface) *KstoneV1alpha1Client {
function setConfigDefaults (line 76) | func setConfigDefaults(config *rest.Config) error {
FILE: pkg/generated/clientset/versioned/typed/kstone/v1alpha2/etcdcluster.go
type EtcdClustersGetter (line 37) | type EtcdClustersGetter interface
type EtcdClusterInterface (line 42) | type EtcdClusterInterface interface
type etcdClusters (line 56) | type etcdClusters struct
method Get (line 70) | func (c *etcdClusters) Get(ctx context.Context, name string, options v...
method List (line 83) | func (c *etcdClusters) List(ctx context.Context, opts v1.ListOptions) ...
method Watch (line 100) | func (c *etcdClusters) Watch(ctx context.Context, opts v1.ListOptions)...
method Create (line 115) | func (c *etcdClusters) Create(ctx context.Context, etcdCluster *v1alph...
method Update (line 128) | func (c *etcdClusters) Update(ctx context.Context, etcdCluster *v1alph...
method UpdateStatus (line 143) | func (c *etcdClusters) UpdateStatus(ctx context.Context, etcdCluster *...
method Delete (line 158) | func (c *etcdClusters) Delete(ctx context.Context, name string, opts v...
method DeleteCollection (line 169) | func (c *etcdClusters) DeleteCollection(ctx context.Context, opts v1.D...
method Patch (line 185) | func (c *etcdClusters) Patch(ctx context.Context, name string, pt type...
function newEtcdClusters (line 62) | func newEtcdClusters(c *KstoneV1alpha2Client, namespace string) *etcdClu...
FILE: pkg/generated/clientset/versioned/typed/kstone/v1alpha2/etcdinspection.go
type EtcdInspectionsGetter (line 37) | type EtcdInspectionsGetter interface
type EtcdInspectionInterface (line 42) | type EtcdInspectionInterface interface
type etcdInspections (line 56) | type etcdInspections struct
method Get (line 70) | func (c *etcdInspections) Get(ctx context.Context, name string, option...
method List (line 83) | func (c *etcdInspections) List(ctx context.Context, opts v1.ListOption...
method Watch (line 100) | func (c *etcdInspections) Watch(ctx context.Context, opts v1.ListOptio...
method Create (line 115) | func (c *etcdInspections) Create(ctx context.Context, etcdInspection *...
method Update (line 128) | func (c *etcdInspections) Update(ctx context.Context, etcdInspection *...
method UpdateStatus (line 143) | func (c *etcdInspections) UpdateStatus(ctx context.Context, etcdInspec...
method Delete (line 158) | func (c *etcdInspections) Delete(ctx context.Context, name string, opt...
method DeleteCollection (line 169) | func (c *etcdInspections) DeleteCollection(ctx context.Context, opts v...
method Patch (line 185) | func (c *etcdInspections) Patch(ctx context.Context, name string, pt t...
function newEtcdInspections (line 62) | func newEtcdInspections(c *KstoneV1alpha2Client, namespace string) *etcd...
FILE: pkg/generated/clientset/versioned/typed/kstone/v1alpha2/fake/fake_etcdcluster.go
type FakeEtcdClusters (line 36) | type FakeEtcdClusters struct
method Get (line 46) | func (c *FakeEtcdClusters) Get(ctx context.Context, name string, optio...
method List (line 57) | func (c *FakeEtcdClusters) List(ctx context.Context, opts v1.ListOptio...
method Watch (line 79) | func (c *FakeEtcdClusters) Watch(ctx context.Context, opts v1.ListOpti...
method Create (line 86) | func (c *FakeEtcdClusters) Create(ctx context.Context, etcdCluster *v1...
method Update (line 97) | func (c *FakeEtcdClusters) Update(ctx context.Context, etcdCluster *v1...
method UpdateStatus (line 109) | func (c *FakeEtcdClusters) UpdateStatus(ctx context.Context, etcdClust...
method Delete (line 120) | func (c *FakeEtcdClusters) Delete(ctx context.Context, name string, op...
method DeleteCollection (line 128) | func (c *FakeEtcdClusters) DeleteCollection(ctx context.Context, opts ...
method Patch (line 136) | func (c *FakeEtcdClusters) Patch(ctx context.Context, name string, pt ...
FILE: pkg/generated/clientset/versioned/typed/kstone/v1alpha2/fake/fake_etcdinspection.go
type FakeEtcdInspections (line 36) | type FakeEtcdInspections struct
method Get (line 46) | func (c *FakeEtcdInspections) Get(ctx context.Context, name string, op...
method List (line 57) | func (c *FakeEtcdInspections) List(ctx context.Context, opts v1.ListOp...
method Watch (line 79) | func (c *FakeEtcdInspections) Watch(ctx context.Context, opts v1.ListO...
method Create (line 86) | func (c *FakeEtcdInspections) Create(ctx context.Context, etcdInspecti...
method Update (line 97) | func (c *FakeEtcdInspections) Update(ctx context.Context, etcdInspecti...
method UpdateStatus (line 109) | func (c *FakeEtcdInspections) UpdateStatus(ctx context.Context, etcdIn...
method Delete (line 120) | func (c *FakeEtcdInspections) Delete(ctx context.Context, name string,...
method DeleteCollection (line 128) | func (c *FakeEtcdInspections) DeleteCollection(ctx context.Context, op...
method Patch (line 136) | func (c *FakeEtcdInspections) Patch(ctx context.Context, name string, ...
FILE: pkg/generated/clientset/versioned/typed/kstone/v1alpha2/fake/fake_kstone_client.go
type FakeKstoneV1alpha2 (line 29) | type FakeKstoneV1alpha2 struct
method EtcdClusters (line 33) | func (c *FakeKstoneV1alpha2) EtcdClusters(namespace string) v1alpha2.E...
method EtcdInspections (line 37) | func (c *FakeKstoneV1alpha2) EtcdInspections(namespace string) v1alpha...
method RESTClient (line 43) | func (c *FakeKstoneV1alpha2) RESTClient() rest.Interface {
FILE: pkg/generated/clientset/versioned/typed/kstone/v1alpha2/generated_expansion.go
type EtcdClusterExpansion (line 23) | type EtcdClusterExpansion interface
type EtcdInspectionExpansion (line 25) | type EtcdInspectionExpansion interface
FILE: pkg/generated/clientset/versioned/typed/kstone/v1alpha2/kstone_client.go
type KstoneV1alpha2Interface (line 29) | type KstoneV1alpha2Interface interface
type KstoneV1alpha2Client (line 36) | type KstoneV1alpha2Client struct
method EtcdClusters (line 40) | func (c *KstoneV1alpha2Client) EtcdClusters(namespace string) EtcdClus...
method EtcdInspections (line 44) | func (c *KstoneV1alpha2Client) EtcdInspections(namespace string) EtcdI...
method RESTClient (line 91) | func (c *KstoneV1alpha2Client) RESTClient() rest.Interface {
function NewForConfig (line 49) | func NewForConfig(c *rest.Config) (*KstoneV1alpha2Client, error) {
function NewForConfigOrDie (line 63) | func NewForConfigOrDie(c *rest.Config) *KstoneV1alpha2Client {
function New (line 72) | func New(c rest.Interface) *KstoneV1alpha2Client {
function setConfigDefaults (line 76) | func setConfigDefaults(config *rest.Config) error {
FILE: pkg/generated/informers/externalversions/factory.go
type SharedInformerOption (line 38) | type SharedInformerOption
type sharedInformerFactory (line 40) | type sharedInformerFactory struct
method Start (line 113) | func (f *sharedInformerFactory) Start(stopCh <-chan struct{}) {
method WaitForCacheSync (line 126) | func (f *sharedInformerFactory) WaitForCacheSync(stopCh <-chan struct{...
method InformerFor (line 149) | func (f *sharedInformerFactory) InformerFor(obj runtime.Object, newFun...
method Kstone (line 180) | func (f *sharedInformerFactory) Kstone() kstone.Interface {
function WithCustomResyncConfig (line 55) | func WithCustomResyncConfig(resyncConfig map[v1.Object]time.Duration) Sh...
function WithTweakListOptions (line 65) | func WithTweakListOptions(tweakListOptions internalinterfaces.TweakListO...
function WithNamespace (line 73) | func WithNamespace(namespace string) SharedInformerOption {
function NewSharedInformerFactory (line 81) | func NewSharedInformerFactory(client versioned.Interface, defaultResync ...
function NewFilteredSharedInformerFactory (line 89) | func NewFilteredSharedInformerFactory(client versioned.Interface, defaul...
function NewSharedInformerFactoryWithOptions (line 94) | func NewSharedInformerFactoryWithOptions(client versioned.Interface, def...
type SharedInformerFactory (line 172) | type SharedInformerFactory interface
FILE: pkg/generated/informers/externalversions/generic.go
type GenericInformer (line 34) | type GenericInformer interface
type genericInformer (line 39) | type genericInformer struct
method Informer (line 45) | func (f *genericInformer) Informer() cache.SharedIndexInformer {
method Lister (line 50) | func (f *genericInformer) Lister() cache.GenericLister {
method ForResource (line 56) | func (f *sharedInformerFactory) ForResource(resource schema.GroupVersion...
FILE: pkg/generated/informers/externalversions/internalinterfaces/factory_interfaces.go
type NewInformerFunc (line 33) | type NewInformerFunc
type SharedInformerFactory (line 36) | type SharedInformerFactory interface
type TweakListOptionsFunc (line 42) | type TweakListOptionsFunc
FILE: pkg/generated/informers/externalversions/kstone/interface.go
type Interface (line 30) | type Interface interface
type group (line 37) | type group struct
method V1alpha1 (line 49) | func (g *group) V1alpha1() v1alpha1.Interface {
method V1alpha2 (line 54) | func (g *group) V1alpha2() v1alpha2.Interface {
function New (line 44) | func New(f internalinterfaces.SharedInformerFactory, namespace string, t...
FILE: pkg/generated/informers/externalversions/kstone/v1alpha1/etcdcluster.go
type EtcdClusterInformer (line 39) | type EtcdClusterInformer interface
type etcdClusterInformer (line 44) | type etcdClusterInformer struct
method defaultInformer (line 82) | func (f *etcdClusterInformer) defaultInformer(client versioned.Interfa...
method Informer (line 86) | func (f *etcdClusterInformer) Informer() cache.SharedIndexInformer {
method Lister (line 90) | func (f *etcdClusterInformer) Lister() v1alpha1.EtcdClusterLister {
function NewEtcdClusterInformer (line 53) | func NewEtcdClusterInformer(client versioned.Interface, namespace string...
function NewFilteredEtcdClusterInformer (line 60) | func NewFilteredEtcdClusterInformer(client versioned.Interface, namespac...
FILE: pkg/generated/informers/externalversions/kstone/v1alpha1/etcdinspection.go
type EtcdInspectionInformer (line 39) | type EtcdInspectionInformer interface
type etcdInspectionInformer (line 44) | type etcdInspectionInformer struct
method defaultInformer (line 82) | func (f *etcdInspectionInformer) defaultInformer(client versioned.Inte...
method Informer (line 86) | func (f *etcdInspectionInformer) Informer() cache.SharedIndexInformer {
method Lister (line 90) | func (f *etcdInspectionInformer) Lister() v1alpha1.EtcdInspectionLister {
function NewEtcdInspectionInformer (line 53) | func NewEtcdInspectionInformer(client versioned.Interface, namespace str...
function NewFilteredEtcdInspectionInformer (line 60) | func NewFilteredEtcdInspectionInformer(client versioned.Interface, names...
FILE: pkg/generated/informers/externalversions/kstone/v1alpha1/interface.go
type Interface (line 28) | type Interface interface
type version (line 35) | type version struct
method EtcdClusters (line 47) | func (v *version) EtcdClusters() EtcdClusterInformer {
method EtcdInspections (line 52) | func (v *version) EtcdInspections() EtcdInspectionInformer {
function New (line 42) | func New(f internalinterfaces.SharedInformerFactory, namespace string, t...
FILE: pkg/generated/informers/externalversions/kstone/v1alpha2/etcdcluster.go
type EtcdClusterInformer (line 39) | type EtcdClusterInformer interface
type etcdClusterInformer (line 44) | type etcdClusterInformer struct
method defaultInformer (line 82) | func (f *etcdClusterInformer) defaultInformer(client versioned.Interfa...
method Informer (line 86) | func (f *etcdClusterInformer) Informer() cache.SharedIndexInformer {
method Lister (line 90) | func (f *etcdClusterInformer) Lister() v1alpha2.EtcdClusterLister {
function NewEtcdClusterInformer (line 53) | func NewEtcdClusterInformer(client versioned.Interface, namespace string...
function NewFilteredEtcdClusterInformer (line 60) | func NewFilteredEtcdClusterInformer(client versioned.Interface, namespac...
FILE: pkg/generated/informers/externalversions/kstone/v1alpha2/etcdinspection.go
type EtcdInspectionInformer (line 39) | type EtcdInspectionInformer interface
type etcdInspectionInformer (line 44) | type etcdInspectionInformer struct
method defaultInformer (line 82) | func (f *etcdInspectionInformer) defaultInformer(client versioned.Inte...
method Informer (line 86) | func (f *etcdInspectionInformer) Informer() cache.SharedIndexInformer {
method Lister (line 90) | func (f *etcdInspectionInformer) Lister() v1alpha2.EtcdInspectionLister {
function NewEtcdInspectionInformer (line 53) | func NewEtcdInspectionInformer(client versioned.Interface, namespace str...
function NewFilteredEtcdInspectionInformer (line 60) | func NewFilteredEtcdInspectionInformer(client versioned.Interface, names...
FILE: pkg/generated/informers/externalversions/kstone/v1alpha2/interface.go
type Interface (line 28) | type Interface interface
type version (line 35) | type version struct
method EtcdClusters (line 47) | func (v *version) EtcdClusters() EtcdClusterInformer {
method EtcdInspections (line 52) | func (v *version) EtcdInspections() EtcdInspectionInformer {
function New (line 42) | func New(f internalinterfaces.SharedInformerFactory, namespace string, t...
FILE: pkg/generated/listers/kstone/v1alpha1/etcdcluster.go
type EtcdClusterLister (line 32) | type EtcdClusterLister interface
type etcdClusterLister (line 42) | type etcdClusterLister struct
method List (line 52) | func (s *etcdClusterLister) List(selector labels.Selector) (ret []*v1a...
method EtcdClusters (line 60) | func (s *etcdClusterLister) EtcdClusters(namespace string) EtcdCluster...
function NewEtcdClusterLister (line 47) | func NewEtcdClusterLister(indexer cache.Indexer) EtcdClusterLister {
type EtcdClusterNamespaceLister (line 66) | type EtcdClusterNamespaceLister interface
type etcdClusterNamespaceLister (line 78) | type etcdClusterNamespaceLister struct
method List (line 84) | func (s etcdClusterNamespaceLister) List(selector labels.Selector) (re...
method Get (line 92) | func (s etcdClusterNamespaceLister) Get(name string) (*v1alpha1.EtcdCl...
FILE: pkg/generated/listers/kstone/v1alpha1/etcdinspection.go
type EtcdInspectionLister (line 32) | type EtcdInspectionLister interface
type etcdInspectionLister (line 42) | type etcdInspectionLister struct
method List (line 52) | func (s *etcdInspectionLister) List(selector labels.Selector) (ret []*...
method EtcdInspections (line 60) | func (s *etcdInspectionLister) EtcdInspections(namespace string) EtcdI...
function NewEtcdInspectionLister (line 47) | func NewEtcdInspectionLister(indexer cache.Indexer) EtcdInspectionLister {
type EtcdInspectionNamespaceLister (line 66) | type EtcdInspectionNamespaceLister interface
type etcdInspectionNamespaceLister (line 78) | type etcdInspectionNamespaceLister struct
method List (line 84) | func (s etcdInspectionNamespaceLister) List(selector labels.Selector) ...
method Get (line 92) | func (s etcdInspectionNamespaceLister) Get(name string) (*v1alpha1.Etc...
FILE: pkg/generated/listers/kstone/v1alpha1/expansion_generated.go
type EtcdClusterListerExpansion (line 25) | type EtcdClusterListerExpansion interface
type EtcdClusterNamespaceListerExpansion (line 29) | type EtcdClusterNamespaceListerExpansion interface
type EtcdInspectionListerExpansion (line 33) | type EtcdInspectionListerExpansion interface
type EtcdInspectionNamespaceListerExpansion (line 37) | type EtcdInspectionNamespaceListerExpansion interface
FILE: pkg/generated/listers/kstone/v1alpha2/etcdcluster.go
type EtcdClusterLister (line 32) | type EtcdClusterLister interface
type etcdClusterLister (line 42) | type etcdClusterLister struct
method List (line 52) | func (s *etcdClusterLister) List(selector labels.Selector) (ret []*v1a...
method EtcdClusters (line 60) | func (s *etcdClusterLister) EtcdClusters(namespace string) EtcdCluster...
function NewEtcdClusterLister (line 47) | func NewEtcdClusterLister(indexer cache.Indexer) EtcdClusterLister {
type EtcdClusterNamespaceLister (line 66) | type EtcdClusterNamespaceLister interface
type etcdClusterNamespaceLister (line 78) | type etcdClusterNamespaceLister struct
method List (line 84) | func (s etcdClusterNamespaceLister) List(selector labels.Selector) (re...
method Get (line 92) | func (s etcdClusterNamespaceLister) Get(name string) (*v1alpha2.EtcdCl...
FILE: pkg/generated/listers/kstone/v1alpha2/etcdinspection.go
type EtcdInspectionLister (line 32) | type EtcdInspectionLister interface
type etcdInspectionLister (line 42) | type etcdInspectionLister struct
method List (line 52) | func (s *etcdInspectionLister) List(selector labels.Selector) (ret []*...
method EtcdInspections (line 60) | func (s *etcdInspectionLister) EtcdInspections(namespace string) EtcdI...
function NewEtcdInspectionLister (line 47) | func NewEtcdInspectionLister(indexer cache.Indexer) EtcdInspectionLister {
type EtcdInspectionNamespaceLister (line 66) | type EtcdInspectionNamespaceLister interface
type etcdInspectionNamespaceLister (line 78) | type etcdInspectionNamespaceLister struct
method List (line 84) | func (s etcdInspectionNamespaceLister) List(selector labels.Selector) ...
method Get (line 92) | func (s etcdInspectionNamespaceLister) Get(name string) (*v1alpha2.Etc...
FILE: pkg/generated/listers/kstone/v1alpha2/expansion_generated.go
type EtcdClusterListerExpansion (line 25) | type EtcdClusterListerExpansion interface
type EtcdClusterNamespaceListerExpansion (line 29) | type EtcdClusterNamespaceListerExpansion interface
type EtcdInspectionListerExpansion (line 33) | type EtcdInspectionListerExpansion interface
type EtcdInspectionNamespaceListerExpansion (line 37) | type EtcdInspectionNamespaceListerExpansion interface
FILE: pkg/inspection/alarm.go
method CollectAlarmList (line 36) | func (c *Server) CollectAlarmList(inspection *kstonev1alpha2.EtcdInspect...
function cleanAllAlarmMetrics (line 73) | func cleanAllAlarmMetrics(clusterName, endpoint string) {
FILE: pkg/inspection/backupcheck.go
method StatBackupFiles (line 38) | func (c *Server) StatBackupFiles(inspection *kstonev1alpha2.EtcdInspecti...
FILE: pkg/inspection/consistency.go
type ConsistencyInfo (line 36) | type ConsistencyInfo struct
method getEtcdConsistentMetadata (line 42) | func (c *Server) getEtcdConsistentMetadata(
method CollectClusterConsistentData (line 107) | func (c *Server) CollectClusterConsistentData(inspection *kstonev1alpha2...
FILE: pkg/inspection/healthy.go
method CollectMemberHealthy (line 32) | func (c *Server) CollectMemberHealthy(inspection *kstonev1alpha2.EtcdIns...
FILE: pkg/inspection/inspection.go
constant DefaultInspectionInterval (line 44) | DefaultInspectionInterval = 300 * time.Second
constant DefaultInspectionPath (line 45) | DefaultInspectionPath = ""
type Server (line 48) | type Server struct
method GetEtcdCluster (line 78) | func (c *Server) GetEtcdCluster(namespace, name string) (*kstonev1alph...
method GetEtcdInspection (line 83) | func (c *Server) GetEtcdInspection(namespace, name string) (*kstonev1a...
method DeleteEtcdInspection (line 95) | func (c *Server) DeleteEtcdInspection(namespace, name string) error {
method CreateEtcdInspection (line 111) | func (c *Server) CreateEtcdInspection(inspection *kstonev1alpha2.EtcdI...
method initInspectionTask (line 126) | func (c *Server) initInspectionTask(
method GetEtcdClusterInfo (line 155) | func (c *Server) GetEtcdClusterInfo(namespace, name string) (*kstonev1...
method Equal (line 178) | func (c *Server) Equal(cluster *kstonev1alpha2.EtcdCluster, inspection...
method Sync (line 188) | func (c *Server) Sync(cluster *kstonev1alpha2.EtcdCluster, inspectionF...
method checkEqualIfDisabled (line 196) | func (c *Server) checkEqualIfDisabled(cluster *kstonev1alpha2.EtcdClus...
method checkEqualIfEnabled (line 206) | func (c *Server) checkEqualIfEnabled(cluster *kstonev1alpha2.EtcdClust...
method cleanInspectionTask (line 215) | func (c *Server) cleanInspectionTask(cluster *kstonev1alpha2.EtcdClust...
method syncInspectionTask (line 221) | func (c *Server) syncInspectionTask(cluster *kstonev1alpha2.EtcdCluste...
function NewInspectionServer (line 60) | func NewInspectionServer(ctx *featureprovider.FeatureContext) (*Server, ...
FILE: pkg/inspection/metrics/metrics.go
function init (line 111) | func init() {
FILE: pkg/inspection/request.go
constant inspectionRequestAnno (line 40) | inspectionRequestAnno = "request"
constant eventBuffer (line 41) | eventBuffer = 40960
type RequestInfo (line 44) | type RequestInfo struct
method CollectEtcdClusterRequest (line 51) | func (c *Server) CollectEtcdClusterRequest(inspection *kstonev1alpha2.Et...
method populateClusterTotalKeyMetrics (line 119) | func (c *Server) populateClusterTotalKeyMetrics(cluster *kstonev1alpha2....
method setEtcdPrefixAndResourceName (line 131) | func (c *Server) setEtcdPrefixAndResourceName(labels map[string]string, ...
method setEventCh (line 145) | func (c *Server) setEventCh(ch chan *clientv3.Event, clusterName string) {
method getEventCh (line 152) | func (c *Server) getEventCh(clusterName string) chan *clientv3.Event {
method Watch (line 163) | func (c *Server) Watch(cluster *kstonev1alpha2.EtcdCluster, client *clie...
method watch (line 181) | func (c *Server) watch(cluster *kstonev1alpha2.EtcdCluster, wchan client...
method processWatchEvent (line 203) | func (c *Server) processWatchEvent(cluster *kstonev1alpha2.EtcdCluster) {
FILE: pkg/k8s/client.go
function GetClientConfig (line 36) | func GetClientConfig(kubeconfig string) (*rest.Config, error) {
function GenerateInformer (line 54) | func GenerateInformer(config *rest.Config, labelSelector string) (
FILE: pkg/middlewares/auth.go
function Auth (line 30) | func Auth() gin.HandlerFunc {
FILE: pkg/middlewares/cors.go
constant AccessControlExposeHeadersValue (line 28) | AccessControlExposeHeadersValue = "Content-Length, " +
function Cors (line 37) | func Cors() gin.HandlerFunc {
FILE: pkg/monitor/prometheus.go
constant DefaultEtcdV3SecretName (line 48) | DefaultEtcdV3SecretName = "etcd-v3-certs"
constant EtcdTLSPrefix (line 49) | EtcdTLSPrefix = "/etc/prometheus/secrets/"
constant DefaultEtcdPromNamespace (line 50) | DefaultEtcdPromNamespace = "kstone"
type PrometheusMonitor (line 55) | type PrometheusMonitor struct
method GetEtcdService (line 75) | func (prom *PrometheusMonitor) GetEtcdService(namespace, name string) ...
method CreateEtcdService (line 85) | func (prom *PrometheusMonitor) CreateEtcdService(service *corev1.Servi...
method UpdateEtcdService (line 95) | func (prom *PrometheusMonitor) UpdateEtcdService(service *corev1.Servi...
method DeleteEtcdService (line 105) | func (prom *PrometheusMonitor) DeleteEtcdService(namespace, name strin...
method GetEtcdEndpoint (line 114) | func (prom *PrometheusMonitor) GetEtcdEndpoint(namespace, name string)...
method UpdateEtcdEndpoint (line 124) | func (prom *PrometheusMonitor) UpdateEtcdEndpoint(ep *corev1.Endpoints...
method CreateEtcdEndpoint (line 134) | func (prom *PrometheusMonitor) CreateEtcdEndpoint(ep *corev1.Endpoints...
method GetServiceMonitorTask (line 144) | func (prom *PrometheusMonitor) GetServiceMonitorTask(namespace, name s...
method UpdateServiceMonitorSpec (line 154) | func (prom *PrometheusMonitor) UpdateServiceMonitorSpec(task *promapiv...
method CreateServiceMonitor (line 167) | func (prom *PrometheusMonitor) CreateServiceMonitor(task *promapiv1.Se...
method UpdateServiceMonitor (line 178) | func (prom *PrometheusMonitor) UpdateServiceMonitor(task *promapiv1.Se...
method DeleteServiceMonitor (line 189) | func (prom *PrometheusMonitor) DeleteServiceMonitor(namespace, name st...
method ServiceMonitorIsEquivalent (line 200) | func (prom *PrometheusMonitor) ServiceMonitorIsEquivalent(old, new *pr...
method EndpointIsEquivalent (line 211) | func (prom *PrometheusMonitor) EndpointIsEquivalent(old, new *corev1.E...
method ServiceIsEquivalent (line 223) | func (prom *PrometheusMonitor) ServiceIsEquivalent(old, new *corev1.Se...
method UnpackEndPointSubsets (line 234) | func (prom *PrometheusMonitor) UnpackEndPointSubsets(endpoint *corev1....
method IsMonitorEnabled (line 248) | func (prom *PrometheusMonitor) IsMonitorEnabled(cluster *kstonev1alpha...
method Equal (line 253) | func (prom *PrometheusMonitor) Equal(cluster *kstonev1alpha2.EtcdClust...
method initEtcdServiceMonitor (line 286) | func (prom *PrometheusMonitor) initEtcdServiceMonitor(cluster *kstonev...
method initEtcdSvc (line 387) | func (prom *PrometheusMonitor) initEtcdSvc(cluster *kstonev1alpha2.Etc...
method initEtcdEndpoint (line 442) | func (prom *PrometheusMonitor) initEtcdEndpoint(cluster *kstonev1alpha...
method CheckEqualIfDisabled (line 481) | func (prom *PrometheusMonitor) CheckEqualIfDisabled(cluster *kstonev1a...
method CheckEqualIfEnabled (line 494) | func (prom *PrometheusMonitor) CheckEqualIfEnabled(cluster *kstonev1al...
method CleanPrometheusMonitor (line 523) | func (prom *PrometheusMonitor) CleanPrometheusMonitor(cluster *kstonev...
method SyncPrometheusMonitor (line 534) | func (prom *PrometheusMonitor) SyncPrometheusMonitor(cluster *kstonev1...
function NewPrometheusMonitor (line 61) | func NewPrometheusMonitor(clientBuilder util.ClientBuilder) (*Prometheus...
FILE: pkg/router/router.go
constant GroupName (line 62) | GroupName = "kstone.tkestack.io"
constant VersionName (line 63) | VersionName = "v1alpha2"
constant apiPrefix (line 64) | apiPrefix = "/apis"
function SetWorkNamespace (line 68) | func SetWorkNamespace(namespace string) {
function NewRouter (line 73) | func NewRouter() *gin.Engine {
function ReverseProxy (line 107) | func ReverseProxy() gin.HandlerFunc {
function EtcdKeyList (line 166) | func EtcdKeyList(ctx *gin.Context) {
function BackupList (line 295) | func BackupList(ctx *gin.Context) {
function FeatureList (line 343) | func FeatureList(ctx *gin.Context) {
function UserList (line 349) | func UserList(ctx *gin.Context) {
function UserUpdate (line 359) | func UserUpdate(ctx *gin.Context) {
function UserAdd (line 369) | func UserAdd(ctx *gin.Context) {
function UserDelete (line 379) | func UserDelete(ctx *gin.Context) {
function Login (line 389) | func Login(ctx *gin.Context) {
FILE: pkg/signals/signal.go
function SetupSignalHandler (line 31) | func SetupSignalHandler() (stopCh <-chan struct{}) {
FILE: test/e2e/e2e_test.go
constant TestSuiteSetupTimeOut (line 46) | TestSuiteSetupTimeOut = 300 * time.Second
constant TestSuiteTeardownTimeOut (line 48) | TestSuiteTeardownTimeOut = 300 * time.Second
constant pollInterval (line 50) | pollInterval = 1 * time.Second
constant pollTimeout (line 52) | pollTimeout = 180 * time.Second
function TestE2E (line 65) | func TestE2E(t *testing.T) {
function CreateTmpTestEtcdCluster (line 125) | func CreateTmpTestEtcdCluster() error {
function GetTmpTestEtcdClusterPodIP (line 145) | func GetTmpTestEtcdClusterPodIP() (string, error) {
function DeleteTmpTestEtcdCluster (line 163) | func DeleteTmpTestEtcdCluster() error {
FILE: test/e2e/etcdcluster_test.go
function getGinkgoFunc (line 45) | func getGinkgoFunc(clusterName, podName string) func() {
function createEtcdCluster (line 173) | func createEtcdCluster(name string, replicas uint, clusterType kstonev1a...
function deleteEtcdCluster (line 179) | func deleteEtcdCluster(name string) error {
function cleanAllEtcdCluster (line 184) | func cleanAllEtcdCluster() error {
function getEtcdPodIP (line 196) | func getEtcdPodIP() (string, error) {
function waitClusterStatusToRunning (line 208) | func waitClusterStatusToRunning(clusterName string) error {
function EnsureBackupDisabled (line 224) | func EnsureBackupDisabled(clusterName string) error {
function CheckBackupEnabled (line 238) | func CheckBackupEnabled(clusterName string) error {
function CheckBackupDisabled (line 251) | func CheckBackupDisabled(clusterName string) error {
function EnsureServiceMonitorDisabled (line 264) | func EnsureServiceMonitorDisabled(clusterName string) error {
function CheckServiceMonitorEnabled (line 278) | func CheckServiceMonitorEnabled(clusterName string) error {
function CheckServiceMonitorDisabled (line 291) | func CheckServiceMonitorDisabled(clusterName string) error {
function EnsureInspectionDisabled (line 304) | func EnsureInspectionDisabled(clusterName string, feature kstonev1alpha2...
function CheckInspectionEnabled (line 318) | func CheckInspectionEnabled(clusterName string, feature kstonev1alpha2.K...
function CheckInspectionDisabled (line 331) | func CheckInspectionDisabled(clusterName string, feature kstonev1alpha2....
function DisableFeature (line 344) | func DisableFeature(clusterName string, feature kstonev1alpha2.KStoneFea...
function UpdateAnnotationFeature (line 366) | func UpdateAnnotationFeature(annotations map[string]string, name kstonev...
function PrintTraceInfo (line 381) | func PrintTraceInfo(clusterName, podName string) {
FILE: test/fixtures/fixtures.go
constant DefaultFeatureGate (line 36) | DefaultFeatureGate = "monitor=true,consistency=tr...
constant DefaultTestClusterAddr (line 37) | DefaultTestClusterAddr = "etcd-test-headless.default....
constant DefaultTestClusterStatefulsetYaml (line 38) | DefaultTestClusterStatefulsetYaml = "etcd_statefulset.yaml"
constant DefaultTestClusterSvcYaml (line 39) | DefaultTestClusterSvcYaml = "etcd_service.yaml"
constant DefaultKstoneNamespace (line 40) | DefaultKstoneNamespace = "kstone"
constant DefaultImportedClusterName (line 41) | DefaultImportedClusterName = "kstone-test"
constant DefaultImportedPodName (line 42) | DefaultImportedPodName = "etcd-test-0"
constant DefaultNamespace (line 43) | DefaultNamespace = "default"
constant DefaultHTTPKstoneEtcdOperatorClusterName (line 44) | DefaultHTTPKstoneEtcdOperatorClusterName = "kstone-etcd-operator-http-t...
constant DefaultHTTPKstoneEtcdOperatorPodName (line 45) | DefaultHTTPKstoneEtcdOperatorPodName = "kstone-etcd-operator-http-t...
constant DefaultHTTPSKstoneEtcdOperatorClusterName (line 46) | DefaultHTTPSKstoneEtcdOperatorClusterName = "kstone-etcd-operator-https-...
constant DefaultHTTPSKstoneEtcdOperatorPodName (line 47) | DefaultHTTPSKstoneEtcdOperatorPodName = "kstone-etcd-operator-https-...
function NewEtcdCluster (line 50) | func NewEtcdCluster(
function NewEtcdInspection (line 100) | func NewEtcdInspection(name string, inspectionType kstonev1alpha2.KStone...
function SvcFromManifest (line 115) | func SvcFromManifest(fileName string) (*v1.Service, error) {
function StatefulSetFromManifest (line 133) | func StatefulSetFromManifest(fileName, ns string) (*appsv1.StatefulSet, ...
FILE: test/testfiles/testfiles.go
function AddFileSource (line 43) | func AddFileSource(filesource FileSource) {
type FileSource (line 50) | type FileSource interface
function ReadOrDie (line 71) | func ReadOrDie(filePath string) []byte {
function Read (line 81) | func Read(filePath string) ([]byte, error) {
function Exists (line 107) | func Exists(filePath string) bool {
type RootFileSource (line 121) | type RootFileSource struct
method ReadTestFile (line 129) | func (r RootFileSource) ReadTestFile(filePath string) ([]byte, error) {
method DescribeFiles (line 146) | func (r RootFileSource) DescribeFiles() string {
type BindataFileSource (line 163) | type BindataFileSource struct
method ReadTestFile (line 169) | func (b BindataFileSource) ReadTestFile(filePath string) ([]byte, erro...
method DescribeFiles (line 182) | func (b BindataFileSource) DescribeFiles() string {
FILE: third_party/etcd-operator/cmd/backup-operator/main.go
function init (line 54) | func init() {
function main (line 59) | func main() {
function createRecorder (line 121) | func createRecorder(kubecli kubernetes.Interface, name, namespace string...
function run (line 128) | func run(ctx context.Context) {
FILE: third_party/etcd-operator/cmd/operator/main.go
function init (line 64) | func init() {
function main (line 75) | func main() {
function run (line 140) | func run(ctx context.Context) {
function newControllerConfig (line 152) | func newControllerConfig() controller.Config {
function getMyPodServiceAccount (line 173) | func getMyPodServiceAccount(kubecli kubernetes.Interface) (string, error) {
function startChaos (line 187) | func startChaos(ctx context.Context, kubecli kubernetes.Interface, ns st...
function createRecorder (line 224) | func createRecorder(kubecli kubernetes.Interface, name, namespace string...
FILE: third_party/etcd-operator/cmd/restore-operator/main.go
constant serviceNameForMyself (line 46) | serviceNameForMyself = "etcd-restore-operator"
constant servicePortForMyself (line 47) | servicePortForMyself = 19999
function init (line 50) | func init() {
function main (line 55) | func main() {
function createRecorder (line 112) | func createRecorder(kubecli kubernetes.Interface, name, namespace string...
function run (line 119) | func run(ctx context.Context) {
FILE: third_party/etcd-operator/cmd/restore-operator/service.go
function createServiceForMyself (line 29) | func createServiceForMyself(kubecli kubernetes.Interface, name, namespac...
FILE: third_party/etcd-operator/pkg/apis/etcd/v1beta2/backup_types.go
constant BackupStorageTypeS3 (line 23) | BackupStorageTypeS3 BackupStorageType = "S3"
constant AWSSecretCredentialsFileName (line 24) | AWSSecretCredentialsFileName = "credentials"
constant AWSSecretConfigFileName (line 25) | AWSSecretConfigFileName = "config"
constant BackupStorageTypeABS (line 28) | BackupStorageTypeABS BackupStorageType = "ABS"
constant AzureSecretStorageAccount (line 29) | AzureSecretStorageAccount = "storage-account"
constant AzureSecretStorageKey (line 30) | AzureSecretStorageKey = "storage-key"
constant AzureCloudKey (line 31) | AzureCloudKey = "cloud"
constant BackupStorageTypeGCS (line 34) | BackupStorageTypeGCS BackupStorageType = "GCS"
constant GCPAccessToken (line 35) | GCPAccessToken = "access-token"
constant GCPCredentialsJson (line 36) | GCPCredentialsJson = "credentials.json"
constant BackupStorageTypeCOS (line 39) | BackupStorageTypeCOS BackupStorageType = "COS"
constant COSSecretKey (line 40) | COSSecretKey = "secret-key"
constant COSSecretId (line 41) | COSSecretId = "secret-id"
constant BackupStorageTypeOSS (line 44) | BackupStorageTypeOSS BackupStorageType = "OSS"
constant AlibabaCloudSecretCredentialsAccessKeyID (line 45) | AlibabaCloudSecretCredentialsAccessKeyID = "access...
constant AlibabaCloudSecretCredentialsAccessKeySecret (line 46) | AlibabaCloudSecretCredentialsAccessKeySecret = "access...
constant BackupStorageTypeHostPath (line 49) | BackupStorageTypeHostPath BackupStorageType = "HostPath"
type BackupStorageType (line 52) | type BackupStorageType
type EtcdBackupList (line 57) | type EtcdBackupList struct
type EtcdBackup (line 67) | type EtcdBackup struct
type BackupSpec (line 75) | type BackupSpec struct
type BackupSource (line 106) | type BackupSource struct
type BackupPolicy (line 122) | type BackupPolicy struct
type BackupStatus (line 134) | type BackupStatus struct
type S3BackupSource (line 148) | type S3BackupSource struct
type ABSBackupSource (line 173) | type ABSBackupSource struct
type GCSBackupSource (line 184) | type GCSBackupSource struct
type COSBackupSource (line 200) | type COSBackupSource struct
type OSSBackupSource (line 211) | type OSSBackupSource struct
type HostPathBackupSource (line 246) | type HostPathBackupSource struct
FILE: third_party/etcd-operator/pkg/apis/etcd/v1beta2/cluster.go
constant defaultRepository (line 26) | defaultRepository = "quay.io/coreos/etcd"
constant DefaultEtcdVersion (line 27) | DefaultEtcdVersion = "3.2.13"
type EtcdClusterList (line 38) | type EtcdClusterList struct
type EtcdCluster (line 49) | type EtcdCluster struct
method AsOwner (line 56) | func (c *EtcdCluster) AsOwner() metav1.OwnerReference {
method SetDefaults (line 187) | func (e *EtcdCluster) SetDefaults() {
type ClusterSpec (line 67) | type ClusterSpec struct
method Validate (line 168) | func (c *ClusterSpec) Validate() error {
type PodPolicy (line 105) | type PodPolicy struct
FILE: third_party/etcd-operator/pkg/apis/etcd/v1beta2/cluster_tls.go
type TLSPolicy (line 20) | type TLSPolicy struct
method Validate (line 43) | func (tp *TLSPolicy) Validate() error {
method IsSecureClient (line 59) | func (tp *TLSPolicy) IsSecureClient() bool {
method IsSecurePeer (line 66) | func (tp *TLSPolicy) IsSecurePeer() bool {
type StaticTLS (line 26) | type StaticTLS struct
type MemberSecret (line 34) | type MemberSecret struct
FILE: third_party/etcd-operator/pkg/apis/etcd/v1beta2/register.go
constant EtcdClusterResourceKind (line 24) | EtcdClusterResourceKind = "EtcdCluster"
constant EtcdClusterResourcePlural (line 25) | EtcdClusterResourcePlural = "etcdclusters"
constant groupName (line 26) | groupName = "etcd.database.coreos.com"
constant EtcdBackupResourceKind (line 28) | EtcdBackupResourceKind = "EtcdBackup"
constant EtcdBackupResourcePlural (line 29) | EtcdBackupResourcePlural = "etcdbackups"
constant EtcdRestoreResourceKind (line 31) | EtcdRestoreResourceKind = "EtcdRestore"
constant EtcdRestoreResourcePlural (line 32) | EtcdRestoreResourcePlural = "etcdrestores"
function Resource (line 46) | func Resource(resource string) schema.GroupResource {
function addKnownTypes (line 51) | func addKnownTypes(s *runtime.Scheme) error {
FILE: third_party/etcd-operator/pkg/apis/etcd/v1beta2/restore_types.go
type EtcdRestoreList (line 22) | type EtcdRestoreList struct
type EtcdRestore (line 33) | type EtcdRestore struct
type RestoreSpec (line 41) | type RestoreSpec struct
type EtcdClusterRef (line 57) | type EtcdClusterRef struct
type RestoreSource (line 63) | type RestoreSource struct
type S3RestoreSource (line 83) | type S3RestoreSource struct
type ABSRestoreSource (line 107) | type ABSRestoreSource struct
type GCSRestoreSource (line 117) | type GCSRestoreSource struct
type COSRestoreSource (line 132) | type COSRestoreSource struct
type OSSRestoreSource (line 141) | type OSSRestoreSource struct
type HostPathRestoreSource (line 175) | type HostPathRestoreSource struct
type RestoreStatus (line 183) | type RestoreStatus struct
FILE: third_party/etcd-operator/pkg/apis/etcd/v1beta2/status.go
type ClusterPhase (line 24) | type ClusterPhase
type ClusterConditionType (line 25) | type ClusterConditionType
constant ClusterPhaseNone (line 28) | ClusterPhaseNone ClusterPhase = ""
constant ClusterPhaseCreating (line 29) | ClusterPhaseCreating = "Creating"
constant ClusterPhaseRunning (line 30) | ClusterPhaseRunning = "Running"
constant ClusterPhaseFailed (line 31) | ClusterPhaseFailed = "Failed"
constant ClusterConditionAvailable (line 34) | ClusterConditionAvailable ClusterConditionType = "Available"
constant ClusterConditionRecovering (line 35) | ClusterConditionRecovering = "Recovering"
constant ClusterConditionScaling (line 36) | ClusterConditionScaling = "Scaling"
constant ClusterConditionUpgrading (line 37) | ClusterConditionUpgrading = "Upgrading"
type ClusterStatus (line 40) | type ClusterStatus struct
method IsFailed (line 98) | func (cs *ClusterStatus) IsFailed() bool {
method SetPhase (line 105) | func (cs *ClusterStatus) SetPhase(p ClusterPhase) {
method PauseControl (line 109) | func (cs *ClusterStatus) PauseControl() {
method Control (line 113) | func (cs *ClusterStatus) Control() {
method UpgradeVersionTo (line 117) | func (cs *ClusterStatus) UpgradeVersionTo(v string) {
method SetVersion (line 121) | func (cs *ClusterStatus) SetVersion(v string) {
method SetReason (line 126) | func (cs *ClusterStatus) SetReason(r string) {
method SetScalingUpCondition (line 130) | func (cs *ClusterStatus) SetScalingUpCondition(from, to int) {
method SetScalingDownCondition (line 135) | func (cs *ClusterStatus) SetScalingDownCondition(from, to int) {
method SetRecoveringCondition (line 140) | func (cs *ClusterStatus) SetRecoveringCondition() {
method SetUpgradingCondition (line 148) | func (cs *ClusterStatus) SetUpgradingCondition(to string) {
method SetReadyCondition (line 155) | func (cs *ClusterStatus) SetReadyCondition() {
method ClearCondition (line 160) | func (cs *ClusterStatus) ClearCondition(t ClusterConditionType) {
method setClusterCondition (line 168) | func (cs *ClusterStatus) setClusterCondition(c ClusterCondition) {
type ClusterCondition (line 75) | type ClusterCondition struct
type MembersStatus (line 90) | type MembersStatus struct
function getClusterCondition (line 182) | func getClusterCondition(status *ClusterStatus, t ClusterConditionType) ...
function newClusterCondition (line 191) | func newClusterCondition(condType ClusterConditionType, status v1.Condit...
function scalingMsg (line 203) | func scalingMsg(from, to int) string {
FILE: third_party/etcd-operator/pkg/apis/etcd/v1beta2/zz_generated.deepcopy.go
method DeepCopyInto (line 29) | func (in *ABSBackupSource) DeepCopyInto(out *ABSBackupSource) {
method DeepCopy (line 35) | func (in *ABSBackupSource) DeepCopy() *ABSBackupSource {
method DeepCopyInto (line 45) | func (in *ABSRestoreSource) DeepCopyInto(out *ABSRestoreSource) {
method DeepCopy (line 51) | func (in *ABSRestoreSource) DeepCopy() *ABSRestoreSource {
method DeepCopyInto (line 61) | func (in *BackupPolicy) DeepCopyInto(out *BackupPolicy) {
method DeepCopy (line 67) | func (in *BackupPolicy) DeepCopy() *BackupPolicy {
method DeepCopyInto (line 77) | func (in *BackupSource) DeepCopyInto(out *BackupSource) {
method DeepCopy (line 108) | func (in *BackupSource) DeepCopy() *BackupSource {
method DeepCopyInto (line 118) | func (in *BackupSpec) DeepCopyInto(out *BackupSpec) {
method DeepCopy (line 135) | func (in *BackupSpec) DeepCopy() *BackupSpec {
method DeepCopyInto (line 145) | func (in *BackupStatus) DeepCopyInto(out *BackupStatus) {
method DeepCopy (line 152) | func (in *BackupStatus) DeepCopy() *BackupStatus {
method DeepCopyInto (line 162) | func (in *COSBackupSource) DeepCopyInto(out *COSBackupSource) {
method DeepCopy (line 168) | func (in *COSBackupSource) DeepCopy() *COSBackupSource {
method DeepCopyInto (line 178) | func (in *COSRestoreSource) DeepCopyInto(out *COSRestoreSource) {
method DeepCopy (line 184) | func (in *COSRestoreSource) DeepCopy() *COSRestoreSource {
method DeepCopyInto (line 194) | func (in *ClusterCondition) DeepCopyInto(out *ClusterCondition) {
method DeepCopy (line 200) | func (in *ClusterCondition) DeepCopy() *ClusterCondition {
method DeepCopyInto (line 210) | func (in *ClusterSpec) DeepCopyInto(out *ClusterSpec) {
method DeepCopy (line 226) | func (in *ClusterSpec) DeepCopy() *ClusterSpec {
method DeepCopyInto (line 236) | func (in *ClusterStatus) DeepCopyInto(out *ClusterStatus) {
method DeepCopy (line 248) | func (in *ClusterStatus) DeepCopy() *ClusterStatus {
method DeepCopyInto (line 258) | func (in *EtcdBackup) DeepCopyInto(out *EtcdBackup) {
method DeepCopy (line 268) | func (in *EtcdBackup) DeepCopy() *EtcdBackup {
method DeepCopyObject (line 278) | func (in *EtcdBackup) DeepCopyObject() runtime.Object {
method DeepCopyInto (line 286) | func (in *EtcdBackupList) DeepCopyInto(out *EtcdBackupList) {
method DeepCopy (line 301) | func (in *EtcdBackupList) DeepCopy() *EtcdBackupList {
method DeepCopyObject (line 311) | func (in *EtcdBackupList) DeepCopyObject() runtime.Object {
method DeepCopyInto (line 319) | func (in *EtcdCluster) DeepCopyInto(out *EtcdCluster) {
method DeepCopy (line 329) | func (in *EtcdCluster) DeepCopy() *EtcdCluster {
method DeepCopyObject (line 339) | func (in *EtcdCluster) DeepCopyObject() runtime.Object {
method DeepCopyInto (line 347) | func (in *EtcdClusterList) DeepCopyInto(out *EtcdClusterList) {
method DeepCopy (line 362) | func (in *EtcdClusterList) DeepCopy() *EtcdClusterList {
method DeepCopyObject (line 372) | func (in *EtcdClusterList) DeepCopyObject() runtime.Object {
method DeepCopyInto (line 380) | func (in *EtcdClusterRef) DeepCopyInto(out *EtcdClusterRef) {
method DeepCopy (line 386) | func (in *EtcdClusterRef) DeepCopy() *EtcdClusterRef {
method DeepCopyInto (line 396) | func (in *EtcdRestore) DeepCopyInto(out *EtcdRestore) {
method DeepCopy (line 406) | func (in *EtcdRestore) DeepCopy() *EtcdRestore {
method DeepCopyObject (line 416) | func (in *EtcdRestore) DeepCopyObject() runtime.Object {
method DeepCopyInto (line 424) | func (in *EtcdRestoreList) DeepCopyInto(out *EtcdRestoreList) {
method DeepCopy (line 439) | func (in *EtcdRestoreList) DeepCopy() *EtcdRestoreList {
method DeepCopyObject (line 449) | func (in *EtcdRestoreList) DeepCopyObject() runtime.Object {
method DeepCopyInto (line 457) | func (in *GCSBackupSource) DeepCopyInto(out *GCSBackupSource) {
method DeepCopy (line 463) | func (in *GCSBackupSource) DeepCopy() *GCSBackupSource {
method DeepCopyInto (line 473) | func (in *GCSRestoreSource) DeepCopyInto(out *GCSRestoreSource) {
method DeepCopy (line 479) | func (in *GCSRestoreSource) DeepCopy() *GCSRestoreSource {
method DeepCopyInto (line 489) | func (in *MemberSecret) DeepCopyInto(out *MemberSecret) {
method DeepCopy (line 495) | func (in *MemberSecret) DeepCopy() *MemberSecret {
method DeepCopyInto (line 505) | func (in *MembersStatus) DeepCopyInto(out *MembersStatus) {
method DeepCopy (line 521) | func (in *MembersStatus) DeepCopy() *MembersStatus {
method DeepCopyInto (line 531) | func (in *OSSBackupSource) DeepCopyInto(out *OSSBackupSource) {
method DeepCopy (line 537) | func (in *OSSBackupSource) DeepCopy() *OSSBackupSource {
method DeepCopyInto (line 547) | func (in *OSSRestoreSource) DeepCopyInto(out *OSSRestoreSource) {
method DeepCopy (line 553) | func (in *OSSRestoreSource) DeepCopy() *OSSRestoreSource {
method DeepCopyInto (line 563) | func (in *PodPolicy) DeepCopyInto(out *PodPolicy) {
method DeepCopy (line 620) | func (in *PodPolicy) DeepCopy() *PodPolicy {
method DeepCopyInto (line 630) | func (in *RestoreSource) DeepCopyInto(out *RestoreSource) {
method DeepCopy (line 661) | func (in *RestoreSource) DeepCopy() *RestoreSource {
method DeepCopyInto (line 671) | func (in *RestoreSpec) DeepCopyInto(out *RestoreSpec) {
method DeepCopy (line 679) | func (in *RestoreSpec) DeepCopy() *RestoreSpec {
method DeepCopyInto (line 689) | func (in *RestoreStatus) DeepCopyInto(out *RestoreStatus) {
method DeepCopy (line 695) | func (in *RestoreStatus) DeepCopy() *RestoreStatus {
method DeepCopyInto (line 705) | func (in *S3BackupSource) DeepCopyInto(out *S3BackupSource) {
method DeepCopy (line 711) | func (in *S3BackupSource) DeepCopy() *S3BackupSource {
method DeepCopyInto (line 721) | func (in *S3RestoreSource) DeepCopyInto(out *S3RestoreSource) {
method DeepCopy (line 727) | func (in *S3RestoreSource) DeepCopy() *S3RestoreSource {
method DeepCopyInto (line 737) | func (in *StaticTLS) DeepCopyInto(out *StaticTLS) {
method DeepCopy (line 748) | func (in *StaticTLS) DeepCopy() *StaticTLS {
method DeepCopyInto (line 758) | func (in *TLSPolicy) DeepCopyInto(out *TLSPolicy) {
method DeepCopy (line 769) | func (in *TLSPolicy) DeepCopy() *TLSPolicy {
FILE: third_party/etcd-operator/pkg/backup/backup_manager.go
type BackupManager (line 34) | type BackupManager struct
method SaveSnap (line 61) | func (bm *BackupManager) SaveSnap(ctx context.Context, s3Path string, ...
method EnsureMaxBackup (line 91) | func (bm *BackupManager) EnsureMaxBackup(ctx context.Context, basePath...
method etcdClientWithMaxRevision (line 111) | func (bm *BackupManager) etcdClientWithMaxRevision(ctx context.Context...
function NewBackupManagerFromWriter (line 47) | func NewBackupManagerFromWriter(kubecli kubernetes.Interface, bw writer....
function getClientWithMaxRev (line 119) | func getClientWithMaxRev(ctx context.Context, endpoints []string, tc *tl...
FILE: third_party/etcd-operator/pkg/backup/backupapi/http.go
constant APIV1 (line 23) | APIV1 = "/v1"
function BackupURLForRestore (line 27) | func BackupURLForRestore(scheme, host, restoreName string) *url.URL {
FILE: third_party/etcd-operator/pkg/backup/reader/abs_reader.go
type absReader (line 30) | type absReader struct
method Open (line 40) | func (absr *absReader) Open(path string) (io.ReadCloser, error) {
function NewABSReader (line 35) | func NewABSReader(abs *storage.BlobStorageClient) Reader {
FILE: third_party/etcd-operator/pkg/backup/reader/cos_reader.go
type cosReader (line 29) | type cosReader struct
method Open (line 39) | func (cosr *cosReader) Open(path string) (io.ReadCloser, error) {
function NewCOSReader (line 34) | func NewCOSReader(cos *cos.Client) Reader {
FILE: third_party/etcd-operator/pkg/backup/reader/gcs_reader.go
type gcsReader (line 31) | type gcsReader struct
method Open (line 42) | func (gcsr *gcsReader) Open(path string) (io.ReadCloser, error) {
function NewGCSReader (line 37) | func NewGCSReader(ctx context.Context, gcs *storage.Client) Reader {
FILE: third_party/etcd-operator/pkg/backup/reader/hostPath_reader.go
type hostPathReader (line 28) | type hostPathReader struct
method Open (line 38) | func (hostPathr *hostPathReader) Open(path string) (io.ReadCloser, err...
function NewHostPathReader (line 33) | func NewHostPathReader(path string) Reader {
FILE: third_party/etcd-operator/pkg/backup/reader/oss_reader.go
type ossReader (line 30) | type ossReader struct
method Open (line 40) | func (ossr *ossReader) Open(path string) (io.ReadCloser, error) {
function NewOSSReader (line 35) | func NewOSSReader(client *oss.Client) Reader {
FILE: third_party/etcd-operator/pkg/backup/reader/reader.go
type Reader (line 20) | type Reader interface
FILE: third_party/etcd-operator/pkg/backup/reader/s3_reader.go
type s3Reader (line 31) | type s3Reader struct
method Open (line 40) | func (s3r *s3Reader) Open(path string) (io.ReadCloser, error) {
function NewS3Reader (line 35) | func NewS3Reader(s3 *s3.S3) Reader {
FILE: third_party/etcd-operator/pkg/backup/util/constants.go
constant BackupFilenameSuffix (line 18) | BackupFilenameSuffix = "etcd.backup"
FILE: third_party/etcd-operator/pkg/backup/util/util.go
function MakeBackupName (line 22) | func MakeBackupName(ver string, rev int64) string {
function ParseBucketAndKey (line 28) | func ParseBucketAndKey(path string) (string, string, error) {
FILE: third_party/etcd-operator/pkg/backup/writer/abs_writer.go
type absWriter (line 32) | type absWriter struct
method Write (line 47) | func (absw *absWriter) Write(ctx context.Context, path string, r io.Re...
method List (line 104) | func (absw *absWriter) List(ctx context.Context, basePath string) ([]s...
method Delete (line 132) | func (absw *absWriter) Delete(ctx context.Context, path string) error {
function NewABSWriter (line 37) | func NewABSWriter(abs *storage.BlobStorageClient) Writer {
constant AzureBlobBlockChunkLimitInBytes (line 43) | AzureBlobBlockChunkLimitInBytes = 100 * 1024 * 1024
FILE: third_party/etcd-operator/pkg/backup/writer/cos_writer.go
type cosWriter (line 31) | type cosWriter struct
method Write (line 41) | func (cosw *cosWriter) Write(ctx context.Context, path string, r io.Re...
method Delete (line 124) | func (cosw *cosWriter) Delete(ctx context.Context, path string) error {
method List (line 142) | func (cosw *cosWriter) List(ctx context.Context, basePath string) ([]s...
function NewCOSWriter (line 36) | func NewCOSWriter(cos *cos.Client) Writer {
FILE: third_party/etcd-operator/pkg/backup/writer/gcs_writer.go
type gcsWriter (line 31) | type gcsWriter struct
method Write (line 41) | func (gcsw *gcsWriter) Write(ctx context.Context, path string, r io.Re...
method List (line 63) | func (gcsw *gcsWriter) List(ctx context.Context, basePath string) ([]s...
method Delete (line 88) | func (gcsw *gcsWriter) Delete(ctx context.Context, path string) error {
function NewGCSWriter (line 36) | func NewGCSWriter(gcs *storage.Client) Writer {
FILE: third_party/etcd-operator/pkg/backup/writer/hostPath_writer.go
type hostPathWriter (line 27) | type hostPathWriter struct
method Write (line 37) | func (hostPathw *hostPathWriter) Write(ctx context.Context, path strin...
method Delete (line 52) | func (hostPathw *hostPathWriter) Delete(ctx context.Context, path stri...
method List (line 62) | func (hostPathw *hostPathWriter) List(ctx context.Context, basePath st...
function NewHostPathWriter (line 32) | func NewHostPathWriter(path string) Writer {
FILE: third_party/etcd-operator/pkg/backup/writer/oss_writer.go
type ossWriter (line 29) | type ossWriter struct
method Write (line 39) | func (ossw *ossWriter) Write(ctx context.Context, path string, r io.Re...
method List (line 92) | func (ossw *ossWriter) List(ctx context.Context, basePath string) ([]s...
method Delete (line 129) | func (ossw *ossWriter) Delete(ctx context.Context, path string) error {
function NewOSSWriter (line 34) | func NewOSSWriter(oss *oss.Client) Writer {
FILE: third_party/etcd-operator/pkg/backup/writer/s3_writer.go
type s3Writer (line 29) | type s3Writer struct
method Write (line 39) | func (s3w *s3Writer) Write(ctx context.Context, path string, r io.Read...
method List (line 72) | func (s3w *s3Writer) List(ctx context.Context, basePath string) ([]str...
method Delete (line 93) | func (s3w *s3Writer) Delete(ctx context.Context, path string) error {
function NewS3Writer (line 34) | func NewS3Writer(s3 *s3.S3) Writer {
FILE: third_party/etcd-operator/pkg/backup/writer/writer.go
type Writer (line 23) | type Writer interface
FILE: third_party/etcd-operator/pkg/chaos/chaos.go
type Monkeys (line 30) | type Monkeys struct
method CrushPods (line 48) | func (m *Monkeys) CrushPods(ctx context.Context, c *CrashConfig) {
function NewMonkeys (line 34) | func NewMonkeys(kubecli kubernetes.Interface) *Monkeys {
type CrashConfig (line 38) | type CrashConfig struct
FILE: third_party/etcd-operator/pkg/client/client.go
function MustNewInCluster (line 24) | func MustNewInCluster() versioned.Interface {
function MustNew (line 32) | func MustNew(cfg *rest.Config) versioned.Interface {
FILE: third_party/etcd-operator/pkg/cluster/cluster.go
type clusterEventType (line 46) | type clusterEventType
constant eventModifyCluster (line 49) | eventModifyCluster clusterEventType = "Modify"
type clusterEvent (line 52) | type clusterEvent struct
type Config (line 57) | type Config struct
type Cluster (line 64) | type Cluster struct
method setup (line 122) | func (c *Cluster) setup() error {
method create (line 153) | func (c *Cluster) create() error {
method prepareSeedMember (line 164) | func (c *Cluster) prepareSeedMember() error {
method Delete (line 176) | func (c *Cluster) Delete() {
method send (line 181) | func (c *Cluster) send(ev *clusterEvent) {
method run (line 192) | func (c *Cluster) run() {
method handleUpdateEvent (line 288) | func (c *Cluster) handleUpdateEvent(event *clusterEvent) error {
method startSeedMember (line 312) | func (c *Cluster) startSeedMember() error {
method isSecurePeer (line 336) | func (c *Cluster) isSecurePeer() bool {
method isSecureClient (line 340) | func (c *Cluster) isSecureClient() bool {
method bootstrap (line 345) | func (c *Cluster) bootstrap() error {
method Update (line 349) | func (c *Cluster) Update(cl *api.EtcdCluster) {
method setupServices (line 356) | func (c *Cluster) setupServices() error {
method isPodPVEnabled (line 365) | func (c *Cluster) isPodPVEnabled() bool {
method createPod (line 372) | func (c *Cluster) createPod(members etcdutil.MemberSet, m *etcdutil.Me...
method removePod (line 388) | func (c *Cluster) removePod(name string) error {
method pollPods (line 400) | func (c *Cluster) pollPods() (running, pending []*v1.Pod, err error) {
method updateMemberStatus (line 433) | func (c *Cluster) updateMemberStatus(running []*v1.Pod) {
method updateCRStatus (line 448) | func (c *Cluster) updateCRStatus() error {
method reportFailedStatus (line 465) | func (c *Cluster) reportFailedStatus() {
method name (line 500) | func (c *Cluster) name() string {
method logClusterCreation (line 504) | func (c *Cluster) logClusterCreation() {
method logSpecUpdate (line 516) | func (c *Cluster) logSpecUpdate(oldSpec, newSpec api.ClusterSpec) {
function New (line 88) | func New(config Config, cl *api.EtcdCluster) *Cluster {
function isSpecEqual (line 305) | func isSpecEqual(s1, s2 api.ClusterSpec) bool {
FILE: third_party/etcd-operator/pkg/cluster/cluster_test.go
function TestUpdateEventUpdateLocalClusterObj (line 26) | func TestUpdateEventUpdateLocalClusterObj(t *testing.T) {
function TestNewLongClusterName (line 60) | func TestNewLongClusterName(t *testing.T) {
FILE: third_party/etcd-operator/pkg/cluster/error.go
type fatalError (line 25) | type fatalError struct
method Error (line 29) | func (fe *fatalError) Error() string {
function newFatalError (line 33) | func newFatalError(reason string) *fatalError {
function isFatalError (line 37) | func isFatalError(err error) bool {
FILE: third_party/etcd-operator/pkg/cluster/error_test.go
function TestWrapFatalError (line 23) | func TestWrapFatalError(t *testing.T) {
FILE: third_party/etcd-operator/pkg/cluster/member.go
method updateMembers (line 28) | func (c *Cluster) updateMembers(known etcdutil.MemberSet) error {
method newMember (line 52) | func (c *Cluster) newMember() *etcdutil.Member {
function podsToMemberSet (line 67) | func podsToMemberSet(pods []*v1.Pod, sc bool) etcdutil.MemberSet {
function getMemberName (line 76) | func getMemberName(m *etcdserverpb.Member, clusterName string) (string, ...
FILE: third_party/etcd-operator/pkg/cluster/metrics.go
function init (line 40) | func init() {
FILE: third_party/etcd-operator/pkg/cluster/reconcile.go
method reconcile (line 38) | func (c *Cluster) reconcile(pods []*v1.Pod) error {
method reconcileMembers (line 76) | func (c *Cluster) reconcileMembers(running etcdutil.MemberSet) error {
method resize (line 104) | func (c *Cluster) resize() error {
method addOneMember (line 116) | func (c *Cluster) addOneMember() error {
method removeOneMember (line 151) | func (c *Cluster) removeOneMember() error {
method removeDeadMember (line 157) | func (c *Cluster) removeDeadMember(toRemove *etcdutil.Member) error {
method removeMember (line 167) | func (c *Cluster) removeMember(toRemove *etcdutil.Member) (err error) {
method removePVC (line 201) | func (c *Cluster) removePVC(pvcName string) error {
function needUpgrade (line 209) | func needUpgrade(pods []*v1.Pod, cs api.ClusterSpec) bool {
function pickOneOldMember (line 213) | func pickOneOldMember(pods []*v1.Pod, newVersion string) *etcdutil.Member {
FILE: third_party/etcd-operator/pkg/cluster/upgrade.go
method upgradeOneMember (line 27) | func (c *Cluster) upgradeOneMember(memberName string) error {
FILE: third_party/etcd-operator/pkg/controller/backup-operator/abs_backup.go
function handleABS (line 31) | func handleABS(ctx context.Context, kubecli kubernetes.Interface, s *api...
FILE: third_party/etcd-operator/pkg/controller/backup-operator/controller.go
method run (line 29) | func (b *Backup) run(ctx context.Context) {
method onAdd (line 62) | func (b *Backup) onAdd(obj interface{}) {
method onUpdate (line 70) | func (b *Backup) onUpdate(oldObj, newObj interface{}) {
method onDelete (line 78) | func (b *Backup) onDelete(obj interface{}) {
FILE: third_party/etcd-operator/pkg/controller/backup-operator/cos_backup.go
function handleCOS (line 32) | func handleCOS(ctx context.Context, kubecli kubernetes.Interface, s *api...
FILE: third_party/etcd-operator/pkg/controller/backup-operator/gcs_backup.go
function handleGCS (line 31) | func handleGCS(ctx context.Context, kubecli kubernetes.Interface, s *api...
FILE: third_party/etcd-operator/pkg/controller/backup-operator/hostPath_backup.go
constant etcdBackFilePrefix (line 29) | etcdBackFilePrefix = "etcdbackup"
function handleHostPath (line 31) | func handleHostPath(ctx context.Context, kubecli kubernetes.Interface, s...
FILE: third_party/etcd-operator/pkg/controller/backup-operator/operator.go
type Backup (line 36) | type Backup struct
method Start (line 74) | func (b *Backup) Start(ctx context.Context) error {
method initCRD (line 86) | func (b *Backup) initCRD() error {
type BackupRunner (line 55) | type BackupRunner struct
function New (line 61) | func New(createCRD bool) *Backup {
FILE: third_party/etcd-operator/pkg/controller/backup-operator/oss_backup.go
function handleOSS (line 30) | func handleOSS(ctx context.Context, kubecli kubernetes.Interface, s *api...
FILE: third_party/etcd-operator/pkg/controller/backup-operator/s3_backup.go
function handleS3 (line 32) | func handleS3(ctx context.Context, kubecli kubernetes.Interface, s *api....
FILE: third_party/etcd-operator/pkg/controller/backup-operator/sync.go
constant maxRetries (line 40) | maxRetries = 15
method runWorker (line 43) | func (b *Backup) runWorker() {
method processNextItem (line 48) | func (b *Backup) processNextItem() bool {
method processItem (line 64) | func (b *Backup) processItem(key string) error {
method isChanged (line 118) | func (b *Backup) isChanged(eb *api.EtcdBackup) bool {
method deletePeriodicBackupRunner (line 126) | func (b *Backup) deletePeriodicBackupRunner(uid types.UID) bool {
method addFinalizerOfPeriodicBackupIfNeed (line 136) | func (b *Backup) addFinalizerOfPeriodicBackupIfNeed(eb *api.EtcdBackup) ...
method removeFinalizerOfPeriodicBackup (line 153) | func (b *Backup) removeFinalizerOfPeriodicBackup(eb *api.EtcdBackup) err...
method periodicRunnerFunc (line 171) | func (b *Backup) periodicRunnerFunc(ctx context.Context, t *time.Ticker,...
method reportBackupStatus (line 209) | func (b *Backup) reportBackupStatus(bs *api.BackupStatus, berr error, eb...
method handleErr (line 226) | func (b *Backup) handleErr(err error, key interface{}) {
method handleBackup (line 250) | func (b *Backup) handleBackup(parentContext *context.Context, eb *api.Et...
function validate (line 323) | func validate(spec *api.BackupSpec) error {
FILE: third_party/etcd-operator/pkg/controller/backup-operator/sync_test.go
function TestValidate (line 23) | func TestValidate(t *testing.T) {
FILE: third_party/etcd-operator/pkg/controller/backup-operator/util.go
function generateTLSConfig (line 29) | func generateTLSConfig(kubecli kubernetes.Interface, clientTLSSecret, na...
function generateTLSConfigWithVerify (line 45) | func generateTLSConfigWithVerify(kubecli kubernetes.Interface, clientTLS...
function generateUsernamePassword (line 57) | func generateUsernamePassword(kubecli kubernetes.Interface, basicAuthSec...
function isPeriodicBackup (line 68) | func isPeriodicBackup(ebSpec *api.BackupSpec) bool {
function containsString (line 75) | func containsString(slice []string, s string) bool {
FILE: third_party/etcd-operator/pkg/controller/controller.go
type Event (line 34) | type Event struct
type Controller (line 39) | type Controller struct
method handleClusterEvent (line 66) | func (c *Controller) handleClusterEvent(event *Event) (bool, error) {
method makeClusterConfig (line 122) | func (c *Controller) makeClusterConfig() cluster.Config {
method initCRD (line 130) | func (c *Controller) initCRD() error {
type Config (line 46) | type Config struct
function New (line 56) | func New(cfg Config) *Controller {
function getNamespacedName (line 138) | func getNamespacedName(c *api.EtcdCluster) string {
FILE: third_party/etcd-operator/pkg/controller/controller_test.go
function TestHandleClusterEventUpdateFailedCluster (line 27) | func TestHandleClusterEventUpdateFailedCluster(t *testing.T) {
function TestHandleClusterEventDeleteFailedCluster (line 49) | func TestHandleClusterEventDeleteFailedCluster(t *testing.T) {
function TestHandleClusterEventClusterwide (line 76) | func TestHandleClusterEventClusterwide(t *testing.T) {
function TestHandleClusterEventClusterwideIgnored (line 97) | func TestHandleClusterEventClusterwideIgnored(t *testing.T) {
function TestHandleClusterEventClusterwideAddTwoCR (line 114) | func TestHandleClusterEventClusterwideAddTwoCR(t *testing.T) {
function TestHandleClusterEventNamespacedIgnored (line 143) | func TestHandleClusterEventNamespacedIgnored(t *testing.T) {
function TestHandleClusterEventWithLongClusterName (line 163) | func TestHandleClusterEventWithLongClusterName(t *testing.T) {
FILE: third_party/etcd-operator/pkg/controller/informer.go
function init (line 35) | func init() {
method Start (line 39) | func (c *Controller) Start() error {
method run (line 56) | func (c *Controller) run() {
method initResource (line 81) | func (c *Controller) initResource() error {
method onAddEtcdClus (line 91) | func (c *Controller) onAddEtcdClus(obj interface{}) {
method onUpdateEtcdClus (line 95) | func (c *Controller) onUpdateEtcdClus(oldObj, newObj interface{}) {
method onDeleteEtcdClus (line 99) | func (c *Controller) onDeleteEtcdClus(obj interface{}) {
method syncEtcdClus (line 124) | func (c *Controller) syncEtcdClus(clus *api.EtcdCluster) {
method managed (line 144) | func (c *Controller) managed(clus *api.EtcdCluster) bool {
FILE: third_party/etcd-operator/pkg/controller/metrics.go
function init (line 56) | func init() {
FILE: third_party/etcd-operator/pkg/controller/restore-operator/controller.go
method run (line 29) | func (r *Restore) run(ctx context.Context) {
method onAdd (line 62) | func (r *Restore) onAdd(obj interface{}) {
method onUpdate (line 70) | func (r *Restore) onUpdate(oldObj, newObj interface{}) {
method onDelete (line 78) | func (r *Restore) onDelete(obj interface{}) {
FILE: third_party/etcd-operator/pkg/controller/restore-operator/http.go
constant backupHTTPPath (line 38) | backupHTTPPath = backupapi.APIV1 + "/backup/"
constant listenAddr (line 39) | listenAddr = "0.0.0.0:19999"
method startHTTP (line 42) | func (r *Restore) startHTTP() {
method handleServeBackup (line 48) | func (r *Restore) handleServeBackup(w http.ResponseWriter, req *http.Req...
method serveBackup (line 59) | func (r *Restore) serveBackup(w http.ResponseWriter, req *http.Request) ...
FILE: third_party/etcd-operator/pkg/controller/restore-operator/operator.go
type Restore (line 33) | type Restore struct
method Start (line 64) | func (r *Restore) Start(ctx context.Context) error {
method initCRD (line 77) | func (r *Restore) initCRD() error {
function New (line 51) | func New(createCRD bool, namespace, mySvcAddr string) *Restore {
FILE: third_party/etcd-operator/pkg/controller/restore-operator/sync.go
constant maxRetries (line 37) | maxRetries = 15
method runWorker (line 40) | func (r *Restore) runWorker() {
method processNextItem (line 45) | func (r *Restore) processNextItem() bool {
method processItem (line 61) | func (r *Restore) processItem(key string) error {
method handleCR (line 73) | func (r *Restore) handleCR(er *api.EtcdRestore, key string) (err error) {
method reportStatus (line 93) | func (r *Restore) reportStatus(rerr error, er *api.EtcdRestore) {
method handleErr (line 106) | func (r *Restore) handleErr(err error, key interface{}) {
method prepareSeed (line 142) | func (r *Restore) prepareSeed(er *api.EtcdRestore) (err error) {
method createSeedMember (line 213) | func (r *Restore) createSeedMember(ec *api.EtcdCluster, svcAddr, cluster...
method deleteClusterResourcesCompletely (line 231) | func (r *Restore) deleteClusterResourcesCompletely(clusterName string) e...
FILE: third_party/etcd-operator/pkg/controller/util.go
type panicTimer (line 22) | type panicTimer struct
method start (line 35) | func (pt *panicTimer) start() {
method stop (line 42) | func (pt *panicTimer) stop() {
function newPanicTimer (line 28) | func newPanicTimer(d time.Duration, msg string) *panicTimer {
FILE: third_party/etcd-operator/pkg/generated/clientset/versioned/clientset.go
type Interface (line 28) | type Interface interface
type Clientset (line 37) | type Clientset struct
method EtcdV1beta2 (line 43) | func (c *Clientset) EtcdV1beta2() etcdv1beta2.EtcdV1beta2Interface {
method Etcd (line 49) | func (c *Clientset) Etcd() etcdv1beta2.EtcdV1beta2Interface {
method Discovery (line 54) | func (c *Clientset) Discovery() discovery.DiscoveryInterface {
function NewForConfig (line 62) | func NewForConfig(c *rest.Config) (*Clientset, error) {
function NewForConfigOrDie (line 83) | func NewForConfigOrDie(c *rest.Config) *Clientset {
function New (line 92) | func New(c rest.Interface) *Clientset {
FILE: third_party/etcd-operator/pkg/generated/clientset/versioned/fake/clientset_generated.go
function NewSimpleClientset (line 36) | func NewSimpleClientset(objects ...runtime.Object) *Clientset {
type Clientset (line 63) | type Clientset struct
method Discovery (line 68) | func (c *Clientset) Discovery() discovery.DiscoveryInterface {
method EtcdV1beta2 (line 75) | func (c *Clientset) EtcdV1beta2() etcdv1beta2.EtcdV1beta2Interface {
method Etcd (line 80) | func (c *Clientset) Etcd() etcdv1beta2.EtcdV1beta2Interface {
FILE: third_party/etcd-operator/pkg/generated/clientset/versioned/fake/register.go
function init (line 53) | func init() {
FILE: third_party/etcd-operator/pkg/generated/clientset/versioned/scheme/register.go
function init (line 53) | func init() {
FILE: third_party/etcd-operator/pkg/generated/clientset/versioned/typed/etcd/v1beta2/etcd_client.go
type EtcdV1beta2Interface (line 28) | type EtcdV1beta2Interface interface
type EtcdV1beta2Client (line 36) | type EtcdV1beta2Client struct
method EtcdBackups (line 40) | func (c *EtcdV1beta2Client) EtcdBackups(namespace string) EtcdBackupIn...
method EtcdClusters (line 44) | func (c *EtcdV1beta2Client) EtcdClusters(namespace string) EtcdCluster...
method EtcdRestores (line 48) | func (c *EtcdV1beta2Client) EtcdRestores(namespace string) EtcdRestore...
method RESTClient (line 95) | func (c *EtcdV1beta2Client) RESTClient() rest.Interface {
function NewForConfig (line 53) | func NewForConfig(c *rest.Config) (*EtcdV1beta2Client, error) {
function NewForConfigOrDie (line 67) | func NewForConfigOrDie(c *rest.Config) *EtcdV1beta2Client {
function New (line 76) | func New(c rest.Interface) *EtcdV1beta2Client {
function setConfigDefaults (line 80) | func setConfigDefaults(config *rest.Config) error {
FILE: third_party/etcd-operator/pkg/generated/clientset/versioned/typed/etcd/v1beta2/etcdbackup.go
type EtcdBackupsGetter (line 32) | type EtcdBackupsGetter interface
type EtcdBackupInterface (line 37) | type EtcdBackupInterface interface
type etcdBackups (line 51) | type etcdBackups struct
method Get (line 65) | func (c *etcdBackups) Get(name string, options v1.GetOptions) (result ...
method List (line 78) | func (c *etcdBackups) List(opts v1.ListOptions) (result *v1beta2.EtcdB...
method Watch (line 90) | func (c *etcdBackups) Watch(opts v1.ListOptions) (watch.Interface, err...
method Create (line 100) | func (c *etcdBackups) Create(etcdBackup *v1beta2.EtcdBackup) (result *...
method Update (line 112) | func (c *etcdBackups) Update(etcdBackup *v1beta2.EtcdBackup) (result *...
method UpdateStatus (line 127) | func (c *etcdBackups) UpdateStatus(etcdBackup *v1beta2.EtcdBackup) (re...
method Delete (line 141) | func (c *etcdBackups) Delete(name string, options *v1.DeleteOptions) e...
method DeleteCollection (line 152) | func (c *etcdBackups) DeleteCollection(options *v1.DeleteOptions, list...
method Patch (line 163) | func (c *etcdBackups) Patch(name string, pt types.PatchType, data []by...
function newEtcdBackups (line 57) | func newEtcdBackups(c *EtcdV1beta2Client, namespace string) *etcdBackups {
FILE: third_party/etcd-operator/pkg/generated/clientset/versioned/typed/etcd/v1beta2/etcdcluster.go
type EtcdClustersGetter (line 32) | type EtcdClustersGetter interface
type EtcdClusterInterface (line 37) | type EtcdClusterInterface interface
type etcdClusters (line 51) | type etcdClusters struct
method Get (line 65) | func (c *etcdClusters) Get(name string, options v1.GetOptions) (result...
method List (line 78) | func (c *etcdClusters) List(opts v1.ListOptions) (result *v1beta2.Etcd...
method Watch (line 90) | func (c *etcdClusters) Watch(opts v1.ListOptions) (watch.Interface, er...
method Create (line 100) | func (c *etcdClusters) Create(etcdCluster *v1beta2.EtcdCluster) (resul...
method Update (line 112) | func (c *etcdClusters) Update(etcdCluster *v1beta2.EtcdCluster) (resul...
method UpdateStatus (line 127) | func (c *etcdClusters) UpdateStatus(etcdCluster *v1beta2.EtcdCluster) ...
method Delete (line 141) | func (c *etcdClusters) Delete(name string, options *v1.DeleteOptions) ...
method DeleteCollection (line 152) | func (c *etcdClusters) DeleteCollection(options *v1.DeleteOptions, lis...
method Patch (line 163) | func (c *etcdClusters) Patch(name string, pt types.PatchType, data []b...
function newEtcdClusters (line 57) | func newEtcdClusters(c *EtcdV1beta2Client, namespace string) *etcdCluste...
FILE: third_party/etcd-operator/pkg/generated/clientset/versioned/typed/etcd/v1beta2/etcdrestore.go
type EtcdRestoresGetter (line 32) | type EtcdRestoresGetter interface
type EtcdRestoreInterface (line 37) | type EtcdRestoreInterface interface
type etcdRestores (line 51) | type etcdRestores struct
method Get (line 65) | func (c *etcdRestores) Get(name string, options v1.GetOptions) (result...
method List (line 78) | func (c *etcdRestores) List(opts v1.ListOptions) (result *v1beta2.Etcd...
method Watch (line 90) | func (c *etcdRestores) Watch(opts v1.ListOptions) (watch.Interface, er...
method Create (line 100) | func (c *etcdRestores) Create(etcdRestore *v1beta2.EtcdRestore) (resul...
method Update (line 112) | func (c *etcdRestores) Update(etcdRestore *v1beta2.EtcdRestore) (resul...
method UpdateStatus (line 127) | func (c *etcdRestores) UpdateStatus(etcdRestore *v1beta2.EtcdRestore) ...
method Delete (line 141) | func (c *etcdRestores) Delete(name string, options *v1.DeleteOptions) ...
method DeleteCollection (line 152) | func (c *etcdRestores) DeleteCollection(options *v1.DeleteOptions, lis...
method Patch (line 163) | func (c *etcdRestores) Patch(name string, pt types.PatchType, data []b...
function newEtcdRestores (line 57) | func newEtcdRestores(c *EtcdV1beta2Client, namespace string) *etcdRestor...
FILE: third_party/etcd-operator/pkg/generated/clientset/versioned/typed/etcd/v1beta2/fake/fake_etcd_client.go
type FakeEtcdV1beta2 (line 27) | type FakeEtcdV1beta2 struct
method EtcdBackups (line 31) | func (c *FakeEtcdV1beta2) EtcdBackups(namespace string) v1beta2.EtcdBa...
method EtcdClusters (line 35) | func (c *FakeEtcdV1beta2) EtcdClusters(namespace string) v1beta2.EtcdC...
method EtcdRestores (line 39) | func (c *FakeEtcdV1beta2) EtcdRestores(namespace string) v1beta2.EtcdR...
method RESTClient (line 45) | func (c *FakeEtcdV1beta2) RESTClient() rest.Interface {
FILE: third_party/etcd-operator/pkg/generated/clientset/versioned/typed/etcd/v1beta2/fake/fake_etcdbackup.go
type FakeEtcdBackups (line 32) | type FakeEtcdBackups struct
method Get (line 42) | func (c *FakeEtcdBackups) Get(name string, options v1.GetOptions) (res...
method List (line 53) | func (c *FakeEtcdBackups) List(opts v1.ListOptions) (result *v1beta2.E...
method Watch (line 75) | func (c *FakeEtcdBackups) Watch(opts v1.ListOptions) (watch.Interface,...
method Create (line 82) | func (c *FakeEtcdBackups) Create(etcdBackup *v1beta2.EtcdBackup) (resu...
method Update (line 93) | func (c *FakeEtcdBackups) Update(etcdBackup *v1beta2.EtcdBackup) (resu...
method UpdateStatus (line 105) | func (c *FakeEtcdBackups) UpdateStatus(etcdBackup *v1beta2.EtcdBackup)...
method Delete (line 116) | func (c *FakeEtcdBackups) Delete(name string, options *v1.DeleteOption...
method DeleteCollection (line 124) | func (c *FakeEtcdBackups) DeleteCollection(options *v1.DeleteOptions, ...
method Patch (line 132) | func (c *FakeEtcdBackups) Patch(name string, pt types.PatchType, data ...
FILE: third_party/etcd-operator/pkg/generated/clientset/versioned/typed/etcd/v1beta2/fake/fake_etcdcluster.go
type FakeEtcdClusters (line 32) | type FakeEtcdClusters struct
method Get (line 42) | func (c *FakeEtcdClusters) Get(name string, options v1.GetOptions) (re...
method List (line 53) | func (c *FakeEtcdClusters) List(opts v1.ListOptions) (result *v1beta2....
method Watch (line 75) | func (c *FakeEtcdClusters) Watch(opts v1.ListOptions) (watch.Interface...
method Create (line 82) | func (c *FakeEtcdClusters) Create(etcdCluster *v1beta2.EtcdCluster) (r...
method Update (line 93) | func (c *FakeEtcdClusters) Update(etcdCluster *v1beta2.EtcdCluster) (r...
method UpdateStatus (line 105) | func (c *FakeEtcdClusters) UpdateStatus(etcdCluster *v1beta2.EtcdClust...
method Delete (line 116) | func (c *FakeEtcdClusters) Delete(name string, options *v1.DeleteOptio...
method DeleteCollection (line 124) | func (c *FakeEtcdClusters) DeleteCollection(options *v1.DeleteOptions,...
method Patch (line 132) | func (c *FakeEtcdClusters) Patch(name string, pt types.PatchType, data...
FILE: third_party/etcd-operator/pkg/generated/clientset/versioned/typed/etcd/v1beta2/fake/fake_etcdrestore.go
type FakeEtcdRestores (line 32) | type FakeEtcdRestores struct
method Get (line 42) | func (c *FakeEtcdRestores) Get(name string, options v1.GetOptions) (re...
method List (line 53) | func (c *FakeEtcdRestores) List(opts v1.ListOptions) (result *v1beta2....
method Watch (line 75) | func (c *FakeEtcdRestores) Watch(opts v1.ListOptions) (watch.Interface...
method Create (line 82) | func (c *FakeEtcdRestores) Create(etcdRestore *v1beta2.EtcdRestore) (r...
method Update (line 93) | func (c *FakeEtcdRestores) Update(etcdRestore *v1beta2.EtcdRestore) (r...
method UpdateStatus (line 105) | func (c *FakeEtcdRestores) UpdateStatus(etcdRestore *v1beta2.EtcdResto...
method Delete (line 116) | func (c *FakeEtcdRestores) Delete(name string, options *v1.DeleteOptio...
method DeleteCollection (line 124) | func (c *FakeEtcdRestores) DeleteCollection(options *v1.DeleteOptions,...
method Patch (line 132) | func (c *FakeEtcdRestores) Patch(name string, pt types.PatchType, data...
FILE: third_party/etcd-operator/pkg/generated/clientset/versioned/typed/etcd/v1beta2/generated_expansion.go
type EtcdBackupExpansion (line 21) | type EtcdBackupExpansion interface
type EtcdClusterExpansion (line 23) | type EtcdClusterExpansion interface
type EtcdRestoreExpansion (line 25) | type EtcdRestoreExpansion interface
FILE: third_party/etcd-operator/pkg/generated/informers/externalversions/etcd/interface.go
type Interface (line 27) | type Interface interface
type group (line 32) | type group struct
method V1beta2 (line 44) | func (g *group) V1beta2() v1beta2.Interface {
function New (line 39) | func New(f internalinterfaces.SharedInformerFactory, namespace string, t...
FILE: third_party/etcd-operator/pkg/generated/informers/externalversions/etcd/v1beta2/etcdbackup.go
type EtcdBackupInformer (line 36) | type EtcdBackupInformer interface
type etcdBackupInformer (line 41) | type etcdBackupInformer struct
method defaultInformer (line 79) | func (f *etcdBackupInformer) defaultInformer(client versioned.Interfac...
method Informer (line 83) | func (f *etcdBackupInformer) Informer() cache.SharedIndexInformer {
method Lister (line 87) | func (f *etcdBackupInformer) Lister() v1beta2.EtcdBackupLister {
function NewEtcdBackupInformer (line 50) | func NewEtcdBackupInformer(client versioned.Interface, namespace string,...
function NewFilteredEtcdBackupInformer (line 57) | func NewFilteredEtcdBackupInformer(client versioned.Interface, namespace...
FILE: third_party/etcd-operator/pkg/generated/informers/externalversions/etcd/v1beta2/etcdcluster.go
type EtcdClusterInformer (line 36) | type EtcdClusterInformer interface
type etcdClusterInformer (line 41) | type etcdClusterInformer struct
method defaultInformer (line 79) | func (f *etcdClusterInformer) defaultInformer(client versioned.Interfa...
method Informer (line 83) | func (f *etcdClusterInformer) Informer() cache.SharedIndexInformer {
method Lister (line 87) | func (f *etcdClusterInformer) Lister() v1beta2.EtcdClusterLister {
function NewEtcdClusterInformer (line 50) | func NewEtcdClusterInformer(client versioned.Interface, namespace string...
function NewFilteredEtcdClusterInformer (line 57) | func NewFilteredEtcdClusterInformer(client versioned.Interface, namespac...
FILE: third_party/etcd-operator/pkg/generated/informers/externalversions/etcd/v1beta2/etcdrestore.go
type EtcdRestoreInformer (line 36) | type EtcdRestoreInformer interface
type etcdRestoreInformer (line 41) | type etcdRestoreInformer struct
method defaultInformer (line 79) | func (f *etcdRestoreInformer) defaultInformer(client versioned.Interfa...
method Informer (line 83) | func (f *etcdRestoreInformer) Informer() cache.SharedIndexInformer {
method Lister (line 87) | func (f *etcdRestoreInformer) Lister() v1beta2.EtcdRestoreLister {
function NewEtcdRestoreInformer (line 50) | func NewEtcdRestoreInformer(client versioned.Interface, namespace string...
function NewFilteredEtcdRestoreInformer (line 57) | func NewFilteredEtcdRestoreInformer(client versioned.Interface, namespac...
FILE: third_party/etcd-operator/pkg/generated/informers/externalversions/etcd/v1beta2/interface.go
type Interface (line 26) | type Interface interface
type version (line 35) | type version struct
method EtcdBackups (line 47) | func (v *version) EtcdBackups() EtcdBackupInformer {
method EtcdClusters (line 52) | func (v *version) EtcdClusters() EtcdClusterInformer {
method EtcdRestores (line 57) | func (v *version) EtcdRestores() EtcdRestoreInformer {
function New (line 42) | func New(f internalinterfaces.SharedInformerFactory, namespace string, t...
FILE: third_party/etcd-operator/pkg/generated/informers/externalversions/factory.go
type SharedInformerOption (line 36) | type SharedInformerOption
type sharedInformerFactory (line 38) | type sharedInformerFactory struct
method Start (line 111) | func (f *sharedInformerFactory) Start(stopCh <-chan struct{}) {
method WaitForCacheSync (line 124) | func (f *sharedInformerFactory) WaitForCacheSync(stopCh <-chan struct{...
method InformerFor (line 147) | func (f *sharedInformerFactory) InformerFor(obj runtime.Object, newFun...
method Etcd (line 178) | func (f *sharedInformerFactory) Etcd() etcd.Interface {
function WithCustomResyncConfig (line 53) | func WithCustomResyncConfig(resyncConfig map[v1.Object]time.Duration) Sh...
function WithTweakListOptions (line 63) | func WithTweakListOptions(tweakListOptions internalinterfaces.TweakListO...
function WithNamespace (line 71) | func WithNamespace(namespace string) SharedInformerOption {
function NewSharedInformerFactory (line 79) | func NewSharedInformerFactory(client versioned.Interface, defaultResync ...
function NewFilteredSharedInformerFactory (line 87) | func NewFilteredSharedInformerFactory(client versioned.Interface, defaul...
function NewSharedInformerFactoryWithOptions (line 92) | func NewSharedInformerFactoryWithOptions(client versioned.Interface, def...
type SharedInformerFactory (line 170) | type SharedInformerFactory interface
FILE: third_party/etcd-operator/pkg/generated/informers/externalversions/generic.go
type GenericInformer (line 31) | type GenericInformer interface
type genericInformer (line 36) | type genericInformer struct
method Informer (line 42) | func (f *genericInformer) Informer() cache.SharedIndexInformer {
method Lister (line 47) | func (f *genericInformer) Lister() cache.GenericLister {
method ForResource (line 53) | func (f *sharedInformerFactory) ForResource(resource schema.GroupVersion...
FILE: third_party/etcd-operator/pkg/generated/informers/externalversions/internalinterfaces/factory_interfaces.go
type NewInformerFunc (line 30) | type NewInformerFunc
type SharedInformerFactory (line 33) | type SharedInformerFactory interface
type TweakListOptionsFunc (line 38) | type TweakListOptionsFunc
FILE: third_party/etcd-operator/pkg/generated/listers/etcd/v1beta2/etcdbackup.go
type EtcdBackupLister (line 29) | type EtcdBackupLister interface
type etcdBackupLister (line 38) | type etcdBackupLister struct
method List (line 48) | func (s *etcdBackupLister) List(selector labels.Selector) (ret []*v1be...
method EtcdBackups (line 56) | func (s *etcdBackupLister) EtcdBackups(namespace string) EtcdBackupNam...
function NewEtcdBackupLister (line 43) | func NewEtcdBackupLister(indexer cache.Indexer) EtcdBackupLister {
type EtcdBackupNamespaceLister (line 61) | type EtcdBackupNamespaceLister interface
type etcdBackupNamespaceLister (line 71) | type etcdBackupNamespaceLister struct
method List (line 77) | func (s etcdBackupNamespaceLister) List(selector labels.Selector) (ret...
method Get (line 85) | func (s etcdBackupNamespaceLister) Get(name string) (*v1beta2.EtcdBack...
FILE: third_party/etcd-operator/pkg/generated/listers/etcd/v1beta2/etcdcluster.go
type EtcdClusterLister (line 29) | type EtcdClusterLister interface
type etcdClusterLister (line 38) | type etcdClusterLister struct
method List (line 48) | func (s *etcdClusterLister) List(selector labels.Selector) (ret []*v1b...
method EtcdClusters (line 56) | func (s *etcdClusterLister) EtcdClusters(namespace string) EtcdCluster...
function NewEtcdClusterLister (line 43) | func NewEtcdClusterLister(indexer cache.Indexer) EtcdClusterLister {
type EtcdClusterNamespaceLister (line 61) | type EtcdClusterNamespaceLister interface
type etcdClusterNamespaceLister (line 71) | type etcdClusterNamespaceLister struct
method List (line 77) | func (s etcdClusterNamespaceLister) List(selector labels.Selector) (re...
method Get (line 85) | func (s etcdClusterNamespaceLister) Get(name string) (*v1beta2.EtcdClu...
FILE: third_party/etcd-operator/pkg/generated/listers/etcd/v1beta2/etcdrestore.go
type EtcdRestoreLister (line 29) | type EtcdRestoreLister interface
type etcdRestoreLister (line 38) | type etcdRestoreLister struct
method List (line 48) | func (s *etcdRestoreLister) List(selector labels.Selector) (ret []*v1b...
method EtcdRestores (line 56) | func (s *etcdRestoreLister) EtcdRestores(namespace string) EtcdRestore...
function NewEtcdRestoreLister (line 43) | func NewEtcdRestoreLister(indexer cache.Indexer) EtcdRestoreLister {
type EtcdRestoreNamespaceLister (line 61) | type EtcdRestoreNamespaceLister interface
type etcdRestoreNamespaceLister (line 71) | type etcdRestoreNamespaceLister struct
method List (line 77) | func (s etcdRestoreNamespaceLister) List(selector labels.Selector) (re...
method Get (line 85) | func (s etcdRestoreNamespaceLister) Get(name string) (*v1beta2.EtcdRes...
FILE: third_party/etcd-operator/pkg/generated/listers/etcd/v1beta2/expansion_generated.go
type EtcdBackupListerExpansion (line 23) | type EtcdBackupListerExpansion interface
type EtcdBackupNamespaceListerExpansion (line 27) | type EtcdBackupNamespaceListerExpansion interface
type EtcdClusterListerExpansion (line 31) | type EtcdClusterListerExpansion interface
type EtcdClusterNamespaceListerExpansion (line 35) | type EtcdClusterNamespaceListerExpansion interface
type EtcdRestoreListerExpansion (line 39) | type EtcdRestoreListerExpansion interface
type EtcdRestoreNamespaceListerExpansion (line 43) | type EtcdRestoreNamespaceListerExpansion interface
FILE: third_party/etcd-operator/pkg/util/alibabacloudutil/ossfactory/client.go
type OSSClient (line 28) | type OSSClient struct
function NewClientFromSecret (line 33) | func NewClientFromSecret(kubecli kubernetes.Interface, namespace, endpoi...
FILE: third_party/etcd-operator/pkg/util/awsutil/s3factory/client.go
constant tmpdir (line 32) | tmpdir = "/tmp"
type S3Client (line 36) | type S3Client struct
method Close (line 66) | func (w *S3Client) Close() {
function NewClientFromSecret (line 42) | func NewClientFromSecret(kubecli kubernetes.Interface, namespace, endpoi...
function setupAWSConfig (line 71) | func setupAWSConfig(kubecli kubernetes.Interface, ns, secret, endpoint, ...
FILE: third_party/etcd-operator/pkg/util/awsutil/s3factory/client_test.go
function TestSetupAWSConfig (line 24) | func TestSetupAWSConfig(t *testing.T) {
FILE: third_party/etcd-operator/pkg/util/azureutil/absfactory/client.go
type ABSClient (line 29) | type ABSClient struct
function parseAzureEnvironment (line 34) | func parseAzureEnvironment(cloudName string) (azure.Environment, error) {
function NewClientFromSecret (line 43) | func NewClientFromSecret(kubecli kubernetes.Interface, namespace, absSec...
FILE: third_party/etcd-operator/pkg/util/constants/constants.go
constant DefaultDialTimeout (line 20) | DefaultDialTimeout = 5 * time.Second
constant DefaultRequestTimeout (line 21) | DefaultRequestTimeout = 5 * time.Second
constant DefaultBackupTimeout (line 23) | DefaultBackupTimeout = 1 * time.Minute
constant DefaultSnapshotInterval (line 24) | DefaultSnapshotInterval = 1800 * time.Second
constant DefaultBackupPodHTTPPort (line 26) | DefaultBackupPodHTTPPort = 19999
constant OperatorRoot (line 28) | OperatorRoot = "/var/tmp/etcd-operator"
constant BackupMountDir (line 29) | BackupMountDir = "/var/etcd-backup"
constant EnvOperatorPodName (line 31) | EnvOperatorPodName = "MY_POD_NAME"
constant EnvOperatorPodNamespace (line 32) | EnvOperatorPodNamespace = "MY_POD_NAMESPACE"
constant EnvOperatorWatchNamespace (line 33) | EnvOperatorWatchNamespace = "WATCH_NAMESPACE"
FILE: third_party/etcd-operator/pkg/util/etcdutil/etcdutil.go
function ListMembers (line 26) | func ListMembers(clientURLs []string, tc *tls.Config) (*clientv3.MemberL...
function RemoveMember (line 44) | func RemoveMember(clientURLs []string, tc *tls.Config, id uint64) error {
FILE: third_party/etcd-operator/pkg/util/etcdutil/etcdutil_test.go
function TestMemberNameFromPeerURL (line 19) | func TestMemberNameFromPeerURL(t *testing.T) {
FILE: third_party/etcd-operator/pkg/util/etcdutil/member.go
type Member (line 25) | type Member struct
method Addr (line 41) | func (m *Member) Addr() string {
method ClientURL (line 46) | func (m *Member) ClientURL() string {
method clientScheme (line 50) | func (m *Member) clientScheme() string {
method peerScheme (line 57) | func (m *Member) peerScheme() string {
method ListenClientURL (line 64) | func (m *Member) ListenClientURL() string {
method ListenPeerURL (line 67) | func (m *Member) ListenPeerURL() string {
method PeerURL (line 71) | func (m *Member) PeerURL() string {
type MemberSet (line 75) | type MemberSet
method Diff (line 86) | func (ms MemberSet) Diff(other MemberSet) MemberSet {
method IsEqual (line 98) | func (ms MemberSet) IsEqual(other MemberSet) bool {
method Size (line 110) | func (ms MemberSet) Size() int {
method String (line 114) | func (ms MemberSet) String() string {
method PickOne (line 123) | func (ms MemberSet) PickOne() *Member {
method PeerURLPairs (line 130) | func (ms MemberSet) PeerURLPairs() []string {
method Add (line 138) | func (ms MemberSet) Add(m *Member) {
method Remove (line 142) | func (ms MemberSet) Remove(name string) {
method ClientURLs (line 146) | func (ms MemberSet) ClientURLs() []string {
function NewMemberSet (line 77) | func NewMemberSet(ms ...*Member) MemberSet {
function MemberNameFromPeerURL (line 156) | func MemberNameFromPeerURL(pu string) (string, error) {
function clusterNameFromMemberName (line 170) | func clusterNameFromMemberName(mn string) string {
FILE: third_party/etcd-operator/pkg/util/etcdutil/member_test.go
function TestMemberSetIsEqual (line 19) | func TestMemberSetIsEqual(t *testing.T) {
FILE: third_party/etcd-operator/pkg/util/etcdutil/tls.go
constant DefaultCliCertFile (line 27) | DefaultCliCertFile = "client.crt"
constant DefaultCliKeyFile (line 28) | DefaultCliKeyFile = "client.key"
constant DefaultCliCAFile (line 29) | DefaultCliCAFile = "client-ca.crt"
function InitEtcdTLSConfig (line 38) | func InitEtcdTLSConfig(cert,key,ca string) {
function NewTLSConfig (line 44) | func NewTLSConfig(certData, keyData, caData []byte) (*tls.Config, error) {
function writeFile (line 76) | func writeFile(dir, file string, data []byte) (string, error) {
FILE: third_party/etcd-operator/pkg/util/gcputil/gcsfactory/client.go
type GCSClient (line 31) | type GCSClient struct
function NewClientFromSecret (line 36) | func NewClientFromSecret(ctx context.Context, kubecli kubernetes.Interfa...
FILE: third_party/etcd-operator/pkg/util/k8sutil/crd.go
type EtcdClusterCRUpdateFunc (line 35) | type EtcdClusterCRUpdateFunc
function GetClusterList (line 37) | func GetClusterList(restcli rest.Interface, ns string) (*api.EtcdCluster...
function listClustersURI (line 50) | func listClustersURI(ns string) string {
function CreateCRD (line 54) | func CreateCRD(clientset apiextensionsclient.Interface, crdName, rkind, ...
function WaitCRDReady (line 79) | func WaitCRDReady(clientset apiextensionsclient.Interface, crdName strin...
function MustNewKubeExtClient (line 105) | func MustNewKubeExtClient() apiextensionsclient.Interface {
FILE: third_party/etcd-operator/pkg/util/k8sutil/events_util.go
function NewMemberAddEvent (line 29) | func NewMemberAddEvent(memberName string, cl *api.EtcdCluster) *v1.Event {
function MemberRemoveEvent (line 37) | func MemberRemoveEvent(memberName string, cl *api.EtcdCluster) *v1.Event {
function ReplacingDeadMemberEvent (line 45) | func ReplacingDeadMemberEvent(memberName string, cl *api.EtcdCluster) *v...
function MemberUpgradedEvent (line 53) | func MemberUpgradedEvent(memberName, oldVersion, newVersion string, cl *...
function newClusterEvent (line 61) | func newClusterEvent(cl *api.EtcdCluster) *v1.Event {
FILE: third_party/etcd-operator/pkg/util/k8sutil/k8sutil.go
constant EtcdClientPort (line 49) | EtcdClientPort = 2379
constant etcdVolumeMountDir (line 51) | etcdVolumeMountDir = "/var/etcd"
constant dataDir (line 52) | dataDir = etcdVolumeMountDir + "/data"
constant backupFile (line 53) | backupFile = "/var/etcd/latest.backup"
constant etcdVersionAnnotationKey (line 54) | etcdVersionAnnotationKey = "etcd.version"
constant peerTLSDir (line 55) | peerTLSDir = "/etc/etcdtls/member/peer-tls"
constant peerTLSVolume (line 56) | peerTLSVolume = "member-peer-tls"
constant serverTLSDir (line 57) | serverTLSDir = "/etc/etcdtls/member/server-tls"
constant serverTLSVolume (line 58) | serverTLSVolume = "member-server-tls"
constant operatorEtcdTLSDir (line 59) | operatorEtcdTLSDir = "/etc/etcdtls/operator/etcd-tls"
constant operatorEtcdTLSVolume (line 60) | operatorEtcdTLSVolume = "etcd-client-tls"
constant randomSuffixLength (line 62) | randomSuffixLength = 10
constant MaxNameLength (line 64) | MaxNameLength = 63 - randomSuffixLength - 1
constant defaultBusyboxImage (line 66) | defaultBusyboxImage = "busybox:1.28.0-glibc"
constant AnnotationScope (line 69) | AnnotationScope = "etcd.database.coreos.com/scope"
constant AnnotationClusterWide (line 71) | AnnotationClusterWide = "clusterwide"
constant defaultDNSTimeout (line 75) | defaultDNSTimeout = int64(0)
constant TolerateUnreadyEndpointsAnnotation (line 78) | TolerateUnreadyEndpointsAnnotation = "service.alpha.kubernetes.io/tolera...
function GetEtcdVersion (line 80) | func GetEtcdVersion(pod *v1.Pod) string {
function SetEtcdVersion (line 84) | func SetEtcdVersion(pod *v1.Pod, version string) {
function GetPodNames (line 88) | func GetPodNames(pods []*v1.Pod) []string {
function PVCNameFromMember (line 100) | func PVCNameFromMember(memberName string) string {
function makeRestoreInitContainers (line 104) | func makeRestoreInitContainers(backupURL *url.URL, token, repo, version ...
function ImageName (line 139) | func ImageName(repo, version string) string {
function imageNameBusybox (line 144) | func imageNameBusybox(policy *api.PodPolicy) string {
function PodWithNodeSelector (line 151) | func PodWithNodeSelector(p *v1.Pod, ns map[string]string) *v1.Pod {
function CreateClientService (line 156) | func CreateClientService(kubecli kubernetes.Interface, clusterName, ns s...
function ClientServiceName (line 166) | func ClientServiceName(clusterName string) string {
function CreatePeerService (line 170) | func CreatePeerService(kubecli kubernetes.Interface, clusterName, ns str...
function createService (line 186) | func createService(kubecli kubernetes.Interface, svcName, clusterName, n...
function CreateAndWaitPod (line 197) | func CreateAndWaitPod(kubecli kubernetes.Interface, ns string, pod *v1.P...
function newEtcdServiceManifest (line 230) | func newEtcdServiceManifest(svcName, clusterName, clusterIP string, port...
function AddEtcdVolumeToPod (line 251) | func AddEtcdVolumeToPod(pod *v1.Pod, pvc *v1.PersistentVolumeClaim) {
function addRecoveryToPod (line 263) | func addRecoveryToPod(pod *v1.Pod, token string, m *etcdutil.Member, cs ...
function addOwnerRefToObject (line 268) | func addOwnerRefToObject(o metav1.Object, r metav1.OwnerReference) {
function NewSeedMemberPod (line 274) | func NewSeedMemberPod(clusterName string, ms etcdutil.MemberSet, m *etcd...
function NewEtcdPodPVC (line 288) | func NewEtcdPodPVC(m *etcdutil.Member, pvcSpec v1.PersistentVolumeClaimS...
function newEtcdPod (line 301) | func newEtcdPod(m *etcdutil.Member, initialCluster []string, clusterName...
function podSecurityContext (line 410) | func podSecurityContext(podPolicy *api.PodPolicy) *v1.PodSecurityContext {
function NewEtcdPod (line 417) | func NewEtcdPod(m *etcdutil.Member, initialCluster []string, clusterName...
function MustNewKubeClient (line 424) | func MustNewKubeClient() kubernetes.Interface {
function InClusterConfig (line 432) | func InClusterConfig() (*rest.Config, error) {
function IsKubernetesResourceAlreadyExistError (line 452) | func IsKubernetesResourceAlreadyExistError(err error) bool {
function IsKubernetesResourceNotFoundError (line 456) | func IsKubernetesResourceNotFoundError(err error) bool {
function ClusterListOpt (line 461) | func ClusterListOpt(clusterName string) metav1.ListOptions {
function LabelsForCluster (line 467) | func LabelsForCluster(clusterName string) map[string]string {
function CreatePatch (line 474) | func CreatePatch(o, n, datastruct interface{}) ([]byte, error) {
function PatchDeployment (line 486) | func PatchDeployment(kubecli kubernetes.Interface, namespace, name strin...
function CascadeDeleteOptions (line 501) | func CascadeDeleteOptions(gracePeriodSeconds int64) *metav1.DeleteOptions {
function mergeLabels (line 512) | func mergeLabels(l1, l2 map[string]string) {
function UniqueMemberName (line 521) | func UniqueMemberName(clusterName string) string {
FILE: third_party/etcd-operator/pkg/util/k8sutil/k8sutils_test.go
function TestDefaultBusyboxImageName (line 23) | func TestDefaultBusyboxImageName(t *testing.T) {
function TestDefaultNilBusyboxImageName (line 32) | func TestDefaultNilBusyboxImageName(t *testing.T) {
function TestSetBusyboxImageName (line 40) | func TestSetBusyboxImageName(t *testing.T) {
FILE: third_party/etcd-operator/pkg/util/k8sutil/node_util.go
function IsNodeReady (line 22) | func IsNodeReady(n v1.Node) bool {
FILE: third_party/etcd-operator/pkg/util/k8sutil/pod_util.go
constant etcdVolumeName (line 28) | etcdVolumeName = "etcd-data"
function etcdVolumeMounts (line 31) | func etcdVolumeMounts() []v1.VolumeMount {
function etcdContainer (line 37) | func etcdContainer(cmd []string, repo, version string) v1.Container {
function containerWithProbes (line 60) | func containerWithProbes(c v1.Container, lp *v1.Probe, rp *v1.Probe) v1....
function containerWithRequirements (line 66) | func containerWithRequirements(c v1.Container, r v1.ResourceRequirements...
function newEtcdProbe (line 71) | func newEtcdProbe(isSecure bool) *v1.Probe {
function applyPodPolicy (line 91) | func applyPodPolicy(clusterName string, pod *v1.Pod, policy *api.PodPoli...
function IsPodReady (line 126) | func IsPodReady(pod *v1.Pod) bool {
function getPodReadyCondition (line 131) | func getPodReadyCondition(status *v1.PodStatus) *v1.PodCondition {
function PodSpecToPrettyJSON (line 140) | func PodSpecToPrettyJSON(pod *v1.Pod) (string, error) {
FILE: third_party/etcd-operator/pkg/util/k8sutil/tls.go
type TLSData (line 24) | type TLSData struct
function GetTLSDataFromSecret (line 31) | func GetTLSDataFromSecret(kubecli kubernetes.Interface, ns, se string) (...
FILE: third_party/etcd-operator/pkg/util/probe/readyz.go
constant HTTPReadyzEndpoint (line 23) | HTTPReadyzEndpoint = "/readyz"
function SetReady (line 31) | func SetReady() {
function ReadyzHandler (line 38) | func ReadyzHandler(w http.ResponseWriter, r *http.Request) {
FILE: third_party/etcd-operator/pkg/util/retryutil/retry_util.go
type RetryError (line 22) | type RetryError struct
method Error (line 26) | func (e *RetryError) Error() string {
function IsRetryFailure (line 30) | func IsRetryFailure(err error) bool {
type ConditionFunc (line 35) | type ConditionFunc
function Retry (line 41) | func Retry(interval time.Duration, maxRetries int, f ConditionFunc) error {
FILE: third_party/etcd-operator/pkg/util/tencentcloudutil/cosfactory/client.go
type COSClient (line 30) | type COSClient struct
function NewClientFromSecret (line 35) | func NewClientFromSecret(kubecli kubernetes.Interface, namespace, cosSec...
function NewClientFromMetadata (line 63) | func NewClientFromMetadata(role string) (w *COSClient, err error) {
FILE: third_party/etcd-operator/pkg/util/tencentcloudutil/metadata/credential/secret.go
type metadataResponse (line 14) | type metadataResponse struct
type Credential (line 22) | type Credential struct
method GetSecret (line 37) | func (c *Credential) GetSecret() (string, string, string, error) {
method refresh (line 49) | func (c *Credential) refresh() error {
function NewCredential (line 31) | func NewCredential(role string) *Credential {
FILE: third_party/etcd-operator/pkg/util/util.go
function PresentIn (line 18) | func PresentIn(a string, list []string) bool {
FILE: third_party/etcd-operator/test/e2e/basic_test.go
function TestCreateCluster (line 27) | func TestCreateCluster(t *testing.T) {
function TestPauseControl (line 50) | func TestPauseControl(t *testing.T) {
function TestEtcdUpgrade (line 104) | func TestEtcdUpgrade(t *testing.T) {
FILE: third_party/etcd-operator/test/e2e/cluster_status_test.go
function TestReadyMembersStatus (line 29) | func TestReadyMembersStatus(t *testing.T) {
FILE: third_party/etcd-operator/test/e2e/e2eslow/backup_restore_test.go
function init (line 43) | func init() {
function TestBackupAndRestore (line 48) | func TestBackupAndRestore(t *testing.T) {
function verifyAWSEnvVars (line 92) | func verifyAWSEnvVars() error {
function getEndpoints (line 102) | func getEndpoints(kubeClient kubernetes.Interface, secureClient bool, na...
function testEtcdBackupOperatorForS3Backup (line 134) | func testEtcdBackupOperatorForS3Backup(t *testing.T, clusterName, operat...
function testEtcdBackupOperatorForPeriodicS3Backup (line 179) | func testEtcdBackupOperatorForPeriodicS3Backup(t *testing.T, clusterName...
function testEtcdRestoreOperatorForS3Source (line 269) | func testEtcdRestoreOperatorForS3Source(t *testing.T, clusterName, s3Pat...
FILE: third_party/etcd-operator/test/e2e/e2eslow/disruptive_test.go
function TestRestartOperator (line 25) | func TestRestartOperator(t *testing.T) {
FILE: third_party/etcd-operator/test/e2e/e2eslow/main_test.go
function TestMain (line 23) | func TestMain(m *testing.M) {
FILE: third_party/etcd-operator/test/e2e/e2eutil/crd_util.go
type StorageCheckerOptions (line 32) | type StorageCheckerOptions struct
function CreateCluster (line 38) | func CreateCluster(t *testing.T, crClient versioned.Interface, namespace...
function UpdateCluster (line 49) | func UpdateCluster(crClient versioned.Interface, cl *api.EtcdCluster, ma...
function AtomicUpdateClusterCR (line 53) | func AtomicUpdateClusterCR(crClient versioned.Interface, name, namespace...
function DeleteCluster (line 75) | func DeleteCluster(t *testing.T, crClient versioned.Interface, kubeClien...
FILE: third_party/etcd-operator/test/e2e/e2eutil/etcd_util.go
constant etcdKeyFoo (line 26) | etcdKeyFoo = "foo"
constant etcdValBar (line 27) | etcdValBar = "bar"
function PutDataToEtcd (line 30) | func PutDataToEtcd(url string) error {
function CheckEtcdData (line 42) | func CheckEtcdData(t *testing.T, url string) {
function createEtcdClient (line 64) | func createEtcdClient(addr string) (*clientv3.Client, error) {
FILE: third_party/etcd-operator/test/e2e/e2eutil/spec_util.go
function NewCluster (line 23) | func NewCluster(genName string, size int) *api.EtcdCluster {
function NewS3Backup (line 39) | func NewS3Backup(endpoints []string, clusterName, path, secret, clientTL...
function NewS3RestoreSource (line 64) | func NewS3RestoreSource(path, awsSecret string) *api.S3RestoreSource {
function NewEtcdRestore (line 72) | func NewEtcdRestore(clusterName string, size int, restoreSource api.Rest...
function ClusterCRWithTLS (line 93) | func ClusterCRWithTLS(cl *api.EtcdCluster, memberPeerTLSSecret, memberSe...
function ClusterWithVersion (line 105) | func ClusterWithVersion(cl *api.EtcdCluster, version string) *api.EtcdCl...
function NameLabelSelector (line 111) | func NameLabelSelector(name string) map[string]string {
FILE: third_party/etcd-operator/test/e2e/e2eutil/tls.go
function PrepareTLS (line 31) | func PrepareTLS(clusterName, namespace, memberPeerTLSSecret, memberClien...
function PreparePeerTLSSecret (line 48) | func PreparePeerTLSSecret(clusterName, ns, secretName string) error {
function PrepareClientTLSSecret (line 82) | func PrepareClientTLSSecret(dir, clusterName, ns, mSecret, oSecret strin...
function prepareTLSCerts (line 131) | func prepareTLSCerts(certPath, keyPath, caPath string, hosts []string) e...
function prepareKeyAndCert (line 147) | func prepareKeyAndCert(certPath, keyPath string, hosts []string) error {
function publicKey (line 209) | func publicKey(priv interface{}) interface{} {
function pemBlockForKey (line 220) | func pemBlockForKey(priv interface{}) (*pem.Block, error) {
FILE: third_party/etcd-operator/test/e2e/e2eutil/util.go
function DeleteSecrets (line 32) | func DeleteSecrets(kubecli kubernetes.Interface, namespace string, secre...
function KillMembers (line 43) | func KillMembers(kubecli kubernetes.Interface, namespace string, names ....
function LogfWithTimestamp (line 53) | func LogfWithTimestamp(t *testing.T, format string, args ...interface{}) {
function printContainerStatus (line 57) | func printContainerStatus(buf *bytes.Buffer, ss []v1.ContainerStatus) {
function DeleteBackupFiles (line 68) | func DeleteBackupFiles(wr writer.Writer, files []string) error {
FILE: third_party/etcd-operator/test/e2e/e2eutil/wait_util.go
type acceptFunc (line 40) | type acceptFunc
type filterFunc (line 41) | type filterFunc
function CalculateRestoreWaitTime (line 43) | func CalculateRestoreWaitTime(needDataClone bool) int {
function WaitUntilPodSizeReached (line 52) | func WaitUntilPodSizeReached(t *testing.T, kubeClient kubernetes.Interfa...
function WaitUntilSizeReached (line 81) | func WaitUntilSizeReached(t *testing.T, crClient versioned.Interface, si...
function WaitSizeAndVersionReached (line 85) | func WaitSizeAndVersionReached(t *testing.T, kubeClient kubernetes.Inter...
function getVersionFromImage (line 117) | func getVersionFromImage(image string) string {
function waitSizeReachedWithAccept (line 121) | func waitSizeReachedWithAccept(t *testing.T, crClient versioned.Interfac...
function WaitUntilMembersWithNamesDeleted (line 148) | func WaitUntilMembersWithNamesDeleted(t *testing.T, crClient versioned.I...
function waitResourcesDeleted (line 176) | func waitResourcesDeleted(t *testing.T, kubeClient kubernetes.Interface,...
function WaitPodsWithImageDeleted (line 211) | func WaitPodsWithImageDeleted(kubecli kubernetes.Interface, namespace, i...
function WaitPodsDeleted (line 222) | func WaitPodsDeleted(kubecli kubernetes.Interface, namespace string, ret...
function WaitPodsDeletedCompletely (line 227) | func WaitPodsDeletedCompletely(kubecli kubernetes.Interface, namespace s...
function waitPodsDeleted (line 231) | func waitPodsDeleted(kubecli kubernetes.Interface, namespace string, ret...
function WaitUntilOperatorReady (line 257) | func WaitUntilOperatorReady(kubecli kubernetes.Interface, namespace, nam...
function WaitUntilNoBackupFiles (line 281) | func WaitUntilNoBackupFiles(wr writer.Writer, path string, timeout int) ...
FILE: third_party/etcd-operator/test/e2e/framework/framework.go
constant etcdBackupOperatorName (line 43) | etcdBackupOperatorName = "etcd-backup-operator"
constant etcdRestoreOperatorName (line 44) | etcdRestoreOperatorName = "etcd-restore-operator"
constant etcdRestoreOperatorServiceName (line 45) | etcdRestoreOperatorServiceName = "etcd-restore-operator"
constant etcdRestoreServicePort (line 46) | etcdRestoreServicePort = 19999
type Framework (line 49) | type Framework struct
method setup (line 106) | func (f *Framework) setup() error {
method SetupEtcdOperator (line 117) | func (f *Framework) SetupEtcdOperator() error {
method DeleteEtcdOperatorCompletely (line 204) | func (f *Framework) DeleteEtcdOperatorCompletely() error {
method deleteOperatorCompletely (line 208) | func (f *Framework) deleteOperatorCompletely(name string) error {
method SetupEtcdRestoreOperatorService (line 232) | func (f *Framework) SetupEtcdRestoreOperatorService() error {
function setup (line 57) | func setup() error {
function teardown (line 87) | func teardown() error {
function describePod (line 195) | func describePod(ns, name string) {
FILE: third_party/etcd-operator/test/e2e/framework/main_entry.go
function MainEntry (line 24) | func MainEntry(m *testing.M) {
FILE: third_party/etcd-operator/test/e2e/main_test.go
function TestMain (line 23) | func TestMain(m *testing.M) {
FILE: third_party/etcd-operator/test/e2e/pv_test.go
function TestCreateClusterWithPV (line 29) | func TestCreateClusterWithPV(t *testing.T) {
FILE: third_party/etcd-operator/test/e2e/recovery_test.go
function TestOneMemberRecovery (line 25) | func TestOneMemberRecovery(t *testing.T) {
FILE: third_party/etcd-operator/test/e2e/resize_test.go
function TestResizeCluster3to5 (line 26) | func TestResizeCluster3to5(t *testing.T) {
function TestResizeCluster5to3 (line 59) | func TestResizeCluster5to3(t *testing.T) {
FILE: third_party/etcd-operator/test/e2e/tls_test.go
function init (line 28) | func init() {
function TestTLS (line 32) | func TestTLS(t *testing.T) {
FILE: third_party/etcd-operator/test/e2e/upgradetest/framework/framework.go
type Config (line 36) | type Config struct
type Framework (line 44) | type Framework struct
method CreateOperator (line 69) | func (f *Framework) CreateOperator(name string) error {
method DeleteOperator (line 129) | func (f *Framework) DeleteOperator(name string) error {
method UpgradeOperator (line 150) | func (f *Framework) UpgradeOperator(name string) error {
function New (line 51) | func New(fc Config) (*Framework, error) {
function operatorLabelSelector (line 170) | func operatorLabelSelector(name string) map[string]string {
FILE: third_party/etcd-operator/test/e2e/upgradetest/main_test.go
function TestMain (line 29) | func TestMain(m *testing.M) {
FILE: third_party/etcd-operator/test/e2e/upgradetest/upgrade_test.go
function newOperatorName (line 28) | func newOperatorName() string {
function TestResize (line 33) | func TestResize(t *testing.T) {
function TestHealOneMemberForOldCluster (line 85) | func TestHealOneMemberForOldCluster(t *testing.T) {
FILE: third_party/etcd-operator/test/e2e/util.go
constant envParallelTest (line 18) | envParallelTest = "PARALLEL_TEST"
constant envParallelTestTrue (line 19) | envParallelTestTrue = "true"
FILE: third_party/etcd-operator/test/logcollector/main.go
function main (line 38) | func main() {
function podRunning (line 126) | func podRunning(event watch.Event) (bool, error) {
Condensed preview — 680 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (5,404K chars).
[
{
"path": ".commitlintrc.yml",
"chars": 45,
"preview": "---\nextends:\n - '@commitlint/config-angular'"
},
{
"path": ".dockerignore",
"chars": 151,
"preview": "# More info: https://docs.docker.com/engine/reference/builder/#dockerignore-file\n# Ignore all files which are not go typ"
},
{
"path": ".github/workflows/build.yml",
"chars": 310,
"preview": "name: Go\n\non:\n push:\n branches: [ master ]\n pull_request:\n branches: [ master ]\n\njobs:\n\n build:\n runs-on: ub"
},
{
"path": ".github/workflows/commitlint.yml",
"chars": 326,
"preview": "name: Commitlint\n\non: [pull_request]\n\njobs:\n lint:\n runs-on: ubuntu-latest\n env:\n GITHUB_TOKEN: ${{ secrets."
},
{
"path": ".github/workflows/e2e.yml",
"chars": 719,
"preview": "name: e2e\n\non:\n push:\n branches: [ master ]\n pull_request:\n branches: [ master ]\n\nenv:\n VERSION: ${{ github.sha"
},
{
"path": ".github/workflows/golangci-lint.yml",
"chars": 1291,
"preview": "name: golangci-lint\non:\n push:\n tags:\n - v*\n branches:\n - master\n - main\n pull_request:\npermissio"
},
{
"path": ".gitignore",
"chars": 2218,
"preview": "# OSX leaves these everywhere on SMB shares\n._*\n\n# OSX trash\n.DS_Store\n\n# Eclipse files\n.classpath\n.project\n.settings/**"
},
{
"path": ".golangci.yml",
"chars": 924,
"preview": "run:\n # timeout for analysis, e.g. 30s, 5m\n deadline: 10m\n # include test files or not\n tests: true\n # disallowed f"
},
{
"path": "CHANGELOG/CHANGELOG.md",
"chars": 1223,
"preview": "## v0.2.0-beta.2 (2022-06-08)\n<hr>\n\n### Features\n<hr>\n\nsupport import etcd v2 cluster. (@engow, @seanyan )\n\nadd compacti"
},
{
"path": "LICENSE",
"chars": 11358,
"preview": "\n Apache License\n Version 2.0, January 2004\n "
},
{
"path": "Makefile",
"chars": 3489,
"preview": ".PHONY: all\nall: lint build\n\n# ==============================================================================\n# Build op"
},
{
"path": "README.md",
"chars": 3053,
"preview": "# Kstone\n\n<div align=center><img width=800 hight=300 src=\"docs/images/icon.png\" /></div>\n\n------\n\n[中文](README_CN.md)\n\nKs"
},
{
"path": "README_CN.md",
"chars": 2169,
"preview": "# Kstone\n\n<div align=center><img width=800 hight=300 src=\"docs/images/icon.png\" /></div>\n\n------\n\n[English](README.md)\n\n"
},
{
"path": "build/docker/kstone-api/Dockerfile",
"chars": 817,
"preview": "# Tencent is pleased to support the open source community by making TKEStack\n# available.\n#\n# Copyright (C) 2012-2023 Te"
},
{
"path": "build/docker/kstone-controller/Dockerfile",
"chars": 832,
"preview": "# Tencent is pleased to support the open source community by making TKEStack\n# available.\n#\n# Copyright (C) 2012-2023 Te"
},
{
"path": "build/docker/tools/code-generator/Dockerfile",
"chars": 2621,
"preview": "# Tencent is pleased to support the open source community by making TKEStack\n# available.\n#\n# Copyright (C) 2012-2023 Te"
},
{
"path": "build/docker/tools/code-generator/Makefile",
"chars": 1117,
"preview": "# Tencent is pleased to support the open source community by making TKEStack\n# available.\n#\n# Copyright (C) 2012-2023 Te"
},
{
"path": "build/docker/tools/code-generator/boilerplate.go.txt",
"chars": 697,
"preview": "/*\n * Tencent is pleased to support the open source community by making TKEStack\n * available.\n *\n * Copyright (C) 2012-"
},
{
"path": "build/docker/tools/code-generator/code.sh",
"chars": 6252,
"preview": "#!/usr/bin/env bash\n\n#\n# Tencent is pleased to support the open source community by making TKEStack\n# available.\n#\n# Cop"
},
{
"path": "build/docker/tools/code-generator/openapi.sh",
"chars": 1604,
"preview": "#!/usr/bin/env bash\n\n#\n# Tencent is pleased to support the open source community by making TKEStack\n# available.\n#\n# Cop"
},
{
"path": "build/lib/common.mk",
"chars": 2319,
"preview": "# Tencent is pleased to support the open source community by making TKEStack\n# available.\n#\n# Copyright (C) 2012-2023 Te"
},
{
"path": "build/lib/create-manifest.sh",
"chars": 1563,
"preview": "#!/usr/bin/env bash\n\n#\n# Tencent is pleased to support the open source community by making TKEStack\n# available.\n#\n# Cop"
},
{
"path": "build/lib/docker-buildx.mk",
"chars": 4053,
"preview": "# Tencent is pleased to support the open source community by making TKEStack\n# available.\n#\n# Copyright (C) 2012-2023 Te"
},
{
"path": "build/lib/gen.mk",
"chars": 1989,
"preview": "# Tencent is pleased to support the open source community by making TKEStack\n# available.\n#\n# Copyright (C) 2012-2023 Te"
},
{
"path": "build/lib/golang.mk",
"chars": 3719,
"preview": "# Tencent is pleased to support the open source community by making TKEStack\n# available.\n#\n# Copyright (C) 2012-2023 Te"
},
{
"path": "build/lib/image.mk",
"chars": 5422,
"preview": "# Tencent is pleased to support the open source community by making TKEStack\n# available.\n#\n# Copyright (C) 2012-2023 Te"
},
{
"path": "build/script/openapi.sh",
"chars": 1425,
"preview": "#!/usr/bin/env bash\n\n#\n# Tencent is pleased to support the open source community by making TKEStack\n# available.\n#\n# Cop"
},
{
"path": "charts/.gitignore",
"chars": 3064,
"preview": "# File created using '.gitignore Generator' for Visual Studio Code: https://bit.ly/vscode-gig\n\n# Created by https://www."
},
{
"path": "charts/.helmignore",
"chars": 349,
"preview": "# Patterns to ignore when building packages.\n# This supports shell glob matching, relative path matching, and\n# negation"
},
{
"path": "charts/Chart.yaml",
"chars": 1142,
"preview": "apiVersion: v2\nname: kstone\ndescription: A Helm chart for Kubernetes\n\n# A chart can be either an 'application' or a 'lib"
},
{
"path": "charts/README.md",
"chars": 1119,
"preview": "# Kstone Installation\n\n[中文](README_CN.md)\n\n## 1 Preparation\n\n- Prerequisites\n - Kubernetes version is between 1.14 and "
},
{
"path": "charts/README_CN.md",
"chars": 783,
"preview": "# 安装Kstone\n\n[英文](./)\n\n## 1 资源准备\n\n- 前置条件\n - Kubernetes集群版本在1.14和1.20之间。\n - Prometheus-Operator版本为v0.49.0。\n- 申请 [TKE](ht"
},
{
"path": "charts/charts/backup-operator/.helmignore",
"chars": 349,
"preview": "# Patterns to ignore when building packages.\n# This supports shell glob matching, relative path matching, and\n# negation"
},
{
"path": "charts/charts/backup-operator/Chart.yaml",
"chars": 1171,
"preview": "apiVersion: v2\nname: backup-operator\ndescription: A Helm chart for etcd backup operator of kstone\n\n# A chart can be eith"
},
{
"path": "charts/charts/backup-operator/templates/_helpers.tpl",
"chars": 1543,
"preview": "{{/*\nExpand the name of the chart.\n*/}}\n{{- define \"backup-operator.name\" -}}\n{{- default .Chart.Name .Values.nameOverri"
},
{
"path": "charts/charts/backup-operator/templates/deployment.yaml",
"chars": 2236,
"preview": "apiVersion: apps/v1\nkind: Deployment\nmetadata:\n name: {{ include \"backup-operator.fullname\" . }}\n labels:\n {{- incl"
},
{
"path": "charts/charts/backup-operator/values.yaml",
"chars": 840,
"preview": "# Default values for backup-operator.\n# This is a YAML-formatted file.\n# Declare variables to be passed into your templa"
},
{
"path": "charts/charts/dashboard/.helmignore",
"chars": 349,
"preview": "# Patterns to ignore when building packages.\n# This supports shell glob matching, relative path matching, and\n# negation"
},
{
"path": "charts/charts/dashboard/Chart.yaml",
"chars": 1145,
"preview": "apiVersion: v2\nname: dashboard\ndescription: A Helm chart for Kubernetes\n\n# A chart can be either an 'application' or a '"
},
{
"path": "charts/charts/dashboard/templates/_helpers.tpl",
"chars": 1495,
"preview": "{{/*\nExpand the name of the chart.\n*/}}\n{{- define \"dashboard.name\" -}}\n{{- default .Chart.Name .Values.nameOverride | t"
},
{
"path": "charts/charts/dashboard/templates/deployment.yaml",
"chars": 1698,
"preview": "apiVersion: apps/v1\nkind: Deployment\nmetadata:\n name: {{ include \"dashboard.fullname\" . }}\n labels:\n {{- include \"d"
},
{
"path": "charts/charts/dashboard/templates/service.yaml",
"chars": 367,
"preview": "apiVersion: v1\nkind: Service\nmetadata:\n name: {{ include \"dashboard.fullname\" . }}\n labels:\n {{- include \"dashboard"
},
{
"path": "charts/charts/dashboard/values.yaml",
"chars": 840,
"preview": "# Default values for dashboard.\n# This is a YAML-formatted file.\n# Declare variables to be passed into your templates.\n\n"
},
{
"path": "charts/charts/dashboard-api/.helmignore",
"chars": 349,
"preview": "# Patterns to ignore when building packages.\n# This supports shell glob matching, relative path matching, and\n# negation"
},
{
"path": "charts/charts/dashboard-api/Chart.yaml",
"chars": 1149,
"preview": "apiVersion: v2\nname: dashboard-api\ndescription: A Helm chart for Kubernetes\n\n# A chart can be either an 'application' or"
},
{
"path": "charts/charts/dashboard-api/templates/_helpers.tpl",
"chars": 1528,
"preview": "{{/*\nExpand the name of the chart.\n*/}}\n{{- define \"dashboard-api.name\" -}}\n{{- default .Chart.Name .Values.nameOverride"
},
{
"path": "charts/charts/dashboard-api/templates/configmap.yaml",
"chars": 140,
"preview": "apiVersion: v1\ndata:\n admin: $2y$10$dgolimSP5PywT3yMaRqppeA5GflVmyf/cWaL6bfmXVk6Rsjlmp0ui\nkind: ConfigMap\nmetadata:\n n"
},
{
"path": "charts/charts/dashboard-api/templates/deployment.yaml",
"chars": 2357,
"preview": "apiVersion: apps/v1\nkind: Deployment\nmetadata:\n name: {{ include \"dashboard-api.fullname\" . }}\n labels:\n {{- includ"
},
{
"path": "charts/charts/dashboard-api/templates/secret.yaml",
"chars": 2365,
"preview": "apiVersion: v1\ndata:\n private.key: LS0tLS1CRUdJTiBSU0EgUFJJVkFURSBLRVktLS0tLQpNSUlFcFFJQkFBS0NBUUVBeURuTHlyS0t4d1lhQVF1"
},
{
"path": "charts/charts/dashboard-api/templates/service.yaml",
"chars": 379,
"preview": "apiVersion: v1\nkind: Service\nmetadata:\n name: {{ include \"dashboard-api.fullname\" . }}\n labels:\n {{- include \"dashb"
},
{
"path": "charts/charts/dashboard-api/values.yaml",
"chars": 874,
"preview": "# Default values for dashboard-api.\n# This is a YAML-formatted file.\n# Declare variables to be passed into your template"
},
{
"path": "charts/charts/etcd-controller/.helmignore",
"chars": 349,
"preview": "# Patterns to ignore when building packages.\n# This supports shell glob matching, relative path matching, and\n# negation"
},
{
"path": "charts/charts/etcd-controller/Chart.yaml",
"chars": 1151,
"preview": "apiVersion: v2\nname: etcd-controller\ndescription: A Helm chart for Kubernetes\n\n# A chart can be either an 'application' "
},
{
"path": "charts/charts/etcd-controller/templates/_helpers.tpl",
"chars": 1543,
"preview": "{{/*\nExpand the name of the chart.\n*/}}\n{{- define \"etcd-controller.name\" -}}\n{{- default .Chart.Name .Values.nameOverri"
},
{
"path": "charts/charts/etcd-controller/templates/deployment.yaml",
"chars": 2023,
"preview": "apiVersion: apps/v1\nkind: Deployment\nmetadata:\n name: {{ include \"etcd-controller.fullname\" . }}\n labels:\n {{- incl"
},
{
"path": "charts/charts/etcd-controller/values.yaml",
"chars": 776,
"preview": "# Default values for etcd-controller.\n# This is a YAML-formatted file.\n# Declare variables to be passed into your templa"
},
{
"path": "charts/charts/etcd-operator/.helmignore",
"chars": 349,
"preview": "# Patterns to ignore when building packages.\n# This supports shell glob matching, relative path matching, and\n# negation"
},
{
"path": "charts/charts/etcd-operator/Chart.yaml",
"chars": 1169,
"preview": "apiVersion: v2\nname: etcd-operator\ndescription: A Helm chart for etcd backup operator of kstone\n\n# A chart can be either"
},
{
"path": "charts/charts/etcd-operator/templates/_helpers.tpl",
"chars": 1527,
"preview": "{{/*\nExpand the name of the chart.\n*/}}\n{{- define \"etcd-operator.name\" -}}\n{{- default .Chart.Name .Values.nameOverride"
},
{
"path": "charts/charts/etcd-operator/templates/configmap.yaml",
"chars": 3626,
"preview": "apiVersion: v1\ndata:\n 3.4.9: |\n image: ccr.ccs.tencentyun.com/ccs-dev/etcd:v3.4.9\n 3.4.13: |\n image: ccr.ccs.ten"
},
{
"path": "charts/charts/etcd-operator/templates/crd.yaml",
"chars": 102648,
"preview": "\n---\napiVersion: apiextensions.k8s.io/v1\nkind: CustomResourceDefinition\nmetadata:\n annotations:\n controller-gen.kube"
},
{
"path": "charts/charts/etcd-operator/templates/deployment.yaml",
"chars": 2654,
"preview": "apiVersion: apps/v1\nkind: Deployment\nmetadata:\n name: {{ include \"etcd-operator.fullname\" . }}\n labels:\n {{- includ"
},
{
"path": "charts/charts/etcd-operator/templates/service.yaml",
"chars": 400,
"preview": "apiVersion: v1\nkind: Service\nmetadata:\n name: {{ include \"etcd-operator.fullname\" . }}\n labels:\n {{- include \"etcd-"
},
{
"path": "charts/charts/etcd-operator/templates/webhook.yaml",
"chars": 4711,
"preview": "apiVersion: admissionregistration.k8s.io/v1\nkind: MutatingWebhookConfiguration\nmetadata:\n name: kstone-etcd-operator-mu"
},
{
"path": "charts/charts/etcd-operator/values.yaml",
"chars": 884,
"preview": "# Default values for etcd-operator.\n# This is a YAML-formatted file.\n# Declare variables to be passed into your template"
},
{
"path": "charts/charts/grafana/.helmignore",
"chars": 349,
"preview": "# Patterns to ignore when building packages.\n# This supports shell glob matching, relative path matching, and\n# negation"
},
{
"path": "charts/charts/grafana/Chart.yaml",
"chars": 1143,
"preview": "apiVersion: v2\nname: grafana\ndescription: A Helm chart for Kubernetes\n\n# A chart can be either an 'application' or a 'li"
},
{
"path": "charts/charts/grafana/dashboards/0.json",
"chars": 102648,
"preview": "{\n \"annotations\": {\n \"list\": [\n {\n \"builtIn\": 1,\n \"datasource\": \"-- Grafana --\",\n \"enable\""
},
{
"path": "charts/charts/grafana/templates/_helpers.tpl",
"chars": 1479,
"preview": "{{/*\nExpand the name of the chart.\n*/}}\n{{- define \"grafana.name\" -}}\n{{- default .Chart.Name .Values.nameOverride | tru"
},
{
"path": "charts/charts/grafana/templates/configmap.yaml",
"chars": 1523,
"preview": "apiVersion: v1\ndata:\n grafana.ini: |\n [analytics]\n check_for_updates = true\n [grafana_net]\n url = https://g"
},
{
"path": "charts/charts/grafana/templates/deployment.yaml",
"chars": 4744,
"preview": "apiVersion: apps/v1\nkind: Deployment\nmetadata:\n name: {{ include \"grafana.fullname\" . }}\n labels:\n {{- include \"grafa"
},
{
"path": "charts/charts/grafana/templates/secret.yaml",
"chars": 186,
"preview": "apiVersion: v1\ndata:\n admin-password: NEtZamozMWpNWmsxeFRpR1BWRUhsTzRrZzVKV1QySzBUeXlpSlRGQw==\n admin-user: YWRtaW4=\n "
},
{
"path": "charts/charts/grafana/templates/service.yaml",
"chars": 364,
"preview": "apiVersion: v1\nkind: Service\nmetadata:\n name: {{ include \"grafana.fullname\" . }}\n labels:\n {{- include \"grafana.lab"
},
{
"path": "charts/charts/grafana/values.yaml",
"chars": 896,
"preview": "# Default values for grafana.\n# This is a YAML-formatted file.\n# Declare variables to be passed into your templates.\n\nre"
},
{
"path": "charts/charts/inspection-controller/.helmignore",
"chars": 349,
"preview": "# Patterns to ignore when building packages.\n# This supports shell glob matching, relative path matching, and\n# negation"
},
{
"path": "charts/charts/inspection-controller/Chart.yaml",
"chars": 1157,
"preview": "apiVersion: v2\nname: inspection-controller\ndescription: A Helm chart for Kubernetes\n\n# A chart can be either an 'applica"
},
{
"path": "charts/charts/inspection-controller/templates/_helpers.tpl",
"chars": 1591,
"preview": "{{/*\nExpand the name of the chart.\n*/}}\n{{- define \"inspection-controller.name\" -}}\n{{- default .Chart.Name .Values.name"
},
{
"path": "charts/charts/inspection-controller/templates/deployment.yaml",
"chars": 2051,
"preview": "apiVersion: apps/v1\nkind: Deployment\nmetadata:\n name: {{ include \"inspection-controller.fullname\" . }}\n labels:\n {{"
},
{
"path": "charts/charts/inspection-controller/templates/service.yaml",
"chars": 434,
"preview": "apiVersion: v1\nkind: Service\nmetadata:\n name: {{ include \"inspection-controller.fullname\" . }}\n labels:\n app: inspe"
},
{
"path": "charts/charts/inspection-controller/templates/servicemonitor.yaml",
"chars": 366,
"preview": "apiVersion: monitoring.coreos.com/v1\nkind: ServiceMonitor\nmetadata:\n name: {{ include \"inspection-controller.fullname\" "
},
{
"path": "charts/charts/inspection-controller/values.yaml",
"chars": 797,
"preview": "# Default values for inspection-controller.\n# This is a YAML-formatted file.\n# Declare variables to be passed into your "
},
{
"path": "charts/charts/kube-prometheus-stack/.helmignore",
"chars": 386,
"preview": "# Patterns to ignore when building packages.\n# This supports shell glob matching, relative path matching, and\n# negation"
},
{
"path": "charts/charts/kube-prometheus-stack/CONTRIBUTING.md",
"chars": 656,
"preview": "# Contributing Guidelines\n\n## How to contribute to this chart\n\n1. Fork this repository, develop and test your Chart.\n1. "
},
{
"path": "charts/charts/kube-prometheus-stack/Chart.yaml",
"chars": 1701,
"preview": "apiVersion: v2\ndescription: kube-prometheus-stack collects Kubernetes manifests, Grafana dashboards, and Prometheus rule"
},
{
"path": "charts/charts/kube-prometheus-stack/README.md",
"chars": 26565,
"preview": "# kube-prometheus-stack\n\nInstalls the [kube-prometheus stack](https://github.com/prometheus-operator/kube-prometheus), a"
},
{
"path": "charts/charts/kube-prometheus-stack/ci/01-provision-crds-values.yaml",
"chars": 731,
"preview": "alertmanager:\n enabled: false\ncoreDns:\n enabled: false\nkubeApiServer:\n enabled: false\nkubeControllerManager:\n enable"
},
{
"path": "charts/charts/kube-prometheus-stack/ci/02-test-without-crds-values.yaml",
"chars": 171,
"preview": "prometheusOperator:\n namespaces:\n releaseNamespace: true\n additional:\n - kube-system\n\nprometheus-node-export"
},
{
"path": "charts/charts/kube-prometheus-stack/crds/crd-alertmanagerconfigs.yaml",
"chars": 144114,
"preview": "# https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.49.0/example/prometheus-operator-crd/moni"
},
{
"path": "charts/charts/kube-prometheus-stack/crds/crd-alertmanagers.yaml",
"chars": 297354,
"preview": "# https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.49.0/example/prometheus-operator-crd/moni"
},
{
"path": "charts/charts/kube-prometheus-stack/crds/crd-podmonitors.yaml",
"chars": 23765,
"preview": "# https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.49.0/example/prometheus-operator-crd/moni"
},
{
"path": "charts/charts/kube-prometheus-stack/crds/crd-probes.yaml",
"chars": 22751,
"preview": "# https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.49.0/example/prometheus-operator-crd/moni"
},
{
"path": "charts/charts/kube-prometheus-stack/crds/crd-prometheuses.yaml",
"chars": 398236,
"preview": "# https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.49.0/example/prometheus-operator-crd/moni"
},
{
"path": "charts/charts/kube-prometheus-stack/crds/crd-prometheusrules.yaml",
"chars": 4225,
"preview": "# https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.49.0/example/prometheus-operator-crd/moni"
},
{
"path": "charts/charts/kube-prometheus-stack/crds/crd-servicemonitors.yaml",
"chars": 25289,
"preview": "# https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.49.0/example/prometheus-operator-crd/moni"
},
{
"path": "charts/charts/kube-prometheus-stack/crds/crd-thanosrulers.yaml",
"chars": 304148,
"preview": "# https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.49.0/example/prometheus-operator-crd/moni"
},
{
"path": "charts/charts/kube-prometheus-stack/hack/README.md",
"chars": 3148,
"preview": "# kube-prometheus-stack hacks\n\n## [sync_prometheus_rules.py](sync_prometheus_rules.py)\n\nThis script generates prometheus"
},
{
"path": "charts/charts/kube-prometheus-stack/hack/minikube/README.md",
"chars": 377,
"preview": "# Testing on Minikube\n\nThe configuration in this folder lets you locally test the setup on minikube. Use cmd.sh to set u"
},
{
"path": "charts/charts/kube-prometheus-stack/hack/minikube/cmd.sh",
"chars": 3218,
"preview": "#!/usr/bin/env bash\n\nHELM_RELEASE_NAME=prom-op\nCHART=./\nNAMESPACE=monitoring\nVALUES_FILES=./hack/minikube/values.yaml\n\ni"
},
{
"path": "charts/charts/kube-prometheus-stack/hack/minikube/values.yaml",
"chars": 277,
"preview": "prometheus:\n prometheusSpec:\n secrets: [etcd-certs]\nkubeEtcd:\n serviceMonitor:\n scheme: https\n caFile: /etc"
},
{
"path": "charts/charts/kube-prometheus-stack/hack/requirements.txt",
"chars": 29,
"preview": "PyYAML==5.4\nrequests==2.22.0\n"
},
{
"path": "charts/charts/kube-prometheus-stack/hack/sync_grafana_dashboards.py",
"chars": 7852,
"preview": "#!/usr/bin/env python3\n\"\"\"Fetch dashboards from provided urls into this chart.\"\"\"\nimport json\nimport textwrap\nfrom os im"
},
{
"path": "charts/charts/kube-prometheus-stack/hack/sync_prometheus_rules.py",
"chars": 15694,
"preview": "#!/usr/bin/env python3\n\"\"\"Fetch alerting and aggregation rules from provided urls into this chart.\"\"\"\nimport textwrap\nfr"
},
{
"path": "charts/charts/kube-prometheus-stack/hack/update_crds.sh",
"chars": 1112,
"preview": "#!/bin/bash -eu\n\nVERSION=$1\n\n[ -z \"${VERSION}\" ] && echo \"Pass prometheus-operator version as first comandline argument\""
},
{
"path": "charts/charts/kube-prometheus-stack/templates/NOTES.txt",
"chars": 350,
"preview": "{{ $.Chart.Name }} has been installed. Check its status by running:\n kubectl --namespace {{ template \"kube-prometheus-s"
},
{
"path": "charts/charts/kube-prometheus-stack/templates/_helpers.tpl",
"chars": 5631,
"preview": "{{/* vim: set filetype=mustache: */}}\n{{/* Expand the name of the chart. This is suffixed with -alertmanager, which mean"
},
{
"path": "charts/charts/kube-prometheus-stack/templates/alertmanager/alertmanager.yaml",
"chars": 7091,
"preview": "{{- if .Values.alertmanager.enabled }}\napiVersion: monitoring.coreos.com/v1\nkind: Alertmanager\nmetadata:\n name: {{ temp"
},
{
"path": "charts/charts/kube-prometheus-stack/templates/alertmanager/ingress.yaml",
"chars": 2845,
"preview": "{{- if and .Values.alertmanager.enabled .Values.alertmanager.ingress.enabled }}\n{{- $pathType := .Values.alertmanager.in"
},
{
"path": "charts/charts/kube-prometheus-stack/templates/alertmanager/ingressperreplica.yaml",
"chars": 2982,
"preview": "{{- if and .Values.alertmanager.enabled .Values.alertmanager.servicePerReplica.enabled .Values.alertmanager.ingressPerRe"
},
{
"path": "charts/charts/kube-prometheus-stack/templates/alertmanager/podDisruptionBudget.yaml",
"chars": 895,
"preview": "{{- if and .Values.alertmanager.enabled .Values.alertmanager.podDisruptionBudget.enabled }}\napiVersion: policy/v1beta1\nk"
},
{
"path": "charts/charts/kube-prometheus-stack/templates/alertmanager/psp-role.yaml",
"chars": 833,
"preview": "{{- if and .Values.alertmanager.enabled .Values.global.rbac.create .Values.global.rbac.pspEnabled }}\nkind: Role\napiVersi"
},
{
"path": "charts/charts/kube-prometheus-stack/templates/alertmanager/psp-rolebinding.yaml",
"chars": 767,
"preview": "{{- if and .Values.alertmanager.enabled .Values.global.rbac.create .Values.global.rbac.pspEnabled }}\napiVersion: rbac.au"
},
{
"path": "charts/charts/kube-prometheus-stack/templates/alertmanager/psp.yaml",
"chars": 1472,
"preview": "{{- if and .Values.alertmanager.enabled .Values.global.rbac.create .Values.global.rbac.pspEnabled }}\napiVersion: policy/"
},
{
"path": "charts/charts/kube-prometheus-stack/templates/alertmanager/secret.yaml",
"chars": 930,
"preview": "{{- if and (.Values.alertmanager.enabled) (not .Values.alertmanager.alertmanagerSpec.useExistingSecret) }}\napiVersion: v"
},
{
"path": "charts/charts/kube-prometheus-stack/templates/alertmanager/service.yaml",
"chars": 1943,
"preview": "{{- if .Values.alertmanager.enabled }}\napiVersion: v1\nkind: Service\nmetadata:\n name: {{ template \"kube-prometheus-stack"
},
{
"path": "charts/charts/kube-prometheus-stack/templates/alertmanager/serviceaccount.yaml",
"chars": 840,
"preview": "{{- if and .Values.alertmanager.enabled .Values.alertmanager.serviceAccount.create }}\napiVersion: v1\nkind: ServiceAccoun"
},
{
"path": "charts/charts/kube-prometheus-stack/templates/alertmanager/servicemonitor.yaml",
"chars": 1974,
"preview": "{{- if and .Values.alertmanager.enabled .Values.alertmanager.serviceMonitor.selfMonitor }}\napiVersion: monitoring.coreos"
},
{
"path": "charts/charts/kube-prometheus-stack/templates/alertmanager/serviceperreplica.yaml",
"chars": 1881,
"preview": "{{- if and .Values.alertmanager.enabled .Values.alertmanager.servicePerReplica.enabled }}\n{{- $count := .Values.alertman"
},
{
"path": "charts/charts/kube-prometheus-stack/templates/exporters/core-dns/service.yaml",
"chars": 679,
"preview": "{{- if .Values.coreDns.enabled }}\napiVersion: v1\nkind: Service\nmetadata:\n name: {{ template \"kube-prometheus-stack.full"
},
{
"path": "charts/charts/kube-prometheus-stack/templates/exporters/core-dns/servicemonitor.yaml",
"chars": 1285,
"preview": "{{- if .Values.coreDns.enabled }}\napiVersion: monitoring.coreos.com/v1\nkind: ServiceMonitor\nmetadata:\n name: {{ templat"
},
{
"path": "charts/charts/kube-prometheus-stack/templates/exporters/kube-api-server/servicemonitor.yaml",
"chars": 1565,
"preview": "{{- if .Values.kubeApiServer.enabled }}\napiVersion: monitoring.coreos.com/v1\nkind: ServiceMonitor\nmetadata:\n name: {{ t"
},
{
"path": "charts/charts/kube-prometheus-stack/templates/exporters/kube-controller-manager/endpoints.yaml",
"chars": 679,
"preview": "{{- if and .Values.kubeControllerManager.enabled .Values.kubeControllerManager.endpoints }}\napiVersion: v1\nkind: Endpoin"
},
{
"path": "charts/charts/kube-prometheus-stack/templates/exporters/kube-controller-manager/service.yaml",
"chars": 954,
"preview": "{{- if and .Values.kubeControllerManager.enabled .Values.kubeControllerManager.service.enabled }}\napiVersion: v1\nkind: S"
},
{
"path": "charts/charts/kube-prometheus-stack/templates/exporters/kube-controller-manager/servicemonitor.yaml",
"chars": 2059,
"preview": "{{- if and .Values.kubeControllerManager.enabled .Values.kubeControllerManager.serviceMonitor.enabled }}\napiVersion: mon"
},
{
"path": "charts/charts/kube-prometheus-stack/templates/exporters/kube-dns/service.yaml",
"chars": 878,
"preview": "{{- if .Values.kubeDns.enabled }}\napiVersion: v1\nkind: Service\nmetadata:\n name: {{ template \"kube-prometheus-stack.full"
},
{
"path": "charts/charts/kube-prometheus-stack/templates/exporters/kube-dns/servicemonitor.yaml",
"chars": 1879,
"preview": "{{- if .Values.kubeDns.enabled }}\napiVersion: monitoring.coreos.com/v1\nkind: ServiceMonitor\nmetadata:\n name: {{ templat"
},
{
"path": "charts/charts/kube-prometheus-stack/templates/exporters/kube-etcd/endpoints.yaml",
"chars": 586,
"preview": "{{- if and .Values.kubeEtcd.enabled .Values.kubeEtcd.endpoints }}\napiVersion: v1\nkind: Endpoints\nmetadata:\n name: {{ te"
},
{
"path": "charts/charts/kube-prometheus-stack/templates/exporters/kube-etcd/service.yaml",
"chars": 803,
"preview": "{{- if and .Values.kubeEtcd.enabled .Values.kubeEtcd.service.enabled }}\napiVersion: v1\nkind: Service\nmetadata:\n name: {"
},
{
"path": "charts/charts/kube-prometheus-stack/templates/exporters/kube-etcd/servicemonitor.yaml",
"chars": 2085,
"preview": "{{- if and .Values.kubeEtcd.enabled .Values.kubeEtcd.serviceMonitor.enabled }}\napiVersion: monitoring.coreos.com/v1\nkind"
},
{
"path": "charts/charts/kube-prometheus-stack/templates/exporters/kube-proxy/endpoints.yaml",
"chars": 591,
"preview": "{{- if and .Values.kubeProxy.enabled .Values.kubeProxy.endpoints }}\napiVersion: v1\nkind: Endpoints\nmetadata:\n name: {{ "
},
{
"path": "charts/charts/kube-prometheus-stack/templates/exporters/kube-proxy/service.yaml",
"chars": 817,
"preview": "{{- if and .Values.kubeProxy.enabled .Values.kubeProxy.service.enabled }}\napiVersion: v1\nkind: Service\nmetadata:\n name:"
},
{
"path": "charts/charts/kube-prometheus-stack/templates/exporters/kube-proxy/servicemonitor.yaml",
"chars": 1517,
"preview": "{{- if and .Values.kubeProxy.enabled .Values.kubeProxy.serviceMonitor.enabled }}\napiVersion: monitoring.coreos.com/v1\nki"
},
{
"path": "charts/charts/kube-prometheus-stack/templates/exporters/kube-scheduler/endpoints.yaml",
"chars": 619,
"preview": "{{- if and .Values.kubeScheduler.enabled .Values.kubeScheduler.endpoints }}\napiVersion: v1\nkind: Endpoints\nmetadata:\n n"
},
{
"path": "charts/charts/kube-prometheus-stack/templates/exporters/kube-scheduler/service.yaml",
"chars": 861,
"preview": "{{- if and .Values.kubeScheduler.enabled .Values.kubeScheduler.service.enabled }}\napiVersion: v1\nkind: Service\nmetadata:"
},
{
"path": "charts/charts/kube-prometheus-stack/templates/exporters/kube-scheduler/servicemonitor.yaml",
"chars": 1909,
"preview": "{{- if and .Values.kubeScheduler.enabled .Values.kubeScheduler.serviceMonitor.enabled }}\napiVersion: monitoring.coreos.c"
},
{
"path": "charts/charts/kube-prometheus-stack/templates/exporters/kube-state-metrics/serviceMonitor.yaml",
"chars": 2412,
"preview": "{{- if .Values.kubeStateMetrics.enabled }}\napiVersion: monitoring.coreos.com/v1\nkind: ServiceMonitor\nmetadata:\n name: {"
},
{
"path": "charts/charts/kube-prometheus-stack/templates/exporters/kubelet/servicemonitor.yaml",
"chars": 6650,
"preview": "{{- if .Values.kubelet.enabled }}\napiVersion: monitoring.coreos.com/v1\nkind: ServiceMonitor\nmetadata:\n name: {{ templat"
},
{
"path": "charts/charts/kube-prometheus-stack/templates/exporters/node-exporter/servicemonitor.yaml",
"chars": 1550,
"preview": "{{- if .Values.nodeExporter.enabled }}\napiVersion: monitoring.coreos.com/v1\nkind: ServiceMonitor\nmetadata:\n name: {{ te"
},
{
"path": "charts/charts/kube-prometheus-stack/templates/grafana/configmap-dashboards.yaml",
"chars": 960,
"preview": "{{- if or (and .Values.grafana.enabled .Values.grafana.defaultDashboardsEnabled) .Values.grafana.forceDeployDashboards }"
},
{
"path": "charts/charts/kube-prometheus-stack/templates/grafana/configmaps-datasources.yaml",
"chars": 2107,
"preview": "{{- if or (and .Values.grafana.enabled .Values.grafana.sidecar.datasources.enabled) .Values.grafana.forceDeployDatasourc"
},
{
"path": "charts/charts/kube-prometheus-stack/templates/grafana/dashboards-1.14/alertmanager-overview.yaml",
"chars": 23457,
"preview": "{{- /*\nGenerated from 'alertmanager-overview' from https://raw.githubusercontent.com/prometheus-operator/kube-prometheus"
},
{
"path": "charts/charts/kube-prometheus-stack/templates/grafana/dashboards-1.14/apiserver.yaml",
"chars": 68044,
"preview": "{{- /*\nGenerated from 'apiserver' from https://raw.githubusercontent.com/prometheus-operator/kube-prometheus/main/manife"
},
{
"path": "charts/charts/kube-prometheus-stack/templates/grafana/dashboards-1.14/cluster-total.yaml",
"chars": 69051,
"preview": "{{- /*\nGenerated from 'cluster-total' from https://raw.githubusercontent.com/prometheus-operator/kube-prometheus/main/ma"
},
{
"path": "charts/charts/kube-prometheus-stack/templates/grafana/dashboards-1.14/controller-manager.yaml",
"chars": 44963,
"preview": "{{- /*\nGenerated from 'controller-manager' from https://raw.githubusercontent.com/prometheus-operator/kube-prometheus/ma"
},
{
"path": "charts/charts/kube-prometheus-stack/templates/grafana/dashboards-1.14/etcd.yaml",
"chars": 47051,
"preview": "{{- /*\nGenerated from 'etcd' from https://raw.githubusercontent.com/etcd-io/website/master/content/en/docs/v3.4/op-guide"
},
{
"path": "charts/charts/kube-prometheus-stack/templates/grafana/dashboards-1.14/k8s-coredns.yaml",
"chars": 42004,
"preview": "{{- /* Added manually, can be changed in-place. */ -}}\n{{- $kubeTargetVersion := default .Capabilities.KubeVersion.GitVe"
},
{
"path": "charts/charts/kube-prometheus-stack/templates/grafana/dashboards-1.14/k8s-resources-cluster.yaml",
"chars": 124663,
"preview": "{{- /*\nGenerated from 'k8s-resources-cluster' from https://raw.githubusercontent.com/prometheus-operator/kube-prometheus"
},
{
"path": "charts/charts/kube-prometheus-stack/templates/grafana/dashboards-1.14/k8s-resources-namespace.yaml",
"chars": 114883,
"preview": "{{- /*\nGenerated from 'k8s-resources-namespace' from https://raw.githubusercontent.com/prometheus-operator/kube-promethe"
},
{
"path": "charts/charts/kube-prometheus-stack/templates/grafana/dashboards-1.14/k8s-resources-node.yaml",
"chars": 40391,
"preview": "{{- /*\nGenerated from 'k8s-resources-node' from https://raw.githubusercontent.com/prometheus-operator/kube-prometheus/ma"
},
{
"path": "charts/charts/kube-prometheus-stack/templates/grafana/dashboards-1.14/k8s-resources-pod.yaml",
"chars": 100940,
"preview": "{{- /*\nGenerated from 'k8s-resources-pod' from https://raw.githubusercontent.com/prometheus-operator/kube-prometheus/mai"
},
{
"path": "charts/charts/kube-prometheus-stack/templates/grafana/dashboards-1.14/k8s-resources-workload.yaml",
"chars": 87047,
"preview": "{{- /*\nGenerated from 'k8s-resources-workload' from https://raw.githubusercontent.com/prometheus-operator/kube-prometheu"
},
{
"path": "charts/charts/kube-prometheus-stack/templates/grafana/dashboards-1.14/k8s-resources-workloads-namespace.yaml",
"chars": 95693,
"preview": "{{- /*\nGenerated from 'k8s-resources-workloads-namespace' from https://raw.githubusercontent.com/prometheus-operator/kub"
},
{
"path": "charts/charts/kube-prometheus-stack/templates/grafana/dashboards-1.14/kubelet.yaml",
"chars": 74157,
"preview": "{{- /*\nGenerated from 'kubelet' from https://raw.githubusercontent.com/prometheus-operator/kube-prometheus/main/manifest"
},
{
"path": "charts/charts/kube-prometheus-stack/templates/grafana/dashboards-1.14/namespace-by-pod.yaml",
"chars": 51958,
"preview": "{{- /*\nGenerated from 'namespace-by-pod' from https://raw.githubusercontent.com/prometheus-operator/kube-prometheus/main"
},
{
"path": "charts/charts/kube-prometheus-stack/templates/grafana/dashboards-1.14/namespace-by-workload.yaml",
"chars": 66532,
"preview": "{{- /*\nGenerated from 'namespace-by-workload' from https://raw.githubusercontent.com/prometheus-operator/kube-prometheus"
},
{
"path": "charts/charts/kube-prometheus-stack/templates/grafana/dashboards-1.14/node-cluster-rsrc-use.yaml",
"chars": 37838,
"preview": "{{- /*\nGenerated from 'node-cluster-rsrc-use' from https://raw.githubusercontent.com/prometheus-operator/kube-prometheus"
},
{
"path": "charts/charts/kube-prometheus-stack/templates/grafana/dashboards-1.14/node-rsrc-use.yaml",
"chars": 37902,
"preview": "{{- /*\nGenerated from 'node-rsrc-use' from https://raw.githubusercontent.com/prometheus-operator/kube-prometheus/main/ma"
},
{
"path": "charts/charts/kube-prometheus-stack/templates/grafana/dashboards-1.14/nodes.yaml",
"chars": 39094,
"preview": "{{- /*\nGenerated from 'nodes' from https://raw.githubusercontent.com/prometheus-operator/kube-prometheus/main/manifests/"
},
{
"path": "charts/charts/kube-prometheus-stack/templates/grafana/dashboards-1.14/persistentvolumesusage.yaml",
"chars": 23247,
"preview": "{{- /*\nGenerated from 'persistentvolumesusage' from https://raw.githubusercontent.com/prometheus-operator/kube-prometheu"
},
{
"path": "charts/charts/kube-prometheus-stack/templates/grafana/dashboards-1.14/pod-total.yaml",
"chars": 43203,
"preview": "{{- /*\nGenerated from 'pod-total' from https://raw.githubusercontent.com/prometheus-operator/kube-prometheus/main/manife"
},
{
"path": "charts/charts/kube-prometheus-stack/templates/grafana/dashboards-1.14/prometheus-remote-write.yaml",
"chars": 65171,
"preview": "{{- /*\nGenerated from 'prometheus-remote-write' from https://raw.githubusercontent.com/prometheus-operator/kube-promethe"
},
{
"path": "charts/charts/kube-prometheus-stack/templates/grafana/dashboards-1.14/prometheus.yaml",
"chars": 47914,
"preview": "{{- /*\nGenerated from 'prometheus' from https://raw.githubusercontent.com/prometheus-operator/kube-prometheus/main/manif"
},
{
"path": "charts/charts/kube-prometheus-stack/templates/grafana/dashboards-1.14/proxy.yaml",
"chars": 47941,
"preview": "{{- /*\nGenerated from 'proxy' from https://raw.githubusercontent.com/prometheus-operator/kube-prometheus/main/manifests/"
},
{
"path": "charts/charts/kube-prometheus-stack/templates/grafana/dashboards-1.14/scheduler.yaml",
"chars": 43648,
"preview": "{{- /*\nGenerated from 'scheduler' from https://raw.githubusercontent.com/prometheus-operator/kube-prometheus/main/manife"
},
{
"path": "charts/charts/kube-prometheus-stack/templates/grafana/dashboards-1.14/statefulset.yaml",
"chars": 37268,
"preview": "{{- /*\nGenerated from 'statefulset' from https://raw.githubusercontent.com/prometheus-operator/kube-prometheus/master/ma"
},
{
"path": "charts/charts/kube-prometheus-stack/templates/grafana/dashboards-1.14/workload-total.yaml",
"chars": 53428,
"preview": "{{- /*\nGenerated from 'workload-total' from https://raw.githubusercontent.com/prometheus-operator/kube-prometheus/main/m"
},
{
"path": "charts/charts/kube-prometheus-stack/templates/grafana/servicemonitor.yaml",
"chars": 1247,
"preview": "{{- if and .Values.grafana.enabled .Values.grafana.serviceMonitor.selfMonitor }}\napiVersion: monitoring.coreos.com/v1\nki"
},
{
"path": "charts/charts/kube-prometheus-stack/templates/prometheus/_rules.tpl",
"chars": 1065,
"preview": "{{- /*\nGenerated file. Do not change in-place! In order to change this file first read following link:\nhttps://github.co"
},
{
"path": "charts/charts/kube-prometheus-stack/templates/prometheus/additionalAlertRelabelConfigs.yaml",
"chars": 802,
"preview": "{{- if and .Values.prometheus.enabled .Values.prometheus.prometheusSpec.additionalAlertRelabelConfigs }}\napiVersion: v1\n"
},
{
"path": "charts/charts/kube-prometheus-stack/templates/prometheus/additionalAlertmanagerConfigs.yaml",
"chars": 785,
"preview": "{{- if and .Values.prometheus.enabled .Values.prometheus.prometheusSpec.additionalAlertManagerConfigs }}\napiVersion: v1\n"
},
{
"path": "charts/charts/kube-prometheus-stack/templates/prometheus/additionalPrometheusRules.yaml",
"chars": 1560,
"preview": "{{- if or .Values.additionalPrometheusRules .Values.additionalPrometheusRulesMap}}\napiVersion: v1\nkind: List\nmetadata:\n "
},
{
"path": "charts/charts/kube-prometheus-stack/templates/prometheus/additionalScrapeConfigs.yaml",
"chars": 783,
"preview": "{{- if and .Values.prometheus.enabled .Values.prometheus.prometheusSpec.additionalScrapeConfigs }}\napiVersion: v1\nkind: "
},
{
"path": "charts/charts/kube-prometheus-stack/templates/prometheus/clusterrole.yaml",
"chars": 966,
"preview": "{{- if and .Values.prometheus.enabled .Values.global.rbac.create }}\napiVersion: rbac.authorization.k8s.io/v1\nkind: Clust"
},
{
"path": "charts/charts/kube-prometheus-stack/templates/prometheus/clusterrolebinding.yaml",
"chars": 677,
"preview": "{{- if and .Values.prometheus.enabled .Values.global.rbac.create }}\napiVersion: rbac.authorization.k8s.io/v1\nkind: Clust"
},
{
"path": "charts/charts/kube-prometheus-stack/templates/prometheus/ingress.yaml",
"chars": 2825,
"preview": "{{- if and .Values.prometheus.enabled .Values.prometheus.ingress.enabled -}}\n {{- $pathType := .Values.prometheus.ingre"
},
{
"path": "charts/charts/kube-prometheus-stack/templates/prometheus/ingressThanosSidecar.yaml",
"chars": 2867,
"preview": "{{- if and .Values.prometheus.enabled .Values.prometheus.thanosIngress.enabled }}\n{{- $pathType := .Values.prometheus.th"
},
{
"path": "charts/charts/kube-prometheus-stack/templates/prometheus/ingressperreplica.yaml",
"chars": 2966,
"preview": "{{- if and .Values.prometheus.enabled .Values.prometheus.servicePerReplica.enabled .Values.prometheus.ingressPerReplica."
},
{
"path": "charts/charts/kube-prometheus-stack/templates/prometheus/podDisruptionBudget.yaml",
"chars": 894,
"preview": "{{- if and .Values.prometheus.enabled .Values.prometheus.podDisruptionBudget.enabled }}\napiVersion: policy/v1beta1\nkind:"
},
{
"path": "charts/charts/kube-prometheus-stack/templates/prometheus/podmonitors.yaml",
"chars": 1107,
"preview": "{{- if and .Values.prometheus.enabled .Values.prometheus.additionalPodMonitors }}\napiVersion: v1\nkind: List\nitems:\n{{- r"
},
{
"path": "charts/charts/kube-prometheus-stack/templates/prometheus/prometheus.yaml",
"chars": 15479,
"preview": "{{- if .Values.prometheus.enabled }}\napiVersion: monitoring.coreos.com/v1\nkind: Prometheus\nmetadata:\n name: {{ template"
},
{
"path": "charts/charts/kube-prometheus-stack/templates/prometheus/psp-clusterrole.yaml",
"chars": 772,
"preview": "{{- if and .Values.prometheus.enabled .Values.global.rbac.create .Values.global.rbac.pspEnabled }}\nkind: ClusterRole\napi"
},
{
"path": "charts/charts/kube-prometheus-stack/templates/prometheus/psp-clusterrolebinding.yaml",
"chars": 716,
"preview": "{{- if and .Values.prometheus.enabled .Values.global.rbac.create .Values.global.rbac.pspEnabled }}\napiVersion: rbac.auth"
},
{
"path": "charts/charts/kube-prometheus-stack/templates/prometheus/psp.yaml",
"chars": 1955,
"preview": "{{- if and .Values.prometheus.enabled .Values.global.rbac.create .Values.global.rbac.pspEnabled }}\napiVersion: policy/v1"
},
{
"path": "charts/charts/kube-prometheus-stack/templates/prometheus/rules-1.14/alertmanager.rules.yaml",
"chars": 9268,
"preview": "{{- /*\nGenerated from 'alertmanager.rules' group from https://raw.githubusercontent.com/prometheus-operator/kube-prometh"
},
{
"path": "charts/charts/kube-prometheus-stack/templates/prometheus/rules-1.14/etcd.yaml",
"chars": 8670,
"preview": "{{- /*\nGenerated from 'etcd' group from https://raw.githubusercontent.com/etcd-io/website/master/content/en/docs/v3.4/op"
},
{
"path": "charts/charts/kube-prometheus-stack/templates/prometheus/rules-1.14/general.rules.yaml",
"chars": 2831,
"preview": "{{- /*\nGenerated from 'general.rules' group from https://raw.githubusercontent.com/prometheus-operator/kube-prometheus/m"
},
{
"path": "charts/charts/kube-prometheus-stack/templates/prometheus/rules-1.14/k8s.rules.yaml",
"chars": 7900,
"preview": "{{- /*\nGenerated from 'k8s.rules' group from https://raw.githubusercontent.com/prometheus-operator/kube-prometheus/main/"
},
{
"path": "charts/charts/kube-prometheus-stack/templates/prometheus/rules-1.14/kube-apiserver-availability.rules.yaml",
"chars": 6270,
"preview": "{{- /*\nGenerated from 'kube-apiserver-availability.rules' group from https://raw.githubusercontent.com/prometheus-operat"
},
{
"path": "charts/charts/kube-prometheus-stack/templates/prometheus/rules-1.14/kube-apiserver-burnrate.rules.yaml",
"chars": 13878,
"preview": "{{- /*\nGenerated from 'kube-apiserver-burnrate.rules' group from https://raw.githubusercontent.com/prometheus-operator/k"
},
{
"path": "charts/charts/kube-prometheus-stack/templates/prometheus/rules-1.14/kube-apiserver-histogram.rules.yaml",
"chars": 2936,
"preview": "{{- /*\nGenerated from 'kube-apiserver-histogram.rules' group from https://raw.githubusercontent.com/prometheus-operator/"
},
{
"path": "charts/charts/kube-prometheus-stack/templates/prometheus/rules-1.14/kube-apiserver-slos.yaml",
"chars": 3953,
"preview": "{{- /*\nGenerated from 'kube-apiserver-slos' group from https://raw.githubusercontent.com/prometheus-operator/kube-promet"
},
{
"path": "charts/charts/kube-prometheus-stack/templates/prometheus/rules-1.14/kube-apiserver.rules.yaml",
"chars": 15999,
"preview": "{{- /*\nGenerated from 'kube-apiserver.rules' group from https://raw.githubusercontent.com/prometheus-operator/kube-prome"
},
{
"path": "charts/charts/kube-prometheus-stack/templates/prometheus/rules-1.14/kube-prometheus-general.rules.yaml",
"chars": 1517,
"preview": "{{- /*\nGenerated from 'kube-prometheus-general.rules' group from https://raw.githubusercontent.com/prometheus-operator/k"
},
{
"path": "charts/charts/kube-prometheus-stack/templates/prometheus/rules-1.14/kube-prometheus-node-recording.rules.yaml",
"chars": 2323,
"preview": "{{- /*\nGenerated from 'kube-prometheus-node-recording.rules' group from https://raw.githubusercontent.com/prometheus-ope"
},
{
"path": "charts/charts/kube-prometheus-stack/templates/prometheus/rules-1.14/kube-scheduler.rules.yaml",
"chars": 3829,
"preview": "{{- /*\nGenerated from 'kube-scheduler.rules' group from https://raw.githubusercontent.com/prometheus-operator/kube-prome"
},
{
"path": "charts/charts/kube-prometheus-stack/templates/prometheus/rules-1.14/kube-state-metrics.yaml",
"chars": 4421,
"preview": "{{- /*\nGenerated from 'kube-state-metrics' group from https://raw.githubusercontent.com/prometheus-operator/kube-prometh"
},
{
"path": "charts/charts/kube-prometheus-stack/templates/prometheus/rules-1.14/kubelet.rules.yaml",
"chars": 2292,
"preview": "{{- /*\nGenerated from 'kubelet.rules' group from https://raw.githubusercontent.com/prometheus-operator/kube-prometheus/m"
},
{
"path": "charts/charts/kube-prometheus-stack/templates/prometheus/rules-1.14/kubernetes-apps.yaml",
"chars": 16014,
"preview": "{{- /*\nGenerated from 'kubernetes-apps' group from https://raw.githubusercontent.com/prometheus-operator/kube-prometheus"
},
{
"path": "charts/charts/kube-prometheus-stack/templates/prometheus/rules-1.14/kubernetes-resources.yaml",
"chars": 7462,
"preview": "{{- /*\nGenerated from 'kubernetes-resources' group from https://raw.githubusercontent.com/prometheus-operator/kube-prome"
},
{
"path": "charts/charts/kube-prometheus-stack/templates/prometheus/rules-1.14/kubernetes-storage.yaml",
"chars": 4350,
"preview": "{{- /*\nGenerated from 'kubernetes-storage' group from https://raw.githubusercontent.com/prometheus-operator/kube-prometh"
},
{
"path": "charts/charts/kube-prometheus-stack/templates/prometheus/rules-1.14/kubernetes-system-apiserver.yaml",
"chars": 5590,
"preview": "{{- /*\nGenerated from 'kubernetes-system-apiserver' group from https://raw.githubusercontent.com/prometheus-operator/kub"
}
]
// ... and 480 more files (download for full content)
About this extraction
This page contains the full source code of the kstone-io/kstone GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 680 files (4.8 MB), approximately 1.3M tokens, and a symbol index with 1787 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.
Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.