"Cluster API - 부트스트랩 제공자 사양"의 두 판 사이의 차이

 
(같은 사용자의 중간 판 5개는 보이지 않습니다)
3번째 줄: 3번째 줄:
{{작성중}}
{{작성중}}
;Bootstrap Provider Specification
;Bootstrap Provider Specification
;부트스트랩 프로바이더 사양
;부트스트랩 제공자 사양
https://cluster-api.sigs.k8s.io/developer/providers/bootstrap
https://cluster-api.sigs.k8s.io/developer/providers/bootstrap
----
----
부트스트랩 제공자는 Kubernetes 노드를 부트스트랩하는 데 사용되는 부트스트랩 데이터를 생성합니다.
예를 들어, Kubeadm 부트스트랩 제공자는 노드를 부트스트랩하기 위해 [[cloud-init]] 파일을 사용합니다.


==데이터 타입==
==데이터 타입==
===Bootstrap API resource===
===부트스트랩 API 리소스===
===BootstrapTemplate Resources===
부트스트랩 제공자는 부트스트랩 리소스를 위한 API 타입을 정의해야 합니다. 이 타입은 다음과 같은 조건을 만족해야 합니다:
===List Resources===
* 1. 쿠버네티스 API 서버에서 제공하는 API 그룹에 속해야 합니다.
===Bootstrap Secret===
* 2. CustomResourceDefinition(CRD)으로 구현되어야 합니다.
==Behavior==
** CRD 이름은 <code>sigs.k8s.io/cluster-api/util/contract.CalculateCRDName(Group, Kind)</code>에서 생성된 형식을 가져야 합니다.
==Sentinel File==
* 3. 네임스페이스 스코프여야 합니다.
==Taint Nodes at creation==
* 4. 표준 쿠버네티스 "타입 메타데이터"와 "객체 메타데이터"를 가져야 합니다.
* 5. 부트스트랩 프로바이더와 관련된 필드를 포함하는 <code>spec</code> 필드가 있어야 합니다.
* 6. 다음과 같은 필드가 포함된 <code>status</code> 필드가 있어야 합니다:
** 필수 필드:
*** <code>ready</code> (boolean): 부트스트랩 데이터가 생성되어 준비되었음을 나타냅니다.
*** <code>dataSecretName</code> (string): 생성된 부트스트랩 데이터를 저장하는 비밀(Secret)의 이름입니다.
** 선택적 필드:
*** <code>failureReason</code> (string): 부트스트랩 데이터를 조정하는 데 치명적인 문제가 있음을 나타내며, 프로그래밍적으로 해석하기 적합한 값이어야 합니다.
*** <code>failureMessage</code> (string): 부트스트랩 데이터를 조정하는 데 치명적인 문제가 있음을 나타내며, <code>failureReason</code>보다 더 설명적인 값이어야 합니다.
 
참고: <code>dataSecretName</code>은 <code>status</code>의 일부이기 때문에 <code>Cluster</code>, <code>Machine</code> 및/또는 부트스트랩 리소스의 데이터에서 결정적으로 재생성할 수 있어야 합니다. 이름이 무작위로 생성되는 경우 리소스와 관련된 비밀을 한 관리 클러스터에서 다른 클러스터로 이동하는 것이 항상 가능하지는 않습니다.
 
===BootstrapTemplate 리소스===
Bootstrap 리소스에 대해, 해당하는 BootstrapTemplate 리소스를 추가해야 합니다:
 
<syntaxhighlight lang='go'>
// PhippyBootstrapConfigTemplateSpec는 PhippyBootstrapConfigTemplate의 원하는 상태를 정의합니다.
type PhippyBootstrapConfigTemplateSpec struct {
Template PhippyBootstrapTemplateResource `json:"template"`
}
 
// +kubebuilder:object:root=true
// +kubebuilder:resource:path=phippybootstrapconfigtemplates,scope=Namespaced,categories=cluster-api,shortName=pbct
// +kubebuilder:storageversion
 
// PhippyBootstrapConfigTemplate는 Phippy Bootstrap API의 스키마입니다.
type PhippyBootstrapConfigTemplate struct {
metav1.TypeMeta  `json:",inline"`
metav1.ObjectMeta `json:"metadata,omitempty"`
 
Spec PhippyBootstrapConfigTemplateSpec `json:"spec,omitempty"`
}
 
type PhippyBootstrapConfigTemplateResource struct {
// 표준 객체의 메타데이터.
// 참고 정보: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
// +optional
ObjectMeta clusterv1.ObjectMeta `json:"metadata,omitempty"`
 
Spec PhippyBootstrapConfigSpec `json:"spec"`
}
</syntaxhighlight>
 
템플릿의 CRD 이름은 <code>sigs.k8s.io/cluster-api/util/contract.CalculateCRDName(Group, Kind)</code>에서 생성된 형식을 가져야 합니다.
 
===List 리소스===
리소스가 있다면, 그에 대한 리스트 리소스도 추가합니다. 예시:
 
<syntaxhighlight lang='go'>
//+kubebuilder:object:root=true
 
// PhippyBootstrapConfigList는 PhippyBootstrapConfig 객체 리스트를 포함합니다.
type PhippyBootstrapConfigList struct {
metav1.TypeMeta `json:",inline"`
metav1.ListMeta `json:"metadata,omitempty"`
Items          []PhippyBootstrapConfig `json:"items"`
}
 
//+kubebuilder:object:root=true
 
// PhippyBootstrapConfigTemplateList는 PhippyBootstrapConfigTemplate 객체 리스트를 포함합니다.
type PhippyBootstrapConfigTemplateList struct {
metav1.TypeMeta `json:",inline"`
metav1.ListMeta `json:"metadata,omitempty"`
Items          []PhippyBootstrapConfigTemplate `json:"items"`
}
</syntaxhighlight>
 
===부트스트랩 시크릿===
==동작==
==센티널 파일==
==생성 시 노드 테인트==
==RBAC==
==RBAC==
===Provider controller===
===제공자 컨트롤러===
===Cluster API controllers===
===Cluster API 컨트롤러===

2024년 7월 6일 (토) 10:08 기준 최신판

1 개요[ | ]

Crystal Clear action info.png 작성 중인 문서입니다.
Bootstrap Provider Specification
부트스트랩 제공자 사양

https://cluster-api.sigs.k8s.io/developer/providers/bootstrap


부트스트랩 제공자는 Kubernetes 노드를 부트스트랩하는 데 사용되는 부트스트랩 데이터를 생성합니다.

예를 들어, Kubeadm 부트스트랩 제공자는 노드를 부트스트랩하기 위해 cloud-init 파일을 사용합니다.

2 데이터 타입[ | ]

2.1 부트스트랩 API 리소스[ | ]

부트스트랩 제공자는 부트스트랩 리소스를 위한 API 타입을 정의해야 합니다. 이 타입은 다음과 같은 조건을 만족해야 합니다:

  • 1. 쿠버네티스 API 서버에서 제공하는 API 그룹에 속해야 합니다.
  • 2. CustomResourceDefinition(CRD)으로 구현되어야 합니다.
    • CRD 이름은 sigs.k8s.io/cluster-api/util/contract.CalculateCRDName(Group, Kind)에서 생성된 형식을 가져야 합니다.
  • 3. 네임스페이스 스코프여야 합니다.
  • 4. 표준 쿠버네티스 "타입 메타데이터"와 "객체 메타데이터"를 가져야 합니다.
  • 5. 부트스트랩 프로바이더와 관련된 필드를 포함하는 spec 필드가 있어야 합니다.
  • 6. 다음과 같은 필드가 포함된 status 필드가 있어야 합니다:
    • 필수 필드:
      • ready (boolean): 부트스트랩 데이터가 생성되어 준비되었음을 나타냅니다.
      • dataSecretName (string): 생성된 부트스트랩 데이터를 저장하는 비밀(Secret)의 이름입니다.
    • 선택적 필드:
      • failureReason (string): 부트스트랩 데이터를 조정하는 데 치명적인 문제가 있음을 나타내며, 프로그래밍적으로 해석하기 적합한 값이어야 합니다.
      • failureMessage (string): 부트스트랩 데이터를 조정하는 데 치명적인 문제가 있음을 나타내며, failureReason보다 더 설명적인 값이어야 합니다.

참고: dataSecretNamestatus의 일부이기 때문에 Cluster, Machine 및/또는 부트스트랩 리소스의 데이터에서 결정적으로 재생성할 수 있어야 합니다. 이름이 무작위로 생성되는 경우 리소스와 관련된 비밀을 한 관리 클러스터에서 다른 클러스터로 이동하는 것이 항상 가능하지는 않습니다.

2.2 BootstrapTemplate 리소스[ | ]

Bootstrap 리소스에 대해, 해당하는 BootstrapTemplate 리소스를 추가해야 합니다:

// PhippyBootstrapConfigTemplateSpec는 PhippyBootstrapConfigTemplate의 원하는 상태를 정의합니다.
type PhippyBootstrapConfigTemplateSpec struct {
	Template PhippyBootstrapTemplateResource `json:"template"`
}

// +kubebuilder:object:root=true
// +kubebuilder:resource:path=phippybootstrapconfigtemplates,scope=Namespaced,categories=cluster-api,shortName=pbct
// +kubebuilder:storageversion

// PhippyBootstrapConfigTemplate는 Phippy Bootstrap API의 스키마입니다.
type PhippyBootstrapConfigTemplate struct {
	metav1.TypeMeta   `json:",inline"`
	metav1.ObjectMeta `json:"metadata,omitempty"`

	Spec PhippyBootstrapConfigTemplateSpec `json:"spec,omitempty"`
}

type PhippyBootstrapConfigTemplateResource struct {
	// 표준 객체의 메타데이터.
	// 참고 정보: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
	// +optional
	ObjectMeta clusterv1.ObjectMeta `json:"metadata,omitempty"`

	Spec PhippyBootstrapConfigSpec `json:"spec"`
}

템플릿의 CRD 이름은 sigs.k8s.io/cluster-api/util/contract.CalculateCRDName(Group, Kind)에서 생성된 형식을 가져야 합니다.

2.3 List 리소스[ | ]

리소스가 있다면, 그에 대한 리스트 리소스도 추가합니다. 예시:

//+kubebuilder:object:root=true

// PhippyBootstrapConfigList는 PhippyBootstrapConfig 객체 리스트를 포함합니다.
type PhippyBootstrapConfigList struct {
	metav1.TypeMeta `json:",inline"`
	metav1.ListMeta `json:"metadata,omitempty"`
	Items           []PhippyBootstrapConfig `json:"items"`
}

//+kubebuilder:object:root=true

// PhippyBootstrapConfigTemplateList는 PhippyBootstrapConfigTemplate 객체 리스트를 포함합니다.
type PhippyBootstrapConfigTemplateList struct {
	metav1.TypeMeta `json:",inline"`
	metav1.ListMeta `json:"metadata,omitempty"`
	Items           []PhippyBootstrapConfigTemplate `json:"items"`
}

2.4 부트스트랩 시크릿[ | ]

3 동작[ | ]

4 센티널 파일[ | ]

5 생성 시 노드 테인트[ | ]

6 RBAC[ | ]

6.1 제공자 컨트롤러[ | ]

6.2 Cluster API 컨트롤러[ | ]

문서 댓글 ({{ doc_comments.length }})
{{ comment.name }} {{ comment.created | snstime }}