1. 程式人生 > >Kubernetes(k8s)中文文件 名詞解釋:ThirdPartyResources_Kubernetes中文社群

Kubernetes(k8s)中文文件 名詞解釋:ThirdPartyResources_Kubernetes中文社群

ThirdPartyResources

ThirdPartyResources是一種無需改變程式碼就可以擴充套件Kubernetes API的機制,可以用來管理自定義物件。每個ThirdPartyResource都包含以下屬性

  • metadata:跟kubernetesmetadata一樣
  • kind:自定義的資源型別,採用<kind mame>.<domain>的格式
  • description:資源描述
  • versions:版本列表
  • 其他:還可以保護任何其他自定義的屬性

ThirdPartyResources將在v1.7棄用

ThirdPartyResources將在v1.7棄用,並在未來版本中刪除。建議從v1.7開始,遷移到

CustomResourceDefinition

下面的例子會建立一個/apis/stable.example.com/v1/namespaces/<namespace>/crontabs/…的API

$ cat resource.yaml
apiVersion: extensions/v1beta1
kind: ThirdPartyResource
metadata:
  name: cron-tab.stable.example.com
description: "A specification of a Pod to run on a cron style schedule"
versions:
- name: v1

$ kubectl create -f resource.yaml
thirdpartyresource "cron-tab.stable.example.com" created

API建立好後,就可以建立具體的CronTab物件了

$ cat my-cronjob.yaml
apiVersion: "stable.example.com/v1"
kind: CronTab
metadata:
  name: my-new-cron-object
cronSpec: "* * * * /5"
image: my-awesome-cron-image

$ kubectl create -f my-crontab.yaml
crontab "my-new-cron-object" created

$ kubectl get crontab
NAME                 KIND
my-new-cron-object   CronTab.v1.stable.example.com

ThirdPartyResources與RBAC

注意ThirdPartyResources不是namespace-scoped的資源,在普通使用者使用之前需要繫結ClusterRole許可權。

$ cat cron-rbac.yaml
apiVersion: rbac.authorization.k8s.io/v1alpha1
kind: ClusterRole
metadata:
  name: cron-cluster-role
rules:
- apiGroups:
  - extensions
  resources:
  - thirdpartyresources
  verbs:
  - '*'
- apiGroups:
  - stable.example.com
  resources:
  - crontabs
  verbs:
  - "*"

$ kubectl create -f cron-rbac.yaml
$ kubectl create clusterrolebinding user1 --clusterrole=cron-cluster-role --user=user1 --user=user2 --group=group1

參考:https://feisky.gitbooks.io/kubernetes/concepts/thirdpartyresources.html

K8S中文社群微信公眾號