diff --git a/charts/internal/machineclass/templates/machineclass.yaml b/charts/internal/machineclass/templates/machineclass.yaml index 55cb7dc98..8d2c55292 100644 --- a/charts/internal/machineclass/templates/machineclass.yaml +++ b/charts/internal/machineclass/templates/machineclass.yaml @@ -24,6 +24,7 @@ providerSpec: cluster: {{ $machineClass.cluster }} zone: {{ $machineClass.zone }} serverType: {{ $machineClass.machineType }} + architecture: {{ $machineClass.architecture }} imageName: {{ $machineClass.imageName }} sshFingerprint: {{ $machineClass.sshFingerprint }} placementGroupID: {{ $machineClass.placementGroupID | quote }} diff --git a/charts/internal/machineclass/values.yaml b/charts/internal/machineclass/values.yaml index 28a11631f..0bb46b661 100644 --- a/charts/internal/machineclass/values.yaml +++ b/charts/internal/machineclass/values.yaml @@ -3,6 +3,7 @@ machineClasses: cluster: shoot--foobar--hcloud zone: hel1-dc2 machineType: cx11 + architecture: amd64 imageName: ubuntu-20.04 sshFingerprint: "00:11:22:33:44:55:66:77:88:99:aa:bb:cc:dd:ee:ff" placementGroupID: "" diff --git a/example/00-componentconfig.yaml b/example/00-componentconfig.yaml index 33ca62bb1..9db1e6ae2 100644 --- a/example/00-componentconfig.yaml +++ b/example/00-componentconfig.yaml @@ -8,7 +8,7 @@ clientConnection: burst: 130 machineImages: - name: ubuntu - version: "18.04" + version: "22.04" id: d61c3912-8422-4daf-835e-854efa0062e4 etcd: storage: diff --git a/example/10-fake-shoot-controlplane.yaml b/example/10-fake-shoot-controlplane.yaml index 4b3188d9d..adc9ac6ef 100644 --- a/example/10-fake-shoot-controlplane.yaml +++ b/example/10-fake-shoot-controlplane.yaml @@ -66,7 +66,7 @@ metadata: namespace: shoot--foobar--hcloud type: Opaque data: - kube-apiserver.crt: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSURrakNDQW5xZ0F3SUJBZ0lCQWpBTkJna3Foa2lHOXcwQkFRc0ZBREFWTVJNd0VRWURWUVFERXdwcmRXSmwKY201bGRHVnpNQjRYRFRJeE1ERXlNVEE1TURRME1Wb1hEVFE0TURZd056QTVNRFEwTVZvd0d6RVpNQmNHQTFVRQpBd3dRYzNsemRHVnRPbUZ3YVhObGNuWmxjakNDQVNJd0RRWUpLb1pJaHZjTkFRRUJCUUFEZ2dFUEFEQ0NBUW9DCmdnRUJBTVEza2xBZVh6WW5MdFhIdjg2NEwyTE8xYzUyWUVnVE1JcHk0R1FPcVpWcHk4cEgrMVh4ak5nR2lKUjMKNVFZWWxlZElkUnc0LzRhYmlRbzRFczNUZUphcDJNdStONzNBcHQrOTVuWDd4a2RZSzRwSmlyZDAwQzdBa3JxTwovTEMzWDd6RmhEK2R6a1ZxTDhZblJNNi9oRDFvaGpBUk5ZckxKQ3VmOUp5dHhMM21zOHRlZkZQK1ppcDM2YXp3CkN3TS8wSUlSK0VHMEhQZkY5dkFQTHo4OTBuUEszOS8xU01hdHF2ZVl5V2p0UDlTNVR2VnN4SkF5Ym1RWjZ3UWkKN2tVbmYrVExuMktPQkdxY1FJRk9jVkhFS3lPSENPMDhrWC9HcGh3KzlFYzYybkkyQXdTVVYrTVZmSjhUdUJUZQpGdEdsMUFXUmZFa1U1N1BHQ3ZmajRUZTBrQUVDQXdFQUFhT0I1akNCNHpDQjRBWURWUjBSQklIWU1JSFZnZzVyCmRXSmxMV0Z3YVhObGNuWmxjb0lrYTNWaVpTMWhjR2x6WlhKMlpYSXVjMmh2YjNRdExXWnZiMkpoY2kwdGFHTnMKYjNWa2dpaHJkV0psTFdGd2FYTmxjblpsY2k1emFHOXZkQzB0Wm05dlltRnlMUzFvWTJ4dmRXUXVjM1pqZ2dwcgpkV0psY201bGRHVnpnaEpyZFdKbGNtNWxkR1Z6TG1SbFptRjFiSFNDRm10MVltVnlibVYwWlhNdVpHVm1ZWFZzCmRDNXpkbU9DSkd0MVltVnlibVYwWlhNdVpHVm1ZWFZzZEM1emRtTXVZMngxYzNSbGNpNXNiMk5oYklJSmJHOWoKWVd4b2IzTjBod1IvQUFBQmh3UmtRQUFCTUEwR0NTcUdTSWIzRFFFQkN3VUFBNElCQVFBZndpOEh4cDNpcUhZUQpBVDc1L2tJb0NpQWpldjk1VTF0ZlJTUlFxZ3pFcHlLeGk3aDFMZ3I5MDBtRm9nR0xkcUxCcHJudUNqU0FXemdOCmlmZTN2NXJ3MW9YQmFXSjV1cG4rR1lvYUhNZitYUlVxL21VTjRpdmt2ZVAwbysvRklGVEVxcVZockhscjhScFQKelpXVXRvN2lmNDhjbkF3am0yd08yaWZMNTl5aytoQUxJblliblZYK2dsSytydTJ0ME94bGdyaHNDTU5MRVVFVwpGcjU1aW53NFdnbnVKTS9DVzEvWmFpYXhpSnF2cEgwWW1ENU9mQTF1OGJCUmowMEJWMjRJU1JPeUNtR280S2VTCnQxenVqZHRDRUdJY044NStCcVpFNkppZFRDQ3hrcER6SWxMRnZ4Tzdxa0J1d3ZRR3dlcmJ4eFVFUmczZGdFTGkKN1RhaGNwRSsKLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQo= + kube-apiserver.crt: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUVEakNDQXZhZ0F3SUJBZ0lVSjQzbHJublpXSmYyTEV2OWMxVDVoaDAzb1Fvd0RRWUpLb1pJaHZjTkFRRUwKQlFBd0ZURVRNQkVHQTFVRUF4TUthM1ZpWlhKdVpYUmxjekFlRncweE9UQTBNekF4TVRVNU1EQmFGdzB5T1RBMApNamN4TVRVNU1EQmFNQnN4R1RBWEJnTlZCQU1URUhONWMzUmxiVHBoY0dselpYSjJaWEl3Z2dFaU1BMEdDU3FHClNJYjNEUUVCQVFVQUE0SUJEd0F3Z2dFS0FvSUJBUURFTjVKUUhsODJKeTdWeDcvT3VDOWl6dFhPZG1CSUV6Q0sKY3VCa0RxbVZhY3ZLUi90VjhZellCb2lVZCtVR0dKWG5TSFVjT1ArR200a0tPQkxOMDNpV3Fkakx2amU5d0tiZgp2ZVoxKzhaSFdDdUtTWXEzZE5BdXdKSzZqdnl3dDErOHhZUS9uYzVGYWkvR0owVE92NFE5YUlZd0VUV0t5eVFyCm4vU2NyY1M5NXJQTFhueFQvbVlxZCttczhBc0RQOUNDRWZoQnRCejN4ZmJ3RHk4L1BkSnp5dC9mOVVqR3JhcjMKbU1sbzdUL1V1VTcxYk1TUU1tNWtHZXNFSXU1RkozL2t5NTlpamdScW5FQ0JUbkZSeENzamh3anRQSkYveHFZYwpQdlJIT3RweU5nTUVsRmZqRlh5ZkU3Z1UzaGJScGRRRmtYeEpGT2V6eGdyMzQrRTN0SkFCQWdNQkFBR2pnZ0ZPCk1JSUJTakFPQmdOVkhROEJBZjhFQkFNQ0JhQXdFd1lEVlIwbEJBd3dDZ1lJS3dZQkJRVUhBd0V3REFZRFZSMFQKQVFIL0JBSXdBREFkQmdOVkhRNEVGZ1FVMktlb2lxUEJQN29aRmEyVFJqcTFzU25xdkkwd0h3WURWUjBqQkJndwpGb0FVaFFOeTd5VE50WGZLckdWVlFudWthMDAvY0lrd2dkUUdBMVVkRVFTQnpEQ0J5WUlPYTNWaVpTMWhjR2x6ClpYSjJaWEtDSG10MVltVXRZWEJwYzJWeWRtVnlMbk5vYjI5MExTMW1iMjh0TFdKaGNvSWlhM1ZpWlMxaGNHbHoKWlhKMlpYSXVjMmh2YjNRdExXWnZieTB0WW1GeUxuTjJZNElLYTNWaVpYSnVaWFJsYzRJU2EzVmlaWEp1WlhSbApjeTVrWldaaGRXeDBnaFpyZFdKbGNtNWxkR1Z6TG1SbFptRjFiSFF1YzNaamdpUnJkV0psY201bGRHVnpMbVJsClptRjFiSFF1YzNaakxtTnNkWE4wWlhJdWJHOWpZV3lDQ1d4dlkyRnNhRzl6ZEljRWZ3QUFBWWNFWkVBQUFUQU4KQmdrcWhraUc5dzBCQVFzRkFBT0NBUUVBcENGSmkxaWx2SDZEc1VuSmxRTDhOcEttN0dXejJoSWlPd2hqQzZHeQp0TjVhWGNDdXkyc0RvRFB2R1dHd3NEZjhHL1JyTGIwNEhJU0JUbUhTUGJvNHZQSnQvcXBacU10bGtLOWFOQ3NlCmtEU3E5UTM5a0hFSmtNcmgrYnpJMUtVa1gycEZoZ0g0bG5qZzA5TVc1KzdMTVBJRXdSVFpjanc5WjJuM0QxTVYKeUIveFpTR1h3V0JSbVg4cjdJcEVmYzNQK0Rmc015MUdEN2c5S2p0cVRIUkg5Tml3cUhoSFpOMkZYZ2w1S2JWYQpjcmwrQmxjemZtbUNubEFOMmpONU85YzV1dHhLRDVOVEdVS1R2b2J0Rkt0VE55dUV0THk2WUZBd2ZGSEx3aEZaCkdURGxJdWpPNVlyK2g0bHpqQ1ZHSCtZdWZSYzRSbVRXMHNadTZseVRiRjRGdnc9PQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCg== kube-apiserver.key: LS0tLS1CRUdJTiBSU0EgUFJJVkFURSBLRVktLS0tLQpNSUlFb2dJQkFBS0NBUUVBeERlU1VCNWZOaWN1MWNlL3pyZ3ZZczdWem5aZ1NCTXdpbkxnWkE2cGxXbkx5a2Y3ClZmR00yQWFJbEhmbEJoaVY1MGgxSERqL2hwdUpDamdTemRONGxxbll5NzQzdmNDbTM3M21kZnZHUjFncmlrbUsKdDNUUUxzQ1N1bzc4c0xkZnZNV0VQNTNPUldvdnhpZEV6citFUFdpR01CRTFpc3NrSzUvMG5LM0V2ZWF6eTE1OApVLzVtS25mcHJQQUxBei9RZ2hINFFiUWM5OFgyOEE4dlB6M1NjOHJmMy9WSXhxMnE5NWpKYU8wLzFMbE85V3pFCmtESnVaQm5yQkNMdVJTZC81TXVmWW80RWFweEFnVTV4VWNRckk0Y0k3VHlSZjhhbUhENzBSenJhY2pZREJKUlgKNHhWOG54TzRGTjRXMGFYVUJaRjhTUlRuczhZSzkrUGhON1NRQVFJREFRQUJBb0lCQUJsZGRiU1Z1SWt2bDRaYgpSQmhkQndNbTZjeSswTU9BZDQzdU84T3pnWWluSElrUnRSUHZIZDN2T2tpM0Z3d3FzWFlzajdjT1J6b0hjVGU0CjkvVlRtUXNnK2IyYzRXZk9OOFJFc0Q0Z1JnbURCRjNrRStLVFh6WXIvc3ZQSUN0WUNUQkYrRXFoQThGRmNOZVUKeS9oT0diSTJpT0k5MTBZUjdLTVhFbkFPcHBoRnVCYzhJbXRrT2w2MWZlRG15ZnRzTnZ1N25FSXRTeldDZy9XawpoUHVWYTZWMGxETEdjK2JRQi82bGVoK1FvNWxhRmRBSnhjT25VOUYzcWtMTVUrbnZ5YUh5OHR4L25VbitJK3pECnV1VGdJQngzUC91cGVSYi8rQUZvSGN4L3hRZDc5V3h1UXdyYlYrL3RmMzN4SE9VQXNYMTYvYWd2eHY2TzhpdmUKRXBKN3JJRUNnWUVBeEtseHdnYWVwaWo1b0tKVzJJTVE5emFVMEs0Ykh5QTVKV3l1cThQd1BQWmpMalhWNFE4aQpidHlOWW1VK2xMMDZxUDUrdWdBUDduamVoRHM0NktJMUlVa1Nvamx2WUhUTSswUHQ0WUZiVHlMYVh4QW5qRXVyCmtHeXBnUmdWRi9ZSm1zVms3bDIrakF5U2NFeE9nNDFudmJRMzh5L0NMNEZjT3pmUkdEVTRINDBDZ1lFQS8ydkUKeW9OU2hhaUp3QVpaRExrTHVXTVp6UDNxUzFyaDNaaGt5UmxUcHBENm50UWEyaVEwK0hXSDM3c1QzRmlYa28rNApjU015OUN1cnNsL05EV3l2aXNzMDJ0bkJScG5ZaFBoK0VHWnY5ZmkzYUVQR3k2ZmR0cVEzNituWG9kOS9hcWNGClhhUlVyZjdoZ212MUJQQ3NtMVFkZldaRjdxTmQ4Y0FRNWdCZEMwVUNnWUJuZTFYZHA4Z1JYTnhGdDBhRmRTb1gKTzBSQkxtd2RDOEttTzdNSnRQZVR6SDVSMFlneWZkazdocGhxM3lWMzlMNktNQ2dVelhXVW9VdE5QekJwMFBpdQpCQnBtL0Z2cjRHb0FDVFdDQktROFZ2V2JNZy90VmQvNEJnV0haVm1zR3czZ3Y5K2xRZlRERXRaM2V0K1JmM1hJCkw2MkZMR3M4dmcvL0pSYkVhelNWL1FLQmdEOWUrYUJWSExCVXRIaVVHcHZ4ZlZzdG4wVWc2blJ2eEFJNndTYXoKeGZGWm54U3hBMGlFR3pCWjJMQkZ0aFBCVnpuaHRwMDdZblQ2TU1zOHdaOUhDL2FmbkNtQVJWZkM2OWx4M2JVcgo5VE5OMWhOa1hYcEIxOXhzdWdNcUxYblgvY0QwVjN4NFBSbytWcTBKSSsxcDJTbGdvVUJ2azRJMXZpVXd4Z0NLCnJvc1JBb0dBVkVDODI4YlRXYk1xVzlBN2tCVWJzQWpMdHJZNVZhNjFjeGg5M2pOeHpJbnlHS2JEMVF5ZEFRSXMKNDlrcjZUSURaZUpGY2M5ZjFaQU5RRjZSTXRLL1g2QzFjRjl5TEJTWXNTL1d5VTg1dzhtbFN3SmNqcCtnWWNYVApZaE9vdHloM0dwbnlnSGQycUw3M1pIVmMrRFFVZWdJTkdSbGhUM2YxWjFiQmxpd0VyU2s9Ci0tLS0tRU5EIFJTQSBQUklWQVRFIEtFWS0tLS0tCg== --- apiVersion: v1 @@ -82,6 +82,24 @@ data: kubeconfig: LS0tCmFwaVZlcnNpb246IHYxCmtpbmQ6IENvbmZpZwpjdXJyZW50LWNvbnRleHQ6IHNtYWxsLWNsdXN0ZXIKY2x1c3RlcnM6Ci0gbmFtZTogc21hbGwtY2x1c3RlcgogIGNsdXN0ZXI6CiAgICBjZXJ0aWZpY2F0ZS1hdXRob3JpdHktZGF0YTogTFMwdExTMUNSVWRKVGlCRFJWSlVTVVpKUTBGVVJTMHRMUzB0Q2sxSlNVTXJha05EUVdWTFowRjNTVUpCWjBsVlZIQXpXSFpvY2xkUFZrMDRXa2RsT0RaWmIxaE5WaTlWU2pkQmQwUlJXVXBMYjFwSmFIWmpUa0ZSUlV3S1FsRkJkMFpVUlZSTlFrVkhRVEZWUlVGNFRVdGhNMVpwV2xoS2RWcFlVbXhqZWtGbFJuY3dlRTlVUVhsTmFtTjRUbFJOTUUxRVFtRkdkekI1VGtSQmVRcE5hbGw0VGxSTk1FMUVRbUZOUWxWNFJYcEJVa0puVGxaQ1FVMVVRMjEwTVZsdFZubGliVll3V2xoTmQyZG5SV2xOUVRCSFExTnhSMU5KWWpORVVVVkNDa0ZSVlVGQk5FbENSSGRCZDJkblJVdEJiMGxDUVZGRGVXa3dVVWRQWTNZeVlsUm1NMDQ0VDB4T09UZFNkM05uU0RaUlFYSTRkMU53UVU5eWRIUkNTbWNLUm01bWJsVXlWREZTU0dkNGJUZHhaREU1TUZkTU9FUkRhSFl3WkZwbU56WmtObVZUVVRSYWNtcHFlVUZ5VkhwMVptSTBSSFJRZDJjclZsZHhOMWgyUmdwQ1RubHVLekpvWmpSVGVWTnJkMlEyYXpkWVRHaFZWRko0TURRNFNXSkNlVU0wZGl0R1JYWnRiMHhCZDNKak1HUXdSekUwWldNMmMyNUVLemRxVHpkbENtdDVhMUV2VG1kQlQwdzNVRFpyUkhNNWVqWXJZazltWjBZd2JrZE9LMkp0WlZkUmNVcGxhbEl3ZEN0UGVWRkVRM2cxTDBaTmRGVm1SVlpTTlZGWU9EQUtZV1ZsWm1kd00wcEdXbUkyWmtGM09VdG9USFJrVWxZelJsQXdkSG8yYUZNclpUUlRaekJ0ZDBGQlQzRnBhbHB6VmpnM2ExQTFSMWw2YW5SalprRXhNZ3BzUkZsc0wyNWlNVWQwVm5aMmExRkVORGxXYmxZM2JVUnViRFp0UnpOTVEwMU9RMDVJTmxkc1drNTJNMEZuVFVKQlFVZHFVV3BDUVUxQk5FZEJNVlZrQ2tSM1JVSXZkMUZGUVhkSlFrSnFRVkJDWjA1V1NGSk5Ra0ZtT0VWQ1ZFRkVRVkZJTDAxQ01FZEJNVlZrUkdkUlYwSkNVMFpCTTB4MlNrMHlNV1E0Y1hNS1dsWldRMlUyVW5KVVZEbDNhVlJCVGtKbmEzRm9hMmxIT1hjd1FrRlJjMFpCUVU5RFFWRkZRVzV6TDBWS00zbExjMnAwU1ZOdmRHVlJOekUwY2pKVmJRcENUVkI1VlZsVVZHUlNTRVE0VEZwTlpETlNlV3QyYzJGalJqSnNNbms0T0U1Nk5uZEtZMEYxYjFWcU1XZzRZVUpFVURWdldGWjBUbTFHVkRscWVXSlRDbFJZY2xKMlYya3JZV1ZaWkdJMU5UWnVSVUUxTDJFNU5HVXJZMklyUTJzemNYa3ZNWGhuVVc5VE5EVTNRVnBSVDBScGMwUmFUa0paVjJ0QlJuTXlUR01LZFdOd1kwRjBXRXAwU1hSb1ZtMDNSbXB2UVVoWlkzTnlXVEEwZVVGcFdVVktURVF3TWxScVZVUllaelJwUjA5SFRXdFdTR1J0YUdGM1FrUkNSak5CYWdwbGMyWmpjVVozYW1rMlNubEJTMFpTUVVOUWIzZDVhMUZQVGtaM1ZWTnZiVGc1ZFZsRlUxTkRTa1oyVGtOck9VMUtiV3BLTWxCNlJGVjBOa041Y0ZJMENtVndSbVJrTVdaWVRIZDFkMjQzWm5aUVRXMUtjVVF6U0hSTVlXeFlNVUZhYlZCckswSkpPR1Y2WmtGcFZtTldjVzVVU2xGTldHeFpVSEJaWlRsQlBUMEtMUzB0TFMxRlRrUWdRMFZTVkVsR1NVTkJWRVV0TFMwdExRbz0KICAgIHNlcnZlcjogaHR0cHM6Ly9sb2NhbGhvc3Q6MzIyMjMKY29udGV4dHM6Ci0gbmFtZTogc21hbGwtY2x1c3RlcgogIGNvbnRleHQ6CiAgICBjbHVzdGVyOiBzbWFsbC1jbHVzdGVyCiAgICB1c2VyOiBzbWFsbC1jbHVzdGVyCnVzZXJzOgotIG5hbWU6IHNtYWxsLWNsdXN0ZXIKICB1c2VyOgogICAgY2xpZW50LWNlcnRpZmljYXRlLWRhdGE6IExTMHRMUzFDUlVkSlRpQkRSVkpVU1VaSlEwRlVSUzB0TFMwdENrMUpTVVJTUkVORFFXbDVaMEYzU1VKQlowbFZSV0ZRVmtWb1lYTXljazV3TUhSd1FXVndiR3MyVUUwMGVtWnJkMFJSV1VwTGIxcEphSFpqVGtGUlJVd0tRbEZCZDBaVVJWUk5Ra1ZIUVRGVlJVRjRUVXRoTTFacFdsaEtkVnBZVW14amVrRmxSbmN3ZUU5VVFYbE5hbU40VGxSTk1VMUVRbUZHZHpCNVQxUkJlUXBOYWxGNFRsUk5NVTFFUW1GTlEzZDRSbnBCVmtKblRsWkNRVzlVUkc1T05XTXpVbXhpVkhCMFdWaE9NRnBZU25wTlVrVjNSSGRaUkZaUlVVUkZkMmh1Q2xsWVNtdGFWelZzWTJwRFEwRlRTWGRFVVZsS1MyOWFTV2gyWTA1QlVVVkNRbEZCUkdkblJWQkJSRU5EUVZGdlEyZG5SVUpCVFVsSlJUZDNTVko0YW1FS1lsY3JkbGRKVEZGMVFqWjZXa0kwYnk5dlUwTk9hV3AxVVZaR1F5OUZZa2h6UkV0SlpqVk5jSHBuV2xNclEzRlRiRkJUWW5NM1VrTnZMMkpQVlZoQ2NBcExaRTUyYzAxbE9XODJSWFJHU25aVGQzTXJUbEZwWTBkNVRFc3ZOMkZUWm1od1FrWXlMM1I2YW1VellVNDBNaXN3UzJSYVJHODFUV051V1cxUFlWWTRDbXRGZUdoUmJtcHlRa1ZRZDA1aFJXMTJNblJ5VEdsamRHMVhZak5CWmpGS1ptZ3JVMFJrTmtoNlMxWmtTMkZXWXpkMVIyTnZPRXRTTDJ4eFJUQk5VR2tLUmtJMGNsRmFibkp2TkZNeE1YVlZTV3g2Y2tjMlZGZHZaVk5VTVhscldYbFNhek54UW5sTFNHMTJObkJVYVdoS2EyWldjWFJMUzBSV056ZFRhalpJT0Fwa2VuSXZkbTFXTWxwU1l6aFZTVGg0ZDNZMFpWZ3ZialF6Y1hwd1VITkpOVTE0YTBGSFEwdGtTVFZGYjNsdlNITnRUV05KY2tRMWQxTmtaa05IZDNGNUNrZDJVM2RyTlRCRGFpc3dRMEYzUlVGQllVNHhUVWhOZDBSbldVUldVakJRUVZGSUwwSkJVVVJCWjFkblRVSk5SMEV4VldSS1VWRk5UVUZ2UjBORGMwY0tRVkZWUmtKM1RVTk5RWGRIUVRGVlpFVjNSVUl2ZDFGRFRVRkJkMGhSV1VSV1VqQlBRa0paUlVaUFVrMVVUbkYxZVdGUWFFUlFZMVppU0RaeFpsUTNlQXBCWkU1MFRVSTRSMEV4VldSSmQxRlpUVUpoUVVaSlZVUmpkVGhyZW1KV00zbHhlR3hXVlVvM2NFZDBUbEF6UTBwTlFUQkhRMU54UjFOSllqTkVVVVZDQ2tOM1ZVRkJORWxDUVZGQlVYWkdPRlJsWkZCbEwyRjFXV3hOTTJ0MGFXOXNSbHBJY0hwU1NHNVFjSFpqVTNoT1dVMDNaRTVJYmpCRk9XbFBSRmxZSzFBS1VUWkJaMWxHY0U1WFJ6TjZWMGRxWkM5alFYSndWWGhqYjI1Q1YyRndXbXBDV0hoS1lTOW9MMGh0U2t0cGRIUkRWbVJHTTJOVlEwbHdLM1ZaZFZZeVdncHNSM2w1VG1NNFpIUlZhbkZLWm1kM2NWa3JRelp4Wm1GVVZtUTNTbFpSY2psWmN6WmhUV2w1VEVaRWNsaDNOMVpGV1U1Q1dXWlVVRXdyU1dSR1V6VkRDakl4U1hOWFkydzRiR0pMYTNSVFlXeFZUbEYxTlVOVlRGVkJUM0ZoZFhKcFJDdDJRVGwzVFc4d1pFUnRNR01yUVRaTFVFSk5PVlZ6YXk5dE5sRlhjbXdLV1RSamIxY3dUMUFyWkc5QmVscE1lVXBUUkRRM1VVZFJXVFZPWkhCNlJtNWxSMm8wWTNwTVNGZ3lNVkp1ZGtjMFNGVjJWbHBqY1RaR2RtRlBaaXRuUndwelJHYzVlbXNyUnpSb1YyaHJOR2xaVjBkblFuSlRVM1p3UjAxWFp6WTBSUW90TFMwdExVVk9SQ0JEUlZKVVNVWkpRMEZVUlMwdExTMHRDZz09CiAgICBjbGllbnQta2V5LWRhdGE6IExTMHRMUzFDUlVkSlRpQlNVMEVnVUZKSlZrRlVSU0JMUlZrdExTMHRMUXBOU1VsRmNFRkpRa0ZCUzBOQlVVVkJkMmRuVkhaQmFFaEhUbkIwWWpZNVdXZDBRelJJY2s1clNHbHFLMmhKU1RKTFR6VkNWVlZNT0ZKelpYZE5iMmd2Q210NWJrOUNiRXcwUzNCTFZUbEtkWHAwUlV0cU9YTTFVbU5IYTNBd01pdDNlRGN5YW05VE1GVnRPVXhEZWpReFEwcDNZa2x6Y2k5MGNFb3JSMnRGV0dJS0t6TlBUamRrYnpOcVlqZFJjREZyVDJwcmVIbGthVmsxY0ZoNVVWUkhSa05sVDNORlVTOUJNVzlUWVM5aE1uTjFTbmt5V2xwMlkwSXZWV3dyU0RWSlRnb3piMlpOY0ZZd2NIQldlblUwV25scWQzQklLMWR2VkZGM0swbFZTR2wwUW0xbGRXcG9URmhYTlZGcFdFOXpZbkJPWVdnMVNsQllTMUpxU2tkVVpXOUlDa2x2WldFdmNXeFBTMFZ0VWpsWGNUQnZiMDVZZG5STFVHOW1lRE5QZGlzcldsaGFiRVo2ZUZGcWVraERMMmcxWml0bWFtVnlUMnNyZDJwcmVrZFJRVmtLU1hBd2FtdFRha3RuWlhsWmVIZHBjMUJ1UWtveE9FbGlRM0pKWVRsTVExUnVVVXRRTjFGSlJFRlJRVUpCYjBsQ1FWRkRlVmQwTlZwRU0zSmlSelV4VVFvNWJYUXdRa0YyWWtoTFpFSkhaMjF5U1VVMVRXNVpWMjh2ZEhkTE5pc3ZTVFEzVUhoUlNrcEVUMlV3YjNCUmEweFBSSGxrZWtWM1VIbEhUVkEwTTNONENrRm9RVXcyZDFGSlYyWnZRbkZ0UTNOcVNIQnphVlV6WmtWYVIwOXhOWHA2TjFkT2FUVnFkRzFyYUhCVGVub3pXazV2UjNONVFsUklRMmxuWms5RWMyc0tSM0J6VW5JeVlVTldUVWhZVjJ4cVIydDNWV1oxYTJsNVdIZGxWRWhIY2tGc1ZHbE5kSEVyYWtOME4wTnZLMVZHTURSMFZVVkJNVlpIYWpsT1QyWlNiUXB3Tm1wNU9UVmxWa3B5V210a1ZrWjJVVXRTZURSbmN6SnRjRmcwYm5CSGFGaEtVRXhRWWsxNFJYRXhOekp5YWxacWJXcHhSalpQVEdVMFlWQlJkMmc1Q2tONWNHZG1VakJDTTJNNWVuVTBNbEJuU1RGdFUxbzFVSFJQSzJwYWJTOXVkbVJuWmtaSU9IbFJWbkl3VGxsNmJIVlFTMlZSYjBkdlRGcG5NV0k1ZFRZS2RuZFdZblV3TWpWQmIwZENRVTk0TUdZemExTk1iVU5KV0dKMVQzaDFiek5FV2sxblFtRklOWHBDT0VkcVdWRkpWbVZuVkhBNFJVTTRiV2QyYzJKMWFncHBTRnBqYUZGUVpqRmpWRXhhTW1ocVRVWXZLMDFWTTJSVk1YRnBVMlJwYUVFeU9HOWhZM296VjI4M1FqTnJWVzkxWlU1a1RERndhMjUxVFVSak1VTXpDbEE1TnpGcksyNU1UVU5YWkRkRVJYQlNjMnRKYVVWWFRYUTFZMkU0YkZwR2QxcFJjbm8xYUVGVFoxQlZPR2QzYlN0U2FHaDBTRWR5UVc5SFFrRk9TVklLTkVwUFZsTlpWR3B2U1U1M2JqQnBZak55TUdKdlQwWlJjWGxWYTFZME5XSm1ZM1JOWXpoeGJuZ3dZV3gxUTBaQ1ZEQmpkR2huWVVWSWRsUnBXblpHUXdvd01WVkhXRkJTU0VnMFRYZGlabWxEY25ob1RFOWhURll3WWtkYU9TczRWVE5rWVZGT1NESlNSakZ0U1ZaT0wwbFlSRzlHV1VSNWRsRnJVbTkwT0dGUUNuSTBWRWhMV1VJd05HVkNTV2xzUzFOUlJVRXpiVUZSTjNsM1JqZGFRMVJxTW05UFdHSndla2hCYjBkQlNVNXFUMGhJVGpaSVl6ZFVkRzl3VHprMWNFOEtUMGhJY1ZadFdIUkNVMHBVTld4UFEwYzBjMlpqY1VOSFRFSk1NRVJoZWxvclFtUkRTWGhsYkVOdlJqTkRMMnMzWW5od1VXNTRRbll3T1dSWWFYUkNWQXBQWXpOVVdreFhNM3B5ZWk5ek0zWkZNWFZFVEVGNlQxaElkRWxNTkhSeFVqbE9ZMGxvVTBoRmRtNVZRbkZ3UzJoVmNYWnpkMnA1WVVKR1QzQTVia2xoQ2xGbmMxUXJORXA1ZUdKV0wwdHNSQzl4V0U1d1RHRkZRMmRaUVRoTkx6bHRha1ozTjJnemFsTTRiek5VYnpCblkySnFVMWhJYVZaUFUySkpSMFJHV25FS01IZG9SVkptTUc5V1FXOUlSR00yU1cxYVZsWm1USFpoWkhGQlJpdEtOMVZQVkZObGJGWjFSVzR6WVVWNEx6aHBUMVI2Vmxjck0zbDBhWFZIUTNwaVp3cGlVV1FyUkZCNmFVaGtOR3hJUTJwRFVVSlJjV3RDWlhaMk1ITmllbk5aUVdsWmRIUlZlRWxCTUhkc1FsUk5VelZKY2xkblZWQnhSeTlFVUdoR2NWQnFDa2h3TUVkMFVVdENaMUZEZDJScU9FOVNNa1JST1VKNFZsSTVlakZ6TUVadlNHMXJORFJRYURGdFVFdDBiVlZtTVdab1pFaEROMnRzTWxWVVJtNXlWWElLZDFoeVdXWnFWalJzU0hWamFpdHZNa2xOVWpCR1ZDczRRakpaUzBGV1RHTk1aRVp5YVdKdFkwY3haSE5yUkhSMGJYQnhkV3BMWTJ0MU9YQXZlV2RtTkFweGQwWjVRV0pqUjBJMk9HdFJaVnBKU1hWWU9UTTNVekpSWTNBeFVFeHdWamwyWm05SlVVUmtSVlZCTTFKQlRqQlNSQzgwWmxFOVBRb3RMUzB0TFVWT1JDQlNVMEVnVUZKSlZrRlVSU0JMUlZrdExTMHRMUW89Cg== --- apiVersion: v1 +kind: Secret +metadata: + name: service-account-key + namespace: shoot--foobar--hcloud +type: Opaque +data: + id_rsa: LS0tLS1CRUdJTiBSU0EgUFJJVkFURSBLRVktLS0tLQpNSUlKS2dJQkFBS0NBZ0VBNnJFemIvdHJFaG1nL0daai92RWUrZktlRlBSa3FGYUU5bmljUWJOcklXNlUvaEdIClpQT0lLL3pZQStVcFdqSmxzc3RVYTExYVk1dGxna2l2Zy9wSEhhVWlxTi9ra0U4ZmZFbWlBZGF2dyt2ai9lWTQKMnZ1QmdPd3A1SVRxcWtyeDJOWDkrRU0xVGpHTHljazZVUGVxUEIyd29Ib0JRbE9Kb3F0TiszanRlSGF0Y1RzNAorR3pyNjh0RXlHZlB6OElLMVBRMFNYWUZBdUdvUUlWbTNlUyt4ckF0c3Y3OWh1cGM1U0VRVC93L0x3KzJBb1RECmRLZ1BDd011WkdyZTJDS0R3V1NqLytZY3YvK3VWVDZkakE0WWRaMGFqU1Y4aGxOTmhoQ1REZDlLUXE4bUJoMUEKeGNFcUJuRFJaQzE1dytyNE9wUzJJTSszNExzMm9rWlpNaXRLVVdwVGlaVmxKTTBvWnV4MWV6MXBxbGlKMXNRRwpKVFBJMDBPbzlnTUJsVEJ0VnJtYzN5YlpVOGNNTWduMGxxZXJEVDVRUzdCcHZyV0VXNERxdmdiMEZtN3BNSUdvCjNlZEZSbXZhdVRHazhscFkxZXlTVnp5am1xTkpRV2pKdFZwWXM3SzluRUNRNjBiVXBLSXovOWhRZVpac3BuRTMKekFHWHQ3c2UrU3R6VEZBZEhTTFZLQ0FGclpYTGtRNjF4R0R4cW9SU014eDVrWERreGNWZzM5bGpZQ21Na25pSgoyZ21HWDRpRTdManBEdTFkT2ZvY2J4RlRScDMvbERmdDJpekFWR2JIL2RUS1pMcmVSYkdueG5aa1hpZGV0K2RpCjZvOW5ObEtncHhmMFJuNUJCWWREY0xKazdSdXJuZmc4bFRoQmpkSElRVUdETXcyeEo3ck1DdlE4RlpjQ0F3RUEKQVFLQ0FnRUEyNmJYUm5KZnhvUDRHT0pYcW03UG1BMUxpTDhuU2lvWHJYbzZmSDlJdi9SNE84WDZHekNXZk56YQo2K0pacnBKR2ZtMHc2SDlwcnBudENsK3U3VzJiaTVKWGV3aDVLZHJ6MCtZeVcxZ3NEc2xEREFtaG9zb0xiYmNhCmlrY2dQaHVBZUhubmhhaVpSa0syMnplYmZkWWVITCtJNU5qclBzRmlxcjE3Y2VXL0U2UzNOYWZBN1RrOElPYVEKektQa2FrVG8wR0J5WTJLeTAveVE5VG9saVgyaVUrRG1GSVgwa0lYZVJaQ0piT0xmMjlMdmZUSDJvTUw5dVVmVAo3cVhiUlJ3Z2hpc0VGdWV1ZHIvODBNbVd1Rk1rNzBjSFo1enpDK0VCU0gxUXRJWU1RWmNkbGxGZ292VGp1VDF6CnJEZW5wQWJSSmpxeXJzamFCdG9SQ3hXZU80Y3F1SGNlRGZGeDY1bDdheWlNaVRNV2RKVTRuZ2x3Umo5ZXcyaTEKUWJvNGVqTWdoSWgwTW94U1JDOHQ2QmhLM2dVdTU3Z3JKcFo2enJ0RHpWaGVoZzlZRWI4UFc5UCt4cG83aUFBWQpsSjk2MlpmWHRDcFVZQUhVbXhRUzhwRGQvOUc4dE5xUTN4aGdwczUwc2hJSVhQWEl0MGxoNjNXQ0VkWTF0cjhwCms3b0ZwdmdpTEpYYjg0RjdGMW9raUtYWm1DRGJpamJJZEx2cEVtZXpvcXRJV3FhWWxDMUQ3TFViWUhxa1UwUHAKU1pPNExCVlZNWGFsV1dtVU5GMVlwOGZXTkF5WU4rdVgzWDd5WVlYT1ZyTjBhdms4djhka05hWjNtQXBIN1UwaAp5NlR3ZXFGc1JuYkl1QW4wY1Z2cy9ZN21jYUpSeXJ3bS9WSFcyaFpJa0lMRTkrOVRjaEVDZ2dFQkFPem01VmtmClYxUzFER3BMN0dZY0tOb3hwY01sTjhpaUlmaWY5ZjVqOW5FN3M1d2Q0czZEbUltbVJIdnhCeFdqOGZySHp2OHAKSDJHR3EwcGVMMGNMcHJURU9tR25rK1ZUU1U3cDE2eHBPQldEMThZK3gwN0NsM3FlUjBoYUdzcEpPc1hTS1ZJUgpxaCtxblpzVkhYaFJDU2dvSnVXWnVtRDV6OFpCNGNvcDc0dVRqeGRnY0dheXY0ZUdYYWtNclBzUytmR1REVkFJCjZjaGpnOVBOM2RSaUQ2L1I3Q3FLRXdsNDVuM0VHazQreUE4Sk9VWHBBMUlraURhZWlGSXBvODRybyt4M20xdm0KYmlIa09CZW1hSlpuY2JZem1aaFh4bW9XV0pSYTJ1WW1vY2NxNnBISXVTUWVXTTVHMWtCajFJZ21DZ0QwR0M1YwpCM1dwL01Ya0JvQlZiM2tDZ2dFQkFQMmNzM2FLc0ZIcE1idGRHWDd4alpUeHJVUUR6dHMyeGt3VWVMNVJYWktVCkgrRHY4emt6TytVMFAyaGxseXkwUEJHSWdDaDNvV0NHdy8zSnE3ZzNJV2RUY0pkaTBBWWVUYi94ODFpTllZQWgKVXlySEI0WlJ4K3RScit5RmhWNjJpSWFHTW9HRDlBbzR6ZC95OGFpSWc3ZUJrNGJ2dzBEUkFTSHZCWmZ5ak5wNApKYzZ2WmRuK0xpRDhTYWw1SXRjWlBOTGNGTjFRb3k1S29aSXJHdFVLV2UzejR5bzN6RWl6UW15cEx6ZlJoY25iCi9XcHRqMDF6clIwODhJaHVUbXhSeEVZMS9HR0xKRDZBSy9RTk45WnVjNHdSVjNmclcwd05RajJiUm5OYXRmdG0KdVdsck5teUp1RCtnb2ZTT2lkNHFqNHhTeVpVRkh6Rit2RnQ4RUFtZ0dZOENnZ0VCQU5FNFRmNzZyZTd5Z2tkeQpUQklWOW9KVTdIYys3RmcxMEZpNk5NOTVTeEhQengwbVM4Tms5eGRDRHlPQ3gyWDJSMlBhaU5aU1pCT0drc3A0CkNicnQ4RW1mTDR4RktsbVN4NkI0NXUrdWNVaVhDcjViZlR2eW9VTTZlK3ZMSC9QYzNwb010RTkxcUZDVkp1SHEKc1A4c1dqRHIzUVpUVVFZS09kUjNKTWlkWnFCWExqMVAvNVREY21GbmFsbzlCcHdxc3pFRlZQR0ZIYXJMTUlhagpQckV0OVhxcW82OGlDQlFLZ1UwN0hweFIxKzluanZ4T0FJL1FFYmhqSkRPajhMWEpWdGtrL01FWjdkUGlzU001CjVRNUh4MlpKaGZIRU8wZy8rZlR6bEhWRVV3WUp3ZVlFWm5ZZWt3R0NFQUFINnBCZlArQjlzc2xtbjNQc0w0QTUKbFFCTDg4a0NnZ0VBZE5Yc0Y0QnRHazlFQ2YwcDhjRjJhRmV1YXRjV1JRZEc4Mlc2K25LaG1SV0VXaXd3OFBrWgpiczVUSjlVbGdBTElhWXRvL3p1ZHJNcHBJRkg0T2pXcnZkNUMwSHRGT294YlpVSWh5WG5Zb1I2NUljdnZPNElSCmgrZHFGSnl1aEtPeTRjYVJIZm1jUTlsSGZ4UjlJQmRFRnhZcTBNOUVOR2dWRFgwQUpyQW5FNzZtTEVIQnVsdlAKQklNMXJFMlNMMllCRDJNMGVZRGNyRWJWaUhFek8xSTVlOVlQb1ROemVVcWNIMU1SM2JVNDNYWHJtVXcvNkg2UwpFaFl3K2FsWGw2OVRyTVRTTUYzWnBMR0hqamRJc2hEUVNvYnl0TnhJZ3hEWW8ya1ZXNjgraDBNYngrVU1mWlEwCnZadFRBVWRwWEdCZklWWkNaOVNrT2prWXJVektWcVRiSVFLQ0FRRUF1QlJIT3RxNUxJaS93VEh6ZUN1STJ5UWMKL25BUXI0WiszTUNQVXJWWWMreE1pZ2pvNHNFdUpWTzFsNGlVL2tXZXdMOTZWbEJLQ1llc2lPK3FCSTJPNVVPZQoxamY0OC9tOHorcDhpVnUweGRjUzFvVEIyVFRXZHBQTklmYlVMaWxIZDViRmdOZEtIQ0kxWXFZbFhnUkw1MVdCCkJJYm1GSHBoNXRCTjVHRmJqV1dmWGF6dHM1c0RVUXRibkpKdjMxbXdBc05WZG1Ycm8rb2RMMlZNSlNsYmQwMEIKMFY5eG5Jb3VwT3NRZjNrdGdRa0lkeFFBMHgvME9sWnNhWUF4NUlWMzc1cjR1bGxDRmhNY1RKMEFUVUk3SzdiKwpQbjIvUWcycjBPaVJFNkE1UVMrSUhyQWJnNTh4QTB0d29xeU5vd0lWdlJjWFBNZitNeGZUZUlGOUNab2tYUT09Ci0tLS0tRU5EIFJTQSBQUklWQVRFIEtFWS0tLS0tCg== +--- +apiVersion: v1 +kind: Secret +metadata: + name: service-account-key-bundle + namespace: shoot--foobar--hcloud +type: Opaque +data: + bundle.key: LS0tLS1CRUdJTiBSU0EgUFJJVkFURSBLRVktLS0tLQpNSUlKS2dJQkFBS0NBZ0VBNnJFemIvdHJFaG1nL0daai92RWUrZktlRlBSa3FGYUU5bmljUWJOcklXNlUvaEdIClpQT0lLL3pZQStVcFdqSmxzc3RVYTExYVk1dGxna2l2Zy9wSEhhVWlxTi9ra0U4ZmZFbWlBZGF2dyt2ai9lWTQKMnZ1QmdPd3A1SVRxcWtyeDJOWDkrRU0xVGpHTHljazZVUGVxUEIyd29Ib0JRbE9Kb3F0TiszanRlSGF0Y1RzNAorR3pyNjh0RXlHZlB6OElLMVBRMFNYWUZBdUdvUUlWbTNlUyt4ckF0c3Y3OWh1cGM1U0VRVC93L0x3KzJBb1RECmRLZ1BDd011WkdyZTJDS0R3V1NqLytZY3YvK3VWVDZkakE0WWRaMGFqU1Y4aGxOTmhoQ1REZDlLUXE4bUJoMUEKeGNFcUJuRFJaQzE1dytyNE9wUzJJTSszNExzMm9rWlpNaXRLVVdwVGlaVmxKTTBvWnV4MWV6MXBxbGlKMXNRRwpKVFBJMDBPbzlnTUJsVEJ0VnJtYzN5YlpVOGNNTWduMGxxZXJEVDVRUzdCcHZyV0VXNERxdmdiMEZtN3BNSUdvCjNlZEZSbXZhdVRHazhscFkxZXlTVnp5am1xTkpRV2pKdFZwWXM3SzluRUNRNjBiVXBLSXovOWhRZVpac3BuRTMKekFHWHQ3c2UrU3R6VEZBZEhTTFZLQ0FGclpYTGtRNjF4R0R4cW9SU014eDVrWERreGNWZzM5bGpZQ21Na25pSgoyZ21HWDRpRTdManBEdTFkT2ZvY2J4RlRScDMvbERmdDJpekFWR2JIL2RUS1pMcmVSYkdueG5aa1hpZGV0K2RpCjZvOW5ObEtncHhmMFJuNUJCWWREY0xKazdSdXJuZmc4bFRoQmpkSElRVUdETXcyeEo3ck1DdlE4RlpjQ0F3RUEKQVFLQ0FnRUEyNmJYUm5KZnhvUDRHT0pYcW03UG1BMUxpTDhuU2lvWHJYbzZmSDlJdi9SNE84WDZHekNXZk56YQo2K0pacnBKR2ZtMHc2SDlwcnBudENsK3U3VzJiaTVKWGV3aDVLZHJ6MCtZeVcxZ3NEc2xEREFtaG9zb0xiYmNhCmlrY2dQaHVBZUhubmhhaVpSa0syMnplYmZkWWVITCtJNU5qclBzRmlxcjE3Y2VXL0U2UzNOYWZBN1RrOElPYVEKektQa2FrVG8wR0J5WTJLeTAveVE5VG9saVgyaVUrRG1GSVgwa0lYZVJaQ0piT0xmMjlMdmZUSDJvTUw5dVVmVAo3cVhiUlJ3Z2hpc0VGdWV1ZHIvODBNbVd1Rk1rNzBjSFo1enpDK0VCU0gxUXRJWU1RWmNkbGxGZ292VGp1VDF6CnJEZW5wQWJSSmpxeXJzamFCdG9SQ3hXZU80Y3F1SGNlRGZGeDY1bDdheWlNaVRNV2RKVTRuZ2x3Umo5ZXcyaTEKUWJvNGVqTWdoSWgwTW94U1JDOHQ2QmhLM2dVdTU3Z3JKcFo2enJ0RHpWaGVoZzlZRWI4UFc5UCt4cG83aUFBWQpsSjk2MlpmWHRDcFVZQUhVbXhRUzhwRGQvOUc4dE5xUTN4aGdwczUwc2hJSVhQWEl0MGxoNjNXQ0VkWTF0cjhwCms3b0ZwdmdpTEpYYjg0RjdGMW9raUtYWm1DRGJpamJJZEx2cEVtZXpvcXRJV3FhWWxDMUQ3TFViWUhxa1UwUHAKU1pPNExCVlZNWGFsV1dtVU5GMVlwOGZXTkF5WU4rdVgzWDd5WVlYT1ZyTjBhdms4djhka05hWjNtQXBIN1UwaAp5NlR3ZXFGc1JuYkl1QW4wY1Z2cy9ZN21jYUpSeXJ3bS9WSFcyaFpJa0lMRTkrOVRjaEVDZ2dFQkFPem01VmtmClYxUzFER3BMN0dZY0tOb3hwY01sTjhpaUlmaWY5ZjVqOW5FN3M1d2Q0czZEbUltbVJIdnhCeFdqOGZySHp2OHAKSDJHR3EwcGVMMGNMcHJURU9tR25rK1ZUU1U3cDE2eHBPQldEMThZK3gwN0NsM3FlUjBoYUdzcEpPc1hTS1ZJUgpxaCtxblpzVkhYaFJDU2dvSnVXWnVtRDV6OFpCNGNvcDc0dVRqeGRnY0dheXY0ZUdYYWtNclBzUytmR1REVkFJCjZjaGpnOVBOM2RSaUQ2L1I3Q3FLRXdsNDVuM0VHazQreUE4Sk9VWHBBMUlraURhZWlGSXBvODRybyt4M20xdm0KYmlIa09CZW1hSlpuY2JZem1aaFh4bW9XV0pSYTJ1WW1vY2NxNnBISXVTUWVXTTVHMWtCajFJZ21DZ0QwR0M1YwpCM1dwL01Ya0JvQlZiM2tDZ2dFQkFQMmNzM2FLc0ZIcE1idGRHWDd4alpUeHJVUUR6dHMyeGt3VWVMNVJYWktVCkgrRHY4emt6TytVMFAyaGxseXkwUEJHSWdDaDNvV0NHdy8zSnE3ZzNJV2RUY0pkaTBBWWVUYi94ODFpTllZQWgKVXlySEI0WlJ4K3RScit5RmhWNjJpSWFHTW9HRDlBbzR6ZC95OGFpSWc3ZUJrNGJ2dzBEUkFTSHZCWmZ5ak5wNApKYzZ2WmRuK0xpRDhTYWw1SXRjWlBOTGNGTjFRb3k1S29aSXJHdFVLV2UzejR5bzN6RWl6UW15cEx6ZlJoY25iCi9XcHRqMDF6clIwODhJaHVUbXhSeEVZMS9HR0xKRDZBSy9RTk45WnVjNHdSVjNmclcwd05RajJiUm5OYXRmdG0KdVdsck5teUp1RCtnb2ZTT2lkNHFqNHhTeVpVRkh6Rit2RnQ4RUFtZ0dZOENnZ0VCQU5FNFRmNzZyZTd5Z2tkeQpUQklWOW9KVTdIYys3RmcxMEZpNk5NOTVTeEhQengwbVM4Tms5eGRDRHlPQ3gyWDJSMlBhaU5aU1pCT0drc3A0CkNicnQ4RW1mTDR4RktsbVN4NkI0NXUrdWNVaVhDcjViZlR2eW9VTTZlK3ZMSC9QYzNwb010RTkxcUZDVkp1SHEKc1A4c1dqRHIzUVpUVVFZS09kUjNKTWlkWnFCWExqMVAvNVREY21GbmFsbzlCcHdxc3pFRlZQR0ZIYXJMTUlhagpQckV0OVhxcW82OGlDQlFLZ1UwN0hweFIxKzluanZ4T0FJL1FFYmhqSkRPajhMWEpWdGtrL01FWjdkUGlzU001CjVRNUh4MlpKaGZIRU8wZy8rZlR6bEhWRVV3WUp3ZVlFWm5ZZWt3R0NFQUFINnBCZlArQjlzc2xtbjNQc0w0QTUKbFFCTDg4a0NnZ0VBZE5Yc0Y0QnRHazlFQ2YwcDhjRjJhRmV1YXRjV1JRZEc4Mlc2K25LaG1SV0VXaXd3OFBrWgpiczVUSjlVbGdBTElhWXRvL3p1ZHJNcHBJRkg0T2pXcnZkNUMwSHRGT294YlpVSWh5WG5Zb1I2NUljdnZPNElSCmgrZHFGSnl1aEtPeTRjYVJIZm1jUTlsSGZ4UjlJQmRFRnhZcTBNOUVOR2dWRFgwQUpyQW5FNzZtTEVIQnVsdlAKQklNMXJFMlNMMllCRDJNMGVZRGNyRWJWaUhFek8xSTVlOVlQb1ROemVVcWNIMU1SM2JVNDNYWHJtVXcvNkg2UwpFaFl3K2FsWGw2OVRyTVRTTUYzWnBMR0hqamRJc2hEUVNvYnl0TnhJZ3hEWW8ya1ZXNjgraDBNYngrVU1mWlEwCnZadFRBVWRwWEdCZklWWkNaOVNrT2prWXJVektWcVRiSVFLQ0FRRUF1QlJIT3RxNUxJaS93VEh6ZUN1STJ5UWMKL25BUXI0WiszTUNQVXJWWWMreE1pZ2pvNHNFdUpWTzFsNGlVL2tXZXdMOTZWbEJLQ1llc2lPK3FCSTJPNVVPZQoxamY0OC9tOHorcDhpVnUweGRjUzFvVEIyVFRXZHBQTklmYlVMaWxIZDViRmdOZEtIQ0kxWXFZbFhnUkw1MVdCCkJJYm1GSHBoNXRCTjVHRmJqV1dmWGF6dHM1c0RVUXRibkpKdjMxbXdBc05WZG1Ycm8rb2RMMlZNSlNsYmQwMEIKMFY5eG5Jb3VwT3NRZjNrdGdRa0lkeFFBMHgvME9sWnNhWUF4NUlWMzc1cjR1bGxDRmhNY1RKMEFUVUk3SzdiKwpQbjIvUWcycjBPaVJFNkE1UVMrSUhyQWJnNTh4QTB0d29xeU5vd0lWdlJjWFBNZitNeGZUZUlGOUNab2tYUT09Ci0tLS0tRU5EIFJTQSBQUklWQVRFIEtFWS0tLS0tCg== +--- +apiVersion: v1 kind: Service metadata: name: kube-apiserver @@ -126,9 +144,8 @@ spec: spec: containers: - command: - - /hyperkube - - apiserver - - --enable-admission-plugins=Priority,NamespaceLifecycle,LimitRanger,ServiceAccount,NodeRestriction,DefaultStorageClass,Initializers,DefaultTolerationSeconds,ResourceQuota,StorageObjectInUseProtection,MutatingAdmissionWebhook,ValidatingAdmissionWebhook + - /usr/local/bin/kube-apiserver + - --enable-admission-plugins=Priority,NamespaceLifecycle,LimitRanger,ServiceAccount,NodeRestriction,DefaultStorageClass,DefaultTolerationSeconds,ResourceQuota,StorageObjectInUseProtection,MutatingAdmissionWebhook,ValidatingAdmissionWebhook - --disable-admission-plugins=PersistentVolumeLabel - --allow-privileged=true - --anonymous-auth=false @@ -140,14 +157,16 @@ spec: - --endpoint-reconciler-type=none - --etcd-servers=http://etcd:2379 - --kubelet-preferred-address-types=InternalIP,Hostname,ExternalIP - - --insecure-port=0 - --profiling=false - --secure-port=443 - --service-cluster-ip-range=100.64.0.0/13 - --tls-cert-file=/srv/kubernetes/apiserver/kube-apiserver.crt - --tls-private-key-file=/srv/kubernetes/apiserver/kube-apiserver.key + - --service-account-issuer=https://api.shoot-foobar.hcloud.com + - --service-account-signing-key-file=/srv/kubernetes/service-account-key/id_rsa + - --service-account-key-file=/srv/kubernetes/service-account-key-bundle/bundle.key - --v=2 - image: registry.k8s.io/hyperkube:v1.15.6 + image: registry.k8s.io/kube-apiserver:v1.28.2 imagePullPolicy: IfNotPresent name: kube-apiserver ports: @@ -164,6 +183,10 @@ spec: name: ca - mountPath: /srv/kubernetes/apiserver name: kube-apiserver + - mountPath: /srv/kubernetes/service-account-key + name: service-account-key + - mountPath: /srv/kubernetes/service-account-key-bundle + name: service-account-key-bundle dnsPolicy: ClusterFirst restartPolicy: Always schedulerName: default-scheduler @@ -181,3 +204,11 @@ spec: secret: defaultMode: 420 secretName: kube-apiserver + - name: service-account-key + secret: + defaultMode: 420 + secretName: service-account-key + - name: service-account-key-bundle + secret: + defaultMode: 420 + secretName: service-account-key-bundle diff --git a/example/20-crd-cluster.yaml b/example/20-crd-cluster.yaml index 71c21c226..bad3e44b5 100644 --- a/example/20-crd-cluster.yaml +++ b/example/20-crd-cluster.yaml @@ -9,15 +9,17 @@ spec: - name: v1alpha1 served: true storage: true - version: v1alpha1 + additionalPrinterColumns: + - name: Age + type: date + jsonPath: .metadata.creationTimestamp + schema: + openAPIV3Schema: + type: object + subresources: + status: {} scope: Cluster names: plural: clusters singular: cluster kind: Cluster - additionalPrinterColumns: - - name: Age - type: date - JSONPath: .metadata.creationTimestamp - subresources: - status: {} diff --git a/example/20-crd-controlplane.yaml b/example/20-crd-controlplane.yaml index 25df2a482..c60f66071 100644 --- a/example/20-crd-controlplane.yaml +++ b/example/20-crd-controlplane.yaml @@ -9,7 +9,22 @@ spec: - name: v1alpha1 served: true storage: true - version: v1alpha1 + additionalPrinterColumns: + - name: Type + type: string + description: The control plane type. + jsonPath: .spec.type + - name: State + type: string + jsonPath: .status.lastOperation.state + - name: Age + type: date + jsonPath: .metadata.creationTimestamp + schema: + openAPIV3Schema: + type: object + subresources: + status: {} scope: Namespaced names: plural: controlplanes @@ -17,16 +32,3 @@ spec: kind: ControlPlane shortNames: - cp - additionalPrinterColumns: - - name: Type - type: string - description: The control plane type. - JSONPath: .spec.type - - name: State - type: string - JSONPath: .status.lastOperation.state - - name: Age - type: date - JSONPath: .metadata.creationTimestamp - subresources: - status: {} diff --git a/example/20-crd-infrastructure.yaml b/example/20-crd-infrastructure.yaml index cf9aa6b55..14c99f5e6 100644 --- a/example/20-crd-infrastructure.yaml +++ b/example/20-crd-infrastructure.yaml @@ -9,7 +9,26 @@ spec: - name: v1alpha1 served: true storage: true - version: v1alpha1 + additionalPrinterColumns: + - name: Type + type: string + description: The type of the cloud provider for this resource. + jsonPath: .spec.type + - name: Region + type: string + description: The region into which the infrastructure should be deployed. + jsonPath: .spec.region + - name: State + type: string + jsonPath: .status.lastOperation.state + - name: Age + type: date + jsonPath: .metadata.creationTimestamp + schema: + openAPIV3Schema: + type: object + subresources: + status: {} scope: Namespaced names: plural: infrastructures @@ -17,20 +36,3 @@ spec: kind: Infrastructure shortNames: - infra - additionalPrinterColumns: - - name: Type - type: string - description: The type of the cloud provider for this resource. - JSONPath: .spec.type - - name: Region - type: string - description: The region into which the infrastructure should be deployed. - JSONPath: .spec.region - - name: State - type: string - JSONPath: .status.lastOperation.state - - name: Age - type: date - JSONPath: .metadata.creationTimestamp - subresources: - status: {} diff --git a/example/20-crd-managedresource.yaml b/example/20-crd-managedresource.yaml index 5dd6a49d2..68de8fdc3 100644 --- a/example/20-crd-managedresource.yaml +++ b/example/20-crd-managedresource.yaml @@ -9,7 +9,18 @@ spec: - name: v1alpha1 served: true storage: true - version: v1alpha1 + additionalPrinterColumns: + - name: Class + type: string + jsonPath: .spec.class + - name: Age + type: date + jsonPath: .metadata.creationTimestamp + schema: + openAPIV3Schema: + type: object + subresources: + status: {} scope: Namespaced names: plural: managedresources @@ -17,12 +28,3 @@ spec: kind: ManagedResource shortNames: - mr - additionalPrinterColumns: - - name: Class - type: string - JSONPath: .spec.class - - name: Age - type: date - JSONPath: .metadata.creationTimestamp - subresources: - status: {} diff --git a/example/20-crd-operatingsystemconfig.yaml b/example/20-crd-operatingsystemconfig.yaml index c1f91cae0..29853cb84 100644 --- a/example/20-crd-operatingsystemconfig.yaml +++ b/example/20-crd-operatingsystemconfig.yaml @@ -9,7 +9,22 @@ spec: - name: v1alpha1 served: true storage: true - version: v1alpha1 + additionalPrinterColumns: + - name: Type + type: string + description: The type of the operating system configuration. + jsonPath: .spec.type + - name: State + type: string + jsonPath: .status.lastOperation.state + - name: Age + type: date + jsonPath: .metadata.creationTimestamp + schema: + openAPIV3Schema: + type: object + subresources: + status: {} scope: Namespaced names: plural: operatingsystemconfigs @@ -17,16 +32,3 @@ spec: kind: OperatingSystemConfig shortNames: - osc - additionalPrinterColumns: - - name: Type - type: string - description: The type of the operating system configuration. - JSONPath: .spec.type - - name: State - type: string - JSONPath: .status.lastOperation.state - - name: Age - type: date - JSONPath: .metadata.creationTimestamp - subresources: - status: {} diff --git a/example/20-crd-vpa.yaml b/example/20-crd-vpa.yaml index 0dbeae45d..ce029dd3d 100644 --- a/example/20-crd-vpa.yaml +++ b/example/20-crd-vpa.yaml @@ -11,31 +11,32 @@ spec: kind: VerticalPodAutoscaler shortNames: - vpa - version: v1beta1 versions: - name: v1beta1 served: true storage: false + schema: + openAPIV3Schema: + properties: + spec: + required: [] + properties: + targetRef: + type: object + updatePolicy: + properties: + updateMode: + type: string + resourcePolicy: + properties: + containerPolicies: + type: array - name: v1beta2 served: true storage: true - validation: - # openAPIV3Schema is the schema for validating custom objects. - openAPIV3Schema: - properties: - spec: - required: [] - properties: - targetRef: - type: object - updatePolicy: - properties: - updateMode: - type: string - resourcePolicy: - properties: - containerPolicies: - type: array + schema: + openAPIV3Schema: + type: object --- apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition @@ -50,11 +51,16 @@ spec: kind: VerticalPodAutoscalerCheckpoint shortNames: - vpacheckpoint - version: v1beta1 versions: - name: v1beta1 served: true storage: false + schema: + openAPIV3Schema: + type: object - name: v1beta2 served: true storage: true + schema: + openAPIV3Schema: + type: object diff --git a/example/20-crd-worker.yaml b/example/20-crd-worker.yaml index e9b83c62b..aa04e20e6 100644 --- a/example/20-crd-worker.yaml +++ b/example/20-crd-worker.yaml @@ -9,19 +9,21 @@ spec: - name: v1alpha1 served: true storage: true - version: v1alpha1 + additionalPrinterColumns: + - name: Type + type: string + description: The worker type. + jsonPath: .spec.type + - name: Age + type: date + jsonPath: .metadata.creationTimestamp + schema: + openAPIV3Schema: + type: object + subresources: + status: {} scope: Namespaced names: plural: workers singular: worker kind: Worker - additionalPrinterColumns: - - name: Type - type: string - description: The worker type. - JSONPath: .spec.type - - name: Age - type: date - JSONPath: .metadata.creationTimestamp - subresources: - status: {} diff --git a/example/30-controlplane.yaml b/example/30-controlplane.yaml index 83dec078e..18f680568 100644 --- a/example/30-controlplane.yaml +++ b/example/30-controlplane.yaml @@ -15,7 +15,7 @@ metadata: namespace: shoot--foobar--hcloud type: Opaque data: - hcloudToken: base64token + hcloudToken: token --- apiVersion: extensions.gardener.cloud/v1alpha1 kind: Cluster @@ -51,7 +51,7 @@ spec: networks: pods: 10.250.0.0/19 kubernetes: - version: 1.15.4 + version: 1.29.9 hibernation: enabled: false status: diff --git a/hack/ci/misc/test-shoot.yaml b/hack/ci/misc/test-shoot.yaml index a4d4a0af9..fb97cf20f 100644 --- a/hack/ci/misc/test-shoot.yaml +++ b/hack/ci/misc/test-shoot.yaml @@ -16,7 +16,7 @@ spec: kind: ControlPlaneConfig zone: fsn1-dc14 workers: - - name: worker-eeost + - name: worker-x86 minimum: 1 maximum: 2 maxSurge: 1 @@ -24,7 +24,7 @@ spec: type: cpx31 image: name: ubuntu - version: 22.4.20231020 + version: 22.4.20241008 architecture: amd64 zones: - fsn1-dc14 @@ -32,6 +32,22 @@ spec: name: containerd volume: size: 50Gi + - name: worker-arm + minimum: 1 + maximum: 2 + maxSurge: 1 + machine: + type: cax21 + image: + name: ubuntu + version: 22.4.20241008 + architecture: arm64 + zones: + - fsn1-dc14 + cri: + name: containerd + volume: + size: 50Gi networking: nodes: 10.251.0.0/16 pods: 100.64.0.0/16 diff --git a/pkg/controller/worker/machine_images.go b/pkg/controller/worker/machine_images.go index c4d64fbef..281d0f320 100644 --- a/pkg/controller/worker/machine_images.go +++ b/pkg/controller/worker/machine_images.go @@ -35,7 +35,18 @@ import ( // ctx context.Context Execution context // name string Machine image name // version string Machine image version -func (w *workerDelegate) findMachineImageName(ctx context.Context, name, version string) (string, error) { +func (w *workerDelegate) findMachineImageName(ctx context.Context, name, version string, architecture *string) (string, error) { + var arch hcloudclient.Architecture + if architecture != nil { + if *architecture == "arm" { + arch = hcloudclient.ArchitectureARM + } else { + arch = hcloudclient.ArchitectureX86 + } + } else { + arch = hcloudclient.ArchitectureX86 + } + machineImage, err := transcoder.DecodeMachineImageNameFromCloudProfile(w.cloudProfileConfig, name, version) if err == nil { return machineImage, nil @@ -59,19 +70,20 @@ func (w *workerDelegate) findMachineImageName(ctx context.Context, name, version } images, _, err := client.Image.List(ctx, opts) - if nil != err { + if err != nil { return "", err } for _, image := range images { - if image.OSFlavor != name || image.OSVersion != version { + if image.OSFlavor != name || image.OSVersion != version || image.Architecture != arch { continue } return image.Name, nil } - return "", worker.ErrorMachineImageNotFound(name, version) + archStr := string(arch) + return "", worker.ErrorMachineImageNotFound(name, version, archStr) } // UpdateMachineImagesStatus adds machineImages to the `WorkerStatus` resource. diff --git a/pkg/controller/worker/machines.go b/pkg/controller/worker/machines.go index 238ee666c..836cf559d 100644 --- a/pkg/controller/worker/machines.go +++ b/pkg/controller/worker/machines.go @@ -26,9 +26,11 @@ import ( "github.com/gardener/gardener/extensions/pkg/controller/worker" genericworkeractuator "github.com/gardener/gardener/extensions/pkg/controller/worker/genericactuator" corev1beta1 "github.com/gardener/gardener/pkg/apis/core/v1beta1" + v1beta1constants "github.com/gardener/gardener/pkg/apis/core/v1beta1/constants" "github.com/gardener/gardener/pkg/client/kubernetes" mcmv1alpha1 "github.com/gardener/machine-controller-manager/pkg/apis/machine/v1alpha1" corev1 "k8s.io/api/core/v1" + "k8s.io/utils/ptr" "sigs.k8s.io/controller-runtime/pkg/client" "github.com/23technologies/gardener-extension-provider-hcloud/charts" @@ -152,7 +154,9 @@ func (w *workerDelegate) generateMachineConfig(ctx context.Context) error { return err } - imageName, err := w.findMachineImageName(ctx, pool.MachineImage.Name, pool.MachineImage.Version) + arch := ptr.Deref(pool.Architecture, v1beta1constants.ArchitectureAMD64) + + imageName, err := w.findMachineImageName(ctx, pool.MachineImage.Name, pool.MachineImage.Version, &arch) if err != nil { return err } diff --git a/pkg/hcloud/apis/types_cloudprofile.go b/pkg/hcloud/apis/types_cloudprofile.go index f97c7c1e8..187f40827 100644 --- a/pkg/hcloud/apis/types_cloudprofile.go +++ b/pkg/hcloud/apis/types_cloudprofile.go @@ -68,10 +68,12 @@ type MachineImages struct { type MachineImageVersion struct { // Version is the version of the image. Version string `json:"version"` - // ImageName is the Hetzner Cloud image name if not matching name + "-" + version. // +optional ImageName string `json:"imageName,omitempty"` + // Architecture is the CPU architecture of the machine image. + // +optional + Architecture *string `json:"architecture,omitempty"` } // MachineTypeOptions defines additional VM options for an machine type given by name diff --git a/pkg/hcloud/apis/types_worker.go b/pkg/hcloud/apis/types_worker.go index aa5514232..384719165 100644 --- a/pkg/hcloud/apis/types_worker.go +++ b/pkg/hcloud/apis/types_worker.go @@ -43,6 +43,8 @@ type MachineImage struct { Name string `json:"name"` // Version is the logical version of the machine image. Version string `json:"version"` + // Architecture is the CPU architecture of the machine image. + Architecture *string `json:"architecture"` } // +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object diff --git a/pkg/hcloud/apis/v1alpha1/types_cloudprofile.go b/pkg/hcloud/apis/v1alpha1/types_cloudprofile.go index 1c5a6386e..89585f47f 100644 --- a/pkg/hcloud/apis/v1alpha1/types_cloudprofile.go +++ b/pkg/hcloud/apis/v1alpha1/types_cloudprofile.go @@ -74,6 +74,9 @@ type MachineImageVersion struct { // ImageName is the Hetzner Cloud image name if not matching name + "-" + version. // +optional ImageName string `json:"imageName,omitempty"` + // Architecture is the CPU architecture of the machine image. + // +optional + Architecture *string `json:"architecture,omitempty"` } // MachineTypeOptions defines additional VM options for an machine type given by name diff --git a/pkg/hcloud/apis/v1alpha1/types_worker.go b/pkg/hcloud/apis/v1alpha1/types_worker.go index a1d8bae0c..be55ea1e7 100644 --- a/pkg/hcloud/apis/v1alpha1/types_worker.go +++ b/pkg/hcloud/apis/v1alpha1/types_worker.go @@ -44,6 +44,9 @@ type MachineImage struct { Name string `json:"name"` // Version is the logical version of the machine image. Version string `json:"version"` + // Architecture is the CPU architecture of the machine image. + // +optional + Architecture *string `json:"architecture,omitempty"` } // +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object diff --git a/pkg/hcloud/apis/v1alpha1/zz_generated.defaults.go b/pkg/hcloud/apis/v1alpha1/zz_generated.defaults.go index dce68e638..cbe9986a8 100644 --- a/pkg/hcloud/apis/v1alpha1/zz_generated.defaults.go +++ b/pkg/hcloud/apis/v1alpha1/zz_generated.defaults.go @@ -10,7 +10,9 @@ package v1alpha1 import ( + v1beta1constants "github.com/gardener/gardener/pkg/apis/core/v1beta1/constants" runtime "k8s.io/apimachinery/pkg/runtime" + "k8s.io/utils/ptr" ) // RegisterDefaults adds defaulters functions to the given scheme. @@ -19,3 +21,10 @@ import ( func RegisterDefaults(scheme *runtime.Scheme) error { return nil } + +// SetDefaults_MachineImageVersion set the architecture of machine image. +func SetDefaults_MachineImageVersion(obj *MachineImageVersion) { + if obj.Architecture == nil { + obj.Architecture = ptr.To(v1beta1constants.ArchitectureAMD64) + } +}