關于我們
更多關于云原生的案例和知識,可關注同名【騰訊云原生】公眾號~
福利:
①公眾號后臺回復【手冊】,可獲得《騰訊云原生路線圖手冊》&《騰訊云原生最佳實踐》~
②公眾號后臺回復【系列】,可獲得《15個系列100+篇超實用云原生原創干貨合集》,包含Kubernetes 降本增效、K8s 性能優化實踐、最佳實踐等系列,
③公眾號后臺回復【白皮書】,可獲得《騰訊云容器安全白皮書》&《降本之源-云原生成本管理白皮書v1.0》
④公眾號后臺回復【光速入門】,可獲得騰訊云專家5萬字精華教程,光速入門Prometheus和Grafana,
作者
王龍,騰訊云后臺開發工程師,負責 TKEStack 的設計開發維護及混合云專案相關作業,
前言
TKEStack 是一個開源的企業級容器云平臺,結合最前沿的先進技術,提供高度可擴展的高性能容器管理服務,可以讓您輕松地在任何地方運行 Kubernetes、滿足 IT 需求并為 DevOps 團隊賦能,
TKEStack 提供了豐富的組件實作用戶管理、訪問策略管理、集群管理、業務管理、監控、日志、私有鏡像庫等功能,這也相應地增加了在本地安裝 TKEStack 的時間,對于部分用戶來說,可能只需要 TKEStack 的用戶管理、集群管理、控制臺訪問等核心功能,但也要付出一樣的時間成本,另外,TKEStack 安裝程序中會在裸機上部署 global 集群,并通過 global 集群管理獨立集群和匯入集群的生命周期,因此對于已有的 K8s 集群,用戶無法對其安裝集成 TKEStack,
基于上述背景,TKEStack 在最新的 v1.9.0 release 中,支持了輕量化安裝場景,輕量化安裝打破了需要新建 global 集群的限制,實作了在用戶已有的 K8s 集群上直接集成 TKESatck 的用戶管理、集群管理、控制臺訪問等核心功能,用戶由此可以通過前端可視化頁面,查看并管理集群的基本資訊、作業節點、命名空間、作業負載等各種資源,除此之外,通過設定自定義訪問策略,打破了”單租戶“的限制,用戶可以實作對集群靈活的權限控制,
前置要求
本文介紹的內容是建立在已有一個正常運行的 K8s 集群的基礎上,并且以下的操作需要在 master 節點上進行,如果沒有 K8s 集群,可以通過 kind 創建本地集群并進行以下的操作,
本文介紹的內容需要通過 helm 安裝 TKEStack 的核心組件,可參考 安裝手冊 安裝 helm,
輕量化安裝 TKEStack
準備安裝檔案
通過如下命令拉取 TKEStack 的最新代碼:
git clone https://github.com/tkestack/tke.git
創建本地集群(已有本地集群的可跳過該步驟)
如果用戶本地沒有 K8s 集群,可通過 kind 進行創建,由于 kind 創建的集群實際運行在鏡像容器中,為了確保 TKEStack 核心組件的埠能夠從容器外部正常訪問,切換到 TKEStack 代碼的 hack/lightweight-install/ 目錄,執行如下命令創建集群:
kind create cluster --config kindConfig.yaml --name {your cluster name}
創建指定 namespace
tke-auth、tke-platform、tke-gateway 三個核心組件需要運行在指定的 namespace 下,執行如下命令:
kubectl create namespace tke
安裝 chart
TKEStack 提供了 chart 檔案來安裝 tke-auth、tke-platform、tke-gateway 三個核心組件,
切換到 TKEStack 代碼的 hack/lightweight-install/ 目錄,編譯二進制執行檔案,用于生成安裝 chart 檔案所需的 yaml 檔案:
go build -o gen
在 TKEStack 代碼的 hack/lightweight-install/ 目錄放置了需要填寫的 yaml 檔案 customConfig.yaml,customConfig.yaml 檔案中一些注釋“必填”的引數,需要填寫,其余的引數可根據需要選填,選填部分為空時會自動填充默認值,
customConfig.yaml 內容如下:
# 必填,etcd 訪問地址,形式如 https://172.19.0.2:2379
etcd:
host: https://172.18.0.2:2379
# 必填,服務器內網 IP,陣列形式
serverIPs:
- 172.18.0.2
# 必填,公網可訪問的 IP 地址以及要使用的域名,陣列形式
dnsNames:
- tke.gateway
# 必填,集群 front-proxy-ca.crt 檔案地址,默認位置為 /etc/kubernetes/pki/front-proxy-ca.crt
frontProxyCaCrtAbsPath: /etc/kubernetes/pki/front-proxy-ca.crt
# 必填,集群 etcd 的 ca.crt 檔案地址,默認位置為 /etc/kubernetes/pki/etcd/ca.crt
etcdCrtAbsPath: /etc/kubernetes/pki/etcd/ca.crt
# 必填,集群 etcd 的 ca.key檔案地址,默認位置為 /etc/kubernetes/pki/etcd/ca.key
etcdKeyAbsPath: /etc/kubernetes/pki/etcd/ca.key
tke-auth:
api:
# 必填
replicas: 1
# 必填
image: tkestack/tke-auth-api-amd64:74592a3bceb5bebca602bea21aaebf78007a3bb2
# 必填,陣列形式,auth 的重定向訪問地址,包括集群服務器 IP 地址(必填)、tke-gateway 的域名(可選)、集群高可用的 VIP 地址(可選,有的話需要填寫)和集群的公共可訪問域名(可選,有的話需要填寫)
redirectHosts:
- 172.18.0.2
enableAudit:
# tke-auth-api 組件在 node 上的對外暴露埠,默認31138
nodePort:
# 集群的租戶 id,默認 default
tenantID:
# OIDC 認證方式的 secret,默認自動生成
oIDCClientSecret:
# authentication 用戶名,默認為 admin
adminUsername:
controller:
# 必填
replicas: 1
# 必填
image: tkestack/tke-auth-controller-amd64:74592a3bceb5bebca602bea21aaebf78007a3bb2
# 控制臺登陸的用戶名,默認為 admin
adminUsername:
# 控制臺登陸的密碼,默認自動生成
adminPassword:
tke-platform:
# 必填,VIP 或者公網可訪問的集群 IP
publicIP:
metricsServerImage: metrics-server:v0.3.6
addonResizerImage: addon-resizer:1.8.11
api:
# 必填
replicas: 1
# 必填
image: tkestack/tke-platform-api-amd64:bc48bed59bff2022d87db5e1484481715357ee7c
enableAuth: true
enableAudit:
# OIDC 認證方式客戶端 id,默認為 default
oIDCClientID:
# OIDC 認證方式的 issuer_url,默認為 https://tke-auth-api/oidc
oIDCIssuerURL:
# 是否開啟 OIDC 認證,默認不開啟,值為空
useOIDCCA:
controller:
# 必填
replicas: 1
# 必填
providerResImage: tkestack/provider-res-amd64:v1.21.4-1
# 必填
image: tkestack/tke-platform-controller-amd64:bc48bed59bff2022d87db5e1484481715357ee7c
# 默認為 docker.io
registryDomain:
# 默認為 tkestack
registryNamespace:
# 監控存盤型別,默認為 influxdb
monitorStorageType:
# 監控存盤地址,默認為集群 master IP 地址加8086埠
monitorStorageAddresses:
tke-gateway:
# 必填
image: tkestack/tke-gateway-amd64:bc48bed59bff2022d87db5e1484481715357ee7c
# 默認為 docker.io
registryDomainSuffix:
# 集群的租戶 id,默認為 default
tenantID:
# OIDC 認證方式的 secret,默認自動生成
oIDCClientSecret:
# 是否開啟自簽名,默認為 true
selfSigned: true
# 第三方 cert 證書,在 selfSigned 為 false 時需要填值
serverCrt:
# 第三方 certKey 密鑰,在 selfSigned 為 false 時需要填值
serverKey:
enableAuth: true
enableBusiness:
enableMonitor:
enableRegistry:
enableLogagent:
enableAudit:
enableApplication:
enableMesh:
customConfig.yaml 檔案中的引數填寫完畢后,在當前 hack/lightweight-install/ 目錄下執行 gen:
./gen
會在同級目錄生成 auth-chart-values.yaml、platform-chart-values.yaml、gateway-chart-values.yaml 三個 yaml 檔案,分別對應三個 chart(tke-auth、tke-platform、tke-gateway)在安裝時需要的 values.yaml 檔案,
在當前 hack/lightweight-install/ 目錄下進行三個核心組件的安裝:
# tke-auth 的安裝
helm install -f auth-chart-values.yaml tke-auth tke-auth/
# tke-platform 的安裝
helm install -f platform-chart-values.yaml tke-platform tke-platform/
# tke-gateway 的安裝
helm install -f gateway-chart-values.yaml tke-gateway tke-gateway/
通過如下命令如果能查詢到三個 chart 的安裝狀態均為 deployed,則表示核心組件安裝成功:
helm list
chart 安裝完成后,可以查詢到以下資訊,如圖所示:

修改集群 apiserver 配置
在集群對應的目錄 /etc/kubernetes/pki/ 下新建檔案 tke-authz-webhook.yaml,檔案內容如下(其中 cluster.server 引數中的 IP 地址需要修改為 master 的 IP 地址):
apiVersion: v1
kind: Config
clusters:
- name: tke
cluster:
server: https://172.19.0.2:31138/auth/authz
insecure-skip-tls-verify: true
users:
- name: admin-cert
user:
client-certificate: /etc/kubernetes/pki/webhook.crt
client-key: /etc/kubernetes/pki/webhook.key
current-context: tke
contexts:
- context:
cluster: tke
user: admin-cert
name: tke
將二進制執行檔案 gen 生成的 webhook.crt 和 webhook.key(位置在 TKEStack 代碼下的 hack/lightweight-install/data/ 目錄)復制到集群的對應目錄 /etc/kubernetes/pki/ 下,
修改 K8s 集群中 /etc/kubernetes/mainfest/kube-apiserver.yaml 的內容,在 spec.containers.command 欄位增加以下兩個引數:
# 如果已有這兩個引數,則將其按照以下內容修改
- --authorization-mode=Node,RBAC,Webhook
- --authorization-webhook-config-file=/etc/kubernetes/pki/tke-authz-webhook.yaml
創建獨立集群
訪問地址 http://{公網可訪問ip}/tkestack,出現如下登陸界面,輸入之前設定的用戶名 adminUsername 和密碼 adminPassword,如無設定,默認用戶名為 admin ,密碼為 YWRtaW4=,

登陸后,點擊集群管理的新建獨立集群:

具體的集群創建資訊可參考檔案集群創建,
創建集群完成后,可以在頁面端看到如下狀態:

并且可以在 master 節點上查詢到獨立集群的資訊:

如果在創建獨立集群時,Kubernetes 版本顯示暫無資料,可以通過在名為 cluster-info(namespace 為 kube-public)的 configmap 中增加如下欄位解決(具體欄位值可參考 hack/lightweight-install/ 目錄下的 patch.yaml 檔案):
data:
k8sValidVersions: '["1.21.4-tke.1","1.20.4-tke.1"]'
總結
本文介紹了如何基于 TKEStack 最新的 v1.9.0 release 版本在已有的 K8s 集群上輕量化安裝 TKEStack,并以此集成 TKEStack 的用戶管理、集群管理、控制臺訪問等核心功能,
【騰訊云原生】云說新品、云研新術、云游新活、云賞資訊,掃碼關注同名公眾號,及時獲取更多干貨!!
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/457043.html
標籤:其他
上一篇:Java基礎——位元組流讀資料

