云客户?
免费开始>
在MyJFrog >中升级
云有什么新>







概述

本教程解释如何为对象指定kubecconfigKubernetes集成为动态节点池认证到自托管Kubernetes集群。您可以使用像EKS、GKE或AKS这样的云提供商解决方案,也可以使用on-prem Kubernetes解决方案。

本教程假设您具有Docker和Kubernetes的工作知识,并理解以下概念:

页面内容

配置Kubernetes服务帐户

你必须在Kubernetes中配置业务帐户为pipeline将动态控制的构建节点流程提供标识。

此过程将使用您的个人帐户创建服务帐户。确保您的个人帐户有权限这样做。

验证对集群的访问

首先,确保您可以向集群进行身份验证。这意味着您有一个使用您个人帐户的kubecconfig文件。您可以通过在本地计算机上运行这个命令来验证这一点,您应该会看到列出的文件。

ls -al $HOME/.kube

编写一个服务帐户规范

要在Kubernetes上创建一个服务帐户,您可以利用kubectl创建一个类似于下面的YML文件:

pipelines_k8s_sa.yml
apiVersion: v1 kind: ServiceAccount元数据:name: pipes -k8s-pool # <——任何你想要的名称命名空间:jfrog # <——集群命名空间

创建服务帐户

使用实例创建业务帐户。

Kubectl应用-f pipelines_k8s_sa.yaml

从Kubernetes获取令牌和IP

一旦创建了服务帐户,您将需要从Kubernetes检索一些关键信息,以便通过kubecconfig配置它。

获取服务帐户使用的秘密的名称

可以通过执行以下命令查看:

kubectl描述serviceAccounts管道-k8s-pool
输出
名称:pipes -k8s-pool命名空间:jfrog标签:<无>注释:<无>镜像拉取秘密:<无>挂载秘密:pipes -k8s-pool-token-h6pdj token: pipes -k8s-pool-token-h6pdj

注意可安装的秘密字符串。这保存令牌的秘密的名称,将在下一步中使用。

从密钥中获取令牌

使用可安装的秘密字符串,您可以获取服务帐户使用的令牌。执行以下命令提取该信息:

Kubectl描述了秘密管道-k8s-pool-token-h6pdj
输出
名称:pipes -k8s-pool命名空间:jfrog标签:<无>注释:kubernetes.io/service-account. Name = pipes -k8s-pool kubernetes.io/service-account. Name。uid=c2117d8e-3c2d-11e8-9ccd-42010a8a012f类型:kubernetes。io/service-account-token Data ==== ca.crt: 1115 bytes namespace: 7 bytes token:eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJkZWZhdWx0Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9zZWNyZXQubmFtZSI6InNoaXBwYWJsZS1kZXBsb3ktdG9rZW4tN3Nwc2oiLCJrdWJlcm5ldGVzLmlvL3NlcnZpY2VhY2NvdW50L3NlcnZpY2UtYWNjb3VudC5uYW1lIjoic2hpcHBhYmxlLWRlcGxveSIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VydmljZS1hY2NvdW50LnVpZCI6ImMyMTE3ZDhlLTNjMmQtMTFlOC05Y2NkLTQyMDEwYThhMDEyZiIsInN1YiI6InN5c3RlbTpzZXJ2aWNlYWNjb3VudDpkZWZhdWx0OnNoaXBwYWJsZS1kZXBsb3kifQ.ZWKrKdpK7aukTRKnB5SJwwov6PjaADT-FqSO9ZgJEg6uUVXuPa03jmqyRB20HmsTvuDabVoK7Ky7Uug7V8J9yK4oOOK5d0aRRdgHXzxZd2yO8C4ggqsr1KQsfdlU4xRWglaZGI4S31ohCApJ0MUHaVnP5WkbC4FiTZAQ5fO_LcCokapzCLQyIuD5Ksdnj5Ad2ymiLQQ71TUNccN7BMX5aM4RHmztpEHOVbElCWXwyhWr3NR1Z1ar9s5ec6iHBqfkp_s8TvxPBLyUdy9OjCWy3iLQ4Lt4qpxsjwE4NE7KioDPX2Snb6NWFK7lvldjYX4tdkpWdQHBNmqaD8CuVCRdEQ

复制并保存令牌价值。这将在kubecconfig文件中使用。

获取集群的证书信息

每个集群都有一个证书,客户端可以使用该证书来加密流量。获取证书并写入文件(例如,cluster-cert.txt)运行此命令:

Kubectl config view—flatten—minify > cluster-cert.txt cat cluster-cert.txt
输出
apiVersion: v1 clusters:—cluster: certificate-authority-data:LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSURDekNDQWZPZ0F3SUJBZ0lRZmo4VVMxNXpuaGRVbG15a3AvSVFqekFOQmdrcWhraUc5dzBCQVFzRkFEQXYKTVMwd0t3WURWUVFERXlSaVl6RTBOelV5WXkwMk9UTTFMVFExWldFdE9HTmlPUzFrWmpSak5tUXlZemd4TVRndwpIaGNOTVRnd05EQTVNVGd6TVRReVdoY05Nak13TkRBNE1Ua3pNVFF5V2pBdk1TMHdLd1lEVlFRREV5UmlZekUwCk56VXlZeTAyT1RNMUxUUTFaV0V0T0dOaU9TMWtaalJqTm1ReVl6Z3hNVGd3Z2dFaU1BMEdDU3FHU0liM0RRRUIKQVFVQUE0SUJEd0F3Z2dFS0FvSUJBUURIVHFPV0ZXL09odDFTbDBjeUZXOGl5WUZPZHFON1lrRVFHa3E3enkzMApPUEQydUZyNjRpRXRPOTdVR0Z0SVFyMkpxcGQ2UWdtQVNPMHlNUklkb3c4eUowTE5YcmljT2tvOUtMVy96UTdUClI0ZWp1VDl1cUNwUGR4b0Z1TnRtWGVuQ3g5dFdHNXdBV0JvU05reForTC9RN2ZpSUtWU01SSnhsQVJsWll4TFQKZ1hMamlHMnp3WGVFem5lL0tsdEl4NU5neGs3U1NUQkRvRzhYR1NVRzhpUWZDNGYzTk4zUEt3Wk92SEtRc0MyZAo0ajVyc3IwazNuT1lwWDFwWnBYUmp0cTBRZTF0RzNMVE9nVVlmZjJHQ1BNZ1htVndtejJzd2xPb24wcldlRERKCmpQNGVqdjNrbDRRMXA2WXJBYnQ1RXYzeFVMK1BTT2ROSlhadTFGWWREZHZyQWdNQkFBR2pJekFoTUE0R0ExVWQKRHdFQi93UUVBd0lDQkRBUEJnTlZIUk1CQWY4RUJUQURBUUgvTUEwR0NTcUdTSWIzRFFFQkN3VUFBNElCQVFCQwpHWWd0R043SHJpV2JLOUZtZFFGWFIxdjNLb0ZMd2o0NmxlTmtMVEphQ0ZUT3dzaVdJcXlIejUrZ2xIa0gwZ1B2ClBDMlF2RmtDMXhieThBUWtlQy9PM2xXOC9IRmpMQVZQS3BtNnFoQytwK0J5R0pFSlBVTzVPbDB0UkRDNjR2K0cKUXdMcTNNYnVPMDdmYVVLbzNMUWxFcXlWUFBiMWYzRUM3QytUamFlM0FZd2VDUDNOdHJMdVBZV2NtU2VSK3F4TQpoaVRTalNpVXdleEY4cVV2SmM3dS9UWTFVVDNUd0hRR1dIQ0J2YktDWHZvaU9VTjBKa0dHZXJ3VmJGd2tKOHdxCkdsZW40Q2RjOXJVU1J1dmlhVGVCaklIYUZZdmIxejMyVWJDVjRTWUowa3dpbHE5RGJxNmNDUEI3NjlwY0o1KzkKb2cxbHVYYXZzQnYySWdNa1EwL24KLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQo =服务器:https://35.203.181.169 name: gke_jfrog-200320_us-west1-a_cluster context:—context: cluster: gke_jfrog-200320_us-west1-a_cluster user: gke_jfrog-200320_us-west1-a_cluster name: gke_jfrog-200320_us-west1-a_cluster current-context: gke_jfrog-200320_us-west1-a_cluster kind:配置首选项:{}users:—name: gke_jfrog-200320_us-west1-a_cluster user: aust -provider: Config: access-token: ya29。Gl2YBba5duRR8Zb6DekAdjPtPGepx9Em3gX1LAhJuYzq1G4XpYwXTS_wF4cieZ8qztMhB35lFJC-DJR6xcB02oXXkiZvWk5hH4YAw1FPrfsZWG57x43xCrl6cvHAp40 cmd-args: config config-helper——format=json cmd-path: /Users/ambarish/google-cloud-sdk/bin/gcloud expiration: 2018-04-09T20:35:02Z expire -key: '{.credential。' token-key: '{.凭据。Access_token}的名称:GCP

从这里复制并保存两条信息:

  • certificate-authority-data
  • 服务器



在Kubernetes中配置权限

Kubernetes包含许多资源,包括角色和角色绑定,可用于将集2022世界杯阿根廷预选赛赛程群划分为名称空间,并限制特定帐户对名称空间资源的访问。

本节提供有关在Kubernetes中使用角色和角色绑定定义权限的信息。

创建角色

角色在特定的名称空间中设置权限,必须在创建角色时指定。每个角色都有一个规则节定义规则应用的资源和允许的操作,这些操作是2022世界杯阿根廷预选赛赛程服务帐户用户在Kubernetes中运行构建所必需的。

类型中创建Rolejfrog命名空间,允许对命名空间中的所有资源进行读写访问:2022世界杯阿根廷预选赛赛程

apiVersion: rbac.authorization.k8s。io/v1类型:角色元数据:命名空间:jfrog名称:管道-生成器-角色规则:- apiGroups: ["","apps"]资源:[" persistentvolumeclclaims ","secrets"2022世界杯阿根廷预选赛赛程,"pods","secrets","configmaps", "deployment "," deployment /scale", "services"]动词:-获取-列表-观察-创建-更新-补丁-删除

创建角色绑定

中创建的服务帐户现在可以被赋予先前使用RoleBinding创建的角色jfrog名称空间:

apiVersion: rbac.authorization.k8s。io/v1 kind: RoleBinding metadata: name: jfrog-builder-rb namespace: jfrog roleRef: apiGroup: rbac.authorization.k8s。—kind: ServiceAccount名称:pipes -k8s-pool命名空间:jfrog . io kind:角色名称:pipelines-builder-role subjects:—kind: ServiceAccount名称:pipelines-k8s-pool命名空间:jfrog . io

添加Kubernetes管理集成

您必须添加Kubernetes集成作为一个管理集成

  • 来自JFrog平台政府模块转到管道|集成
  • 点击添加集成
  • 结果是添加新的集成显示时,按集成式字段,并在下拉列表中选择“Kubernetes”。
  • 输入一个的名字Kubernetes的积分
  • 按照下面的描述粘贴kubecconfig规范
  • 点击创建完成Kubernetes集成的添加

指定一个kubecconfig

从前面的步骤中,你应该有以下信息:

  • <标记>
  • < certificate-authority-data >
  • < server >

的kubeconfig规范Kube配置设置应遵循以下格式:

apiVersion: v1 kind: Config users: - name: pipelines_k8s_context # <——您的服务帐户名称user: token:  clusters: -cluster: certificate-authority-data:  server:  name: self- hosting -cluster contexts: -context: cluster: self- hosting -cluster user: pipes - k8s_pool # <——您的服务帐户名称namespace: jfrog # <——您定义的命名空间name: pipelines_k8s_context current-context: pipelines_k8s_context


创建动态节点池

一旦成功添加了Kubernetes管理集成,就可以了添加动态节点池它使用了它。


  • 没有标签
版权所有©2023 JFrog Ltd。