Skip to content

Commit

Permalink
feat: add key management provider resource (#1293)
Browse files Browse the repository at this point in the history
  • Loading branch information
akashsinghal authored Mar 26, 2024
1 parent 6eab122 commit b0dfc90
Show file tree
Hide file tree
Showing 54 changed files with 3,069 additions and 98 deletions.
13 changes: 13 additions & 0 deletions PROJECT
Original file line number Diff line number Diff line change
@@ -1,3 +1,7 @@
# Code generated by tool. DO NOT EDIT.
# This file is used to track the info used to scaffold your project
# and allow the plugins properly work.
# More info: https://book.kubebuilder.io/reference/project-config.html
domain: ratify.deislabs.io
layout:
- go.kubebuilder.io/v3
Expand Down Expand Up @@ -67,4 +71,13 @@ resources:
kind: CertificateStore
path: github.com/deislabs/ratify/api/v1beta1
version: v1beta1
- api:
crdVersion: v1
namespaced: true
controller: true
domain: ratify.deislabs.io
group: config
kind: KeyManagementProvider
path: github.com/deislabs/ratify/api/v1beta1
version: v1beta1
version: "3"
73 changes: 73 additions & 0 deletions api/unversioned/keymanagementprovider_types.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,73 @@
/*
Copyright The Ratify 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.
*/

// +kubebuilder:skip
package unversioned

import (
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
runtime "k8s.io/apimachinery/pkg/runtime"
)

// EDIT THIS FILE! THIS IS SCAFFOLDING FOR YOU TO OWN!
// NOTE: json tags are required. Any new fields you add must have json tags for the fields to be serialized.

// KeyManagementProviderSpec defines the desired state of KeyManagementProvider
type KeyManagementProviderSpec struct {
// Important: Run "make" to regenerate code after modifying this file

// Name of the key management provider
Type string `json:"type,omitempty"`

// Parameters of the key management provider
Parameters runtime.RawExtension `json:"parameters,omitempty"`
}

// KeyManagementProviderStatus defines the observed state of KeyManagementProvider
type KeyManagementProviderStatus struct {
// Important: Run "make manifests" to regenerate code after modifying this file

// Is successful in loading certificate/key files
IsSuccess bool `json:"issuccess"`
// Error message if operation was unsuccessful
// +optional
Error string `json:"error,omitempty"`
// Truncated error message if the message is too long
// +optional
BriefError string `json:"brieferror,omitempty"`
// The time stamp of last successful certificate/key fetch operation. If operation failed, last fetched time shows the time of error
// +optional
LastFetchedTime *metav1.Time `json:"lastfetchedtime,omitempty"`
// provider specific properties of the each individual certificate/key
// +optional
Properties runtime.RawExtension `json:"properties,omitempty"`
}

// KeyManagementProvider is the Schema for the keymanagementproviders API
type KeyManagementProvider struct {
metav1.TypeMeta `json:",inline"`
metav1.ObjectMeta `json:"metadata,omitempty"`

Spec KeyManagementProviderSpec `json:"spec,omitempty"`
Status KeyManagementProviderStatus `json:"status,omitempty"`
}

// KeyManagementProviderList contains a list of KeyManagementProvider
type KeyManagementProviderList struct {
metav1.TypeMeta `json:",inline"`
metav1.ListMeta `json:"metadata,omitempty"`
Items []KeyManagementProvider `json:"items"`
}
79 changes: 79 additions & 0 deletions api/unversioned/zz_generated.deepcopy.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

86 changes: 86 additions & 0 deletions api/v1beta1/keymanagementproviders_types.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,86 @@
/*
Copyright The Ratify 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.
*/

package v1beta1

import (
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
runtime "k8s.io/apimachinery/pkg/runtime"
)

// EDIT THIS FILE! THIS IS SCAFFOLDING FOR YOU TO OWN!
// NOTE: json tags are required. Any new fields you add must have json tags for the fields to be serialized.

// KeyManagementProviderSpec defines the desired state of KeyManagementProvider
type KeyManagementProviderSpec struct {
// Important: Run "make" to regenerate code after modifying this file

// Name of the key management provider
Type string `json:"type,omitempty"`

// +kubebuilder:pruning:PreserveUnknownFields
// Parameters of the key management provider
Parameters runtime.RawExtension `json:"parameters,omitempty"`
}

// KeyManagementProviderStatus defines the observed state of KeyManagementProvider
type KeyManagementProviderStatus struct {
// Important: Run "make manifests" to regenerate code after modifying this file

// Is successful in loading certificate/key files
IsSuccess bool `json:"issuccess"`
// Error message if operation was unsuccessful
// +optional
Error string `json:"error,omitempty"`
// Truncated error message if the message is too long
// +optional
BriefError string `json:"brieferror,omitempty"`
// The time stamp of last successful certificate/key fetch operation. If operation failed, last fetched time shows the time of error
// +optional
LastFetchedTime *metav1.Time `json:"lastfetchedtime,omitempty"`
// +kubebuilder:pruning:PreserveUnknownFields
// provider specific properties of the each individual certificate/key
// +optional
Properties runtime.RawExtension `json:"properties,omitempty"`
}

// +kubebuilder:object:root=true
// +kubebuilder:subresource:status
// +kubebuilder:storageversion
// +kubebuilder:printcolumn:name="IsSuccess",type=boolean,JSONPath=`.status.issuccess`
// +kubebuilder:printcolumn:name="Error",type=string,JSONPath=`.status.brieferror`
// +kubebuilder:printcolumn:name="LastFetchedTime",type=date,JSONPath=`.status.lastfetchedtime`
// KeyManagementProvider is the Schema for the keymanagementproviders API
type KeyManagementProvider struct {
metav1.TypeMeta `json:",inline"`
metav1.ObjectMeta `json:"metadata,omitempty"`

Spec KeyManagementProviderSpec `json:"spec,omitempty"`
Status KeyManagementProviderStatus `json:"status,omitempty"`
}

// +kubebuilder:object:root=true
// +kubebuilder:storageversion
// KeyManagementProviderList contains a list of KeyManagementProvider
type KeyManagementProviderList struct {
metav1.TypeMeta `json:",inline"`
metav1.ListMeta `json:"metadata,omitempty"`
Items []KeyManagementProvider `json:"items"`
}

func init() {
SchemeBuilder.Register(&KeyManagementProvider{}, &KeyManagementProviderList{})
}
95 changes: 95 additions & 0 deletions api/v1beta1/zz_generated.deepcopy.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion charts/ratify/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -126,5 +126,5 @@ $ helm upgrade -n gatekeeper-system [RELEASE_NAME] ratify/ratify
| akvCertConfig.cert1Version | Exact version of certificate to use from AKV. This value has been ***deprecated*** , and will be removed in future releases of Ratify. Please switch to ```akvCertConfig.certificates``` to specify an array of verification certificates | `` |
| akvCertConfig.cert2Name | Exact name of the certificate stored in AKV. This value has been ***deprecated*** , and will be removed in future releases of Ratify. Please switch to ```akvCertConfig.certificates``` to specify an array of verification certificates | `` |
| akvCertConfig.cert2Version | Exact version of certificate to use from AKV. This value has been ***deprecated*** , and will be removed in future releases of Ratify. Please switch to ```akvCertConfig.certificates``` to specify an array of verification certificates | `` |
| akvCertConfig.certificates | An array of certificate objects identified by certificateName and certificateVersion stored in AKV | `` |
| akvCertConfig.certificates | An array of certificate objects identified by `name` and `version` stored in AKV | `` |
| akvCertConfig.tenantId | TenantID of the configured AKV resource | `` |
Loading

0 comments on commit b0dfc90

Please sign in to comment.