basic k8s client
This commit is contained in:
parent
3fbff92ed8
commit
0fc2a423cb
|
|
@ -1 +1,2 @@
|
||||||
.idea
|
.idea
|
||||||
|
out
|
||||||
|
|
@ -0,0 +1,4 @@
|
||||||
|
FROM alpine:latest
|
||||||
|
COPY out/manager /manager
|
||||||
|
RUN chmod +x /manager
|
||||||
|
ENTRYPOINT /manager
|
||||||
|
|
@ -0,0 +1,7 @@
|
||||||
|
IMAGE_TAG ?= docker.educg.net/k8s/manager:dev
|
||||||
|
|
||||||
|
build:
|
||||||
|
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -o out/manager
|
||||||
|
|
||||||
|
docker: build
|
||||||
|
docker build --rm -t $(IMAGE_TAG) .
|
||||||
21
README.md
21
README.md
|
|
@ -1 +1,20 @@
|
||||||
# Kubernetes 管理系统
|
# Kubernetes 管理系统
|
||||||
|
|
||||||
|
|
||||||
|
## 获得Token
|
||||||
|
```bash
|
||||||
|
kubectl create serviceaccount -n default dev
|
||||||
|
kubectl create clusterrolebinding dev -n default --clusterrole=cluster-admin --serviceaccount=default:dev
|
||||||
|
|
||||||
|
kubectl apply -f - <<EOF
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Secret
|
||||||
|
metadata:
|
||||||
|
name: dev-secret
|
||||||
|
annotations:
|
||||||
|
kubernetes.io/service-account.name: dev
|
||||||
|
type: kubernetes.io/service-account-token
|
||||||
|
EOF
|
||||||
|
|
||||||
|
kubectl get secret dev-secret -o yaml
|
||||||
|
```
|
||||||
|
|
@ -0,0 +1,25 @@
|
||||||
|
apiVersion: apps/v1
|
||||||
|
kind: Deployment
|
||||||
|
metadata:
|
||||||
|
name: k8s-manager-deployment
|
||||||
|
labels:
|
||||||
|
app: k8s-manager
|
||||||
|
spec:
|
||||||
|
replicas: 1
|
||||||
|
selector:
|
||||||
|
matchLabels:
|
||||||
|
app: k8s-manager
|
||||||
|
template:
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
app: k8s-manager
|
||||||
|
spec:
|
||||||
|
serviceAccountName: dev
|
||||||
|
containers:
|
||||||
|
- name: k8s-manager-pod
|
||||||
|
image: docker.educg.net/k8s/manager:dev
|
||||||
|
ports:
|
||||||
|
- containerPort: 8080
|
||||||
|
---
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Service
|
||||||
1
main.go
1
main.go
|
|
@ -14,6 +14,7 @@ import (
|
||||||
var f embed.FS
|
var f embed.FS
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
|
go m.ListPods()
|
||||||
r := gin.Default()
|
r := gin.Default()
|
||||||
|
|
||||||
r.SetFuncMap(template.FuncMap{
|
r.SetFuncMap(template.FuncMap{
|
||||||
|
|
|
||||||
|
|
@ -2,53 +2,47 @@ package k8s_manager
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
|
"fmt"
|
||||||
log "github.com/sirupsen/logrus"
|
log "github.com/sirupsen/logrus"
|
||||||
appv1 "k8s.io/api/apps/v1"
|
appv1 "k8s.io/api/apps/v1"
|
||||||
corev1 "k8s.io/api/core/v1"
|
corev1 "k8s.io/api/core/v1"
|
||||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||||
|
"time"
|
||||||
|
|
||||||
"k8s.io/client-go/kubernetes"
|
"k8s.io/client-go/kubernetes"
|
||||||
"k8s.io/client-go/rest"
|
"k8s.io/client-go/rest"
|
||||||
"strings"
|
"strings"
|
||||||
"sync"
|
"sync"
|
||||||
"time"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
var (
|
func ListPods() {
|
||||||
BearerToken = "eyJhbGciOiJSUzI1NiIsImtpZCI6IllVaFlLMVBVYmFBZXRydXdCUnM0M1RtNGhIOTZQTWRoY05wbUg5dldIdTAifQ.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJkZWZhdWx0Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9zZWNyZXQubmFtZSI6ImRldi10b2tlbi1yMmZkcSIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VydmljZS1hY2NvdW50Lm5hbWUiOiJkZXYiLCJrdWJlcm5ldGVzLmlvL3NlcnZpY2VhY2NvdW50L3NlcnZpY2UtYWNjb3VudC51aWQiOiIyZDQ3ZDA5NS02ZmExLTQ2NmQtYjI5NS02MGU1YWRlZDQ1ODUiLCJzdWIiOiJzeXN0ZW06c2VydmljZWFjY291bnQ6ZGVmYXVsdDpkZXYifQ.MxixZYYcsVqxjy30o9romQK0nt5qn-rcXnnbz383KDCdsiaDgSszQoARDiS3QdH7iAC5-g81s6QujJdJ882Bh03JTtPUtNVmphFWyJgOCgUUb3S_r9M_t0du8DzIkVPZ-IEM1PoOMuaOmB5zpZAgnihIlZ5souDefAKc0Vni5Yvpn8_joGKzcidG-1ObjRCaxEondcFpYPyB2Aigs2ITTqggdYIJNQaAWc7pkyHtSkJUH8s4w244_ksb-QG-ULI-rKNAdy4dvbecyP3wyRefICv3MWYnKFkXn3EAWvvyt33w-ur8VAoL78L0HlEXr-j0Qw9WOrjM8ObiJCIir2zGsA"
|
var err error
|
||||||
|
config, err := rest.InClusterConfig()
|
||||||
|
if err != nil {
|
||||||
|
log.WithError(err).Error("InClusterConfig")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
CAPEMString = `-----BEGIN CERTIFICATE-----
|
client, err := kubernetes.NewForConfig(config)
|
||||||
MIIC5zCCAc+gAwIBAgIBATANBgkqhkiG9w0BAQsFADAVMRMwEQYDVQQDEwptaW5p
|
if err != nil {
|
||||||
a3ViZUNBMB4XDTIwMDgxNDA5MDEzMFoXDTMwMDgxMzA5MDEzMFowFTETMBEGA1UE
|
log.WithError(err).Error("NewForConfig")
|
||||||
AxMKbWluaWt1YmVDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKxS
|
}
|
||||||
S5ascXta6AUnQ7ZROEKrqhaihSVbRuIOfW8H/DUjMigeeRaR6T4DYvypQS8E2LGk
|
for {
|
||||||
tz7330dWW0i+mqhBSJiiOpUgTD4mgIsiFYqI5gqb0swHnkQvfV3c+J3YY/zRQkIo
|
pods, err := client.CoreV1().Pods("").List(context.Background(), metav1.ListOptions{})
|
||||||
D9qxs5xVdk0dX/A7sBPBNe4VUlSN3IwZSuLj0bke9/RiNYR3lhGMnpwFyTUnwTh8
|
if err != nil {
|
||||||
qF6MkHGByezIQiDMB7KGFAjQ+FTE43oxQljxWPh+RggKr7JaSSzjYwcYWi8myou6
|
fmt.Println(err)
|
||||||
5GdqhiZWm1k5yuFlW0j8r/N322eZzzIPHm7IvLPQEmHHX8cwRU+vpDz1SRJCC+Jl
|
} else {
|
||||||
mSC5ZJNAHf4kBkGP0FECAwEAAaNCMEAwDgYDVR0PAQH/BAQDAgKkMB0GA1UdJQQW
|
fmt.Printf("There are %d pods in the cluster\n", len(pods.Items))
|
||||||
MBQGCCsGAQUFBwMCBggrBgEFBQcDATAPBgNVHRMBAf8EBTADAQH/MA0GCSqGSIb3
|
}
|
||||||
DQEBCwUAA4IBAQATtMQJm0dnp6fzsy1XjBk/cERcHLKX1U20lUDdrWpE2Yxi5/aX
|
time.Sleep(10 * time.Second)
|
||||||
4i3F5CyL4hipKRKIaNJB9+RcCC+YowCbU6OybMsZQTml2e95XBIm15gckGBOMyyL
|
}
|
||||||
RsTImQrIjOV9tXIl3HUmAX3BSAEEdofv/9qfD4MmSmL++H2HvEB7xHjFzCKWaY/v
|
}
|
||||||
oPOWixQPOpL2YvsbwWQXVZxlZOekvDrJEQpJICGXto2B+bQ42SEGiJc3bzOMYPkD
|
|
||||||
cMR4w7ycdyRnIsUjGxsGcconEY/qtcWa8hlgPFls460HFI7Rw9DH6/LWGtHeHbtj
|
|
||||||
EsvUv758JsqECbzdwaHKY4CCxjPDtN6DTOtU
|
|
||||||
-----END CERTIFICATE-----`
|
|
||||||
)
|
|
||||||
|
|
||||||
func main() {
|
func fake_main() {
|
||||||
wg := sync.WaitGroup{}
|
wg := sync.WaitGroup{}
|
||||||
|
config, err := rest.InClusterConfig()
|
||||||
|
|
||||||
tlsClientConfig := rest.TLSClientConfig{
|
clientSet, err := kubernetes.NewForConfig(config)
|
||||||
CAData: []byte(CAPEMString),
|
|
||||||
}
|
|
||||||
config := rest.Config{
|
|
||||||
Host: "minikube.local:8443",
|
|
||||||
BearerToken: BearerToken,
|
|
||||||
TLSClientConfig: tlsClientConfig,
|
|
||||||
Timeout: 20 * time.Second,
|
|
||||||
}
|
|
||||||
clientSet, err := kubernetes.NewForConfig(&config)
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Println(err)
|
log.Println(err)
|
||||||
return
|
return
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue