kubeadm_test.go 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. // Copyright 2019 Yunion
  2. //
  3. // Licensed under the Apache License, Version 2.0 (the "License");
  4. // you may not use this file except in compliance with the License.
  5. // You may obtain a copy of the License at
  6. //
  7. // http://www.apache.org/licenses/LICENSE-2.0
  8. //
  9. // Unless required by applicable law or agreed to in writing, software
  10. // distributed under the License is distributed on an "AS IS" BASIS,
  11. // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  12. // See the License for the specific language governing permissions and
  13. // limitations under the License.
  14. package kubeadm
  15. import (
  16. "testing"
  17. "github.com/stretchr/testify/assert"
  18. v1 "k8s.io/api/core/v1"
  19. "k8s.io/client-go/kubernetes/scheme"
  20. )
  21. func TestGetClusterConfigurationFromConfigMap(t *testing.T) {
  22. testData := `apiVersion: v1
  23. data:
  24. ClusterConfiguration: |
  25. apiServer:
  26. extraArgs:
  27. default-not-ready-toleration-seconds: "10"
  28. default-unreachable-toleration-seconds: "10"
  29. timeoutForControlPlane: 4m0s
  30. apiVersion: kubeadm.k8s.io/v1beta2
  31. certificatesDir: /etc/kubernetes/pki
  32. clusterName: kubernetes
  33. controlPlaneEndpoint: 10.168.26.182:6443
  34. controllerManager:
  35. extraArgs:
  36. node-monitor-grace-period: 16s
  37. node-monitor-period: 2s
  38. dns:
  39. type: CoreDNS
  40. etcd:
  41. local:
  42. dataDir: /var/lib/etcd
  43. imageTag: 3.4.6
  44. imageRepository: registry.cn-beijing.aliyuncs.com/yunionio
  45. kind: ClusterConfiguration
  46. kubernetesVersion: v1.15.8
  47. networking:
  48. dnsDomain: cluster.local
  49. podSubnet: 10.40.0.0/16
  50. serviceSubnet: 10.96.0.0/12
  51. scheduler: {}
  52. ClusterStatus: |
  53. apiEndpoints:
  54. lzx-oc-node:
  55. advertiseAddress: 10.168.26.182
  56. bindPort: 6443
  57. apiVersion: kubeadm.k8s.io/v1beta2
  58. kind: ClusterStatus
  59. kind: ConfigMap
  60. metadata:
  61. creationTimestamp: "2020-03-12T10:26:20Z"
  62. name: kubeadm-config
  63. namespace: kube-system
  64. resourceVersion: "74686202"
  65. selfLink: /api/v1/namespaces/kube-system/configmaps/kubeadm-config
  66. uid: 75d3fb7b-2f60-4355-9d01-8d8f9076bf2e`
  67. d := scheme.Codecs.UniversalDeserializer()
  68. obj, _, err := d.Decode([]byte(testData), nil, nil)
  69. if err != nil {
  70. t.Fatalf("Decode configMap data %s", testData)
  71. }
  72. cfgMap := obj.(*v1.ConfigMap)
  73. assert := assert.New(t)
  74. config, err := GetClusterConfigurationFromConfigMap(cfgMap)
  75. assert.Nil(err)
  76. assert.Equal(config, &ClusterConfiguration{
  77. ControlPlaneEndpoint: "10.168.26.182:6443",
  78. KubernetesVersion: "v1.15.8",
  79. })
  80. }