|
- package main
-
- import (
- "context"
- "fmt"
- "github.com/pkg/errors"
- corev1 "k8s.io/api/core/v1"
- "k8s.io/apimachinery/pkg/api/resource"
- metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
- "k8s.io/client-go/kubernetes"
- "k8s.io/client-go/tools/clientcmd"
- "k8s.io/client-go/tools/clientcmd/api"
- )
-
- const (
- apiVersion = "client.authentication.k8s.io/v1beta1"
- cciEndpoint = "https://cci.cn-east-3.myhuaweicloud.com"
- iamEndpoint = "https://iam.cn-east-3.myhuaweicloud.com"
- projectName = "cn-east-3"
- ak = ""
- sk = ""
- )
-
- // NewClientOrigin 通过AK/SK认证创建ClientSet
- func NewClientOrigin() (*kubernetes.Clientset, error) {
- config, err := clientcmd.BuildConfigFromFlags(cciEndpoint, "")
- if err != nil {
- return nil, err
- }
- var optionArgs []string
- optionArgs = append(optionArgs, fmt.Sprintf("--iam-endpoint=%s", iamEndpoint))
- optionArgs = append(optionArgs, fmt.Sprintf("--project-name=%s", projectName))
- optionArgs = append(optionArgs, fmt.Sprintf("--token-only=false"))
- optionArgs = append(optionArgs, fmt.Sprintf("--ak=%s", ak))
- optionArgs = append(optionArgs, fmt.Sprintf("--sk=%s", sk))
- config.ExecProvider = &api.ExecConfig{
- Command: "cci-iam-authenticator",
- APIVersion: apiVersion,
- Args: append([]string{"token"}, optionArgs...),
- Env: make([]api.ExecEnvVar, 0),
- }
- return kubernetes.NewForConfig(config)
- }
-
- func CreatePodOrigin(client *kubernetes.Clientset) (*corev1.Pod, error) {
-
- pod := corev1.Pod{
- TypeMeta: metav1.TypeMeta{
- APIVersion: "core/V1",
- Kind: "Pod",
- },
- ObjectMeta: metav1.ObjectMeta{
- Name: "hw-sdk-test",
- Namespace: "pcm",
- Labels: map[string]string{"name": "test_api"},
- },
- Spec: corev1.PodSpec{
- RestartPolicy: corev1.RestartPolicyAlways,
- Containers: []corev1.Container{
- {
- Name: "pcm-sdk-huawei-container",
- Image: "library/nginx:stable-alpine-perl",
- Resources: corev1.ResourceRequirements{
- Limits: map[corev1.ResourceName]resource.Quantity{
- corev1.ResourceCPU: resource.MustParse("500m"),
- corev1.ResourceMemory: resource.MustParse("1Gi"),
- },
- },
- },
- },
- },
- Status: corev1.PodStatus{},
- }
-
- resp, err := client.CoreV1().Pods("pcm").Create(context.TODO(), &pod, metav1.CreateOptions{})
- if err != nil {
- return nil, errors.Wrap(err, "Huaweiyun CreatePod error")
- }
-
- return &corev1.Pod{
- TypeMeta: resp.TypeMeta,
- ObjectMeta: resp.ObjectMeta,
- Spec: resp.Spec,
- Status: resp.Status,
- }, nil
- }
-
- // UpdatePodOrigin 删除Pod
- func UpdatePodOrigin(client *kubernetes.Clientset) error {
- pod := corev1.Pod{
- TypeMeta: metav1.TypeMeta{
- APIVersion: "core/V1",
- Kind: "Pod",
- },
- ObjectMeta: metav1.ObjectMeta{
- Name: "hw-sdk-test",
- Namespace: "pcm",
- Labels: map[string]string{"name": "test_api222"},
- },
- Spec: corev1.PodSpec{
- RestartPolicy: corev1.RestartPolicyAlways,
- Containers: []corev1.Container{
- {
- Name: "pcm-sdk-huawei-container2",
- Image: "library/nginx:stable-alpine-perl",
- Resources: corev1.ResourceRequirements{
- Limits: map[corev1.ResourceName]resource.Quantity{
- corev1.ResourceCPU: resource.MustParse("1000m"),
- corev1.ResourceMemory: resource.MustParse("2Gi"),
- },
- },
- },
- },
- },
- Status: corev1.PodStatus{},
- }
-
- client.CoreV1().Pods("pcm").Update(context.TODO(), &pod, metav1.UpdateOptions{})
- return nil
- }
-
- // DeletePodOrigin 删除Pod
- func DeletePodOrigin(client *kubernetes.Clientset) error {
- return client.CoreV1().Pods("pcm").Delete(context.TODO(), "hw-sdk-test", metav1.DeleteOptions{})
- }
-
- // ListPodOrigin 查询Pod
- func ListPodOrigin(client *kubernetes.Clientset) (*corev1.PodList, error) {
-
- podList, _ := client.CoreV1().Pods("pcm").List(context.TODO(), metav1.ListOptions{})
- println(podList.Items[0].Name)
- return podList, nil
- }
- func main() {
-
- cs, _ := NewClientOrigin()
-
- //CreatePodOrigin(cs)
- //ListPodOrigin(cs)
- //UpdatePodOrigin(cs)
- DeletePodOrigin(cs)
-
- }
|