0Pricing
Docker & Kubernetes for Developers · บทเรียน

คำจำกัดความทรัพยากรแบบกำหนดเอง (CRD)

ขยายความสามารถของ Kubernetes ด้วยการกำหนดทรัพยากรแบบกำหนดเอง เพื่อจัดการออบเจ็กต์เฉพาะโดเมนของคุณ

คำจำกัดความทรัพยากรแบบกำหนดเอง (CRD) เป็นบทเรียน Docker & Kubernetes for Developers ฟรีบน CoddyKit นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Docker & Kubernetes for Developers และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Docker & Kubernetes for Developers มีบทเรียนทั้งหมด 4 บทเรียน

บางส่วนของบทเรียนนี้ยังไม่ได้รับการแปล และแสดงเป็นภาษาอังกฤษ

Extend Kubernetes API

Welcome! In this lesson, we'll explore Custom Resource Definitions (CRDs). CRDs allow you to extend Kubernetes by defining your own custom resource types.

Think of it as teaching Kubernetes new words and concepts, so it can manage application-specific objects just like it manages built-in ones like Pods or Deployments.

Why Custom Resources?

Kubernetes provides powerful primitives like Pods, Deployments, and Services. But what if your application needs to manage a unique kind of object, like a database cluster, a serverless function, or a custom build pipeline?

  • Domain-Specific Objects: Define resources tailored to your application's unique needs.
  • Abstraction: Simplify complex application deployments into a single, manageable resource.
  • Kubernetes Native: Leverage Kubernetes's declarative API, tooling (kubectl), and watch mechanisms for your custom objects.

Core vs. Custom Resources

Kubernetes comes with many built-in or 'core' resources you already know:

  • Core Resources: Pod, Deployment, Service, ConfigMap. These are part of the standard Kubernetes API.
  • Custom Resources: These are resources you define using CRDs. They behave just like core resources but represent your own application-specific concepts.

Once a CRD is created, you can create and manage instances of your custom resource using kubectl, just like any other Kubernetes object.

Anatomy of a CRD: Basics

A CRD is itself a Kubernetes resource defined in YAML. Here's what some key fields mean:

  • apiVersion: apiextensions.k8s.io/v1: Specifies the API version for the CRD itself.
  • kind: CustomResourceDefinition: Identifies this YAML as a CRD definition.
  • metadata.name: The unique name for your CRD, typically in the format <plural>.<group>.

Let's look at defining the core specification next.

CRD Anatomy: Group & Versions

The spec section of a CRD defines the custom resource's properties:

  • spec.group: The API group for your custom resource (e.g., example.com). This helps organize your custom resources.
  • spec.versions: A list of supported versions for your custom resource (e.g., v1alpha1, v1). Each version can have its own schema.
  • spec.scope: Defines if your custom resource is Namespaced (like Pods) or Cluster (like Nodes).

CRD Anatomy: Names & Schema

More important fields in the spec:

  • spec.names: Defines how your custom resource will be referred to:
    • plural: The plural name used in kubectl get (e.g., webservers).
    • singular: The singular name (e.g., webserver).
    • kind: The CamelCase name for the resource object (e.g., WebServer).
    • shortNames: Optional, short aliases (e.g., ws).
  • spec.versions[].schema.openAPIV3Schema: This is crucial! It defines the structure and validation rules for your custom resource's data.

Defining a Simple WebServer CRD

Here's a basic CRD for a WebServer resource. Notice how it defines the group, versions, names, and a simple schema for its properties (like image and replicas).

apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  name: webservers.example.com
spec:
  group: example.com
  versions:
    - name: v1
      served: true
      storage: true
      schema:
        openAPIV3Schema:
          type: object
          properties:
            spec:
              type: object
              properties:
                image:
                  type: string
                replicas:
                  type: integer
              required:
                - image
  scope: Namespaced
  names:
    plural: webservers
    singular: webserver
    kind: WebServer
    shortNames:
      - ws

Applying Your CRD

Once you have your CRD YAML file (e.g., webserver-crd.yaml), you can apply it to your Kubernetes cluster using kubectl. This registers your new resource type with Kubernetes.

It might take a few seconds for the API server to fully acknowledge the new type.

kubectl apply -f webserver-crd.yaml

Creating a Custom Resource

After the CRD is applied, you can create instances of your WebServer custom resource. This YAML defines a specific WebServer object with its own image and replicas values, conforming to the schema you defined.

You can manage this object just like any other Kubernetes resource.

apiVersion: example.com/v1
kind: WebServer
metadata:
  name: my-first-webserver
spec:
  image: nginx:latest
  replicas: 3

Interacting with Custom Resources

Now that you've defined a CRD and created an instance, you can use standard kubectl commands to interact with your custom resources:

  • kubectl get webservers: List all WebServer objects.
  • kubectl get ws: Use the short name.
  • kubectl describe webserver my-first-webserver: Get detailed information about a specific WebServer instance.

This seamless integration is a key benefit of CRDs!

Check Your CRD Knowledge

Which of the following are benefits of using Custom Resource Definitions (CRDs) in Kubernetes?

Recap: Extending Kubernetes

Great job! You've learned about Custom Resource Definitions!

  • CRDs allow you to extend the Kubernetes API with your own custom resource types.
  • They enable Kubernetes to manage domain-specific objects using its native API and tooling.
  • A CRD defines the schema and properties of your custom resource.
  • Once defined, you can create and interact with instances of your custom resource using kubectl.

Next, we'll see how Operators leverage CRDs to automate complex application management!

คำถามที่พบบ่อย

บทเรียน “คำจำกัดความทรัพยากรแบบกำหนดเอง (CRD)” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “คำจำกัดความทรัพยากรแบบกำหนดเอง (CRD)” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Docker & Kubernetes for Developers ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Docker & Kubernetes for Developers มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “คำจำกัดความทรัพยากรแบบกำหนดเอง (CRD)”

ขยายความสามารถของ Kubernetes ด้วยการกำหนดทรัพยากรแบบกำหนดเอง เพื่อจัดการออบเจ็กต์เฉพาะโดเมนของคุณ คุณปฏิบัติ Docker & Kubernetes for Developers ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Docker & Kubernetes for Developers หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน Docker & Kubernetes for Developers บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน

บทเรียน “คำจำกัดความทรัพยากรแบบกำหนดเอง (CRD)” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน Docker & Kubernetes for Developers นี้ได้ไหม

ได้ บทเรียน Docker & Kubernetes for Developers ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. คำจำกัดความทรัพยากรแบบกำหนดเอง (CRD)
  2. รูปแบบ Operator ใน Kubernetes
  3. Serverless ด้วย Kubernetes (Knative)
  4. การขยายเซิร์ฟเวอร์ API ด้วยเว็บฮุกการอนุมัติ
← กลับไปที่ Docker & Kubernetes for Developers