From 0d89bf5d58f2146fd633e6aee4c7200f9900f15f Mon Sep 17 00:00:00 2001 From: Serge Logvinov Date: Sat, 29 Apr 2023 13:12:37 +0300 Subject: [PATCH] ci: add github checks Add github actions checks. --- .conform.yaml | 51 +++++ .github/workflows/build-edge.yaml | 1 + .github/workflows/build-test.yaml | 6 +- .github/workflows/charts.yaml | 4 +- .github/workflows/conform.yaml | 22 ++ .github/workflows/release-pre.yaml | 34 +++ .github/workflows/release.yaml | 33 +++ Makefile | 36 +++- OWNERS | 4 + .../Chart.yaml | 10 +- .../README.md | 47 ++++ .../ci/values.yaml | 27 +++ .../values-example.yaml | 7 - .../values.edge.yaml | 13 ++ .../values.talos.yaml | 8 + .../deploy/cloud-controller-manager-talos.yml | 204 ++++++++++++++++++ docs/deploy/cloud-controller-manager.yml | 6 +- hack/CHANGELOG.tpl.md | 33 +++ hack/chglog-config.yml | 24 +++ hack/ct.yml | 9 + pkg/proxmox/instances.go | 2 + 21 files changed, 560 insertions(+), 21 deletions(-) create mode 100644 .conform.yaml create mode 100644 .github/workflows/conform.yaml create mode 100644 .github/workflows/release-pre.yaml create mode 100644 .github/workflows/release.yaml create mode 100644 OWNERS create mode 100644 charts/proxmox-cloud-controller-manager/README.md create mode 100644 charts/proxmox-cloud-controller-manager/ci/values.yaml delete mode 100644 charts/proxmox-cloud-controller-manager/values-example.yaml create mode 100644 charts/proxmox-cloud-controller-manager/values.edge.yaml create mode 100644 charts/proxmox-cloud-controller-manager/values.talos.yaml create mode 100644 docs/deploy/cloud-controller-manager-talos.yml create mode 100755 hack/CHANGELOG.tpl.md create mode 100755 hack/chglog-config.yml create mode 100644 hack/ct.yml diff --git a/.conform.yaml b/.conform.yaml new file mode 100644 index 0000000..0c31abb --- /dev/null +++ b/.conform.yaml @@ -0,0 +1,51 @@ +policies: + - type: commit + spec: + header: + length: 89 + imperative: true + case: lower + invalidLastCharacters: . + body: + required: true + dco: false + gpg: false + spellcheck: + locale: US + maximumOfOneCommit: false + conventional: + types: + - build + - chore + - ci + - docs + - perf + - refactor + - revert + - style + - test + scopes: + - deps + - main + descriptionLength: 72 + - type: license + spec: + skipPaths: + - .git/ + allowPrecedingComments: false + header: | + /* + Copyright 2023 The Kubernetes Authors. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + */ diff --git a/.github/workflows/build-edge.yaml b/.github/workflows/build-edge.yaml index e2b2c51..a14bc68 100644 --- a/.github/workflows/build-edge.yaml +++ b/.github/workflows/build-edge.yaml @@ -33,5 +33,6 @@ jobs: - name: Build and push run: make images env: + USERNAME: ${{ github.repository_owner }} PUSH: "true" TAG: "edge" diff --git a/.github/workflows/build-test.yaml b/.github/workflows/build-test.yaml index 4278bdc..17c1dc6 100644 --- a/.github/workflows/build-test.yaml +++ b/.github/workflows/build-test.yaml @@ -26,9 +26,11 @@ jobs: go-version-file: 'go.mod' cache: true - - name: Build - run: make build - name: Lint uses: golangci/golangci-lint-action@v3 with: args: --config=.golangci.yml + - name: Unit + run: make unit + - name: Build + run: make build diff --git a/.github/workflows/charts.yaml b/.github/workflows/charts.yaml index c1ddf34..2824ff2 100644 --- a/.github/workflows/charts.yaml +++ b/.github/workflows/charts.yaml @@ -24,6 +24,4 @@ jobs: - name: Run helm chart linter run: ct --config hack/ct.yml lint - name: Run helm template - run: | - helm template -n kube-system -f charts/talos-cloud-controller-manager/values-tests.yaml \ - ccm charts/talos-cloud-controller-manager > /dev/null + run: make helm-unit diff --git a/.github/workflows/conform.yaml b/.github/workflows/conform.yaml new file mode 100644 index 0000000..2b0a107 --- /dev/null +++ b/.github/workflows/conform.yaml @@ -0,0 +1,22 @@ +name: Conformance check + +on: + pull_request: + branches: + - main + +jobs: + conform: + name: Conformance + runs-on: ubuntu-22.04 + steps: + - name: Checkout + uses: actions/checkout@v3 + with: + fetch-depth: 0 + ref: ${{ github.event.pull_request.head.sha }} + - name: Checkout main branch + run: git fetch --no-tags origin main:main + + - name: Conform action + uses: talos-systems/conform@v0.1.0-alpha.27 diff --git a/.github/workflows/release-pre.yaml b/.github/workflows/release-pre.yaml new file mode 100644 index 0000000..67f7f08 --- /dev/null +++ b/.github/workflows/release-pre.yaml @@ -0,0 +1,34 @@ +name: Release check + +on: + pull_request: + branches: + - main + +jobs: + build-publish: + name: "Check release docs" + runs-on: ubuntu-22.04 + if: startsWith(github.head_ref, 'release-') + permissions: + contents: read + packages: write + steps: + - name: Checkout + uses: actions/checkout@v3 + - name: Unshallow + run: git fetch --prune --unshallow + + - name: Release version + shell: bash + id: release + run: | + echo "TAG=${GITHUB_HEAD_REF:8}" >> "$GITHUB_ENV" + + - name: Helm docs + uses: gabe565/setup-helm-docs-action@v1 + + - name: Generate + run: make docs + - name: Check + run: git diff --exit-code diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml new file mode 100644 index 0000000..c2e2d34 --- /dev/null +++ b/.github/workflows/release.yaml @@ -0,0 +1,33 @@ +name: Release + +on: + push: + tags: + - 'v*' + +jobs: + build-publish: + name: "Build image and publish" + runs-on: ubuntu-22.04 + permissions: + contents: read + packages: write + steps: + - name: Checkout + uses: actions/checkout@v3 + - name: Unshallow + run: git fetch --prune --unshallow + + - name: Set up docker buildx + run: make docker-init + - name: Github registry login + uses: docker/login-action@v2 + with: + registry: ghcr.io + username: ${{ github.actor }} + password: ${{ secrets.GITHUB_TOKEN }} + + - name: Build and push + run: make images + env: + PUSH: "true" diff --git a/Makefile b/Makefile index faa5829..c62a88e 100644 --- a/Makefile +++ b/Makefile @@ -21,7 +21,7 @@ else BUILD_ARGS += --output type=docker endif -###### +############ # Help Menu @@ -43,7 +43,10 @@ help: ## This help menu. @echo "$$HELP_MENU_HEADER" @grep -E '^[a-zA-Z0-9%_-]+:.*?## .*$$' $(MAKEFILE_LIST) | awk 'BEGIN {FS = ":.*?## "}; {printf "\033[36m%-30s\033[0m %s\n", $$1, $$2}' +############ +# # Build Abstractions +# build-all-archs: @for arch in $(ARCHS); do $(MAKE) ARCH=$${arch} build ; done @@ -58,25 +61,45 @@ build: ## Build -o bin/proxmox-cloud-controller-manager-$(ARCH) ./cmd/proxmox-cloud-controller-manager .PHONY: run -run: build +run: build ## Run ./bin/proxmox-cloud-controller-manager-$(ARCH) --v=5 --kubeconfig=kubeconfig --cloud-config=proxmox-config.yaml --controllers=cloud-node,cloud-node-lifecycle \ --use-service-account-credentials --leader-elect=false --bind-address=127.0.0.1 .PHONY: lint -lint: ## Lint +lint: ## Lint Code golangci-lint run --config .golangci.yml .PHONY: unit -unit: +unit: ## Unit Tests go test -tags=unit $(shell go list ./...) $(TESTARGS) +############ + +.PHONY: helm-unit +helm-unit: ## Helm Unit Tests + @helm lint charts/proxmox-cloud-controller-manager + @helm template -f charts/proxmox-cloud-controller-manager/ci/values.yaml \ + proxmox-cloud-controller-manager charts/proxmox-cloud-controller-manager >/dev/null + .PHONY: docs docs: helm template -n kube-system proxmox-cloud-controller-manager \ + -f charts/proxmox-cloud-controller-manager/values.edge.yaml \ --set-string image.tag=$(TAG) \ charts/proxmox-cloud-controller-manager > docs/deploy/cloud-controller-manager.yml + helm template -n kube-system proxmox-cloud-controller-manager \ + -f charts/proxmox-cloud-controller-manager/values.talos.yaml \ + --set-string image.tag=$(TAG) \ + charts/proxmox-cloud-controller-manager > docs/deploy/cloud-controller-manager-talos.yml + helm-docs charts/proxmox-cloud-controller-manager -# Docker stages +release-update: + git-chglog --config hack/chglog-config.yml -o CHANGELOG.md + +############ +# +# Docker Abstractions +# docker-init: docker run --rm --privileged multiarch/qemu-user-static:register --reset @@ -87,8 +110,9 @@ docker-init: docker buildx inspect --bootstrap multiarch .PHONY: images -images: +images: ## Build images @docker buildx build $(BUILD_ARGS) \ --build-arg TAG=$(TAG) \ + --build-arg SHA=$(SHA) \ -t $(IMAGE):$(TAG) \ -f Dockerfile . diff --git a/OWNERS b/OWNERS new file mode 100644 index 0000000..a3ef0a1 --- /dev/null +++ b/OWNERS @@ -0,0 +1,4 @@ +approvers: +- sergelogvinov +reviewers: +- sergelogvinov diff --git a/charts/proxmox-cloud-controller-manager/Chart.yaml b/charts/proxmox-cloud-controller-manager/Chart.yaml index d7c564d..c9f215c 100644 --- a/charts/proxmox-cloud-controller-manager/Chart.yaml +++ b/charts/proxmox-cloud-controller-manager/Chart.yaml @@ -2,11 +2,19 @@ apiVersion: v2 name: proxmox-cloud-controller-manager description: A Helm chart for Kubernetes type: application +home: https://github.com/sergelogvinov/proxmox-cloud-controller-manager +icon: https://proxmox.com/templates/yoo_nano2/favicon.ico +sources: +- https://github.com/sergelogvinov/proxmox-cloud-controller-manager +keywords: +- ccm +maintainers: +- name: sergelogvinov # This is the chart version. This version number should be incremented each time you make changes # to the chart and its templates, including the app version. # Versions are expected to follow Semantic Versioning (https://semver.org/) -version: 0.1.0 +version: 0.1.1 # This is the version number of the application being deployed. This version number should be # incremented each time you make changes to the application. Versions are not expected to diff --git a/charts/proxmox-cloud-controller-manager/README.md b/charts/proxmox-cloud-controller-manager/README.md new file mode 100644 index 0000000..8668e76 --- /dev/null +++ b/charts/proxmox-cloud-controller-manager/README.md @@ -0,0 +1,47 @@ +# proxmox-cloud-controller-manager + +![Version: 0.1.0](https://img.shields.io/badge/Version-0.1.0-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: 0.0.1](https://img.shields.io/badge/AppVersion-0.0.1-informational?style=flat-square) + +A Helm chart for Kubernetes + +**Homepage:** + +## Maintainers + +| Name | Email | Url | +| ---- | ------ | --- | +| sergelogvinov | | | + +## Source Code + +* + +## Values + +| Key | Type | Default | Description | +|-----|------|---------|-------------| +| affinity | object | `{}` | Affinity for data pods assignment. ref: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#affinity-and-anti-affinity | +| config.clusters | list | `[]` | | +| enabledControllers | list | `["cloud-node","cloud-node-lifecycle"]` | List of controllers should be enabled. Use '*' to enable all controllers. Support only `cloud-node,cloud-node-lifecycle` controllers. | +| extraArgs | list | `[]` | Any extra arguments for talos-cloud-controller-manager | +| fullnameOverride | string | `""` | | +| image.pullPolicy | string | `"IfNotPresent"` | | +| image.repository | string | `"ghcr.io/sergelogvinov/proxmox-cloud-controller-manager"` | | +| image.tag | string | `""` | | +| imagePullSecrets | list | `[]` | | +| logVerbosityLevel | int | `2` | Log verbosity level. See https://github.com/kubernetes/community/blob/master/contributors/devel/sig-instrumentation/logging.md for description of individual verbosity levels. | +| nameOverride | string | `""` | | +| nodeSelector | object | `{}` | Node labels for data pods assignment. ref: https://kubernetes.io/docs/user-guide/node-selection/ | +| podAnnotations | object | `{}` | Annotations for data pods. ref: https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations/ | +| podSecurityContext | object | `{"fsGroup":10258,"fsGroupChangePolicy":"OnRootMismatch","runAsGroup":10258,"runAsNonRoot":true,"runAsUser":10258}` | Pods Security Context. ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/#set-the-security-context-for-a-pod | +| priorityClassName | string | `"system-cluster-critical"` | CCM pods' priorityClassName. | +| replicaCount | int | `1` | | +| resources.requests.cpu | string | `"10m"` | | +| resources.requests.memory | string | `"32Mi"` | | +| securityContext | object | `{"allowPrivilegeEscalation":false,"capabilities":{"drop":["ALL"]},"seccompProfile":{"type":"RuntimeDefault"}}` | Container Security Context. ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/#set-the-security-context-for-a-pod | +| serviceAccount | object | `{"annotations":{},"create":true,"name":""}` | Pods Service Account. ref: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/ | +| tolerations | list | `[{"effect":"NoSchedule","key":"node-role.kubernetes.io/control-plane","operator":"Exists"},{"effect":"NoSchedule","key":"node.cloudprovider.kubernetes.io/uninitialized","operator":"Exists"}]` | Tolerations for data pods assignment. ref: https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/ | +| updateStrategy | object | `{"rollingUpdate":{"maxUnavailable":1},"type":"RollingUpdate"}` | Deployment update stategy type. ref: https://kubernetes.io/docs/concepts/workloads/controllers/deployment/#updating-a-deployment | + +---------------------------------------------- +Autogenerated from chart metadata using [helm-docs v1.11.0](https://github.com/norwoodj/helm-docs/releases/v1.11.0) diff --git a/charts/proxmox-cloud-controller-manager/ci/values.yaml b/charts/proxmox-cloud-controller-manager/ci/values.yaml new file mode 100644 index 0000000..8e61cb0 --- /dev/null +++ b/charts/proxmox-cloud-controller-manager/ci/values.yaml @@ -0,0 +1,27 @@ + +image: + repository: ghcr.io/sergelogvinov/proxmox-cloud-controller-manager + pullPolicy: Always + tag: edge + +nodeSelector: + node-role.kubernetes.io/control-plane: "" + +logVerbosityLevel: 4 + +enabledControllers: + - cloud-node + - cloud-node-lifecycle + +config: + clusters: + - url: https://cluster-api-1.exmple.com:8006/api2/json + insecure: false + token_id: "user!token-id" + token_secret: "secret" + region: cluster-1 + - url: https://cluster-api-2.exmple.com:8006/api2/json + insecure: false + token_id: "user!token-id" + token_secret: "secret" + region: cluster-2 diff --git a/charts/proxmox-cloud-controller-manager/values-example.yaml b/charts/proxmox-cloud-controller-manager/values-example.yaml deleted file mode 100644 index 2d26c81..0000000 --- a/charts/proxmox-cloud-controller-manager/values-example.yaml +++ /dev/null @@ -1,7 +0,0 @@ - -image: - repository: ghcr.io/sergelogvinov/proxmox-cloud-controller-manager - pullPolicy: Always - tag: edge - -logVerbosityLevel: 4 diff --git a/charts/proxmox-cloud-controller-manager/values.edge.yaml b/charts/proxmox-cloud-controller-manager/values.edge.yaml new file mode 100644 index 0000000..b90cc00 --- /dev/null +++ b/charts/proxmox-cloud-controller-manager/values.edge.yaml @@ -0,0 +1,13 @@ + +image: + pullPolicy: Always + tag: edge + +nodeSelector: + node-role.kubernetes.io/control-plane: "" + +logVerbosityLevel: 4 + +enabledControllers: + - cloud-node + - cloud-node-lifecycle diff --git a/charts/proxmox-cloud-controller-manager/values.talos.yaml b/charts/proxmox-cloud-controller-manager/values.talos.yaml new file mode 100644 index 0000000..2730ddf --- /dev/null +++ b/charts/proxmox-cloud-controller-manager/values.talos.yaml @@ -0,0 +1,8 @@ + +nodeSelector: + node-role.kubernetes.io/control-plane: "" + +logVerbosityLevel: 4 + +enabledControllers: + - cloud-node-lifecycle diff --git a/docs/deploy/cloud-controller-manager-talos.yml b/docs/deploy/cloud-controller-manager-talos.yml new file mode 100644 index 0000000..0b29c42 --- /dev/null +++ b/docs/deploy/cloud-controller-manager-talos.yml @@ -0,0 +1,204 @@ +--- +# Source: proxmox-cloud-controller-manager/templates/serviceaccount.yaml +apiVersion: v1 +kind: ServiceAccount +metadata: + name: proxmox-cloud-controller-manager + labels: + helm.sh/chart: proxmox-cloud-controller-manager-0.1.0 + app.kubernetes.io/name: proxmox-cloud-controller-manager + app.kubernetes.io/instance: proxmox-cloud-controller-manager + app.kubernetes.io/version: "0.0.1" + app.kubernetes.io/managed-by: Helm + namespace: kube-system +--- +# Source: proxmox-cloud-controller-manager/templates/secrets.yaml +apiVersion: v1 +kind: Secret +metadata: + name: proxmox-cloud-controller-manager + labels: + helm.sh/chart: proxmox-cloud-controller-manager-0.1.0 + app.kubernetes.io/name: proxmox-cloud-controller-manager + app.kubernetes.io/instance: proxmox-cloud-controller-manager + app.kubernetes.io/version: "0.0.1" + app.kubernetes.io/managed-by: Helm + namespace: kube-system +data: + config.yaml: "Y2x1c3RlcnM6IFtd" +--- +# Source: proxmox-cloud-controller-manager/templates/role.yaml +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRole +metadata: + name: system:proxmox-cloud-controller-manager + labels: + helm.sh/chart: proxmox-cloud-controller-manager-0.1.0 + app.kubernetes.io/name: proxmox-cloud-controller-manager + app.kubernetes.io/instance: proxmox-cloud-controller-manager + app.kubernetes.io/version: "0.0.1" + app.kubernetes.io/managed-by: Helm +rules: +- apiGroups: + - coordination.k8s.io + resources: + - leases + verbs: + - get + - create + - update +- apiGroups: + - "" + resources: + - events + verbs: + - create + - patch + - update +- apiGroups: + - "" + resources: + - nodes + verbs: + - get + - list + - watch + - update + - patch + - delete +- apiGroups: + - "" + resources: + - nodes/status + verbs: + - patch +- apiGroups: + - "" + resources: + - serviceaccounts + verbs: + - create + - get +- apiGroups: + - "" + resources: + - serviceaccounts/token + verbs: + - create +--- +# Source: proxmox-cloud-controller-manager/templates/rolebinding.yaml +kind: ClusterRoleBinding +apiVersion: rbac.authorization.k8s.io/v1 +metadata: + name: system:proxmox-cloud-controller-manager +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: ClusterRole + name: system:proxmox-cloud-controller-manager +subjects: +- kind: ServiceAccount + name: proxmox-cloud-controller-manager + namespace: kube-system +--- +# Source: proxmox-cloud-controller-manager/templates/rolebinding.yaml +apiVersion: rbac.authorization.k8s.io/v1 +kind: RoleBinding +metadata: + name: system:proxmox-cloud-controller-manager:extension-apiserver-authentication-reader + namespace: kube-system +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: Role + name: extension-apiserver-authentication-reader +subjects: + - kind: ServiceAccount + name: proxmox-cloud-controller-manager + namespace: kube-system +--- +# Source: proxmox-cloud-controller-manager/templates/deployment.yaml +apiVersion: apps/v1 +kind: Deployment +metadata: + name: proxmox-cloud-controller-manager + labels: + helm.sh/chart: proxmox-cloud-controller-manager-0.1.0 + app.kubernetes.io/name: proxmox-cloud-controller-manager + app.kubernetes.io/instance: proxmox-cloud-controller-manager + app.kubernetes.io/version: "0.0.1" + app.kubernetes.io/managed-by: Helm + namespace: kube-system +spec: + replicas: 1 + strategy: + type: RollingUpdate + selector: + matchLabels: + app.kubernetes.io/name: proxmox-cloud-controller-manager + app.kubernetes.io/instance: proxmox-cloud-controller-manager + template: + metadata: + annotations: + checksum/config: c69436cb1e16c36ff708b1003d3ca4c6ee6484d2524e2ba7d9b68f473acaa1ca + labels: + app.kubernetes.io/name: proxmox-cloud-controller-manager + app.kubernetes.io/instance: proxmox-cloud-controller-manager + spec: + enableServiceLinks: false + priorityClassName: system-cluster-critical + serviceAccountName: proxmox-cloud-controller-manager + securityContext: + fsGroup: 10258 + fsGroupChangePolicy: OnRootMismatch + runAsGroup: 10258 + runAsNonRoot: true + runAsUser: 10258 + containers: + - name: proxmox-cloud-controller-manager + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: + - ALL + seccompProfile: + type: RuntimeDefault + image: "ghcr.io/sergelogvinov/proxmox-cloud-controller-manager:edge" + imagePullPolicy: IfNotPresent + command: ["/proxmox-cloud-controller-manager"] + args: + - --v=4 + - --cloud-provider=proxmox + - --cloud-config=/etc/proxmox/config.yaml + - --controllers=cloud-node-lifecycle + - --leader-elect-resource-name=cloud-controller-manager-proxmox + - --use-service-account-credentials + - --secure-port=10258 + livenessProbe: + httpGet: + path: /healthz + port: 10258 + scheme: HTTPS + initialDelaySeconds: 20 + periodSeconds: 30 + timeoutSeconds: 5 + resources: + requests: + cpu: 10m + memory: 32Mi + volumeMounts: + - name: cloud-config + mountPath: /etc/proxmox + readOnly: true + nodeSelector: + node-role.kubernetes.io/control-plane: "" + tolerations: + - effect: NoSchedule + key: node-role.kubernetes.io/control-plane + operator: Exists + - effect: NoSchedule + key: node.cloudprovider.kubernetes.io/uninitialized + operator: Exists + volumes: + - name: cloud-config + secret: + secretName: proxmox-cloud-controller-manager + defaultMode: 416 # 0640 diff --git a/docs/deploy/cloud-controller-manager.yml b/docs/deploy/cloud-controller-manager.yml index a1959c3..fdf8fcf 100644 --- a/docs/deploy/cloud-controller-manager.yml +++ b/docs/deploy/cloud-controller-manager.yml @@ -162,10 +162,10 @@ spec: seccompProfile: type: RuntimeDefault image: "ghcr.io/sergelogvinov/proxmox-cloud-controller-manager:edge" - imagePullPolicy: IfNotPresent + imagePullPolicy: Always command: ["/proxmox-cloud-controller-manager"] args: - - --v=2 + - --v=4 - --cloud-provider=proxmox - --cloud-config=/etc/proxmox/config.yaml - --controllers=cloud-node,cloud-node-lifecycle @@ -188,6 +188,8 @@ spec: - name: cloud-config mountPath: /etc/proxmox readOnly: true + nodeSelector: + node-role.kubernetes.io/control-plane: "" tolerations: - effect: NoSchedule key: node-role.kubernetes.io/control-plane diff --git a/hack/CHANGELOG.tpl.md b/hack/CHANGELOG.tpl.md new file mode 100755 index 0000000..c9963f7 --- /dev/null +++ b/hack/CHANGELOG.tpl.md @@ -0,0 +1,33 @@ +{{ range .Versions }} + +## {{ if .Tag.Previous }}[{{ .Tag.Name }}]({{ $.Info.RepositoryURL }}/compare/{{ .Tag.Previous.Name }}...{{ .Tag.Name }}){{ else }}{{ .Tag.Name }}{{ end }} ({{ datetime "2006-01-02" .Tag.Date }}) + +Welcome to the {{ .Tag.Name }} release of Kubernetes cloud controller manager for Proxmox! + +{{ if .CommitGroups -}} +{{ range .CommitGroups -}} +### {{ .Title }} + +{{ range .Commits -}} +- {{ if .Scope }}**{{ .Scope }}:** {{ end }}{{ .Subject }} +{{ end }} +{{ end -}} +{{ end -}} + + +### Changelog + +{{ range .Commits -}}{{ if ne .Subject "" -}} +* {{ .Hash.Short }} {{ .Header }} +{{ end }}{{ end }} + +{{- if .NoteGroups -}} +{{ range .NoteGroups -}} +### {{ .Title }} + +{{ range .Notes }} +{{ .Body }} +{{ end }} +{{ end -}} +{{ end -}} +{{ end -}} diff --git a/hack/chglog-config.yml b/hack/chglog-config.yml new file mode 100755 index 0000000..0587fa7 --- /dev/null +++ b/hack/chglog-config.yml @@ -0,0 +1,24 @@ +style: github +template: CHANGELOG.tpl.md +info: + title: CHANGELOG + repository_url: https://github.com/sergelogvinov/proxmox-cloud-controller-manager +options: + commits: + filters: + Type: + - feat + - fix + commit_groups: + title_maps: + feat: Features + fix: Bug Fixes + header: + pattern: "^(\\w*)(?:\\(([\\w\\$\\.\\-\\*\\s]*)\\))?\\:\\s(.*)$" + pattern_maps: + - Type + - Scope + - Subject + notes: + keywords: + - BREAKING CHANGE diff --git a/hack/ct.yml b/hack/ct.yml new file mode 100644 index 0000000..458a590 --- /dev/null +++ b/hack/ct.yml @@ -0,0 +1,9 @@ +helm-extra-args: --timeout 300s +check-version-increment: true +debug: true +chart-dirs: + - charts +validate-maintainers: true +namespace: default +release-label: test +target-branch: main diff --git a/pkg/proxmox/instances.go b/pkg/proxmox/instances.go index b3d5c0e..8d22913 100644 --- a/pkg/proxmox/instances.go +++ b/pkg/proxmox/instances.go @@ -136,6 +136,8 @@ func (i *instances) InstanceMetadata(_ context.Context, node *v1.Node) (*cloudpr }, nil } + klog.Infof("instances.InstanceMetadata() is kubelet has --cloud-provider=external on the node %s?", node.Name) + return &cloudprovider.InstanceMetadata{}, nil }