Skip to content

Commit

Permalink
Merge pull request #616 from planetscale/backport-610-to-release-2.11
Browse files Browse the repository at this point in the history
[release-2.11] Support customisation of docker images per-keyspace
  • Loading branch information
frouioui authored Oct 14, 2024
2 parents 5ef37db + 29c74a1 commit c5a3956
Show file tree
Hide file tree
Showing 5 changed files with 106 additions and 2 deletions.
8 changes: 8 additions & 0 deletions deploy/crds/planetscale.com_vitessclusters.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -1181,6 +1181,14 @@ spec:
mysql80Compatible:
type: string
type: object
mysqldExporter:
type: string
vtbackup:
type: string
vtorc:
type: string
vttablet:
type: string
type: object
name:
maxLength: 63
Expand Down
57 changes: 56 additions & 1 deletion docs/api/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -5977,7 +5977,18 @@ <h3 id="planetscale.com/v2.VitessKeyspaceTemplateImages">VitessKeyspaceTemplateI
</p>
<p>
<p>VitessKeyspaceTemplateImages specifies user-definable container images to
use for this keyspace.</p>
use for this keyspace. The images defined here by the user will override
those defined at the top-level in VitessCluster.spec.images.</p>
<p>While this field allows you to set a different Vitess version for some
components than the version defined at the top level, it is important to
note that Vitess only ensures compatibility between one version and the
next and previous one. For instance: N is only guaranteed to be compatible
with N+1 and N-1. Do be careful when specifying multiple versions across
your cluster so that they respect this compatibility rule.</p>
<p>Note: this structure is a copy of VitessKeyspaceImages, once we have gotten
rid of MysqldImage and replaced it by MysqldImageNew (planned for v2.15), we
should be able to remove VitessKeyspaceTemplateImages entirely and just use
VitessKeyspaceImages instead as it contains exactly the same fields.</p>
</p>
<table class="table table-striped">
<thead class="thead-dark">
Expand All @@ -5989,6 +6000,39 @@ <h3 id="planetscale.com/v2.VitessKeyspaceTemplateImages">VitessKeyspaceTemplateI
<tbody>
<tr>
<td>
<code>vttablet</code></br>
<em>
string
</em>
</td>
<td>
<p>Vttablet is the container image (including version tag) to use for Vitess Tablet instances.</p>
</td>
</tr>
<tr>
<td>
<code>vtorc</code></br>
<em>
string
</em>
</td>
<td>
<p>Vtorc is the container image (including version tag) to use for Vitess Orchestrator instances.</p>
</td>
</tr>
<tr>
<td>
<code>vtbackup</code></br>
<em>
string
</em>
</td>
<td>
<p>Vtbackup is the container image (including version tag) to use for Vitess Backup jobs.</p>
</td>
</tr>
<tr>
<td>
<code>mysqld</code></br>
<em>
<a href="#planetscale.com/v2.MysqldImageNew">
Expand All @@ -6003,6 +6047,17 @@ <h3 id="planetscale.com/v2.VitessKeyspaceTemplateImages">VitessKeyspaceTemplateI
mysqld running alongside each tablet.</p>
</td>
</tr>
<tr>
<td>
<code>mysqldExporter</code></br>
<em>
string
</em>
</td>
<td>
<p>MysqldExporter specifies the container image for mysqld-exporter.</p>
</td>
</tr>
</tbody>
</table>
<h3 id="planetscale.com/v2.VitessKeyspaceTurndownPolicy">VitessKeyspaceTurndownPolicy
Expand Down
12 changes: 12 additions & 0 deletions pkg/apis/planetscale/v2/vitesskeyspace_defaults.go
Original file line number Diff line number Diff line change
Expand Up @@ -73,8 +73,20 @@ func DefaultVitessKeyspaceImages(dst *VitessKeyspaceImages, clusterDefaults *Vit
// MergeVitessKeyspaceTemplateImages takes non-empty image values from a non-nil src
// and sets them on dst.
func MergeVitessKeyspaceTemplateImages(dst *VitessKeyspaceImages, src *VitessKeyspaceTemplateImages) {
if src.Vttablet != "" {
dst.Vttablet = src.Vttablet
}
if src.Vtorc != "" {
dst.Vtorc = src.Vtorc
}
if src.Vtbackup != "" {
dst.Vtbackup = src.Vtbackup
}
if src.Mysqld != nil {
dst.Mysqld.Mysql56Compatible = src.Mysqld.Mysql56Compatible
dst.Mysqld.Mysql80Compatible = src.Mysqld.Mysql80Compatible
}
if src.MysqldExporter != "" {
dst.MysqldExporter = src.MysqldExporter
}
}
23 changes: 22 additions & 1 deletion pkg/apis/planetscale/v2/vitesskeyspace_types.go
Original file line number Diff line number Diff line change
Expand Up @@ -188,13 +188,34 @@ type VitessKeyspaceTemplate struct {
}

// VitessKeyspaceTemplateImages specifies user-definable container images to
// use for this keyspace.
// use for this keyspace. The images defined here by the user will override
// those defined at the top-level in VitessCluster.spec.images.
//
// While this field allows you to set a different Vitess version for some
// components than the version defined at the top level, it is important to
// note that Vitess only ensures compatibility between one version and the
// next and previous one. For instance: N is only guaranteed to be compatible
// with N+1 and N-1. Do be careful when specifying multiple versions across
// your cluster so that they respect this compatibility rule.
//
// Note: this structure is a copy of VitessKeyspaceImages, once we have gotten
// rid of MysqldImage and replaced it by MysqldImageNew (planned for v2.15), we
// should be able to remove VitessKeyspaceTemplateImages entirely and just use
// VitessKeyspaceImages instead as it contains exactly the same fields.
type VitessKeyspaceTemplateImages struct {
// Vttablet is the container image (including version tag) to use for Vitess Tablet instances.
Vttablet string `json:"vttablet,omitempty"`
// Vtorc is the container image (including version tag) to use for Vitess Orchestrator instances.
Vtorc string `json:"vtorc,omitempty"`
// Vtbackup is the container image (including version tag) to use for Vitess Backup jobs.
Vtbackup string `json:"vtbackup,omitempty"`
// Mysqld specifies the container image to use for mysqld, as well as
// declaring which MySQL flavor setting in Vitess the image is
// compatible with. Only one flavor image may be provided at a time.
// mysqld running alongside each tablet.
Mysqld *MysqldImageNew `json:"mysqld,omitempty"`
// MysqldExporter specifies the container image for mysqld-exporter.
MysqldExporter string `json:"mysqldExporter,omitempty"`
}

// VitessOrchestratorSpec specifies deployment parameters for vtorc.
Expand Down
8 changes: 8 additions & 0 deletions test/endtoend/operator/operator-latest.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -2498,6 +2498,14 @@ spec:
mysql80Compatible:
type: string
type: object
mysqldExporter:
type: string
vtbackup:
type: string
vtorc:
type: string
vttablet:
type: string
type: object
name:
maxLength: 63
Expand Down

0 comments on commit c5a3956

Please sign in to comment.