TKEStackの軽量インストール:既存のK8sクラスターにエンタープライズレベルのコンテナークラウドプラットフォームの機能を持たせる

私たちに関しては

クラウドネイティブに関するその他の事例や知識については、同じ名前のパブリックアカウントに注意を払うことができます[Tencent Cloud Native]〜

福祉:

①公式アカウントのバックグラウンドで[マニュアル]に返信すると、「TencentCloudネイティブロードマップマニュアル」と「TencentCloudネイティブベストプラクティス」を入手できます〜

②公式アカウントはバックグラウンドで[シリーズ]に返信し、Kubernetesのコスト削減と効率の向上、K8sのパフォーマンス最適化の実践、ベストプラクティスなど、「100以上の超実用的なクラウドネイティブオリジナル乾物コレクションの15シリーズ」を入手できます。シリーズ。

③公式アカウントのバックグラウンドで[ホワイトペーパー]に返信すると、「Tencent CloudContainerSecurityホワイトペーパー」と「コスト削減の源泉-CloudNativeCostManagementホワイトペーパーv1.0」を入手できます。

④公式アカウントの背景にある[光速の紹介]に返信すると、Tencent Cloudの専門家、プロメテウス、グラファナの光速の50,000語のエッセンスチュートリアルを入手できます。

著者

TencentCloudバックエンド開発エンジニアであるWangLongは、TKEStackの設計、開発、保守、およびハイブリッドクラウドプロジェクトの関連作業を担当しています。

序文

TKEStackは、オープンソースのエンタープライズレベルのコンテナクラウドプラットフォームであり、最先端のテクノロジーを組み合わせて、どこでもKubernetesを簡単に実行し、ITニーズを満たし、DevOpsチームに力を与えることができる高度にスケーラブルで高性能なコンテナ管理サービスを提供します。

TKEStackは、ユーザー管理、アクセスポリシー管理、クラスター管理、ビジネス管理、監視、ロギング、プライベートイメージライブラリ、およびその他の機能を実装するための豊富なコンポーネントを提供します。これにより、TKEStackをローカルにインストールする時間が長くなります。一部のユーザーにとっては、ユーザー管理、クラスター管理、TKEStackのコンソールアクセスなどのコア機能のみが必要な場合がありますが、同じ時間コストを支払う必要もあります。さらに、TKEStackのインストール中に、グローバルクラスターがベアメタルにデプロイされ、独立したクラスターとインポートされたクラスターのライフサイクルがグローバルクラスターを介して管理されます。したがって、ユーザーはTKEStackを既存のK8sクラスターにインストールして統合することはできません。

上記の背景に基づいて、TKEStackは最新のv1.9.0リリースで軽量インストールシナリオをサポートします。軽量インストールにより、新しいグローバルクラスターを作成する際の制限がなくなり、ユーザー管理、クラスター管理、ユーザーの既存のK8sクラスターへのコンソールアクセスなどのTKESatckのコア機能の直接統合が実現します。これにより、ユーザーは、フロントエンドの視覚化ページを介して、クラスター、ワーカーノード、名前空間、ワークロード、およびその他のリソースの基本情報を表示および管理できます。また、カスタムアクセスポリシーを設定することで、「シングルテナント」の制限を打ち破り、クラスターに対する柔軟なアクセス許可制御を実現できます。

前提条件

この記事で紹介するコンテンツは、正常に実行されている既存のK8sクラスターに基づいており、マスターノードで次の操作を実行する必要があります。K8sクラスターがない場合は、kindを使用してローカルクラスターを作成し、次の操作を実行できます

この記事で紹介するコンテンツでは、TKEStackのコアコンポーネントをhelmを介してインストールする必要があります。helmをインストールするには、インストール

TKEStackの軽量インストール

インストールファイルを準備する

次のコマンドを使用して、TKEStackの最新のコードをプルします。

git clone https://github.com/tkestack/tke.git

ローカルクラスターを作成します(既にローカルクラスターがある場合は、この手順をスキップできます)

ユーザーがローカルにK8sクラスターを持っていない場合は、種類を使用して作成できます。種類によって作成されたクラスターは実際にはイメージコンテナー内で実行されるため、TKEStackのコアコンポーネントのポートにコンテナーの外部から正常にアクセスできるようにするには、TKEStackコードのhack/lightweight-install/ディレクトリ、次のコマンドを実行します。クラスターを作成します。

kind create cluster --config kindConfig.yaml --name {your cluster name} 

指定された名前空間を作成します

tke-auth、tke-platform、およびtke-gatewayの3つのコアコンポーネントは、指定された名前空間で実行し、次のコマンドを実行する必要があります。

kubectl create namespace tke

インストールチャート

TKEStackは、tke-auth、tke-platform、およびtke-gatewayの3つのコアコンポーネントをインストールするためのチャートファイルを提供します。

TKEStackコードのhack/lightweight-install/ディレクトリ、バイナリ実行可能ファイルをコンパイルして、チャートyamlファイルのインストールに必要なファイルを生成します。

go build -o gen

入力する必要のあるyamlファイルは、TKEStackコードのhack/lightweight-install/ディレクトリ配置されますcustomConfig.yamlcustomConfig.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

3つのチャート(tke-auth、tke-platform、およびtke-gateway)のインストールに必要なファイルauth-chart-values.yaml生成platform-chart-values.yamlれます。gateway-chart-values.yamlvalues.yaml

現在のhack/lightweight-install/ディレクトリ3つのコアコンポーネントをインストールします。

# 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/

次のコマンドで3つのチャートのインストールステータスを照会できる場合はdeployed、コアコンポーネントが正常にインストールされていることを意味します。

helm list

チャートをインストールした後、図に示すように、次の情報を照会できます。

クラスタapiserver構成を変更します

クラスタに対応/etc/kubernetes/pki/するtke-authz-webhook.yamlファイルの内容は次のとおりです(cluster.serverパラメータのIPアドレスをマスターの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.crtwebhook.key(TKEStackコードの下のhack/lightweight-install/data/ディレクトリ)をクラスタ内の対応するディレクトリにコピーします/etc/kubernetes/pki/

K8sクラスター/etc/kubernetes/mainfest/kube-apiserver.yamlspec.containers.command、次の2つのパラメーターをフィールドに追加します。

# 如果已有这两个参数,则将其按照以下内容修改
- --authorization-mode=Node,RBAC,Webhook
- --authorization-webhook-config-file=/etc/kubernetes/pki/tke-authz-webhook.yaml

スタンドアロンクラスターを作成する

アドレスにアクセスするhttp://{公网可访问ip}/tkestackと、次のログインインターフェイスが表示され、以前に設定したユーザー名adminUsernameとパスワードを入力します。adminPassword設定がない場合、デフォルトのユーザー名adminとパスワードはYWRtaW4=です。

ログイン後、クラスター管理の新しい独立したクラスターをクリックします。

特定のクラスター作成情報については、ドキュメントクラスター作成を参照してください。

クラスタが作成されると、ページに次のステータスが表示されます。

また、マスターノード上の独立したクラスターの情報を照会できます。

独立したクラスターを作成するときにKubernetesバージョンにデータが表示されない場合は、cluster-info(名前空間はkube-public)という名前の構成マップに次のフィールドを追加することで解決できます(特定のフィールド値についてhack/lightweight-install/patch.yaml、ディレクトリ内のファイルを参照してください)::

data:
  k8sValidVersions: '["1.21.4-tke.1","1.20.4-tke.1"]'

要約する

この記事では、TKEStackの最新のv1.9.0リリースバージョンに基づいて既存のK8sクラスターにTKEStack Lightweightをインストールし、ユーザー管理、クラスター管理、コンソールアクセスなどのTKEStackのコア機能を統合する方法を紹介します。

【テンセントクラウドネイティブ】ユンシュオの新製品、ユニヤンの新技術、ユニョウの新活動、雲鑑賞の情報、コードをスキャンして同名のパブリックアカウントをフォローし、より多くのドライグッズを手に入れよう!

{{o.name}}
{{m.name}}

おすすめ

転載: my.oschina.net/u/4534936/blog/5510608