github.com/ironcore-dev/gardener-extension-provider-ironcore@v0.3.2-0.20240314231816-8336447fb9a0/docs/operations/operations.md (about)

     1  # Using the ironcore provider extension with Gardener as operator
     2  
     3  The [`core.gardener.cloud/v1beta1.CloudProfile` resource](https://github.com/gardener/gardener/blob/master/example/30-cloudprofile.yaml) 
     4  declares a `providerConfig` field that is meant to contain provider-specific configuration.
     5  The [`core.gardener.cloud/v1beta1.Seed` resource](https://github.com/gardener/gardener/blob/master/example/50-seed.yaml) 
     6  is structured similarly. Additionally, it allows configuring settings for the backups of the main etcd's data of shoot 
     7  clusters control planes running in this seed cluster.
     8  
     9  This document explains the necessary configuration for this provider extension.
    10  
    11  ## `CloudProfile` resource
    12  
    13  This section describes, how the configuration for `CloudProfile`s looks like for `ironcore` by providing an example 
    14  `CloudProfile` manifest with minimal configuration that can be used to allow the creation of `ironcore` shoot clusters.
    15  
    16  ### `CloudProfileConfig`
    17  
    18  The cloud profile configuration contains information about the real machine image IDs in the `ironcore` environment.
    19  You have to map every version that you specify in `.spec.machineImages[].versions` here such that the `ironcore` extension 
    20  knows the location of the OCI image artefact for every version you want to offer. For each machine image version an 
    21  `architecture` field can be specified which specifies the CPU architecture of the machine on which given machine image 
    22  can be used.
    23  
    24  An example `CloudProfileConfig` for the `ironcore` extension looks as follows:
    25  
    26  ```yaml
    27  apiVersion: ironcore.provider.extensions.gardener.cloud/v1alpha1
    28  kind: CloudProfileConfig
    29  machineImages:
    30    - name: gardenlinux
    31      versions:
    32        - version: 1.0.0
    33          image: registry/images/gardenlinux:version-tag
    34          # architecture: amd64 # optional
    35  ```
    36  
    37  ### Example `CloudProfile` manifest
    38  
    39  Please find below an example `CloudProfile` manifest:
    40  
    41  ```yaml
    42  apiVersion: core.gardener.cloud/v1beta1
    43  kind: CloudProfile
    44  metadata:
    45    name: ironcore
    46  spec:
    47    type: ironcore
    48    kubernetes:
    49      versions:
    50      - version: 1.25.3
    51      - version: 1.24.3
    52    machineImages:
    53      - name: gardenlinux
    54        versions:
    55          - version: 1.0.0
    56            cri:
    57              - name: containerd
    58    machineTypes:
    59      - name: x3-xlarge
    60        cpu: "4"
    61        gpu: "0"
    62        memory: 8Gi
    63        storage:
    64          class: standard
    65          type: default
    66          size: 20Gi     
    67        usable: true
    68        architecture: amd64 # optional
    69    volumeTypes:
    70      - name: general-purpose
    71        class: standard
    72        usable: true
    73      - name: io-optimized
    74        class: premium
    75        usable: true
    76    regions:
    77    - region: my-region
    78      names:
    79      - my-zone-a
    80      - my-zone-b
    81      - my-zone-c
    82    providerConfig:
    83      apiVersion: ironcore.provider.extensions.gardener.cloud/v1alpha1
    84      kind: CloudProfileConfig
    85      regionConfigs:
    86      - name: my-region
    87        server: https://ironcore-api-server
    88        certificateAuthorityData: >-
    89          abcd12345
    90      storageClasses:
    91        default:                 # default StorageClass for shoot
    92          name: default          # name of the StorageClass in the Shoot
    93          type: general-purpose  # name of the VolumeClass
    94        additional:              # additional StorageClasses for shoot
    95        - name: additional-sc    # name of the StorageClass in the Shoot
    96          type: general-purpose  # name of the VolumeClass
    97      machineImages:
    98        - name: gardenlinux
    99          versions:
   100            - version: 1.0.0
   101              image: registry/images/gardenlinux:version-tag
   102              architecture: amd64
   103  ```
   104  
   105  ## `Seed` resource
   106  
   107  This provider extension supports configuration for the `Seed`'s `.spec.provider.type` field.
   108  
   109  Please find below an example `Seed` manifest that configures Seed cluster. 
   110  
   111  ```yaml
   112  ---
   113  apiVersion: core.gardener.cloud/v1beta1
   114  kind: Seed
   115  metadata:
   116    name: my-seed
   117  spec:
   118    provider:
   119      type: ironcore
   120    ...
   121  ```
   122  
   123  ## `Shoot` resource
   124  
   125  This provider extension supports configuration for the `Shoot` cluster resource. 
   126  `.spec.provider.workers` field is a list of worker groups.
   127  `.spec.provider.networking.nodes` field is the CIDR of the entire node network. 
   128  
   129  
   130  ```yaml
   131  apiVersion: core.gardener.cloud/v1beta1
   132  kind: Shoot
   133  metadata:
   134    name: my-shoot
   135    namespace: my-namespace
   136  spec:
   137    cloudProfileName: ironcore
   138    secretBindingName: my-credentials
   139    region: my-region
   140    networking:
   141      type: calico
   142      nodes: 10.1.0.0/16
   143    provider:
   144      infrastructureConfig:
   145        apiVersion: ironcore.provider.extensions.gardener.cloud/v1alpha1
   146        kind: InfrastructureConfig
   147      type: ironcore
   148      workers:
   149        - name: pool1
   150          machine:
   151            type: x3-xlarge
   152          volume:
   153            type: general-purpose
   154            size: 20Gi
   155          cri:
   156            name: containerd
   157          minimum: 1
   158          maximum: 1
   159          maxSurge: 1
   160          maxUnavailable: 0
   161          zones:
   162            - my-zone-a
   163            - my-zone-b
   164            - my-zone-c
   165    kubernetes:
   166      version: 1.26.0
   167  ```